/** * Campsite list_articles block plugin * * Type: block * Name: list_articles * Purpose: Provides a... * * @param string * $p_params * @param string * $p_smarty * @param string * $p_content * * @return * */ function smarty_block_list_articles($p_params, $p_content, &$p_smarty, &$p_repeat) { $p_smarty->smarty->loadPlugin('smarty_shared_escape_special_chars'); $campContext = $p_smarty->getTemplateVars('gimme'); if (!isset($p_content)) { $start = $campContext->next_list_start('ArticlesList'); $articlesList = new ArticlesList($start, $p_params); if ($articlesList->isEmpty()) { $campContext->setCurrentList($articlesList, array()); $campContext->resetCurrentList(); $p_repeat = false; return null; } $campContext->setCurrentList($articlesList, array('publication', 'language', 'issue', 'section', 'article', 'image', 'attachment', 'comment', 'subtitle')); $campContext->article = $campContext->current_articles_list->current; $p_repeat = true; } else { $campContext->current_articles_list->defaultIterator()->next(); if (!is_null($campContext->current_articles_list->current)) { $campContext->article = $campContext->current_articles_list->current; $p_repeat = true; } else { $campContext->resetCurrentList(); $p_repeat = false; } } return $p_content; }
private static function ReadDynamicFields() { if (is_null(self::$s_dynamicFields)) { require_once($GLOBALS['g_campsiteDir'].'/classes/ArticleTypeField.php'); self::$s_dynamicFields = ArticleTypeField::FetchFields(); } }
unset($connect); //Записываем параметры фильтрации в сессию if (isset($_POST['filter'])) { $_SESSION['filter'] = array('title' => trim($_POST['title']), 'start_date' => $_POST['start_date'], 'finish_date' => $_POST['finish_date']); } //Получаем ассоциативный массив статей из базы данных $db_articles = new DBAdapter('Front', 'articles'); $articles_assoc = $db_articles->getAll(); unset($db_articles); //Создаем массив обьектов статей $articles_obj = array(); for ($i = 0; $i < count($articles_assoc); $i++) { $articles_obj[$i] = new Article($articles_assoc[$i]); } //Передаем массив обьектов в общий список (ArticlesList) $list = new ArticlesList($articles_obj); //Инициализируем фильтрацию и записываем параметры фильтрации в переменную $filtr_data = array('title' => '', 'start_date' => '', 'finish_date' => ''); if (isset($_SESSION['filter'])) { $filtr_data = $_SESSION['filter']; $list->initFiltr($filtr_data); } //Получаем отфильтрованные статьи $articles_assoc_filtred = $list->getFiltred(); //Вызываем нужное отображение if (isset($_GET['layout'])) { if ($_GET['layout'] == 'admin') { $layout = new AdminLayout($articles_assoc_filtred, $filtr_data); exit; } }