Example #1
0
 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;
 }
Example #2
0
/*
 * 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());
Example #3
0
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;
Example #4
0
     */
    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));
Example #5
0
 /**
  * Возвращает код текущего авторизованного пользователя.
  */
 public static function getUserId($nullAllowed = false)
 {
     return $nullAllowed || self::checkAuthorized() ? PsSecurity::provider()->getUserId() : null;
 }
Example #6
0
 /**
  * Метод устанавливает провайдер безопасности
  */
 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;
 }