CMS SLAED

10.07.2007 - Интеграция модулей PHP-Nuke в систему SLAED

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

В данном примере мы рассмотрим способ ручной интеграции модулей одной из самых популярных систем построения сайтов PHP-Nuke. Программу, написанную специально для нашей системы, для автоматической интеграции модулей PHP-Nuke в SLAED Вы можете скачать на нашем проекте в каталоге файлов.

Прошу учитывать, что старые варианты использования кода в модулях PHP-Nuke могут незначительно отличаться от описанных в данной статье.

1. В самом верху изменяем способ защиты для модулей от стороннего доступа.

Старый вариант:
if (!eregi("modules.php", $_SERVER["PHP_SELF"])) {
die ("You can"t access this file directly...");
}


Новый вариант:
if (!defined("MODULE_FILE")) {
Header("Location: ../../index.php");
exit;
}


2. Старые модули PHP-Nuke используют соединение с базой по средствам переменной $dbi. Наша система использует соединение с базой по средствам переменной $db, по этой причине необходимо изменить все переменные $dbi на $db.

  • Меняем все глобальные переменные $dbi в функциях, на новые $db. Если это необходимо, указываем переменную $db как глобальную.

    Старый вариант: global $prefix, $dbi;
    Новый вариант: global $prefix, $db;

  • Изменяем структуру запроса в базу данных.

    Старый вариант: $result = sql_query("SELECT id, name FROM ".$prefix."_categories WHERE id=$id", $dbi);
    Новый вариант: $result = $db->sql_query("SELECT id, name FROM ".$prefix."_categories WHERE id=$id");

    Как вы заметили, удалена переменная $dbi в конце запроса и добавлена переменная $db в начале. Это нужно проделать со всеми запросами.

    В запросах необходимо изменить:

    sql_fetch_array на $db->sql_fetchrow
    sql_query на $db->sql_query
    sql_fetch_row на $db->sql_fetchrow
    sql_num_rows на $db->sql_numrows
    sql_free_result на $db->sql_freeresult

    Если появляются вопросы по поводу запросов или правильности их написания, смотрим файл function/mysql.php

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

    В запросах необходимо изменить:

    mysql_fetch_array на $db->sql_fetchrow
    mysql_query на $db->sql_query
    mysql_fetch_row на $db->sql_fetchrow
    mysql_num_rows на $db->sql_numrows
    mysql_free_result на $db->sql_freeresult

    В функциях не забываем указывать переменную $db как глобальную.

    3. В некоторых модулях производится соединение с файлом конфигурации которое нужно заменить.

    Старый вариант: include("config.php");
    Новый вариант: include("config/config.php");

    4. В некоторых модулях используется переменная основного адреса сайта, которую нужно заменить.

    Старый вариант: $nukeurl
    Новый вариант: $conf['homeurl']

    Не исключено что в последствии возникнет необходимость использования параметров основных конфигураций системы. Для этих целей рекомендуется прописать в глобальные, переменную $conf, отвечающую за основные настройки, которые хранятся в файле config/config_global.php

    5. В некоторых модулях используются функции темы OpenTable() и CloseTable() которые нужно заменить.

    Старый вариант: OpenTable(); или OpenTable2();
    Новый вариант: open();

    Старый вариант: CloseTable(); или CloseTable2();
    Новый вариант: close();

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

    Необходимо удалить: require_once("mainfile.php"); или include("mainfile.php");

    7. Во всех скриптах нужно произвести поиск и изменить стандартные ссылки modules.php на index.php.

    Старый вариант: modules.php
    Новый вариант: index.php

    8. Во всех скриптах нужно произвести поиск и удалить стандартные цветовые переменные в глобальных, и заменить их в коде.

    Старый вариант: bgcolor="$bgcolor1"
    Новый вариант: class="bgcolor1"

    Старый вариант: bgcolor="$bgcolor2"
    Новый вариант: class="bgcolor2"

    Старый вариант: bgcolor="$bgcolor3"
    Новый вариант: class="bgcolor3"

    Старый вариант: bgcolor="$bgcolor4"
    Новый вариант: class="bgcolor4"
    Опубликовано на сайте: http://www.slaed.net
    Прямая ссылка: http://www.slaed.net/index.php?name=pages&op=view&id=42