1

Тема: Как сделать свой модуль из готового кода

Всем привет, хочу сделать модуль для DLE не зная php smile Суть в следующем: есть сторонний скрипт который работает, хочу интегрировать его в DLE, скрипт простой, состоит из нескольких файлов. Например у меня есть готовая заготовка от пафнутия:

<?php

/**
 * НазваниеМодуля - Пример реализации простого модуля для DLE с кешированием и подключением собственных шаблонов вывода.
 * =======================================================
 * Автор:    Юзернейм 
 * URL:      http://site.ru/
 * ICQ:         111222 
 * email:    username@site.ru
 * =======================================================
 * Файл:  название.этого.файла.php
 * -------------------------------------------------------
 * Версия: X.X.X (01.01.2013)
 * =======================================================
 */

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

if (!defined('DATALIFEENGINE')) die("Go fuck yourself!");

// Пример определения переменной имени пользователя
$userName = !empty($userName) ? $db->safesql(strip_tags(stripslashes($userName))) : false;

// Конфиг модуля
// Лучше делать массивом - тогда будет проще в нём ориентироваться в дальнейшем и не нужно будет добавлять новые переменные в формирование кеша.

$myConfig = array(
    // Имя пользователя
    'userName' => $userName,

    // ID категории новости
    'catId'    => !empty($catId) ? $catId : '1',

    // Шаблон, через который будет выведено содержимое модуля
    'template' => !empty($template) ? $template : 'default',

    // Префикс кеша - довольно важная настройка, если нужно автоматически очищать кеш при определённых событиях (как правило достаточно префикса news)
    /**
     * Префиксы, наличие одного из которых гарантирует автоматическую очистку кеша при определённых условиях:
     * news, rss, comm                                             - при добавлении новости или комментария.
     * news, related, tagscloud, archives, calendar, topnews, rss  - при добавлении новости.
     * comm                                                        - при редактировании комментария.
     * news, rss                                                   - при редактировании новости, при выcтавлении рейтинга
     * news, full, comm, rss                                       - при массовом удалении комментариев
     * news, full, comm, tagscloud, archives, calendar, rss        - при удалении новости
     */
    'cachePrefix' => !empty($cachePrefix) ? $cachePrefix : 'news',

    // Суффикс кеша - если задать его, то бдет создаваться отдельные кеши для каждой группы пользователей.
    'cacheSuffix' => !empty($cacheSuffix) ? true : false,
    
);

// Имя кеш-файла.
// Формируется из md5 конфига - это самый оптимальный вариант, т.к. уменьшает количество ненужных операций.
$cacheName = md5(implode('_', $myConfig));

// Присваиваем переменной, выводящей работу модуля в шаблон, значение false перед началом работы модуля.
$myModule = false;

// Пытаемся подцепить значение из кеша (если кеширование на сайте включено и если модуль создал кеш - будет выведено содержимое кеша)
$myModule = dle_cache($myConfig['cachePrefix'], $cacheName.$config['skin'], $myConfig['cacheSuffix']);

if (!$myModule) {
    // Если в кеше ничего нет - запускаем работу модуля    
    if(file_exists(TEMPLATE_DIR.'/'.$myConfig['template'].'.tpl')) {
        // Если файл шаблона модуля существует - работаем дальше

        // Проверяем определена ли переменная $tpl и класс dle_template
        if(!isset($tpl)) {
            $tpl = new dle_template();
            $tpl->dir = TEMPLATE_DIR;
        } else {
            $tpl->result['myModule'] = '';
        }

        // Загружаем шаблон
        $tpl->load_template($myConfig['template'].'.tpl');

        // Выполняем нужный нам запрос в БД.
        $row = $db->super_query("SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE category = '".$myConfig['catId']."' AND autor = '".$myConfig['userName']."'");

        // Определяем теги шаблона
        $count = ($row['count'] > 0) ? $row['count'] : 'новостей нет';

        $tpl->set('{tag_name}', $count);

        // Компилим шаблон
        $tpl->compile('myModule');
        // Записываем 
        $myModule = $tpl->result['myModule'];

        // Записываем результат работы в кеш.
        create_cache($myConfig['cachePrefix'], $myModule, $cacheName.$config['skin'], $myConfig['cacheSuffix']);

        $tpl->clear();
        
        
    } else {
        // Если файла с шаблоном модуля нет - скажем об этом юзеру в удобном виде, а не на фоне пустой белой страницы
        $myModule = '<b style="color:red">Отсутствует файл шаблона: '.$config['skin'].'/'.$myConfig['template'].'.tpl</b>';
    }
} 

// Выводим результат работы модуля
echo $myModule;
?>

Вот это один из файлов стороннего скрипта, этот файл выводит список забаненых пользователей из бд:

<?php
   if (!defined("IN_OS") )
     {header('HTTP/1.1 404 Not Found');die;}
     
    if ($WarnAndExpireDate == 1) $sqlWarn = " AND warn = 0 ";  
    else $sqlWarn = "";
    
     $order = 'id'; $sort = 'DESC';
     
     if (isset($_GET["search"]) AND strlen($_GET["search"])>=2 ) {
     $search = trim(safeEscape($_GET["search"]));
     $sqlSearch = "AND name = '".$search."'";
     $SearchValue = $search; 
     } else { $sqlSearch= "";  $SearchValue = L_SEARCH_BANS;  }
    
     $result = $db->query("SELECT COUNT(*) FROM ltd_bans WHERE id>=1 $sqlWarn $sqlSearch LIMIT 1");
     $r = $db->fetch_row($result);
     $numrows = $r[0];
     $result_per_page = $bans_per_page;
     $draw_pagination = 0;
     include('pagination.php');
     $draw_pagination = 1;
     
     $result = $db->query("SELECT * FROM ltd_bans WHERE id>=1 AND context = 'ttr.cloud' $sqlSearch $sqlWarn ORDER BY $order $sort 
     LIMIT $offset, $rowsperpage");
     
    $drawTable= "header";
    include("themes/".$default_style."/bans.php");
    
    $drawTable= "body";
    $c=0;
    $Data = array();
    while ($row = $db->fetch_array($result,'assoc')) {
    //Build array data for bans
    $Data[$c]["name"]     = trim($row["name"]);
    $Data[$c]["reason"]   = convEnt2(trim(stripslashes($row["reason"]))); 
    $Data[$c]["gamename"] = (trim($row["gamename"]));
    $Data[$c]["date"]     = date($date_format,strtotime($row['date']) );
    $Data[$c]["admin"]    = trim($row["admin"]);
    $c++;
    }
    include("themes/".$default_style."/bans.php");
    $db->free($result);
    
    if (isset($_GET["page"]) AND is_numeric($_GET["page"]) ) $MetaTitle = " | Page ".$_GET["page"]; 
    else  $MetaTitle = "";
    setMeta ("Bans $MetaTitle", "$SiteName Bans $MetaTitle", "bans, leavers, games, dota games", 
    "Bans", "article", $website."games/", "bans, games, dota games", $SiteLogo, $SiteName);

    $drawTable= "footer";
    include("themes/".$default_style."/bans.php");    
    include('pagination.php');
?>

Скажи пожалуйста как эти два кода объеденить что бы получился модуль DLE smile