Модель

Модель модуля – класс Модуль_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
'Здравствуйте, администратор!';
}

Ваши комментарии и дополнения

Ваш комментарий будет первым.

Зарегистрируйтесь или авторизируйтесь для того, чтобы оставить комментарий.