protected function doBuild(\PageContext $ctxt, \PageBuilderContext $builderCtxt, \RequestArrayAdapter $requestParams, \ArrayAdapter $buildParams) { //1. ЗАГОЛОВОК $builderCtxt->setTitle($this->authed ? 'Админка | ' . $this->adminPage->title() : 'xxx'); //2. JAVASCRIPT $builderCtxt->setJsParams($this->authed ? $this->adminPage->getJsParams() : null); //3. SMARTY RESOURCES if ($this->authed) { $builderCtxt->setSmartyParams4Resources($this->adminPage->getSmartyParams4Resources()); $builderCtxt->setSmartyParam4Resources('IDENT', $this->adminPage->getPageIdent()); $builderCtxt->setSmartyParam4Resources('TIMELINE_ENABE', true); } $smartyParams['authed'] = $this->authed; $smartyParams['isBasic'] = PsSecurity::isBasic(); if (!$this->authed) { return $smartyParams; } //Запустим неограниченный по времени режим - мало ли, что мы там будем делать:) PsUtil::startUnlimitedMode(); //Отменим нормализацию страницы PsDefines::setNormalizePage(false); //Получаем содержимое админской страницы $content = ContentHelper::getContent($this->adminPage); //Добавляем к ней ресурсы $content = APagesResources::inst()->getResourcesLinks($this->adminPage->getPageIdent(), $content); $smartyParams['page'] = $this->adminPage; $smartyParams['content'] = $content; $smartyParams['pagesLayout'] = AdminPagesManager::getInstance()->getLayout(); return $smartyParams; }
/* * wordpress - Классы окружения, когда ps-sdk работает, как wordpress plugin. * Нужно учитывать, что ps-sdk может быть вызван после подключения классов * wordpress (например при построении страницы, когда подключаются плагины) или до этого */ if (PsUtil::isWordPress()) { /* * Мы уже работаем как часть WordPress, ничего делать не нужно. * Классы src подключатся автоматически. */ $LOGGER->info('WordPress is already loaded, skip including...'); //Нужно подключить данный класс, так как он подключается после пагинов //Код подключения находится в файле /wp-settings.php require_once ABSPATH . WPINC . '/pluggable.php'; } else { /* * Нас вызвали раньше wordpress. Это может быть процесс, или ajax, или ещё что-либо. * Необходимо проанализировать контекст выполнения, нужно ли подключить ядро. */ $wpInc = PATH_BASE_DIR . 'wp-load.php'; $LOGGER->info('WordPress is not loaded yet, include wp core \'{}\'', $wpInc); if (is_file($wpInc)) { require_once $wpInc; } else { PsUtil::raise('WordPress core file not found, environment cannot be loaded.'); } } //Установим специальный провайдер безопасности PsSecurity::set(new PsSecurityProviderWp());
class X { protected function __construct() { echo 'X'; } } class Y extends X { function __construct() { //parent::__construct(); } } $y = new Y(); echo PsSecurity::isBasic(); die; ExceptionHandler::registerPretty(); print_r(PopupPagesManager::inst()->getPagesList()); die(''); echo PluginsManager::inst()->getAutogenDi('advgraph', array('x', 'y', 'z'), null, 'temp', 'php')->touch(); die; echo TestUtils::testProductivity(function () { FoldedStorage::getEntities('lib-s'); }, 200); br(); echo FoldedStorage::extractInfoFromClassName('PL_slib', $classPrefix, $entity); br(); echo $classPrefix; br(); echo $entity;
*/ PsSecurity::set(new PsSecurityProviderCmd()); } else { /* * Автоматически подключаемся к БД */ PsConnectionPool::configure(PsConnectionParams::production()); } /* * Инициализируем окружение, если мы работаем под ним. * Подключаемое окружение может установить свой провайдер безопасности. * Важно! Вызов не перемещать в if, так как метод init должен быть вызван обязательно. */ PsEnvironment::init(); /* * Инициализируем подсистему безопасности */ PsSecurity::init(); //Зарегистрируем функцию, подключающую админские ресурсы function ps_admin_on($force = false) { if ($force || AuthManager::isAuthorizedAsAdmin()) { Autoload::inst()->registerAdminBaseDir(); } } //Ну и сразу попытаемся подключить админские ресурсы ps_admin_on(); //Подключаем файл глобальных настроек, если он существует и мы работаем в рамках проекта PsGlobals::init(); //Получим экземпляр профайлера, чтобы подписаться на PsShotdown, если профилирование включено PsProfiler::inst()->add('ScriptInit', Secundomer::inst()->add(1, microtime(true) - SCRIPT_EXECUTION_START));
/** * Возвращает код текущего авторизованного пользователя. */ public static function getUserId($nullAllowed = false) { return $nullAllowed || self::checkAuthorized() ? PsSecurity::provider()->getUserId() : null; }
/** * Метод устанавливает провайдер безопасности */ public static function set(PsSecurityProvider $provider) { check_condition(!self::$inited, __CLASS__ . ' is already initialized'); check_condition(is_null(self::$provider), __CLASS__ . ' provider is already setted'); self::$provider = $provider; }