[ Index ]

PHP Cross Reference of Xoops v2.3.1

[Global whois Lookup]    [Ranchi, Jharkhand, India website]     [Hindi Magazine]     [Desi Community website in tristate area]    [B 4 Bollywood]    [Internet nation of India]

title

Body

[close]

/modules/pm/ -> viewpmsg.php (source)

   1  <?php
   2  /**

   3   * Private message module

   4   *

   5   * You may not change or alter any portion of this comment or credits

   6   * of supporting developers from this source code or any supporting source code 

   7   * which is considered copyrighted (c) material of the original comment or credit authors.

   8   * This program is distributed in the hope that it will be useful,

   9   * but WITHOUT ANY WARRANTY; without even the implied warranty of

  10   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

  11   *

  12   * @copyright       The XOOPS Project http://sourceforge.net/projects/xoops/

  13   * @license         http://www.fsf.org/copyleft/gpl.html GNU public license

  14   * @package         pm

  15   * @since           2.3.0

  16   * @author          Jan Pedersen

  17   * @author          Taiwen Jiang <phppp@users.sourceforge.net>

  18   * @version         $Id: viewpmsg.php 2022 2008-08-31 02:07:17Z phppp $

  19   */
  20  
  21  include_once  "../../mainfile.php";
  22  
  23  if (!is_object($xoopsUser)) {
  24      redirect_header(XOOPS_URL, 3, _NOPERM);
  25      exit();
  26  }
  27  $xoopsConfig['module_cache'] = 0; //disable caching since the URL will be the same, but content different from one user to another

  28  $xoopsOption['template_main'] = "pm_viewpmsg.html";
  29  include  XOOPS_ROOT_PATH . '/header.php';
  30  
  31  $_REQUEST['op'] = empty($_REQUEST['op']) ? "in" : $_REQUEST['op'];
  32  $start = empty($_REQUEST["start"]) ? 0 : intval($_REQUEST["start"]);
  33  $pm_handler =& xoops_getModuleHandler('message');
  34  
  35  if (isset($_POST['delete_messages']) && isset($_POST['msg_id'])) {
  36      if (!$GLOBALS['xoopsSecurity']->check()) {
  37          $xoopsTpl->assign('errormsg', implode('<br />', $GLOBALS['xoopsSecurity']->getErrors()));
  38      } elseif (empty($_REQUEST['ok'])) {
  39          xoops_confirm(array('ok' => 1, 'delete_messages' => 1, 'op' => $_REQUEST['op'], 'msg_id'=> serialize(array_map("intval", $_POST['msg_id']))), $_SERVER['REQUEST_URI'], _PM_RUSUREDELETE);
  40          include  XOOPS_ROOT_PATH . "/footer.php";
  41          exit();
  42      } else {
  43          $_POST['msg_id'] = unserialize($_POST['msg_id']);
  44          $size = count($_POST['msg_id']);
  45          $msg = $_POST['msg_id'];
  46          for ( $i = 0; $i < $size; $i++ ) {
  47              $pm =& $pm_handler->get($msg[$i]);
  48              if ($pm->getVar('to_userid') == $xoopsUser->getVar('uid')) {
  49                  $pm_handler->setTodelete($pm);
  50              } elseif ($pm->getVar('from_userid') == $xoopsUser->getVar('uid')) {
  51                  $pm_handler->setFromdelete($pm);
  52              }
  53              unset($pm);
  54          }
  55          $xoopsTpl->assign('msg', _PM_DELETED);
  56      }
  57  }
  58  if (isset($_POST['move_messages']) && isset($_POST['msg_id'])) {
  59      if (!$GLOBALS['xoopsSecurity']->check()) {
  60          $xoopsTpl->assign('errormsg', implode('<br />', $GLOBALS['xoopsSecurity']->getErrors()));
  61      } else{
  62          $size = count($_POST['msg_id']);
  63          $msg = $_POST['msg_id'];
  64          if ($_POST['op'] == 'save') {
  65              for ( $i = 0; $i < $size; $i++ ) {
  66                  $pm =& $pm_handler->get($msg[$i]);
  67                  if ($pm->getVar('to_userid') == $xoopsUser->getVar('uid')) {
  68                      $pm_handler->setTosave($pm, 0);
  69                  } elseif ($pm->getVar('from_userid') == $xoopsUser->getVar('uid')) {
  70                      $pm_handler->setFromsave($pm, 0);
  71                  }
  72                  unset($pm);
  73              }
  74          } else {
  75              if (!$xoopsUser->isAdmin()) {
  76                  $total_save = $pm_handler->getSavecount();
  77                  $size = min($size, ($xoopsModuleConfig['max_save'] - $total_save));
  78              }
  79              for ( $i = 0; $i < $size; $i++ ) {
  80                  $pm =& $pm_handler->get($msg[$i]);
  81                  if ($_POST['op']=='in') {
  82                      $pm_handler->setTosave($pm);
  83                  } elseif ($_POST['op'] == 'out') {
  84                      $pm_handler->setFromsave($pm);
  85                  }
  86                  unset($pm);
  87              }
  88          }
  89          if ($_POST['op'] == 'save') {
  90              $xoopsTpl->assign('msg', _PM_UNSAVED);
  91          } elseif (isset($total_save) && !$xoopsUser->isAdmin()) {
  92              $xoopsTpl->assign('msg', sprintf(_PM_SAVED_PART, $xoopsModuleConfig['max_save'], $i));
  93          } else {
  94              $xoopsTpl->assign('msg', _PM_SAVED_ALL);
  95          }
  96      }
  97  }
  98  if (isset($_REQUEST['empty_messages'])) {
  99      if (!$GLOBALS['xoopsSecurity']->check()) {
 100          $xoopsTpl->assign('errormsg', implode('<br />', $GLOBALS['xoopsSecurity']->getErrors()));
 101      } elseif (empty($_REQUEST['ok'])) {
 102          xoops_confirm(array('ok' => 1, 'empty_messages' => 1, 'op' => $_REQUEST['op']), $_SERVER['REQUEST_URI'], _PM_RUSUREEMPTY);
 103          include  XOOPS_ROOT_PATH."/footer.php";
 104          exit();
 105      } else {
 106          if ($_POST['op'] == 'save') {
 107              $crit_to = new CriteriaCompo(new Criteria('to_delete', 0));
 108              $crit_to->add(new Criteria('to_save',1));
 109              $crit_to->add(new Criteria('to_userid',$xoopsUser->getVar('uid')));
 110              $crit_from = new CriteriaCompo(new Criteria('from_delete', 0));
 111              $crit_from->add(new Criteria('from_save', 1));
 112              $crit_from->add(new Criteria('from_userid',$xoopsUser->getVar('uid')));
 113              $criteria = new CriteriaCompo($crit_to);
 114              $criteria->add($crit_from, "OR");
 115          } elseif ($_POST['op'] == 'out') {                
 116              $criteria = new CriteriaCompo(new Criteria('from_delete', 0));
 117              $criteria->add(new Criteria('from_userid', $xoopsUser->getVar('uid')));
 118              $criteria->add(new Criteria('from_save', 0));
 119          } else{
 120              $criteria = new CriteriaCompo(new Criteria('to_delete', 0));
 121              $criteria->add(new Criteria('to_userid', $xoopsUser->getVar('uid')));
 122              $criteria->add(new Criteria('to_save', 0));
 123          }
 124          /*

 125           * The following method has critical scalability problem !

 126           * deleteAll method should be used instead

 127           */
 128          $pms = $pm_handler->getObjects($criteria);
 129          unset($criteria);
 130          if (count($pms)>0) {
 131              foreach (array_keys($pms) as $i) {
 132                  if ($pms[$i]->getVar('to_userid') == $xoopsUser->getVar('uid')) {
 133                      if ($_POST['op'] == 'save') {
 134                          $pm_handler->setTosave($pms[$i], 0);
 135                      } elseif ($_POST['op'] == 'in') {
 136                          $pm_handler->setTodelete($pms[$i]);
 137                      }
 138                  }
 139                  if ($pms[$i]->getVar('from_userid') == $xoopsUser->getVar('uid')) {
 140                      if ($_POST['op']=='save') {
 141                          $pm_handler->setFromsave($pms[$i],0);
 142                      } elseif ($_POST['op']=='out') {
 143                          $pm_handler->setFromdelete($pms[$i]);
 144                      }
 145                  }
 146              }
 147          }
 148          $xoopsTpl->assign('msg', _PM_EMPTIED);
 149      }
 150  }
 151  
 152  if ($_REQUEST['op'] == "out") {
 153      $criteria = new CriteriaCompo(new Criteria('from_delete', 0));
 154      $criteria->add(new Criteria('from_userid', $xoopsUser->getVar('uid')));
 155      $criteria->add(new Criteria('from_save', 0));
 156  } elseif ($_REQUEST['op'] == "save") {
 157      $crit_to = new CriteriaCompo(new Criteria('to_delete', 0));
 158      $crit_to->add(new Criteria('to_save', 1));
 159      $crit_to->add(new Criteria('to_userid', $xoopsUser->getVar('uid')));
 160      $crit_from = new CriteriaCompo(new Criteria('from_delete', 0));
 161      $crit_from->add(new Criteria('from_save', 1));
 162      $crit_from->add(new Criteria('from_userid', $xoopsUser->getVar('uid')));
 163      $criteria = new CriteriaCompo($crit_to);
 164      $criteria->add($crit_from, "OR");
 165  } else {
 166      $criteria = new CriteriaCompo(new Criteria('to_delete', 0));
 167      $criteria->add(new Criteria('to_userid', $xoopsUser->getVar('uid')));
 168      $criteria->add(new Criteria('to_save', 0));
 169  }
 170  $total_messages = $pm_handler->getCount($criteria);
 171  $criteria->setStart($start);
 172  $criteria->setLimit($xoopsModuleConfig['perpage']);
 173  $criteria->setSort("msg_time");
 174  $criteria->setOrder("DESC");
 175  $pm_arr = $pm_handler->getAll($criteria, null, false);
 176  unset($criteria);
 177  
 178  $xoopsTpl->assign('total_messages', $total_messages);
 179  $xoopsTpl->assign('op', $_REQUEST['op']);
 180  
 181  if ( $total_messages > $xoopsModuleConfig['perpage']) {
 182      include  XOOPS_ROOT_PATH . '/class/pagenav.php';
 183      $nav = new XoopsPageNav($total_messages, $xoopsModuleConfig['perpage'], $start, "start", 'op=' . htmlspecialchars($_REQUEST['op']));
 184      $xoopsTpl->assign('pagenav', $nav->renderNav(4));
 185  }
 186  
 187  $xoopsTpl->assign('display', $total_messages > 0);
 188  $xoopsTpl->assign('anonymous', $xoopsConfig['anonymous']);
 189  if (count($pm_arr)>0) {
 190      foreach (array_keys($pm_arr) as $i) {
 191          if (isset($_REQUEST['op']) && $_REQUEST['op'] == "out") {
 192              $uids[] = $pm_arr[$i]['to_userid'];
 193          } else {
 194              $uids[] = $pm_arr[$i]['from_userid'];
 195          }
 196      }
 197      $member_handler =& xoops_gethandler('member');
 198      $senders = $member_handler->getUserList(new Criteria('uid', "(" . implode(", ", array_unique($uids) ) . ")", "IN"));
 199      foreach (array_keys($pm_arr) as $i) {
 200          $message = $pm_arr[$i];
 201          $message['msg_time'] = formatTimestamp($message["msg_time"]);
 202          if (isset($_REQUEST['op']) && $_REQUEST['op'] == "out") {
 203              $message['postername'] = $senders[$pm_arr[$i]['to_userid']];
 204              $message['posteruid'] = $pm_arr[$i]['to_userid'];
 205          } else {
 206              $message['postername'] = $senders[$pm_arr[$i]['from_userid']];
 207              $message['posteruid'] = $pm_arr[$i]['from_userid'];
 208          }
 209          $message['msg_no'] = $i;
 210          $xoopsTpl->append('messages', $message);
 211      }
 212  }
 213  
 214  include_once  XOOPS_ROOT_PATH . "/class/xoopsformloader.php";
 215  $send_button = new XoopsFormButton('', 'send', _PM_SEND);
 216  $send_button->setExtra("onclick='javascript:openWithSelfMain(\"" . XOOPS_URL . "/modules/pm/pmlite.php?send=1\", \"pmlite\", 550, 450);'");
 217  $delete_button = new XoopsFormButton('', 'delete_messages', _PM_DELETE, 'submit');
 218  $move_button = new XoopsFormButton('', 'move_messages', ($_REQUEST['op'] == 'save') ? _PM_UNSAVE : _PM_TOSAVE, 'submit');
 219  $empty_button = new XoopsFormButton('', 'empty_messages', _PM_EMPTY, 'submit');
 220  
 221  $pmform = new XoopsForm('', 'pmform', 'viewpmsg.php', 'post', true);
 222  $pmform->addElement($send_button);
 223  $pmform->addElement($move_button);
 224  $pmform->addElement($delete_button);
 225  $pmform->addElement($empty_button);
 226  $pmform->addElement(new XoopsFormHidden('op', $_REQUEST['op']));
 227  $pmform->assign($xoopsTpl);
 228  
 229  include  XOOPS_ROOT_PATH."/footer.php";
 230  ?>


[ Xoops]     [PhpNuke]     [PostNuke]     [Joomla]    [Drupal]    [E107]    [NucleusCms]
[Php-Fusion]     [PhpBB]     [WordPress]     [Typo3]
Generated: Mon Oct 27 11:51:45 2008
Open Source related documentation for developers.