Example #1
0
 /**
  * Основной метод, выполняющий выполнение Ajax действия.
  * 
  * @return AjaxSuccess
  */
 public final function execute()
 {
     $id = get_called_class();
     check_condition(!$this->processed, "Действие [{$id}] уже выполнено.");
     $this->processed = true;
     //Не будем портить глобальный массив $_REQUEST, создав копию адаптера
     $params = RequestArrayAdapter::inst()->copy();
     check_condition($params->str(AJAX_ACTION_PARAM) == $id, "Действие [{$id}] не может быть выполнено.");
     $params->remove(AJAX_ACTION_PARAM);
     //Проверка доступа
     AuthManager::checkAccess($this->getAuthType());
     //Если пользователь зарегистрирован, как администратор - подключим ресурсы админа
     ps_admin_on();
     //Проверка обязательных параметров
     foreach (to_array($this->getRequiredParamKeys()) as $key) {
         if (!$params->has($key)) {
             return "Не передан обязательный параметр [{$key}].";
         }
     }
     if ($this->isCheckActivity() && !ActivityWatcher::isCanMakeAction()) {
         return 'Таймаут не закончился.';
     }
     //Вызываем обработку данных
     PsProfiler::inst('AjaxProfiler')->start($id);
     $result = $this->executeImpl($params);
     PsProfiler::inst('AjaxProfiler')->stop();
     if (isEmpty($result)) {
         return "Действие [{$id}] выполнено некорректно - возвращён пустой результат.";
     }
     if (is_object($result) && $result instanceof AjaxSuccess) {
         //SUCCESS
         //Зарегистрируем активноcть пользователя (только в случае успеха, так как пользователь мог просто ошибиться в воде данных)
         if ($this->isCheckActivity()) {
             ActivityWatcher::registerActivity();
         }
     }
     return $result;
 }
Example #2
0
 /**
  * Основной метод, выполняющий обработку формы.
  * 
  * @return AbstractForm
  */
 private final function process()
 {
     if ($this->processed) {
         return $this;
         //---
     }
     $this->processed = true;
     if (!$this->isTryingSubmit()) {
         return $this;
         //---
     }
     //Проверка доступа
     $this->checkAccess();
     if ($this->isAddCapture() && !PsCapture::isValid()) {
         $this->error = 'Требуется валидный код с картинки';
         return $this;
         //---
     }
     //Если пользователь зарегистрирован, как администратор - подключим ресурсы админа
     ps_admin_on();
     $button = $this->getSubmittedButton();
     if (!$button) {
         $this->error = "Не передана нажатая кнопка для формы {$this->ident}.";
         return $this;
         //---
     }
     if (!$this->hasButton($button)) {
         $this->error = "Форма {$this->ident} засабмичена незарегистрированной кнопкой {$button}.";
         return $this;
         //---
     }
     if ($this->isCheckActivity() && !ActivityWatcher::isCanMakeAction()) {
         $this->error = 'Таймаут не закончился.';
         return $this;
         //---
     }
     //Вызываем обработку данных
     $result = null;
     try {
         $result = $this->processImpl(PostArrayAdapter::inst(), $button);
     } catch (Exception $ex) {
         $this->error = $ex->getMessage();
         ExceptionHandler::dumpError($ex);
         return $this;
         //---
     }
     if (isEmpty($result)) {
         $this->error = "Форма {$this->ident} обработана некорректно - возвращён пустой объект.";
         return $this;
         //---
     }
     if (is_object($result) && $result instanceof FormSuccess) {
         //SUCCESS
         //Форсированно сбросим капчу (всё равно, работаем с ней или нет)
         PsCapture::reset();
         //Зарегистрируем активноcть пользователя (только в случае успеха, так как пользователь мог просто ошибиться в воде данных)
         if ($this->isCheckActivity()) {
             ActivityWatcher::registerActivity();
         }
         $this->result = $result;
     } else {
         //ERROR
         $this->error = $result;
     }
     return $this;
 }
Example #3
0
    }
    final function __construct($a)
    {
    }
}
class B extends A
{
}
A::test();
A::test();
B::test();
ExceptionHandler::registerPretty();
//print_r(B::$a);
PsLibs::inst();
PsConnectionPool::configure(PsConnectionParams::sdkTest());
ps_admin_on(true);
$a = array('a' => array('x' => 1, 'y' => 2));
$key = 'M';
$group = 'default';
$group2 = 'default2';
PSCache::inst()->saveToCache($a, $key, $group, 'xxx');
PSCache::inst()->saveToCache(array('a' => 1), '$key', '$group', 'xxx1');
die;
echo TestUtils::testProductivity(function () {
    PSCache::inst()->getFromCache('$key', '$group', null, 'xxx1');
});
print_r(PSCache::inst()->getFromCache($key, $group, array('a'), 'xxx1'));
die;
print_r(PSCache::inst()->saveToCache($a, $key, $group));
print_r(PSCache::inst()->getFromCache($key, $group));
PSCache::inst()->removeFromCache($key, $group);
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));