Работа с модулями :: Дополнительные возможности модулей

В самом примитивном варианте модуль из себя представляет просто файл с php кодом который по сути практически никак не взаимодействует с системой.

Однако, это не самый хороший вариант. Допустим, у вас имеется input модуль который привязан к какой - либо категории. Пусть это будет модуль простых текстовых документов. Все свои документы модуль кладет в SQL таблицу.


Предположим, что ползователь удаляет эту категорию. Что должно произойти ? По логике одновременно из таблицы должны удалиться те документы которие принадлежат этой категории. Однако, wебгоороо сам не может этого сделать, так как он не имеет никакого представления о том как организовано хранение данных в этом модуле. Т.е. ваш модуль должен содержать некий код который wебгоороо попытается вызвать при удалении категории.

Именно это эти системные вызовы мы и разберем в этом разделе.

Отметим, что все это необязательно, т.е ваш модуль может ничего этого не уметь.


Что хорошо бы уметь input модулю:

 

а) При удалении категории модулю нужно удалить content этой категории

b) Все действия с объектами модуля класть в системный Лог

c) Искать по своему содержанию .

d) Копировать свой content в другую аналогичную категорию

e) Иметь схему управления доступами к своему содержанию

f) Класть в дерево кол-во своих элементов

g) Делать список своих элементов и crosslink на них для механизма "Set crosslink"

Output модулю:

h) Поддерживать debug mode <CROSSLINK>

i) Уметь генерировать HTML версию своего содержания для сайтов с возможностью создать HТМL версию.

 

Для всех модулей:

j) Модуль должен уметь удалить себя из системы.


Теперь рассмотрим более подробно:

а ) При удалении категории wебгоороо определяет инпут модуль этой категории и ищет в директории модуля файл "wbg_delete_content.php" и делает ему include.

При этом туда передается massiv $TARGET даннымы той категории, которую мы сейчас удаляем.

Пример файла:


<?php

if (!defined("WBG_CONFIG_LOADED") OR !$DELETE_ALLOWED){
    die();
}

$SQL_str = "DELETE FROM _mod_partners WHERE category_id=".$TARGET['id'];
mysql_query($SQL_str);

?>

Как вы видите перед виполнением кода нам нужно обязательно проверить действительно ли файлу сделан include из системы. Иначе его могли бы запустить прямым линком www.site.com/wbg/modules/input/mymodule/wbg_delete_content.php и что-нибудь хорошее потерять.


b) Описание работы с ЛОГом тут <CROSSLINK>

c) Поиск по содержанию не является частью ядра системы, поэтому вы можете организовать его по своему усмотрению. Тем не менее, тут описание как мы организовываем поиск по сайту  <CROSSLINK>

д) Когда wебгоороо копирует категории, то ищется файл wbg_copy_content.php и туда передается 2 массива $SOURCE i $TARGET.

Пример файла:


<?php

if (!defined("WBG_CONFIG_LOADED") OR !$COPY_ALLOWED){
    die();
}

$SQL_str = "SELECT * FROM _mod_partners WHERE category_id=".$SOURCE['id']."";
$sql_res = mysql_query($SQL_str);
while ($arr = mysql_fetch_assoc($sql_res)) {
    $SQL_str = array();
    foreach ($arr as $key=>$value) {
        if ($key == 'id')             continue;
        if ($key == 'category_id')     continue;
        $SQL_str[] = $key."='".addslashes($value)."'";
    }

    $SQL_str[] = "category_id=".$TARGET['id']."";
    $SQL_str = "INSERT INTO _mod_partners SET ".implode(',',$SQL_str)."";
    mysql_query($SQL_str);
}

?>


Пользователь

Пароль

Поиск по сайту



Ссылка продана за пачку денег
CMS для професионалов