Наверх

Блокирование, разблокирование

При блокировании/разблокировании элемента или нескольких элементов модуля подключается функция act() из файла adm/includes/act.php.

Эту функцию можно переопределить в классе модуля.

Некоторые модули агрегируют информацию об элементах других модулей, и при их блокировании нужно чтобы связанная информация также блокировалась.

Для этого в модулях-подключениях нужно создать файл modules/модуль/admin/модуль.admin.inc.php. В файле должен быть определен класс Модуль_admin_inc с функцией act().

string act (string $table, array $element_ids, integer $act) – блокирует / разблокирует элементы модуля, связанные с другими элементами.

  • string $table: таблица
  • array $element_ids: номера блокируемого / разблокируемого элементов
  • integer $act: блокировать/разблокировать

Пример:

/* modules/tags/admin/tags.admin.inc.php
Переопределение блокировки/разблокировки для модуля «Теги»
*/
public function act($table, $element_ids, $act)
{
    if (!
$this->diafan->configmodules("tags"))
    {
        return;
    }
    if (
$this->diafan->config('category'))
    {
        
$table = str_replace('_category', '', $table);
        
$element_ids = DB::query_fetch_value("SELECT id FROM {".$table."} WHERE cat_id IN (%h)", implode(',', $element_ids), "id");
        if(
$element_ids)
        {
            
DB::query("UPDATE {tags} SET [act]='%d' WHERE module_name='%h' AND element_id IN (%h)", $act, $table, implode(',', $element_ids));
        }
    }
    else
    {
        
DB::query("UPDATE {tags} SET [act]='%d' WHERE module_name='%h' AND element_id IN (%h)", $act, $table, implode(',', $element_ids));
    }
}

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

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