コード例 #1
0
ファイル: APTables.php プロジェクト: ilivanoff/www
 public function buildContent()
 {
     $navigation = AdminPageNavigation::inst();
     $PARAMS['mode'] = self::MODE_TABLES_LIST;
     /*
      * Просмотр содержимого таблицы
      */
     $table = RequestArrayAdapter::inst()->str('table');
     if ($table) {
         $PARAMS['mode'] = self::MODE_TABLE_VIEW;
         $table = PsTable::inst($table);
         $PARAMS['table'] = $table;
         $PARAMS['rows'] = $table->getRows();
         $navigation->addPath(self::urlTables(), 'Настройки');
         $navigation->setCurrent('Просмотр ' . $table->getName());
     }
     /*
      * Просмотр и настройка всех таблиц
      */
     if ($PARAMS['mode'] == self::MODE_TABLES_LIST) {
         $PARAMS['errors'] = PsDbIniHelper::validateAll();
         foreach (ConfigIni::getAllowedScopes() as $scope) {
             $PARAMS['data'][$scope] = TableExporter::inst()->getTables($scope);
             $PARAMS['data']["{$scope}.ini"] = DbIni::getIniContent($scope);
         }
         $navigation->setCurrent('Настройки');
     }
     echo $this->getFoldedEntity()->fetchTpl($PARAMS);
 }
コード例 #2
0
ファイル: sprites.php プロジェクト: ilivanoff/ps-sdk-dev
 public function buildContent()
 {
     $RQ = RequestArrayAdapter::inst();
     $mode = $RQ->str('mode', self::MODE_SPRITES_LIST);
     $name = $RQ->str('name');
     $navigation = AdminPageNavigation::inst();
     $sprites = CssSpritesManager::getAllDirsSptites();
     switch ($mode) {
         case self::MODE_SPRITE:
             if (!array_key_exists($name, $sprites)) {
                 $mode = self::MODE_SPRITES_LIST;
                 break;
             }
             $smartyParams['sprite'] = CssSprite::inst($name)->rebuild();
             break;
     }
     switch ($mode) {
         case self::MODE_SPRITES_LIST:
             $navigation->setCurrent('Список спрайтов');
             break;
         case self::MODE_SPRITE:
             $navigation->addPath(self::urlSpritesList(), 'Список спрайтов');
             $navigation->setCurrent($name);
             break;
     }
     $smartyParams['mode'] = $mode;
     $smartyParams['name'] = $name;
     $smartyParams['sprites'] = $sprites;
     return $this->getFoldedEntity()->fetchTpl($smartyParams);
 }
コード例 #3
0
ファイル: timeline.php プロジェクト: ilivanoff/ps-sdk-dev
 public function buildContent()
 {
     $TLM = TimeLineManager::inst();
     $insts = $TLM->getEntityClassInsts();
     if (empty($insts)) {
         return;
         //Нет временных шкал для показа
     }
     $idents = array_keys($insts);
     $options = array();
     /** @var TimeLineBuilderBase */
     foreach ($insts as $ident => $inst) {
         $options[] = array('content' => $inst->getTitle(), 'value' => $this->getPageUrl(array('type' => $ident)));
     }
     usort($options, function ($e1, $e2) {
         return strcasecmp($e1['content'], $e2['content']);
     });
     $current = RequestArrayAdapter::inst()->str('type');
     $current = $current && in_array($current, $idents) ? $current : $idents[0];
     $select = PsHtml::select(array('class' => 'switcher'), $options, $this->getPageUrl(array('type' => $current)));
     /*
      * В данный момент мы определили идентификатор временной шкалы и построили элемент $select,
      * можем строить страницу.
      */
     $params['body'] = $TLM->fetchTplWithResources($current);
     $params['select'] = $select;
     return $this->getFoldedEntity()->fetchTpl($params);
 }
コード例 #4
0
ファイル: passrecover.php プロジェクト: ilivanoff/www
 public function buildContent()
 {
     $code = RequestArrayAdapter::inst()->str(REMIND_CODE_PARAM);
     $error = $code ? PassRecoverManager::getCantUseReason($code) : null;
     $params['code'] = $code;
     $params['error'] = $error;
     $params['mode'] = $code ? 'use' : 'get';
     echo $this->getFoldedEntity()->fetchTpl($params);
 }
コード例 #5
0
ファイル: RubricsProcessor.php プロジェクト: ilivanoff/www
 /** @return Rubric */
 public function getCurrentRubric()
 {
     $curPage = PageContext::inst()->getPage();
     if ($curPage->isIt($this->getRubricPage())) {
         $rubric = null;
         if (ALLOW_DIRECT_BY_IDENT) {
             $rubric = $this->extractRubric(RequestArrayAdapter::inst()->str(GET_PARAM_RUBRIC_ID));
         } else {
             $rubric = $this->getRubric(RequestArrayAdapter::inst()->int(GET_PARAM_RUBRIC_ID));
         }
         return $rubric ? $this->getRubricContent($rubric->getId()) : null;
     }
     if ($curPage->isIt($this->getPostPage())) {
         return $this->getRubricContent($this->getCurrentPost()->getRubricId());
     }
     return null;
 }
コード例 #6
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);
     $params->remove(AJAX_ACTION_GROUP_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;
 }
コード例 #7
0
ファイル: APLibEdit.php プロジェクト: ilivanoff/ps-sdk-dev
 public function buildContent()
 {
     $navigation = AdminPageNavigation::inst();
     $ftype = LibResources::LIB_FOLDING_TYPE;
     $fsubtype = RequestArrayAdapter::inst()->str('fsubtype');
     $fident = RequestArrayAdapter::inst()->str('fident');
     $mode = !$fsubtype ? self::MODE_FOLDINGS_LIST : self::MODE_FOLDING_CONTENT;
     $PARAMS['error'] = null;
     switch ($mode) {
         case self::MODE_FOLDINGS_LIST:
             $PARAMS['foldings'] = array();
             /* @var $manager FoldedResources */
             foreach (Handlers::getInstance()->getLibManagers() as $manager) {
                 $PARAMS['foldings'][] = array('name' => $manager->getEntityName() . ' (' . $manager->getUnique() . ')', 'url' => $this->url(array('fsubtype' => $manager->getFoldingSubType())));
             }
             $navigation->setCurrent('Список библиотек');
             break;
         case self::MODE_FOLDING_CONTENT:
             $manager = Handlers::getInstance()->getTimeLineFolding($fsubtype);
             $PARAMS['tlbfe'] = $manager->getTLBuilderFoldedEntity();
             $PARAMS['folding']['name'] = $manager->getEntityName();
             $PARAMS['folding']['fsubtype'] = $manager->getFoldingSubType();
             //TODO - вынести
             $items = AdminLibBean::inst()->getAllNoFetch($fsubtype);
             $PARAMS['folding']['data'] = array();
             /* @var $item LibItemDb */
             foreach ($items as $item) {
                 $item['editurl'] = AP_APFoldingEdit::urlFoldingEdit(FoldedResources::unique($ftype, $fsubtype, $item['ident']));
                 $PARAMS['folding']['data'][] = $item;
             }
             $navigation->addPath($this->url(), 'Список библиотек');
             $navigation->setCurrent($manager->getEntityName());
             break;
     }
     $PARAMS['mode'] = $mode;
     echo $this->getFoldedEntity()->fetchTpl($PARAMS);
 }
コード例 #8
0
 /**
  * Метод строит html листочка на дереве дискуссии:
  * 
  * <li>
  * ....
  *    <ul>
  *       <li>
  *       ....
  *       </li>
  *    </ul>
  * </li>
  * 
  * @param DiscussionMsg $msg
  */
 public final function buildLeaf(DiscussionMsg $msg, $simple = false)
 {
     $msgId = $msg->getId();
     $author = $msg->getUser();
     $isDeleted = $msg->isDeleted();
     $isUserComment = $author->isAuthorised();
     $isCanConfirm = !$isUserComment && !$msg->isConfirmed() && !$isDeleted && AuthManager::isAuthorizedAsAdmin();
     $notKnown = !$msg->isKnown() && $msg->getUserTo() && $msg->getUserTo()->isIt(PsUser::instOrNull());
     $msgUnique = $msg->getUnique();
     $threadUnique = $this->SETTINGS->getThreadUnique($msg->getThreadId());
     //Мы открываем страницу для показа этого комментария
     $liId = RequestArrayAdapter::inst()->str(GET_PARAM_GOTO_MSG) === $msgUnique ? " id=\"{$msgUnique}\"" : '';
     //Классы li
     $liClasses = array('msg');
     if ($isDeleted) {
         $liClasses[] = 'deleted';
     }
     //Классы Comment
     $divClasses = array('comment', $msgUnique);
     if ($isUserComment) {
         $divClasses[] = 'user_comment';
     }
     if ($isCanConfirm) {
         $divClasses[] = 'not_confirmed';
     }
     //Данные для Comment
     $divData['unique'] = $msgUnique;
     //Имя пользователя
     $userName = $author->getName() . ($isUserComment ? ' (вы)' : '');
     //КНОПКИ УПРАВЛЕНИЯ СВЕРХУ
     $controlsTop = array();
     if (!$simple) {
         //Кнопки управления сверху
         $controlsTop[] = PsHtml::a(array('href' => '#'), '#');
         if (!$msg->isRoot()) {
             $controlsTop[] = PsHtml::a(array('href' => '#', 'class' => 'parent'), '↑');
         }
     }
     //Кнопки голосования
     if ($this->SETTINGS->isVotable()) {
         $userCanVote = AuthManager::isAuthorized() && !$isUserComment;
         $votes = VotesManager::inst()->getVotesCount($threadUnique, $msgId);
         $likeCtrl = array();
         if ($userCanVote) {
             $vote = VotesManager::inst()->getUserVotes($threadUnique, $msgId, AuthManager::getUserId());
             $likeCtrl[] = PsHtml::a(array('class' => 'like ' . ($vote > 0 ? 'active' : 'clickable')), '+1');
             $likeCtrl[] = PsHtml::a(array('class' => 'votes' . ($vote == 0 ? '' : ' clickable') . ($votes == 0 ? '' : ($votes > 0 ? ' green' : ' red'))), abs($votes));
             $likeCtrl[] = PsHtml::a(array('class' => 'dislike ' . ($vote < 0 ? 'active' : 'clickable')), '−1');
         } else {
             $likeCtrl[] = PsHtml::a(array('class' => 'votes' . ($votes == 0 ? '' : ($votes > 0 ? ' green' : ' red'))), abs($votes));
         }
         $controlsTop[] = PsHtml::span(array('class' => 'vote'), implode('', $likeCtrl));
     }
     $controlsTop = implode('', $controlsTop);
     //КНОПКИ УПРАВЛЕНИЯ СНИЗУ
     $controlsBottom = '';
     if (!$simple && !$isDeleted) {
         $controlsBottom = array();
         $controlsBottom['id'] = $msgId;
         if ($isCanConfirm) {
             $controlsBottom[SmartyFunctions::ACTION_CONFIRM] = 'Принять';
         }
         if (!$msg->isMaxDeepLevel()) {
             $controlsBottom[SmartyFunctions::ACTION_REPLY] = 'Ответить';
         }
         if ($isUserComment) {
             $controlsBottom[SmartyFunctions::ACTION_DELETE] = 'Удалить';
         } elseif (AuthManager::isAuthorizedAsAdmin()) {
             $controlsBottom[SmartyFunctions::ACTION_DELETE] = 'Удалить (админ)';
         }
         $controlsBottom = SmartyFunctions::psctrl($controlsBottom);
     }
     //Собираем параметры в кучу
     $params['msg'] = $msg;
     $params['new'] = $notKnown;
     $params['builder'] = $this;
     $params['liId'] = $liId;
     $params['liClasses'] = implode(' ', $liClasses);
     $params['divClasses'] = implode(' ', $divClasses);
     $params['divData'] = PsHtml::data2string($divData);
     $params['msgId'] = $msgId;
     $params['simple'] = $simple;
     $params['avatar'] = $author->getAvatarImg('42x', array('class' => 'small'));
     $params['userName'] = $userName;
     $params['controlsTop'] = $controlsTop;
     $params['controlsBottom'] = $controlsBottom;
     if ($msg->isTemplated()) {
         $params['msgCtt'] = TemplateMessages::inst()->decodeTemplateMsg($msg);
     } else {
         $params['msgCtt'] = $msg;
     }
     return PSSmarty::template('discussion/common/leaf.tpl', $params)->fetch();
 }
コード例 #9
0
ファイル: GymSaveProgramm.php プロジェクト: ilivanoff/www
<?php

require_once 'AjaxTools.php';
$data = RequestArrayAdapter::inst()->arr('programm');
if ($data) {
    $programm = new GymProgramm($data);
    if ($programm->hasExercises()) {
        $programmId = GymManager::getInstance()->saveProgramm($programm);
        json_success($programmId);
    } else {
        json_error('Программа не содержит ни одного упражнения');
    }
} else {
    json_error('Не переданы данные');
}
コード例 #10
0
 /**
  * Предварительная обработка страницы - самое время выполнить сабмит формы, редирект и остальные подобные вещи
  */
 private final function postProcess()
 {
     //Проверим и сменим состояние
     $this->changeState(self::STATE_STARTED, self::STATE_FINISHED);
     //Устанавливаем контекст
     $BUILDER_CTXT = PageBuilderContext::getInstance();
     //Проверим, что наш контекст не был сброшен
     check_condition(__CLASS__ == $BUILDER_CTXT->getContextIdent(), 'Unexpected ' . get_class($BUILDER_CTXT) . ': ' . $BUILDER_CTXT->getContextIdent());
     //Получим параметры страницы
     $pagePrams = new PageParams($BUILDER_CTXT->finalizeTplContent(null));
     //Сброим контекст, он нам больше не нужен
     $BUILDER_CTXT->dropContext();
     try {
         //Вызываем завершающую обработку страницы
         $result = $this->postProcessImpl($pagePrams, RequestArrayAdapter::inst());
         //Останавливаем профайлер
         $sec = $this->PROFILER->stop();
         //Отлогируем
         $this->LOGGER->info('Page build done in {} sec', $sec->getTime());
         //Вернём
         return $result;
         //---
     } catch (Exception $ex) {
         $this->PROFILER->stop(false);
         throw $ex;
     }
 }
コード例 #11
0
ファイル: CheckCurPass.php プロジェクト: ilivanoff/www
<?php

require_once 'AjaxTools.php';
$pass = RequestArrayAdapter::inst()->str(FORM_PARAM_REG_OLD_PASS);
echo $pass && PsUser::inst()->checkPassword($pass) ? 'true' : 'false';
コード例 #12
0
ファイル: Action.php プロジェクト: ilivanoff/ps-sdk-dev
/**
 * Определим функцию, которая выполнит все действия - не будем лишними переменными засорять глобальное пространство
 */
function psExecuteAjaxAction()
{
    /*
     * Название действия должно быть в переменной запроса. Оно же - название класса, который будет выполнен.
     * Группа действия должны быть не обязательна, при определении действия группа нужна обязательно.
     */
    $actionName = RequestArrayAdapter::inst()->str(AJAX_ACTION_PARAM);
    $actionGroup = RequestArrayAdapter::inst()->str(AJAX_ACTION_GROUP_PARAM, 'client');
    if (!PsCheck::notEmptyString($actionName) || !PsCheck::notEmptyString($actionGroup)) {
        return json_error('Не передан код действия или его группа');
        //---
    }
    /*
     * Экземпляр класса действия - должен быть наследником AbstractAjaxAction
     */
    $action = null;
    /*
     * Поищем в проектных действиях, они для нас имеют больший приоритет
     */
    foreach (ConfigIni::ajaxActionsAbs($actionGroup) as $dirAbsPath) {
        $classPath = file_path($dirAbsPath, $actionName, PsConst::EXT_PHP);
        if (is_file($classPath)) {
            /*
             * Нашли файл. Загрузим и проверим, является ли он наследником AbstractAjaxAction
             */
            require_once $classPath;
            if (!PsUtil::isInstanceOf($actionName, AbstractAjaxAction::getClassName())) {
                continue;
                //---
            }
            $action = new $actionName();
            break;
            //---
        }
    }
    /*
     * Проверим, существует ли действие.
     * Для безопасности не будем писать детали обработки.
     */
    if (!$action || !$action instanceof AbstractAjaxAction) {
        return json_error('Действие не опеределено');
        //---
    }
    /*
     * Выполняем
     */
    $result = null;
    try {
        $result = $action->execute();
    } catch (Exception $e) {
        $result = $e->getMessage();
    }
    /*
     * Проверим результат
     */
    if ($result instanceof AjaxSuccess) {
        json_success($result->getJsParams());
    } else {
        json_error($result ? $result : 'Ошибка выполнения действия');
    }
}
コード例 #13
0
ファイル: PostsProcessor.php プロジェクト: ilivanoff/www
 private function getPagingNum()
 {
     $pagingsCnt = $this->getPagingsCnt();
     $pagingRq = RequestArrayAdapter::inst()->int(GET_PARAM_PAGE_NUM, 1);
     return is_numeric($pagingsCnt) ? min(array(max(array(1, $pagingRq)), $pagingsCnt)) : null;
 }
コード例 #14
0
 public function buildContent()
 {
     $navigation = AdminPageNavigation::inst();
     $RQ = RequestArrayAdapter::inst();
     /** @var FoldedEntity */
     $entity = FoldedStorageInsts::getFoldedEntityByUnique($RQ->str('entity'), false);
     /** @var FoldedResources */
     $folding = $entity ? $entity->getFolding() : FoldedStorageInsts::byUnique($RQ->str('folding'), false);
     $mode = $RQ->str('mode', self::MODE_FOLDINGS_LIST);
     $PARAMS['mode'] = $mode;
     $PARAMS['error'] = null;
     $PARAMS['entity'] = $entity;
     $PARAMS['folding'] = $folding;
     $PARAMS['foldings'] = FoldedStorageInsts::listFoldings();
     $ftype = $folding ? $folding->getFoldingType() : '';
     $fsubtype = $folding ? $folding->getFoldingSubType() : '';
     $fident = $entity ? $entity->getIdent() : '';
     $flist = $RQ->str('list');
     $ftplpath = $RQ->str('tplpath');
     //РЕДИРЕКТ
     if ($mode != self::MODE_FOLDINGS_LIST && !$folding) {
         PsUtil::redirectTo(self::urlFoldingsList());
     }
     //ВЫПОЛНЕНИЕ
     switch ($mode) {
         //СПИСОК ВСЕХ ФОЛДИНГОВ
         case self::MODE_FOLDINGS_LIST:
             $navigation->setCurrent('Список фолдингов');
             break;
             //СПИСОК СУЩНОСТЕЙ ДАННОГО ФОЛДИНГА
         //СПИСОК СУЩНОСТЕЙ ДАННОГО ФОЛДИНГА
         case self::MODE_FOLDING_CONTENT:
             $newIdent = $folding->getNextEntityIdent();
             //Форма создания
             $FORM = FORM_AdminFoldingCreateForm::getInstance();
             $FORM->setHidden('folding', $folding->getUnique());
             $FORM->setParam(FORM_AdminFoldingCreateForm::PARAM_NEW_FOLDING_IDENT, $newIdent);
             $FORM->setSmartyParam('folding', $folding);
             /* @var $TABLE PsTable */
             $FORM->setSmartyParam('rec', $folding->getDbRec4Entity($newIdent));
             //Форма загрузки
             $FORM = FORM_AdminFoldingUploadForm::getInstance();
             $FORM->setHidden('folding', $folding->getUnique());
             $navigation->addPath(self::urlFoldingsList(), 'Список фолдингов');
             $navigation->setCurrent($folding->getEntityName());
             break;
         case self::MODE_FOLDING_LIST_EDIT:
             $PARAMS['list'] = $flist;
             //TODO - выкинуто
             //$PARAMS['listIdents'] = $folding->getPossibleListIdents($flist);
             $navigation->addPath(self::urlFoldingsList(), 'Список фолдингов');
             $navigation->addPath(self::urlFoldingEntitys($folding), $folding->getEntityName());
             $navigation->setCurrent('Редактирование списка ' . $flist);
             break;
         case self::MODE_FOLDING_TPLS_LIST:
             $PARAMS['tplsList'] = $folding->getAllInfoTpls($fident);
             $navigation->addPath(self::urlFoldingsList(), 'Список фолдингов');
             $navigation->addPath(self::urlFoldingEntitys($folding), $folding->getEntityName());
             $navigation->addPath(self::urlFoldingEdit($entity), $fident);
             $navigation->setCurrent('Информационные шаблоны');
             break;
         case self::MODE_FOLDING_TPL_EDIT:
             $PARAMS['tplsList'] = $folding->getAllInfoTpls($fident);
             $tpl = $folding->getInfoTpl($entity->getIdent(), $ftplpath);
             $PARAMS['tpl'] = $tpl;
             //Отфетчим содержимое, извлеча из запроса те параметры, которые начинаются на sm_
             $PARAMS['content'] = $tpl->fetchNoCache($RQ->getByKeyPrefix('sm_', true));
             $FORM = FORM_AdminFoldingInfoTplEditForm::getInstance();
             $FORM->setHidden('fentity', $entity->getUnique());
             $FORM->setHidden('ftpl', $tpl->getInfoRelPath());
             $FORM->setSmartyParam('tpl', $tpl->getDirItem()->getFileContents());
             $navigation->addPath(self::urlFoldingsList(), 'Список фолдингов');
             $navigation->addPath(self::urlFoldingEntitys($folding), $folding->getEntityName());
             $navigation->addPath(self::urlFoldingEdit($entity), $fident);
             $navigation->addPath(self::urlFoldingInfoTplsList($entity), 'Информационные шаблоны');
             $navigation->setCurrent($tpl->getInfoRelPath());
             break;
         case self::MODE_FOLDING_EDIT:
             //Ссылка для скачивания спрайтов
             $download['class'] = 'download';
             $download['data'] = array('ftype' => $ftype, 'fsubtype' => $fsubtype, 'fident' => $fident);
             $PARAMS['download'] = PsHtml::a($download, '[Скачать]');
             $spriteImg = $folding->getSprite($fident);
             $spriteImg = $spriteImg && $spriteImg->getImgDi()->isImg() ? $spriteImg->getImgDi() : null;
             $PARAMS['sprite'] = $spriteImg ? PsHtml::a(array('href' => $spriteImg->getRelPath()), '[Спрайт]', true) : null;
             //Информационные шаблоны
             $PARAMS['patterns'] = '';
             if (count($folding->getInfoDiList($fident))) {
                 $patterns['href'] = self::urlFoldingInfoTplsList($entity);
                 $PARAMS['patterns'] = PsHtml::a($patterns, '[Инфо шаблоны]');
             }
             $PARAMS['info'] = '';
             try {
                 $prew = $folding->getFoldedEntityPreview($fident);
                 if (is_array($prew)) {
                     $PARAMS['info'] = array_get_value('info', $prew);
                     $PARAMS['content'] = array_get_value('content', $prew);
                 } else {
                     $PARAMS['content'] = $prew;
                 }
             } catch (Exception $e) {
                 $PARAMS['content'] = ExceptionHandler::getHtml($e);
             }
             /*
              * Подготовим форму редактирования фолдинга
              */
             $FORM = FORM_AdminFoldingEditForm::getInstance();
             /* hiddens */
             $FORM->setHidden('ftype', $ftype);
             $FORM->setHidden('fsubtype', $fsubtype);
             $FORM->setHidden('fident', $fident);
             $rtypes = $folding->getAllowedResourceTypes();
             /* fields */
             foreach ($rtypes as $rtype) {
                 $FORM->setParam($rtype, $folding->getResourceDi($fident, $rtype)->getFileContents(false));
             }
             /* smarty */
             $FORM->setSmartyParam('types', $rtypes);
             $FORM->setSmartyParam('covers', $folding->isImagesFactoryEnabled());
             /* table */
             $TABLE = null;
             $DBROW = null;
             if ($folding->getTableName()) {
                 $TABLE = TableExporter::inst()->getTable($folding->getTableName());
                 //TODO - выкинуто
                 //$DBROW = $TABLE->getFoldingDbRec($folding, $fident);
             }
             $FORM->setSmartyParam('table', $TABLE);
             $FORM->setSmartyParam('row', $DBROW);
             if (!$DBROW) {
                 $FORM->removeButton(FORM_AdminFoldingEditForm::BUTTON_DELETE_ALL);
             }
             /*
              * Навигация
              */
             $navigation->addPath(self::urlFoldingsList(), 'Список фолдингов');
             $navigation->addPath(self::urlFoldingEntitys($folding), $folding->getEntityName());
             $navigation->setCurrent($fident);
             break;
     }
     PsDefines::setReplaceFormulesWithImages(false);
     echo $this->getFoldedEntity()->fetchTpl($PARAMS);
 }
コード例 #15
0
ファイル: CheckEmail.php プロジェクト: ilivanoff/www
<?php

require_once 'AjaxTools.php';
$email = RequestArrayAdapter::inst()->str(FORM_PARAM_REG_MAIL);
$mustPresent = RequestArrayAdapter::inst()->bool('mp');
$invalid = true;
if ($email) {
    $email = strtolower($email);
    $invalid = UserInputValidator::validateEmail($email, $mustPresent);
}
echo $invalid ? 'false' : 'true';
コード例 #16
0
ファイル: GymDelProgramm.php プロジェクト: ilivanoff/www
<?php

require_once 'AjaxTools.php';
$programmId = RequestArrayAdapter::inst()->int('id');
$errorMsg = null;
if (is_numeric($programmId)) {
    GymManager::getInstance()->deleteProgramm($programmId);
} else {
    $errorMsg = 'Не передан id программы';
}
if ($errorMsg) {
    json_error($errorMsg);
} else {
    json_success('success');
}
コード例 #17
0
ファイル: PageBuilder.php プロジェクト: ilivanoff/www
 public final function buildPage(array $buildParams = array())
 {
     header('Content-Type: text/html; charset=utf-8');
     ExceptionHandler::registerPretty();
     //Запросим адаптер, чтобы сбросить параметры в сессии
     UnloadArrayAdapter::inst();
     // Подготовим необходимые классы
     $CTXT = PageContext::inst();
     $PAGE = $CTXT->getPage();
     $BUILDER = $this->getPageBuilder($CTXT->getPageType());
     $PROFILER = $BUILDER->getProfiler();
     $RESOURCES = null;
     $TITLE = null;
     $CONTENT = null;
     if ($PROFILER) {
         // Начинаем профилирование
         $PROFILER->start($CTXT->getRequestUrl());
     }
     try {
         //Подготовим объекты, которые будем передавать построителю страницы
         $RQ_PARAMS = RequestArrayAdapter::inst();
         $BUILD_PARAMS = ArrayAdapter::inst($buildParams);
         $BUILDER_CTXT = PageBuilderContext::getInstance();
         //Стартуем контекст
         $BUILDER_CTXT->setContextWithFoldedEntity($BUILDER->getFoldedEntity());
         //Вызываем предварительную обработку страницы
         $BUILDER->preProcessPage($CTXT, $RQ_PARAMS, $BUILD_PARAMS);
         // Оповещаем слушателей
         /* @var $listener PagePreloadListener */
         foreach (Handlers::getInstance()->getPagePreloadListeners() as $listener) {
             $listener->onPagePreload($PAGE);
         }
         //Билдер строит страницу, наполняя контекст. Нам от него нужны будут только данные из контекста
         $PARAMS = $BUILDER->buildPage($CTXT, $BUILDER_CTXT, $RQ_PARAMS, $BUILD_PARAMS);
         //Остановим контекст
         $BUILDER_CTXT->dropContext();
         //Загрузим параметры
         $TITLE = $PARAMS->getTitle();
         $CONTENT = $PARAMS->getContent();
         // Подключаем все необходимые ресурсы
         $RESOURCES = $this->buildResources($PARAMS, $CTXT);
         //Проведём финализацию страницы, чтобы различные менеджеры могли добавить к ней свои данные
         $CONTENT = PageFinaliserFoldings::finalize($this->LOGGER, $CONTENT);
     } catch (Exception $ex) {
         $TITLE = trim($TITLE) . ' (произошла ошибка)';
         $CONTENT = ExceptionHandler::getHtml($ex);
     }
     //Непосредственное построение страницы.
     $PAGE_PARAMS['RESOURCES'] = $RESOURCES;
     $PAGE_PARAMS['TITLE'] = $TITLE;
     $PAGE_PARAMS['CONTENT'] = $CONTENT;
     //ПОДСТАВЛЯЕМ ВСЕ ПАРАМЕТРЫ СТРАНИЦЫ В БАЗОВЫЙ ШАБЛОН
     $PAGE_CONTENT = PSSmarty::template('page/page_pattern.tpl', $PAGE_PARAMS)->fetch();
     $this->LOGGER->infoBox('HTML PAGE', $PAGE_CONTENT);
     //ФИНАЛИЗАЦИЯ СТРАНИЦЫ - ВЫЧИСЛИМ РЕСУРСЫ, КОТОРЫЕ НУЖНО ОТКЛЮЧИТЬ
     $PAGE_CONTENT = PageFinaliserRegExp::finalize($this->LOGGER, $PAGE_CONTENT);
     //НОРМАЛИЗАЦИЯ СТРАНИЦЫ - УДАЛИМ ДВОЙНЫЕ ПРОБЕЛЫ И ПЕРЕНОСЫ
     if (PsDefines::isNormalizePage()) {
         $PAGE_CONTENT = PageNormalizer::finalize($this->LOGGER, $PAGE_CONTENT);
     }
     //ВСТАВИМ ASIS ПАРАМЕТРЫ, ТАК КАК БОЛЕЕ SMARTY ФИЛЬТРЫ ВЫЗЫВАТЬСЯ НЕ БУДУТ
     $PAGE_CONTENT = $this->replaceAsIsValues($PAGE_CONTENT);
     $this->LOGGER->infoBox('PAGE WITH ASIS REPLACED', $PAGE_CONTENT);
     //BOOOM :)
     echo $PAGE_CONTENT;
     if ($PROFILER) {
         // Заканчиваем профилирование
         $PROFILER->stop();
         PageOpenWatcher::updateUserPageWatch($CTXT->getRequestUrl());
     }
 }
コード例 #18
0
ファイル: ps-crop.php プロジェクト: ilivanoff/ps-sdk-dev
<?php

header('Content-Type: text/html; charset=utf-8');
require_once 'ps-includes/MainImport.php';
header('Content-Type: text/html; charset=utf-8');
ExceptionHandler::registerPretty();
$suffix = RequestArrayAdapter::inst()->str('page', 'img');
$tplPath = "crop/crop-page-{$suffix}.tpl";
if (!PSSmarty::smarty()->templateExists($tplPath)) {
    $suffix = 'img';
    $tplPath = "crop/crop-page-{$suffix}.tpl";
}
$SMARTY_PARAMS['JS_DEFS'] = PageBuilder::inst()->buildJsDefs();
$SMARTY_PARAMS['CROP_SUFFIX'] = $suffix;
$PARAMS['RESOURCES'] = PSSmarty::template('crop/page_resources.tpl', $SMARTY_PARAMS)->fetch();
$PARAMS['CONTENT'] = PSSmarty::template($tplPath)->fetch();
$PARAMS['TITLE'] = 'Мои мысли';
PSSmarty::template('crop/page_pattern.tpl', $PARAMS)->display();
コード例 #19
0
ファイル: PopupPagesManager.php プロジェクト: ilivanoff/www
 /** @return BasePopupPage */
 public function getCurPage()
 {
     $GA = RequestArrayAdapter::inst();
     return $GA->has(POPUP_WINDOW_PARAM) ? $this->getPage($GA->str(POPUP_WINDOW_PARAM)) : $this->getPage(PP_404::getIdent());
 }
コード例 #20
0
ファイル: test.php プロジェクト: ilivanoff/ps-sdk-dev
 /**
  * Основной метод, выполняющий загрузку содержимого тестовой страницы
  */
 private function getContentImpl(RequestArrayAdapter $params, Smarty $smarty)
 {
     //Силовые упражнения
     $exId = $params->int('ex_id');
     if ($exId) {
         //$ex = GymManager::getInstance()->getExercise($exId);
         $tplPath = "gym/exercises/{$exId}.tpl";
         return $smarty->templateExists($tplPath) ? $smarty->fetch($tplPath) : null;
     }
     //Специальные страницы
     $pageType = $params->str('pagetype');
     if ($pageType) {
         $smParams = array();
         switch ($pageType) {
             case 'smarty':
                 foreach (array('blocks', 'functions', 'modifiers') as $type) {
                     $items = DirManager::smarty('plugins/' . $type)->getDirContentFull(null, PsConst::EXT_PHP);
                     /* @var $item DirItem */
                     foreach ($items as $item) {
                         //Название
                         $name = explode('.', $item->getName());
                         $name = $name[1];
                         //Первый комментарий
                         $tokens = token_get_all($item->getFileContents());
                         $comment = array(T_COMMENT, T_DOC_COMMENT);
                         $fileComment = '';
                         foreach ($tokens as $token) {
                             if (in_array($token[0], $comment)) {
                                 $fileComment = trim($token[1]);
                                 break;
                             }
                         }
                         $smParams[$type][] = array('name' => $name, 'comment' => $fileComment);
                     }
                 }
                 break;
             case 'doubleimg':
                 $images = DirManager::images()->getDirContentFull(null, DirItemFilter::IMAGES);
                 $sorted = array();
                 /* @var $img DirItem */
                 foreach ($images as $img) {
                     $ident = $img->getSize() . 'x' . $img->getImageAdapter()->getWidth() . 'x' . $img->getImageAdapter()->getHeight();
                     $sorted[$ident][] = $img;
                 }
                 $result = array();
                 /* @var $img DirItem */
                 foreach ($sorted as $ident => $imgs) {
                     if (count($imgs) > 1) {
                         $result[$ident] = $imgs;
                     }
                 }
                 $smParams = array('images' => $result);
                 break;
             case 'testmethods':
                 $smParams['methods'] = TestManagerCaller::getMethodsList();
                 break;
             case 'imgbysize':
                 $images = DirManager::images()->getDirContentFull(null, DirItemFilter::IMAGES, array('GymExercises'));
                 DirItemSorter::inst()->sort($images, DirItemSorter::BY_SIZE);
                 $smParams = array('images' => $images);
                 break;
             case 'formules':
                 $formules = TexImager::inst()->getAllFormules();
                 $totalSize = 0;
                 /* @var $formula DirItem */
                 foreach ($formules as $formula) {
                     $totalSize += $formula->getSize();
                     $formula->setData('class', 'TeX');
                 }
                 DirItemSorter::inst()->sort($formules, DirItemSorter::BY_SIZE);
                 $smParams = array('formules' => $formules, 'formules_size' => $totalSize);
                 break;
         }
         $content = $smarty->fetch("test/page_{$pageType}.tpl", $smParams);
         if ($pageType) {
             switch ($pageType) {
                 case 'patterns':
                     $out = array();
                     preg_match_all("/===(.*?)===/", $content, $out, PREG_PATTERN_ORDER);
                     $params = array();
                     for ($i = 0; $i < count($out[0]); $i++) {
                         $full = $out[0][$i];
                         $ctt = $out[1][$i];
                         $params[$full] = "<div class=\"demo-head\">{$ctt}</div>";
                     }
                     $content = PsStrings::replaceMap($content, $params);
             }
         }
         return $content;
     }
     //Тестовая страница
     $num = $params->int('num');
     $num = $num ? $num : 1;
     return $smarty->fetch("test/page{$num}.tpl");
 }
コード例 #21
0
ファイル: AdminAjaxActions.php プロジェクト: ilivanoff/www
 /** @return AbstractAdminAjaxAction */
 public static function getAction()
 {
     return Classes::getClassInstance(__DIR__, 'action', RequestArrayAdapter::inst()->str(AJAX_ACTION_PARAM), 'AbstractAdminAjaxAction');
 }
コード例 #22
0
 private function __construct()
 {
     $this->pages = APagesResources::inst()->getEntityClassInsts();
     $this->curPage = $this->getPage(RequestArrayAdapter::inst()->str(GET_PARAM_PAGE));
     $this->curPage = $this->curPage ? $this->curPage : $this->getPage(AP_APCommon::getPageIdent());
 }
コード例 #23
0
ファイル: IdentPagesManager.php プロジェクト: ilivanoff/www
 public function getCurPageContent()
 {
     return $this->getPageContent($this->getCurPageIdent(), RequestArrayAdapter::inst());
 }