Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы по PHP » Как заставить работу постраничной навигации в модуле Все личные сообщения пользователей?

Как заставить работу постраничной навигации в модуле Все личные сообщения пользователей?


     06.12.2016    Общие вопросы по PHP, Модули    1065

вопрос
Как настроить для 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>&nbsp;ID&nbsp;</b></td><td><b>&nbsp;Отправитель&nbsp;</b></td><td><b>&nbsp;Получатель&nbsp;</b></td><td><b>&nbsp;Тема&nbsp;</b></td><td><b>&nbsp;Сообщение&nbsp;</b></td><td><b>&nbsp;Дата и время&nbsp;</b></td><td><b>&nbsp;Ящик&nbsp;</b></td><td><b>&nbsp;Статус&nbsp;</b></td><td><b>&nbsp;Действие&nbsp;</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&nbsp;</td><td>$user_from&nbsp;</td><td>$user&nbsp;</td><td>{$pm['subj']}&nbsp;</td><td>{$text}&nbsp;</td><td>$date&nbsp;</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&amp;start_from=$previous&amp;ls_per_page=$ls_per_page\">&lt;&lt; $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&amp;start_from=$enpages_start_from&amp;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&amp;start_from=$i&amp;ls_per_page=$ls_per_page\">$lang[edit_next] $how_next &gt;&gt;</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();
?>

Ответа пока нет


2 комментария

kolumb
Юзер

kolumb - 6 декабря 2016 22:32 -

Заменить
if ($config['allow_alt_url'] == "yes")

на
if ($config['allow_alt_url'])

hostels
Юзер

hostels - 7 декабря 2016 17:31 -

kolumb,к сожалению результата никакого не дало

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх