Модель
Модель модуля – класс Модуль_model в файле modules/модуль/модуль.model.php.
Содержание файла может быть различным в зависимости от заложенного в модуле функционала. Как правило, класс модели описывает следующие функции:
list_()
– формирует список элементов;list_category()
– формирует список элементов в категории;first_page()
– первая страница модуля;id()
– формирует данные для страницы элемента;show_block()
– формирует данные для шаблонной функции.
Функции отдают данные в виде массива, который затем передается в шаблон.
Для ускорения генерирования страницы данные кэшируются. Подробнее о кэшировании в DIAFAN.CMS смотрите раздел «Кэширование».
Класс Model
Модель модуля наследует класс Model, описанный в файле includes/model.php.
Свойства
var result – сгенерированные в моделе данные, передаваемые в шаблон.
Методы
boolean access (integer $element_id, [string $module_name = ''], [string $element_type = 'element']) – Проверяет есть ли доступ к элементу/категории модуля.
- integer $element_id: номер элемента
- string $module_name: модуль
- string $element_type: тип данных (element – элемент (по умолчанию), cat – категория)
Если при вызове опустить аргумент $module_name, то проверка будет вызвана для текущего модуля. Проверка прав доступна только для авторизованных пользователей и для страниц с настроенным полем Доступ.
Пример:
// если доступ к статье ограничен, то выдаем ошибку 403 Доступ запрещен.
if (! empty($row['access']) && ! $this->access($row['id'], 'clauses'))
{
Custom::inc('includes/403.php');
}
string format_date (integer $date, [string $module_name = ''], [integer $site_id = 0]) – Форматирует дату в соответствии с конфигурацией модуля.
- integer $date: дата в формате UNIX
- string $module_name: название модуля, по умолчанию модуль, прикрепленный к текущей странице
- integer $site_id: номер страницы сайта
Пример:
// modules/clauses/clauses.model.php
//конвертация из UNIX-формата даты создания статьи в модуле «Статьи»
$row['date'] = $this->format_date($row['created']);
array get_author (integer $user_id) – Получает имя, никнейм и аватар пользователя сайта.
- integer $user_id: номер пользователя сайта
При вызове функции производится запрос к таблице БД {users}, где по значению переменной $author
ищется соответствующий ей id пользователя. В случае неудачи возвращается «Гость».
Пример:
$user = $this->get_author(2);
print_r($user);
/* выведет:
Array
(
[id] => 2
[fio] => Михаил Волков
[name] => michael
[identity] =>
[avatar] => http://site.ru/userfiles/avatar/michael.png
[avatar_width] => 50
[avatar_height] => 50
[user_page] => http://site.ru/user/?name=michael
)
или
Гость
*/
void prepare_author (integer $author) – Запоминает идентификаторы пользователей сайта, информация о которых понадобиться.
- integer $author: идентификатор автора
Пример:
// в этом примере будет выполенено три SQL-запроса к базе данных
// для получения информации о трех пользователях
$ids = array(3, 5, 7);
foreach($ids as $id)
{
$users[$id] = $this->get_author($id);
}
Пример:
// в этом примере будет выполен один SQL-запрос к базе данных
// для получения информации о трех пользователях
$ids = array(3, 5, 7);
foreach($ids as $id)
{
$this->prepare_author($id);
}
foreach($ids as $id)
{
$users[$id] = $this->get_author($id);
}
void form_errors (array &$result, string $tag, array $fields) – Ищет ошибки и сообщения, передаваемые в виде GET-переменных.
- array $result: массив данных, в который буду записаны найденные ошибки
- string $tag: тег-идентификатор формы
- array $fields: поля
array get_params (array $config) – Получает массив полей формы.
- array $config: настройки функции: module модуль, table таблица, where условие для SQL-запроса
Используется в модулях, в которых есть возможность добавить новые поля при помощи конструктора.
Пример:
// получение дополнительных полей при обработке формы модуля «Обратная связь»
$rows = $this->get_params(array("module" => "feedback", "where" => "site_id=".$site_id));
array get_breadcrumb () – Генерирует данные для навигации "Хлебные крошки".
Пример:
// modules/ab/ab.model.php
// использования метода в модуле «Объявления»
$this->result["path"] = $this->get_breadcrumb();
boolean validate_attribute_site_cat (string $module_name, array &$site_ids, array &$cat_ids, array &$minus) – Валидация атрибутов cat_id и site_id для шаблонных тегов.
- string $module_name: название модуля
- array $site_ids: страница сайта
- array $cat_ids: категория
- array $minus: страницы сайта и категории, которые вычитаются
Осуществляется проверка на использование нечисловых значений, а также на синтаксические ошибки при вызове шаблона с параметрами $site_id или $cat_id.
Пример:
/* modules/news/news.model.php
проверка значений cat_id и site_id в модуле «Новости» */
if(! $this->validate_attribute_site_cat('news', $site_ids, $cat_ids))
{
return false;
}
void error_insert_tag (string $error, string $module_name) – Выводит ошибку на сайте.
- string $error: описание ошибки
- string $module_name: название модуля
void theme_view () – Определяет шаблоны страницы и модуля для элемента.
Пример:
/* modules/clauses/clauses.model.php
широко используется в моделях при выводе списком без деления на категории */
$this->theme_view();
void theme_view_first_page () – Определяет шаблоны страницы и модуля для первой страницы модуля, если используются категории.
Пример:
/* modules/clauses/clauses.model.php
Используется при выводе первой страницы (first page) */
$this->theme_view_first_page();
void theme_view_cat (array $row) – Определяет шаблоны страницы и модуля для категории.
- array $row: данные о текущей категории
Пример:
/* modules/clauses/clauses.model.php
используется при выводе списка с категориями */
$this->theme_view_cat($row);
void theme_view_element (array $row) – Определяет шаблоны страницы и модуля для элемента.
- array $row: данные о текущем элементе
Пример:
/* modules/clauses/clauses.model.php
используется при выводе страницы отдельного элемента */
$this->theme_view_element($row);
void meta (array $row) – Определяет значения META-тегов элемента.
- array $row: данные о текущем элементе
Пример:
/* modules/clauses/clauses.model.php
используется при выводе со страницы отдельного элемента */
$this->meta($row);
void meta_cat (array $row) – Определяет значения META-тегов категории.
- array $row: данные о текущей категории
Пример:
/* modules/clauses/clauses.model.php
используется при выводе со страницы списка с категориями */
$this->meta_cat($row);
void counter_view () – Счетчик просмотров элемента.
Функция собирает данные о просмотрах и хранит их в базе данных. Для сохранения статистики просмотров необходимо включить опцию «Счетчик просмотров» в настройках модуля.
Пример:
/* modules/clauses/clauses.model.php
считает количество просмотров элемента */
$this->counter_view();
Для хранения данных о просмотрах используется уникальная для каждого модуля таблица с постфиксом _counter. Например, {photo_counter} – для элементов фотогалереи.
void is_admin () – Проверяет является ли текущий пользователь администратором.
Пример:
if($this->is_admin())
{
echo 'Здравствуйте, администратор!';
}
Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.
Ваш комментарий будет первым.