Beispiel #1
0
 function buildPage($pagePath, $innerAccess = false)
 {
     global $_PATH;
     global $REQUEST_VARS, $REQUEST_ASSOC, $_COMMON_SITE_CONF;
     $this->_EVM->fire('agregator:start', $pagePath);
     if (!$innerAccess && ($url = $this->rewrite($pagePath))) {
         return $this->buildPage($url, true);
     }
     $this->modules_out = null;
     $this->globalFields = array();
     $_SESSION['pages']['previous_page_path'] = $_SESSION['pages']['current_page_full_path'];
     $_SESSION['pages']['current_page_full_path'] = $pagePath;
     if ($pos = strpos($pagePath, '@')) {
         $_SESSION['pages']['current_page_no_filter'] = substr($pagePath, 0, $pos - 1);
     }
     if (isset($_SESSION['fronted']['enabled'])) {
         $this->frontEditMode = true;
     }
     //отделяем переменные и action
     if (preg_match("/(\\;|\\)|\\'|\"|\\!|\\<|\\>|union)/", urldecode($pagePath))) {
         return false;
     }
     $pathExploded = explode('~', $pagePath);
     $_SESSION['pages']['current_page_path'] = $pathExploded[0];
     if (!isset($pathExploded[1]) && ($pos = strpos($pathExploded[0], '@'))) {
         $pathExploded[1] = substr($pathExploded[0], $pos - 1);
         $pathExploded[0] = substr($pathExploded[0], 0, $pos);
     }
     if (isset($pathExploded[1])) {
         $this->pageParams = $pathExploded[1];
         //разбор переменных GET оформление ассоциативных массивов arrayname/key=value&key1=value
         $this->requestVarsDetect($this->pageParams);
         $_SESSION['pages']['current_get_params'] = substr($this->pageParams, 1 + strpos($this->pageParams, '/'));
     }
     if (isset($pathExploded[0])) {
         if (preg_match('/[0-9a-z_\\-\\/]/', $pathExploded[0])) {
             $treePath = XARRAY::clearEmptyItems(explode('/', $pathExploded[0]), true);
         } else {
             return false;
         }
     }
     /*
      *   action всегда  $REQUEST_VARS[0];
      *  приоритет action из $REQUEST_VARS[0] всегда выше чем у модуля по умолчанию если данное дествие разрешено
      */
     //вызов модуля страниц
     $pages = xCore::moduleFactory('pages.front');
     //    $pages->createTest();
     if (!$pages->getPageIdByPath($pathExploded[0])) {
         return false;
     }
     //кросспост
     if ($_SESSION['POST']) {
         $_POST = $_SESSION['POST'];
         unset($_SESSION['POST']);
     }
     xCore::callCommonInstance('templates');
     $templates = templatesCommon::getInstance();
     if (!$pages->page['params']['Template']) {
         return;
     }
     $templates->refreshMainTpls();
     $this->mainTemplate = $templates->getTpl($pages->page['params']['Template'], HTTP_HOST);
     $slotzCrotch = $pages->getSlotzCrotch($this->mainTemplate['slotz']);
     //добываем модули слотов ветвления
     if (!empty($pages->modulesOrder)) {
         foreach ($pages->modulesOrder as $moduleId => $priority) {
             if ($module = $pages->execModules[$moduleId]) {
                 //всегда 1 экземпляр на уровне factory
                 if (is_object($moduleObject = xCore::moduleFactory($module['params']['Type'] . '.front'))) {
                     $moduleObject->requestActionSet($this->request_action);
                     $moduleTimeStart = Common::getmicrotime();
                     $modulesOut[$moduleId] = $moduleObject->execute($module['params']);
                     $modules_crotch[$mk]['params']['__moduleExecutionTime'] = Common::getmicrotime() - $moduleTimeStart;
                 }
             }
         }
     }
     global $time;
     $y = Common::getmicrotime();
     echo $y - $time . ' modules ready ';
     while (list($slot, $modules) = each($slotzCrotch)) {
         foreach ($modules as $moduleId) {
             if (!$this->frontEditMode) {
                 $this->slotzOut[$slot] .= $modulesOut[$moduleId];
             } else {
                 /*                        while (list($module_id, $mout) = each($out))
                                         {
                                             $out[$module_id] = '<map etime="' . $modules_crotch[$module_id]['_etime'] . '" template="' . $modules_crotch[$module_id]['Template'] . '" alias="' . $modules_crotch[$module_id]['Alias'] . '" mtype="' . $modules_crotch[$module_id]['type'] . '" class="__module" id="_m' . $module_id . '">' . $mout . '</map>';
                                         }
                                         $this->modules_out[$slot] = '<form  alias="' . $tpl_slotz_all[$slot]['SlotAlias'] . '" class="__slot" id="_s' . $tpl_slotz_id[$slot] . '">' . implode('', $out) . '</form>';    
                 */
             }
         }
     }
     /*  if (($this->frontEditMode) && ($tpl_slotz_all))
         {
             //добавляем пустые слоты для FED
             foreach ($tpl_slotz_all as $slot => $source)
             {
                 $this->modules_out[$slot] = '<form alias="' . $tpl_slotz_all[$slot]['SlotAlias'] . '" class="__slot" id="_s' . $tpl_slotz_id[$slot] . '"> </form>';
             }
         }*/
     return true;
 }
Beispiel #2
0
xRegistry::set('TMS', $TMS = new tMultiSection());
xPDO::setSource(DB_HOST, DB_NAME, DB_USER, DB_PASS);
xRegistry::set('xPDO', xPDO::getInstance());
xNameSpaceHolder::addObjectToNS('E', new ENHANCE());
require_once xConfig::get('PATH', 'XOAD') . 'xoad.php';
require_once xConfig::get('PATH', 'ADM') . 'logger.class.php';
require_once xConfig::get('PATH', 'ADM') . 'adm.class.php';
if ($_REQUEST['xoadCall']) {
    ob_start();
    $adm = new adminPanel();
    $adm->startMapping();
    if (XOAD_Server::runServer()) {
        $all = ob_get_contents();
        ob_end_clean();
        if ($_COMMON_SITE_CONF['output_html_compress']) {
            Common::compress_output($all);
        }
        echo $all;
        exit;
    }
} elseif ($_REQUEST['action']) {
    $adm = new adminPanel();
    echo $adm->dispatchAction($_GET['action']);
} else {
    $tpl = xCore::moduleFactory('templates.back');
    $adm = new adminPanel();
    //$data['xObject']=XOAD_Client::register(new adminPanel());
    $data['xConnector'] = XOAD_Client::register(new Connector());
    echo $adm->buildMainPage($data);
}
die;