protected function doProcess(PageContext $ctxt, RequestArrayAdapter $requestParams, ArrayAdapter $buildParams) { $this->authed = AuthManager::isAuthorizedAsAdmin(); if ($this->authed) { $this->adminPage = AdminPagesManager::getInstance()->getCurrentPage(); } else { //Показываем форму авторизации админа только если используем базовый провайдер безопасности if (PsSecurity::isBasic() && FORM_AdminLoginForm::getInstance()->isValid4Process()) { if (AdminAuthManager::getInstance()->login()) { PsUtil::redirectToSelf(); } } } }
/** * Обработка действия формы создания/изменения/удаления записи */ private function processForm(RecEditFormData $data) { $table = $data->getTable(); $action = $data->getAction(); $rec = $data->getRec(); /* * Сначала выполним действия с фолдингом, так как они более багоёмки */ if ($data->isProcessFolding()) { $foldingEntity = $table->getFoldingEntity4DbRecAnyway($rec); check_condition($foldingEntity, 'Не удалось определить фолдинг для редактируемой сущности.'); $folding = $foldingEntity->getFolding(); $fident = $foldingEntity->getIdent(); /** * Если мы создавали или модифицировали запись, то фолдинг нужно создать. * Если удаляли - то фолдинг нужно удалить. */ switch ($action) { case PS_ACTION_CREATE: case PS_ACTION_EDIT: $folding->createEntity($fident); break; case PS_ACTION_DELETE: $folding->deleteEntity($fident); break; } } /* * Сохраним изменения в БД */ $table->saveRec($rec, $action); if ($action == PS_ACTION_EDIT) { PsUtil::redirectToSelf(); } else { PsUtil::redirectTo(self::urlTableRows($table)); } }