Inheritance: extends ListObject
/**
 * 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;
}
示例#2
0
	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;
    }
}