baseUrlRedirect();
/* define is agent */
define('IS_BOT', $reefless->isBot());
$rlHook->load('init');
/* load cache control */
$reefless->loadClass('Cache');
/* load template settings */
$ts_path = RL_ROOT . 'templates' . RL_DS . $config['template'] . RL_DS . 'settings.tpl.php';
if (is_readable($ts_path)) {
require_once $ts_path;
}
// select all languages
$languages = $rlLang->getLanguagesList();
$rlSmarty->assign_by_ref('languages', $languages);
/* rewrite GET method vareables */
$reefless->loadClass('Navigator');
$rlNavigator->transformLinks();
$rlNavigator->rewriteGet($_GET['rlVareables'], $_GET['page'], $_GET['language']);
/* define site languages */
$rlLang->defineLanguage($rlNavigator->cLang);
$rlLang->modifyLanguagesList($languages);
$rlLang->preferredLanguageRedirect($languages);
if ($_GET['page'] == $config['lang']) {
$sError = true;
}
// Load main types classes
$reefless->loadClass('ListingTypes', null, false, true);
$reefless->loadClass('AccountTypes', null, false, true);
// Define system page
$page_info = $rlNavigator->definePage();
$lang = [];
// Get blocks
$blocks = $rlCommon->getBlocks();
$rlSmarty->assign_by_ref('blocks', $blocks);
$block_keys = $rlCommon->block_keys;
// Get frontEnd phrases
$js_keys = [];
$controller = $page_info['Controller_alt'] ?: $page_info['Controller'];
$lang = array_merge(
$lang,
$rlLang->getPhrases(RL_LANG_CODE, $controller, array_keys($block_keys), $js_keys)
);
$rlSmarty->assign_by_ref('js_keys', $js_keys);
$rlSmarty->assign_by_ref('lang', $lang);
$rlCommon->setNames();
$rlHook->load('phpBeforeLoginValidation'); // required version >= 4.2
/* check user login */
$reefless->loadClass('Account');
/* is login check */
if ($rlAccount->isLogin()) {
$rlSmarty->assign('isLogin', $_SESSION['account']['Full_name']);
define('IS_LOGIN', true);
$account_info = $_SESSION['account'];
$rlSmarty->assign_by_ref('account_info', $account_info);
}
/* login attempts control */
else {
$reefless->loginAttempt();
}
/* load system libs */
require_once RL_LIBS . 'system.lib.php';
/* set timezone */
$reefless->setTimeZone();
$reefless->setLocalization();
/* account abilities handler */
$deny_pages = array();
if ($config['one_my_listings_page'] && !$account_info['Abilities']) {
$deny_pages[] = 'my_all_ads';
}
foreach ($rlListingTypes->types as $listingType) {
if (!in_array($listingType['Key'], $account_info['Abilities'])) {
array_push($deny_pages, "my_{$listingType['Key']}");
}
/* count admin only types */
$admin_only_types += $listingType['Admin_only'] ? 1 : 0;
}
unset($listingType);
$rlSmarty->assign_by_ref('admin_only_types', $admin_only_types);
if (empty($account_info['Abilities']) || empty($rlListingTypes->types) || $admin_only_types == count($rlListingTypes->types)) {
array_push($deny_pages, 'add_listing');
array_push($deny_pages, 'payment_history');
array_push($deny_pages, 'my_packages');
}
/* assign base path */
$bPath = RL_URL_HOME;
if ($config['lang'] != RL_LANG_CODE && $config['mod_rewrite']) {
$bPath .= RL_LANG_CODE . '/';
}
if (!$config['mod_rewrite']) {
$bPath .= 'index.php';
}
$rlHook->load('seoBase');
define('SEO_BASE', $bPath);
$rlSmarty->assign('rlBase', $bPath);
define('RL_TPL_BASE', RL_URL_HOME . 'templates/' . $config['template'] . '/');
$rlSmarty->assign('rlTplBase', RL_TPL_BASE);
// Get all pages keys/paths
$pages = $rlNavigator->getAllPages();
$rlSmarty->assign_by_ref('pages', $pages);
// add system static files
$rlStatic->addSystemFiles();
/* save previous visited page key */
if ($page_info['Key'] != 404) {
$page_info['prev'] = $_SESSION['page_info']['current'] ? $_SESSION['page_info']['current'] : false;
$page_info['query_string'] = $_SERVER['QUERY_STRING'];
$_SESSION['page_info']['current'] = $page_info['Key'];
/* non .html redirect for single level URL */
$request_uri = ltrim($_SERVER['REQUEST_URI'], '/');
if (RL_LANG_CODE != $config['lang']) {
$request_uri = ltrim($request_uri, RL_LANG_CODE . '/');
}
if ($config['mod_rewrite']
&& $page_info['Controller'] != '404'
&& $page_info['Key'] != 'home'
&& (bool) preg_match('/^[^\\/]+\\/$/', $request_uri)
&& (trim($request_uri, "/") == $page_info['Path'] . "/" || trim($request_uri, "/") == $page_info['Path'])
&& !$_GET['rlVareables']
) {
$reefless->redirect(null, SEO_BASE . $page_info['Path'] . '.html');
exit;
}
}
$rlHook->load('pageinfoArea');
$rlSmarty->assign_by_ref('pageInfo', $page_info);
if (isset($_GET['wildcard'])) {
$lang_url_home = str_replace($rlValid->getDomain(RL_URL_HOME), $_SERVER['HTTP_HOST'], RL_URL_HOME);
$rlSmarty->assign('lang_url_home', $lang_url_home);
} else {
/* redirect link handler */
$currentPage = trim($_SERVER['REQUEST_URI'], '/');
$dir = str_replace(RL_DS, '', RL_DIR);
$currentPage = ltrim($currentPage, $dir);
$currentPage = ltrim($currentPage, '/');
if (!is_numeric(strpos($currentPage, 'index.php'))) {
if ($config['lang'] != $rlNavigator->cLang) {
$currentPage = substr($currentPage, 3, strlen($currentPage));
$currentPage = !(bool) preg_match('/\.html($|\?)/', $currentPage) && $currentPage ? $currentPage . '/' : $currentPage;
} elseif (strlen($currentPage) == 2 && in_array($currentPage, array_keys($languages))) {
$currentPage = '';
} else {
$currentPage = !(bool) preg_match('/\.html($|\?)/', $currentPage) && $currentPage ? $currentPage . '/' : $currentPage;
}
}
if (!$config['mod_rewrite']) {
$currentPage = preg_replace('#(\?|&)language=[a-z]{2}#', '', $currentPage);
$currentPage .= is_numeric(strpos($currentPage, '?')) ? '&' : '?';
}
$rlSmarty->assign_by_ref('pageLink', $currentPage);
}
$linkPage = $rlNavigator->cPage == 'index' ? '' : $rlNavigator->cPage;
$rlSmarty->assign_by_ref('page', $linkPage);
/* load common controller */
if ($page_info['Tpl']) {
require_once RL_CONTROL . 'common.inc.php';
}
/* load page controller */
if ($page_info['Plugin']) {
require_once RL_PLUGINS . $page_info['Plugin'] . RL_DS . $page_info['Controller'] . '.inc.php';
} else {
require_once RL_CONTROL . $page_info['Controller'] . '.inc.php';
}
// build featured listing blocks
$rlListings->buildFeaturedBoxes($listing_type_key);
// prepare special content for the home page
if ($page_info['Controller'] == 'home') {
$rlCommon->homePageSpecialContent();
}
// Get notice
if (isset($_SESSION['notice']) || isset($_GET['logout'])) {
$reefless->loadClass('Notice');
if (isset($_GET['logout'])) {
$rlNotice->saveNotice($lang['notice_logged_out']);
}
$pNotice = $_SESSION['notice'];
switch ($_SESSION['notice_type']) {
case 'notice':
$pType = 'pNotice';
break;
case 'alert':
$pType = 'pAlert';
break;
case 'error':
$pType = 'errors';
break;
}
$rlSmarty->assign_by_ref($pType, $pNotice);
$rlNotice->resetNotice();
}
/* assign errors */
if (!empty($errors) && !$pType && !$pNotice) {
$rlSmarty->assign_by_ref('errors', $errors);
$rlSmarty->assign('error_fields', $error_fields);
}
/* ajax process request / get javascripts */
$rlXajax->processRequest();
$ajax_javascripts = $rlXajax->getJavascript();
/* assign ajax javascripts */
$rlSmarty->assign_by_ref('ajaxJavascripts', $ajax_javascripts);
// Define sidebar exists
$rlCommon->defineSidebarExists();
$rlCommon->defineBreadCrumbsExists();
/* load boot hooks */
$rlHook->load('boot');
/* exit in ajax mode */
if ($_REQUEST['xjxfun']) {
exit;
}
/* print total mysql queries execution time */
if (RL_DB_DEBUG) {
echo '
Total sql queries time: ' . $_SESSION['sql_debug_time'] . '.
';
}
/* load templates */
if ($page_info['Tpl']) {
// prepare bread crumbs and title data
$rlSmarty->assign_by_ref('bread_crumbs', $bread_crumbs);
$rlCommon->pageMetaTags();
$page_info['Login'] = !empty($page_info['Deny']) ? 1 : $page_info['Login'];
$rlSmarty->display('header.tpl');
if ($page_info['Login'] && !defined('IS_LOGIN')) {
$page_info['Controller'] = 'login';
$page_info['Plugin'] = '';
$page_info['Page_type'] = 'system';
$rlSmarty->assign('request_page', $page_info['Path']);
if (!empty($errors) && !$pType && !$pNotice) {
$rlSmarty->assign('errors', $lang['notice_should_login']);
}
} elseif (
(isset($account_info['Type']) && in_array($account_info['Type_ID'], explode(',', $page_info['Deny'])))
|| (isset($account_info['Abilities'][$page_info['Key']]) && $account_info['Abilities'][$page_info['Key']] === false)
) {
$page_info['Page_type'] = 'static';
$rlSmarty->assign('request_page', $page_info['Path']);
$rlSmarty->assign('staticContent', $lang['notice_account_access_deny']);
if (!$errors && !$pType && !$pNotice) {
$rlSmarty->assign('errors', $lang['notice_account_access_deny']);
}
} elseif ($sError === true) {
$sql = "SELECT * FROM `{db_prefix}pages` WHERE `Key` = '404' AND `Status` = 'active' LIMIT 1";
$page_info = $rlDb->getRow($sql);
require_once RL_CONTROL . $page_info['Controller'] . '.inc.php';
}
if ($page_info['Key'] == '404') {
$rlSmarty->assign_by_ref('errors', $lang['error_404']);
}
if ($page_info['Plugin']) {
$rlSmarty->assign('content', RL_PLUGINS . $page_info['Plugin'] . RL_DS . $page_info['Controller'] . '.tpl');
} else {
$rlSmarty->assign('content', 'controllers' . RL_DS . $page_info['Controller'] . '.tpl');
}
$rlSmarty->display('content.tpl');
$rlSmarty->display('footer.tpl');
} else {
if ($page_info['Login'] && !defined('IS_LOGIN')) {
$page_info['Controller'] = 'login';
$page_info['Page_type'] = 'system';
$rlSmarty->assign('request_page', $page_info['Path']);
$rlSmarty->assign('errors', $lang['notice_should_login']);
}
if ($page_info['Page_type'] == 'system') {
if ($page_info['Plugin']) {
$rlSmarty->display(RL_PLUGINS . $page_info['Plugin'] . RL_DS . $page_info['Controller'] . '.tpl');
} else {
$rlSmarty->display('controllers' . RL_DS . $page_info['Controller'] . '.tpl');
}
} else {
require_once RL_CONTROL . $page_info['Controller'] . '.inc.php';
echo $content['Value'];
}
}
// clear memory (will release ~ 2-3 or more megabytes of memory!)
$rlSmarty->clear_all_assign();
// close the connection with a database
$rlDb->connectionClose();