Тема: Как сделать свой модуль из готового кода
Всем привет, хочу сделать модуль для DLE не зная php Суть в следующем: есть сторонний скрипт который работает, хочу интегрировать его в 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