/** * Возвращает последний фолдинг для журнала. Если фолдингов вообще нет - вернётся 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); }
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); } }
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)); } }
/** * Список фолдингов */ 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; }
/** * Структура сайта (навигация и т.д.) * * @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; }
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(); }
public function buildContent() { $im = MagManager::inst(); echo $this->getFoldedEntity()->fetchTpl(array('has_posts' => $im->hasPosts())); }
public function buildContent() { echo $this->getFoldedEntity()->fetchTpl(array('postCP' => MagManager::inst()->getCurrentPostContentProvider())); }