function smarty_function_video($params, Smarty_Internal_Template &$smarty) { $params = ArrayAdapter::inst($params); MmediaManager::getInstance()->insertVideo($params->str('dir'), $params->str('name')); if (PostFetchingContext::getInstance()->isSetted()) { PostFetchingContext::getInstance()->setHasVideo(); } }
function smarty_modifier_thhref($thId) { $thId = trim($thId); $CTXT = PostFetchingContext::getInstance(); $num = $CTXT->getNextThNum($thId, false); if (!$num) { return PsHtml::spanErr("Ссылка на незарегистрированную теорему с идентификатором '{$thId}'"); } return PsBubble::aById($CTXT->getThElId($thId), "№{$num}", 'theorem'); }
function smarty_modifier_exhref($exId) { $exId = trim($exId); $num = PostFetchingContext::getInstance()->getExampleNum($exId, false); $elId = PostFetchingContext::getInstance()->getExampleElId($exId); if (!$num) { return PsHtml::spanErr("Ссылка на незарегистрированный пример с идентификатором '{$exId}'"); } return PsBubble::aById($elId, "№{$num}", 'example'); }
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); } }
function smarty_block_th($params, $content, Smarty_Internal_Template &$smarty) { $ctxtParams = SmartyBlockContext::getInstance()->registerBlock($content, __FUNCTION__); if (!$content) { return; //--- } $thId = trim(value_Array(array('id', 'num'), $params)); $num = PostFetchingContext::getInstance()->getNextThNum($thId, true); $elId = $thId ? PostFetchingContext::getInstance()->getThElId($thId) : null; $tpl = PSSmarty::template('common/theorem.tpl'); $tpl->assign('id', $elId); $tpl->assign('num', $num); $tpl->assign('c_body', $content); $tpl->assign($ctxtParams); $tpl->display(); }
function smarty_block_partition($params, $content, Smarty_Internal_Template &$smarty) { if (!$content) { return; } $type = PostFetchingContext::getInstance()->getFoldedEntity()->getFolding()->getFoldingSubType(); $aa = ArrayAdapter::inst(explode(':', $content)); $MAKROS = $aa->str(0); $VALUE = $aa->str(1); switch ($type) { case POST_TYPE_TRAINING: //УПРАЖНЕНИЯ switch ($MAKROS) { case 'PLAN': echo '<h3>План урока:</h3>'; break; case 'VIDEO': echo '<h3>Видео урок:</h3>'; break; case 'CONSPECT': echo '<h3>Конспект занятия:</h3>'; break; case 'TASKS': if (!$VALUE) { echo '<h3>Контрольные вопросы и задачи:</h3>'; } else { echo "<h3 class=\"section\">{$VALUE}</h4>"; } break; case 'FINAL': echo '<h3>Заключение:</h3>'; break; default: echo "<h3>{$content}</h3>"; break; } break; default: check_condition(false, __FUNCTION__ . ' function cannot be used with post type ' . $type); } }
function smarty_block_ex($params, $content, Smarty_Internal_Template &$template) { $ctxtParams = SmartyBlockContext::getInstance()->registerBlock($content, __FUNCTION__); if (!$content) { return; //--- } $ctxt = PostFetchingContext::getInstance(); if (array_key_exists('reset', $params)) { $ctxt->resetExamplesNum(); } $exId = trim(value_Array(array('id', 'num'), $params)); $num = $ctxt->getExampleNum($exId, true); $elId = $exId ? $ctxt->getExampleElId($exId) : null; /* @var $exampleTpl Smarty_Internal_Template */ $exampleTpl = PSSmarty::template('common/example.tpl'); $exampleTpl->assign('id', $elId); $exampleTpl->assign('num', $num); $exampleTpl->assign('c_body', $content); $exampleTpl->assign($ctxtParams); $exampleTpl->display(); }
/** * Основной метод, выполняющий всю работу. * К этому моменту мы уже определили плагин и установили контекст. * Остаётся только построить сам плагин. */ private function buildImpl(BasePlugin $plugin, $content, ArrayAdapter $params) { //Если $content === null, то мы отображаем плагин в popup окне //В противном случае запросим УРЛ для перехода к popup-виду плагина $popupUrl = $content === null ? null : PopupPagesManager::inst()->getPluginUrl($plugin); $ident = $plugin->getIdent(); $content = trim($content); try { $pluginContent = $plugin->getPluginContent($content, $params, PluginFetchingContext::getInstance()); if (PostFetchingContext::getInstance()->isSetted()) { PostFetchingContext::getInstance()->registerPlugin($ident, $pluginContent->getPostData()); } $tpl = PSSmarty::template('psplugins/BASE.tpl'); $tpl->assign('url', $popupUrl); $tpl->assign('ident', $ident); $tpl->assign('content', $this->getResourcesLinks($ident, $pluginContent->getContent())); return $tpl->fetch(); } catch (Exception $e) { //Произошла ошибка... От нас требуется вернуть её текстовое представление, //так как самое важное - отключить контекст выполнения плагина. return ExceptionHandler::getHtml($e); } }
function smarty_function_ANONS($params, Smarty_Internal_Template &$smarty) { $replId = PostFetchingContext::REPLACEMENT_ANONS; PostFetchingContext::getInstance()->registerReplacement($replId); echo $replId; }
protected function getFoldedContext() { return PostFetchingContext::getInstance(); }