wwwRedirect();
/* 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 );
}
/* rewrite GET method vareables */
$reefless -> loadClass( 'Navigator' );
$rlNavigator -> transformLinks();
$rlNavigator -> rewriteGet( $_GET['rlVareables'], $_GET['page'], $_GET['language'] );
/* select all languages */
$languages = $rlLang -> getLanguagesList();
$rlSmarty -> assign_by_ref('languages', $languages);
/* define site languages */
$rlLang -> defineLanguage( $rlNavigator -> cLang );
$rlLang -> modifyLanguagesList( $languages );
$rlLang -> preferedLanguageRedirect($languages);
if ($_GET['page'] == $config['lang']) {
$sError = true;
}
/* load all fronEnd phrases */
$lang = $rlLang -> getLangBySide( 'frontEnd', RL_LANG_CODE );
$GLOBALS['lang'] = &$lang;
$rlSmarty -> assign_by_ref( 'lang', $lang );
$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();
/* load main types classes */
$reefless -> loadClass('ListingTypes', null, false, true);
$reefless -> loadClass('AccountTypes', null, false, true);
/* account abilities handler */
$deny_pages = array();
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 );
/* define system page */
$page_info = $rlNavigator -> definePage();
// 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'] && !in_array($page_info['Controller'], array('account_type', '404'))
&& $page_info['Key'] != 'home' && (bool)preg_match('/^[^\\/]+\\/$/', $request_uri)
&& (trim($request_uri, "/") == $page_info['Path']."/" || trim($request_uri, "/") == $page_info['Path'])
) {
$reefless -> redirect(null, SEO_BASE . $page_info['Path'] .'.html');
exit;
}
}
$rlHook -> load('pageinfoArea');
$rlSmarty -> assign_by_ref( 'pageInfo', $page_info );
/* 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) {
$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']) )
{
$reefless -> loadClass( 'Notice' );
$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 );
/* 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 -> pageTitle($bread_crumbs);
$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) )
{
$rlSmarty -> assign( 'request_page', $page_info['Path'] );
$sql = "SELECT * FROM `". RL_DBPREFIX ."pages` WHERE `Key` = '404' LIMIT 1";
$page_info = $rlDb->getRow($sql);
require_once( RL_CONTROL . $page_info['Controller'] . '.inc.php' );
if ( !$errors && !$pType && !$pNotice )
{
$rlSmarty -> assign( 'errors', $lang['notice_account_access_deny'] );
}
} elseif ($sError === true) {
$sql = "SELECT * FROM `". RL_DBPREFIX ."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();