вопрос
Как настроить для DLE 11 работу постраничной навигации в модуле Все личные сообщения пользователей? Данный модуль был написан ещё для DLE 8-9 версий, я так полагаю поэтому в 11-й версии постраничная навигация не работает. Показывается только 1-я страница, если нажимать на остальные - показывается всё та же 1-я страница.
код модуля:
код модуля:
<?php
/* Модуль Все личные соощения пользователей изменен пользователем kilya v1.3
Изменения 1.1
* улучшен вывод ЛС
+ Добавлена возможность удалять ЛС пользователей.
* Иземенен доступ (не для админа, а для группы Администраторов)
Изменения 1.2
+ Вывод сообщений с форматированием (обрабатываются стили)
+ Доработан вывод Личных сообщений с постраничной навигацией.
+ Создан инсталятор, простоты установки.
+ Изменены ссылки отправителей-получателей на Админцентр-управления пользователя.
Изменения 1.3
+ Добавлена опциональность удаления ЛС (массовое удаление)
*/
/**
* Вывод header
*/
if(!defined('DATALIFEENGINE')) { die("Hacking Attempt!"); }
require_once ROOT_DIR.'/engine/classes/templates.class.php';
$tpl = new dle_template;
$tpl->allow_php_include = false;
$dle_module = "main";
if ($_POST['preview_mode'] == "static" AND $_POST['skin_name'])
{
if (@is_dir(ROOT_DIR.'/templates/'.$_POST['skin_name']))
{
$config['skin'] = $_POST['skin_name'];
}
}
$tpl->dir = ROOT_DIR.'/templates/'.$config['skin'];
$tpl->load_template('preview.css');
include_once ENGINE_DIR . '/classes/parse.class.php';
$parse = new ParseFilter( Array (), Array (), 1, 1 );
//if($member_db[1] != 1){ msg("error", $lang['addnews_denied'], $lang['db_denied']); }
if (isset ($_REQUEST['pm_folder'])) $pm_folder = htmlspecialchars(strip_tags(trim($_REQUEST['pm_folder']))); else $pm_folder = "";
if (isset ($_REQUEST['pm_read'])) $pm_read = htmlspecialchars(strip_tags(trim($_REQUEST['pm_read']))); else $pm_read = "";
if (isset ($_REQUEST['pm_user'])) $pm_user = htmlspecialchars(strip_tags(trim($_REQUEST['pm_user']))); else $pm_user = "";
if (isset ($_REQUEST['pm_id'])) $pm_id = intval($_REQUEST['pm_id']); else $pm_id = 0;
if (isset ($_REQUEST['user_id'])) $user_id = intval($_REQUEST['user_id']); else $user_id = 0;
if($action == "delete")
{
if(!$pm_id || !$pm_user || !$pm_read || !$user_id || !$pm_folder ) { msg("error","Все личные сообщения пользователей","Не забываем выбрать вопрос который нужно удалить", "$PHP_SELF?mod=userspms"); }
$pm_query_id = $db->query("SELECT id FROM ". PREFIX . "_pm WHERE id='$pm_id' ORDER BY date DESC"); // посылаем запрос
$pm_num = $db->num_rows($pm_query_id); // кол - во сообщений
if($pm_num > 0)
{
if( $pm_read != "yes" && $pm_folder=="inbox") {$db->query( "UPDATE " . USERPREFIX . "_users set pm_unread=pm_unread-1,pm_all=pm_all-1 where user_id='$user_id'" );}
if( $pm_read == "yes" && $pm_folder=="inbox") {$db->query( "UPDATE " . USERPREFIX . "_users set pm_all=pm_all-1 where user_id='$user_id'" );}
if( $pm_read == "yes" && $pm_folder =="outbox") {$db->query( "UPDATE " . USERPREFIX . "_users set pm_all=pm_all-1 where name = '$pm_user'" );}
$db->query("DELETE FROM " . PREFIX . "_pm WHERE id = '$pm_id'");
}
else {msg("error","Все личные сообщения пользователей ","Нет данных для обработки или сессия устарела!", "$PHP_SELF?mod=userspms");}
}
if($action == "delete_all"){
$deleted_message = 0;
if(intval($selected_pms)){
foreach ($selected_pms as $id){
$id = intval($id);
$sql = "SELECT * FROM ". PREFIX . "_pm WHERE id='$id' ";
$pm_query_id = $db->query($sql);
$pm_num = $db->num_rows($pm_query_id); // кол - во сообщений
if($pm_num > 0) {
$pm = $db->get_row($pm_query_id);
$user_query = "SELECT name FROM " . USERPREFIX . "_users WHERE user_id='{$pm['user']}'";
$user_query_id = $db->query($user_query);
$user_name = $db->get_row($user_query_id);
$user_name = $user_name['name'];
$pm_id = $pm['id'];
$pm_user = $pm['user_from'];
$user_id = $pm['user'];
$pm_read = $pm['pm_read'];
$pm_folder = $pm['folder'];
// if($pm_num > 0){
if( $pm_read != "yes" && $pm_folder=="inbox") {$db->query( "UPDATE " . USERPREFIX . "_users set pm_unread=pm_unread-1,pm_all=pm_all-1 where user_id='$user_id'" );}
if( $pm_read == "yes" && $pm_folder=="inbox") {$db->query( "UPDATE " . USERPREFIX . "_users set pm_all=pm_all-1 where user_id='$user_id'" );}
if( $pm_read == "yes" && $pm_folder =="outbox") {$db->query( "UPDATE " . USERPREFIX . "_users set pm_all=pm_all-1 where name = '$pm_user'" );}
$db->query("DELETE FROM " . PREFIX . "_pm WHERE id = '$pm_id'");
// }
$deleted_message ++;
$db->free();
}
else {msg("error","Все личные сообщения пользователей","Нет данных для обработки или сессия устарела!", "$PHP_SELF?mod=userspms");}
}
}
if ( (count($selected_pms)==0 )) { msg("info","Все личные сообщения пользователей" , "Нечего удалять, вы ничего не выбрали", "$PHP_SELF?mod=userspms"); }
if(( count($selected_pms) == $deleted_message) ) {
msg("info", "Все личные сообщения пользователей", " Все выбранные Вами сообщения успешно удалены!", "$PHP_SELF?mod=userspms");
} else {
msg("error", "Все личные сообщения пользователей", "$deleted_message $lang[mass_i] ".count($selected_pms)." сообщений удалены", "$PHP_SELF?mod=userspms"); }
}
echoheader("Users' PMs", "Админпанель модуля \"Все личные сообщения пользователей\" ");
echo <<<JSCRIPT
<script language='JavaScript' type="text/javascript">
<!--
function ckeck_uncheck_all() {
var frm = document.editnews;
for (var i=0;i<frm.elements.length;i++) {
var elmnt = frm.elements[i];
if (elmnt.type=='checkbox') {
if(frm.master_box.checked == true){ elmnt.checked=false; }
else{ elmnt.checked=true; }
}
}
if(frm.master_box.checked == true){ frm.master_box.checked = false; }
else{ frm.master_box.checked = true; }
}
-->
</script>
JSCRIPT;
echo<<<HTML
<form action="" method="post" name="editnews">
<div style="padding-top:5px;padding-bottom:2px;">
HTML;
if(!intval($ls_per_page)){ $ls_per_page = 30; }
if (!isset($start_from)) $start_from = 0;
$sql = "SELECT * FROM ". PREFIX . "_pm ORDER BY date DESC LIMIT $start_from,$ls_per_page";
$pm_query_id = $db->query($sql);
$flag = 1;
if($start_from == "0"){ $start_from = ""; }
$i = $start_from;
$entries_showed = 0;
$entries = "";
$pm_num = $db->num_rows($pm_query_id); // кол - во сообщений
if($pm_num > 0) {
$userspms = "<center><table border=\"1\"><tr><td><b> ID </b></td><td><b> Отправитель </b></td><td><b> Получатель </b></td><td><b> Тема </b></td><td><b> Сообщение </b></td><td><b> Дата и время </b></td><td><b> Ящик </b></td><td><b> Статус </b></td><td><b> Действие </b></td> <td width=10 align=\"center\"><input type=\"checkbox\" name=\"master_box\" title=\"Выбрать ВСЕ\" onclick=\"javascript:ckeck_uncheck_all()\"></td></tr></b></tr>";
$id = 0;
while($pm = $db->get_row($pm_query_id))
{
$id++; $i++;
$user_query = "SELECT name FROM " . USERPREFIX . "_users WHERE user_id='{$pm['user']}'";
$user_query_id = $db->query($user_query);
$user_name = $db->get_row($user_query_id);
$user_name = $user_name['name'];
if ($config['allow_alt_url'] == "yes")
{
$user_profile = $config['http_home_url']."user/".urlencode($user_name)."/";
$user_from = $config['http_home_url']."user/".urlencode($pm['user_from'])."/";
}
else
{
$user_profile = $PHP_SELF."?subaction=userinfo&user=".urlencode($user_name);
$user_from = $PHP_SELF."?subaction=userinfo&user=".urlencode($pm['iser_from']);
}
$user = "<a onclick=\"javascript:window.open('?mod=editusers&action=edituser&user={$user_name}','User','toolbar=0,location=0,status=0, left=0, top=0, menubar=0,scrollbars=yes,resizable=0,width=540,height=500'); return(false)\" href=\"{$user_profile}\">{$user_name}</a>";
$user_from = "<a onclick=\"javascript:window.open('?mod=editusers&action=edituser&user={$pm['user_from']}','User','toolbar=0,location=0,status=0, left=0, top=0, menubar=0,scrollbars=yes,resizable=0,width=540,height=500'); return(false)\" href=\"".$user_from."\">{$pm['user_from']}</a>";
$param="$PHP_SELF?mod=userspms&action=delete";
$param .= "&pm_id={$pm['id']}";
$param .= "&pm_user={$pm['user_from']}";
$param .= "&user_id={$pm['user']}";
$param .= "&pm_read={$pm['pm_read']}";
$param .= "&pm_folder={$pm['folder']}";
$pmdelet= "<center><a href=\"$param\">[Удалить]</a></center>";
$date = date("Y-m-d H:i:s", $pm['date']);
$text = $parse->BB_Parse( $pm['text'] , false );
if ($pm["pm_read"]=="yes") {
$pmread="<font color=\"green\"><strong>".$pm['pm_read']."</strong></font>"; } else {$pmread="<font color=\"red\"><strong>".$pm['pm_read']."</strong></font>"; }
$userspms .= "<tr><b><td>$id </td><td>$user_from </td><td>$user </td><td>{$pm['subj']} </td><td>{$text} </td><td>$date </td><td> {$pm['folder']} </td><td> $pmread </td><td> $pmdelet </td></b><td align=center><input name=\"selected_pms[]\" value=\"{$pm['id']}\" type='checkbox'></tr>";
}
/* Страничная Навигация НАЧАЛО */
$query_count = "SELECT COUNT(*) as count from " . PREFIX . "_pm";
$result_count = $db->super_query($query_count);
$all_count = $result_count['count'];
$npp_nav ="";
if($start_from > 0)
{
$previous = $start_from - $ls_per_page;
$npp_nav .= "<a href=\"$PHP_SELF?mod=userspms&start_from=$previous&ls_per_page=$ls_per_page\"><< $lang[edit_prev]</a>";
}
if($all_count > $ls_per_page){
$npp_nav .= " [ ";
$enpages_count = @ceil($all_count/$ls_per_page);
$enpages_start_from = 0;
$enpages = "";
for($j=1;$j<=$enpages_count;$j++){
if($enpages_start_from != $start_from){ $enpages .= "<a class=maintitle href=\"$PHP_SELF?mod=userspms&start_from=$enpages_start_from&ls_per_page=$ls_per_page\">$j</a>"; }
else{ $enpages .= "<span class=navigation> $j </span>"; }
$enpages_start_from += $ls_per_page;
}
$npp_nav .= $enpages;
$npp_nav .= " ] ";
}
if($all_count > $i)
{
$how_next = $all_count -$i ;
if($how_next > $ls_per_page){ $how_next = $ls_per_page; }
$npp_nav .= "<a href=\"$PHP_SELF?mod=userspms&start_from=$i&ls_per_page=$ls_per_page\">$lang[edit_next] $how_next >></a>";
}
if ($npp_nav !="") {$npp_nav.="::" ;}
/* Страничная Навигация КОНЕЦ */
$userspms .= "</table></center>";
}
else
{
$userspms = "<center><strong>Пользователи еще не писали друг другу личных сообщений! <br/><a href=\"$PHP_SELF?mod=userspms\">ОБНОВИТЬ</a></strong></center> "; // ЛС пользователей нет
// msg("error","Все личные сообщения пользователей","<strong>Пользователи еще не писали друг другу личных сообщений!</strong>", "$PHP_SELF?mod=userspms");
}
/**
* Вывод таблицы с сообщениями пользователей
*/
echo <<<HTML
<style type="text/css">
{$tpl->copy_template}
</style>
<table width="100%">
<tr>
<td width="4"><img src="engine/skins/images/tl_lo.gif" width="4" height="4" border="0"></td>
<td background="engine/skins/images/tl_oo.gif"><img src="engine/skins/images/tl_oo.gif" width="1" height="4" border="0"></td>
<td width="6"><img src="engine/skins/images/tl_ro.gif" width="6" height="4" border="0"></td>
</tr>
<tr>
<td background="engine/skins/images/tl_lb.gif"><img src="engine/skins/images/tl_lb.gif" width="4" height="1" border="0"></td>
<td style="padding:5px;" bgcolor="#FFFFFF">
<table width="100%">
<tr>
<td bgcolor="#EFEFEF" height="29" style="padding-left:10px;">
<div class="navigation">Все личные сообщения пользователей</div>
<div align="right">$npp_nav <a href="$PHP_SELF?mod=userspms">[Главная]</a>
<input type=hidden name=action value="delete_all">
<input class="buttons" type="submit" value="-Удалить-">
</div>
</td>
</tr>
</table>
<div class="unterline"></div>
{$userspms}
<div class="unterline"></div>
<div align="right">$npp_nav <a href="$PHP_SELF?mod=userspms">[Главная]</a>
<input type=hidden name=action value="delete_all">
<input class="buttons" type="submit" value="-Удалить-">
</div>
<div class="unterline"></div>
</td>
<td background="engine/skins/images/tl_rb.gif"><img src="engine/skins/images/tl_rb.gif" width="6" height="1" border="0"></td>
</tr>
</table>
</div></form>
HTML;
echo <<<HTML
<div align="center" class="navigation" style="padding: 1px;">
<strong>Название модуля</strong>: Все личные сообщения пользователей v1.3<br />
<strong>Дата создания \ доработки</strong>: 29.12.2008 \ 02.10.2010 <br />
<strong>Автор доработки</strong>: Kilya :: <a href="http://vsaite.net" target=_blank />www.Vsaite.Net</a><br />
</div>
HTML;
/**
* Вывод footer
*/
echofooter();
?>