예제 #1
0
 /**
  * Возвращает последний фолдинг для журнала. Если фолдингов вообще нет - вернётся null.
  */
 private function getLastFoldingIdent()
 {
     $foldings = $this->getFolding()->getAllIdents();
     usort($foldings, function ($f1, $f2) {
         return MagManager::ident2id($f1) > MagManager::ident2id($f2) ? 1 : -1;
     });
     return count($foldings) == 0 ? null : end($foldings);
 }
예제 #2
0
function smarty_block_part($params, $content, Smarty_Internal_Template &$smarty)
{
    if (!$content) {
        return;
    }
    $post = PostFetchingContext::getInstance()->getPost();
    $postType = $post->getPostType();
    $content = trim($content);
    $descr = value_Array(array('desc', 'descr'), $params);
    switch ($postType) {
        case POST_TYPE_ISSUE:
            //ЖУРНАЛ
            if ($content == 'EDITOR') {
                $postId = MagManager::ident2id($post->getIdent());
                echo "<h4 class=\"ps-post-head section\"><span>Выпуск {$postId}.</span> Редакторская колонка</h4>";
            } else {
                switch ($content) {
                    case 'WHOIS':
                        $content = 'Кто это?';
                        break;
                    case 'TASKS':
                        PostFetchingContext::getInstance()->resetTasksNumber();
                        $content = 'Задачки на подумать';
                        break;
                    case 'TASKS_A':
                        $content = 'Ответы на задачи предыдущего номера';
                        break;
                    case 'CITATA':
                        $content = 'Цитата номера';
                        break;
                    case 'VERSE':
                        $content = "Стихи, {$descr}";
                        break;
                    case 'HUMOR':
                        $content = 'Студенческий юмор';
                        break;
                }
                $curNum = PostFetchingContext::getInstance()->addAnons($content);
                echo "<h4 id=\"p{$curNum}\" class=\"section\"><span>Часть#{$curNum}.</span> {$content}</h4>";
            }
            break;
        case POST_TYPE_TRAINING:
            //УПРАЖНЕНИЯ
            $curNum = PostFetchingContext::getInstance()->addAnons($content);
            echo "<h5 id=\"p{$curNum}\" class=\"paragraph\">{$curNum}. {$content}</h5>";
            break;
        default:
            check_condition(false, __FUNCTION__ . ' function cannot be used with post type ' . $postType);
    }
}
예제 #3
0
 public function registerPost(PostsBean $bean, $ident, $name, $rubId)
 {
     $hasRub = $bean instanceof RubricsBean;
     $table = $bean->getPostsTable();
     $postId;
     $post = $this->getPostByIdent($bean, $ident);
     if ($post == null) {
         if ($hasRub) {
             $postId = $this->insert("INSERT INTO {$table}\n(id_rubric, name, ident, b_show, dt_publication, rev_count, content, content_showcase, b_tpl) \nVALUES (?, ?, ?, 0, unix_timestamp(), 0, null, null, 1)", array($rubId, $name, $ident));
         } else {
             $postId = MagManager::ident2id($ident);
             $this->insert("INSERT INTO {$table}\n(id_post, name, ident, b_show, rev_count) \nVALUES (?, ?, ?, 0, 0)", array($postId, $name, $ident));
         }
     } else {
         $postId = $post->getId();
     }
     $this->update("update {$table} set name=? where id_post=?", array($name, $postId));
     if ($hasRub) {
         $this->update("update {$table} set id_rubric=? where id_post=?", array($rubId, $postId));
     }
 }
예제 #4
0
 /**
  * Список фолдингов
  */
 public static function listFoldings()
 {
     $managers = array(MagManager::inst(), BlogManager::inst(), TrainManager::inst());
     $foldings = array();
     foreach ($managers as $manager) {
         if ($manager instanceof RubricsProcessor) {
             $foldings[] = $manager->getRubricsFolding();
         }
         if ($manager instanceof PostsProcessor) {
             $foldings[] = $manager->getFolding();
         }
     }
     //Фолдинги
     $foldings[] = PopupPagesManager::inst();
     $foldings[] = PluginsManager::inst();
     $foldings[] = IdentPagesManager::inst();
     $foldings[] = TimeLineManager::inst();
     $foldings[] = TemplateMessages::inst();
     $foldings[] = UserPointsManager::inst();
     $foldings[] = StockManager::inst();
     $foldings[] = HelpManager::inst();
     $foldings[] = EmailManager::inst();
     $foldings[] = PSForm::inst();
     $foldings[] = DialogManager::inst();
     //Библиотеки
     $foldings[] = PoetsManager::inst();
     $foldings[] = ScientistsManager::inst();
     //Админские страницы
     $foldings[] = APagesResources::inst();
     //Базовые страницы
     $foldings[] = BasicPagesManager::inst();
     //Построитель страниц
     $foldings[] = PageBuilder::inst();
     //Управление списком предпросмотра постов
     $foldings[] = ShowcasesCtrlManager::inst();
     //Элементы в правой панели навигации
     $foldings[] = ClientBoxManager::inst();
     //Все фолдинги системы
     return $foldings;
 }
예제 #5
0
 /**
  * Структура сайта (навигация и т.д.)
  * 
  * @return NavigationItem
  */
 private function getStructureImpl()
 {
     $MAP = NavigationItem::byPageCode(BASE_PAGE_MAP);
     $INDEX = NavigationItem::byPageCode(BASE_PAGE_INDEX, 'О проекте');
     $INDEX->addChild(NavigationItem::byPageCode(PAGE_OFFICE));
     $INDEX->addChild(NavigationItem::byPageCode(PAGE_REGISTRATION));
     $INDEX->addChild(NavigationItem::byPageCode(PAGE_PASS_REMIND));
     $MAGAZINE = NavigationItem::byPostsProcessor(MagManager::inst(), 'Все выпуски');
     $BLOG = NavigationItem::byRubricProcessor(BlogManager::inst(), 'Все заметки', 'Все заметки раздела');
     $TRAININGS = NavigationItem::byRubricProcessor(TrainManager::inst(), 'Все занятия', 'Все занятия в разделе');
     $TRAININGS->addChild(NavigationItem::byPageCode(PAGE_LESSON_HOW_TO));
     $FEEDBACK = NavigationItem::byPageCode(BASE_PAGE_FEEDBACK, 'Об авторе');
     $FEEDBACK->addChild(NavigationItem::byHref(FeedbackManager::inst()->writeToUsHref())->setNoBg());
     $FEEDBACK->addChild(NavigationItem::byPageCode(PAGE_HELPUS));
     //Окончательная структура
     $MAP->addChild($INDEX);
     $MAP->addChild($MAGAZINE);
     $MAP->addChild($BLOG);
     $MAP->addChild($TRAININGS);
     $MAP->addChild($FEEDBACK);
     return $MAP;
 }
예제 #6
0
 private function __construct()
 {
     PsProfiler::inst(__CLASS__)->start(__FUNCTION__);
     $managers = array(MagManager::inst(), BlogManager::inst(), TrainManager::inst());
     foreach ($managers as $manager) {
         //Соберём типы постов
         $this->postTypes[] = $manager->getPostType();
         if ($manager instanceof RubricsProcessor) {
             $this->rubricsProcessors[$manager->getPostType()] = $manager;
             $this->foldings[] = $manager->getRubricsFolding();
         }
         if ($manager instanceof PostsProcessor) {
             $this->postsProcessors[$manager->getPostType()] = $manager;
             $this->foldings[] = $manager->getFolding();
         }
         if ($manager instanceof CommentsProcessor) {
             $this->commentProcessors[$manager->getPostType()] = $manager;
             $this->discussionControllers[$manager->getDiscussionController()->getDiscussionUnique()] = $manager->getDiscussionController();
         }
         if ($manager instanceof PagePreloadListener) {
             $this->pagePreloadListeners[] = $manager;
         }
         if ($manager instanceof NewsProvider) {
             $this->newsProviders[$manager->getNewsEventType()] = $manager;
         }
     }
     //Контроллеры дискуссий
     $this->discussionControllers[FeedbackManager::inst()->getDiscussionUnique()] = FeedbackManager::inst();
     //Фолдинги
     $this->foldings[] = PopupPagesManager::inst();
     $this->foldings[] = PluginsManager::inst();
     $this->foldings[] = IdentPagesManager::inst();
     $this->foldings[] = TimeLineManager::inst();
     $this->foldings[] = TemplateMessages::inst();
     $this->foldings[] = UserPointsManager::inst();
     $this->foldings[] = StockManager::inst();
     $this->foldings[] = HelpManager::inst();
     $this->foldings[] = EmailManager::inst();
     $this->foldings[] = PSForm::inst();
     $this->foldings[] = DialogManager::inst();
     //Библиотеки
     $this->foldings[] = PoetsManager::inst();
     $this->foldings[] = ScientistsManager::inst();
     //Админские страницы
     $this->foldings[] = APagesResources::inst();
     //Базовые страницы
     $this->foldings[] = BasicPagesManager::inst();
     //Построитель страниц
     $this->foldings[] = PageBuilder::inst();
     //Управление списком предпросмотра постов
     $this->foldings[] = ShowcasesCtrlManager::inst();
     //Элементы в правой панели навигации
     $this->foldings[] = ClientBoxManager::inst();
     /*
      * Выделим различные подклассы фолдингов
      */
     foreach ($this->foldings as $folding) {
         //Фолдинги библиотек
         if ($folding instanceof LibResources) {
             $this->libs[] = $folding;
         }
         //Фолдинги обработчиков постов
         if ($folding instanceof PostFoldedResources) {
             $this->postProcessorFoldings[] = $folding;
         }
         //Фолдинги для баблов
         if ($folding instanceof BubbledFolding) {
             $this->bubbles[] = $folding;
         }
         //Фолдинги, предоставляющие панели
         if ($folding instanceof PanelFolding) {
             $this->panels[] = $folding;
         }
         //Фолдинги, финализирующие контент страницы
         if ($folding instanceof PageFinalizerFolding) {
             $this->pageFinaliseFoldings[] = $folding;
         }
         //Индексированный список фолдингов
         $this->folding2unique[$folding->getUnique()] = $folding;
         //Префиксы smarty к фолдингам
         $this->folding2smartyPrefix[$folding->getSmartyPrefix()] = $folding;
         //Префиксы классов к фолдингам
         if ($folding->getClassPrefix()) {
             $this->folding2classPrefix[$folding->getClassPrefix()] = $folding;
         }
     }
     PsProfiler::inst(__CLASS__)->stop();
 }
예제 #7
0
파일: magazine.php 프로젝트: ilivanoff/www
 public function buildContent()
 {
     $im = MagManager::inst();
     echo $this->getFoldedEntity()->fetchTpl(array('has_posts' => $im->hasPosts()));
 }
예제 #8
0
파일: issue.php 프로젝트: ilivanoff/www
 public function buildContent()
 {
     echo $this->getFoldedEntity()->fetchTpl(array('postCP' => MagManager::inst()->getCurrentPostContentProvider()));
 }