PHP Classes

File: htdocs/modules/pm/viewpmsg.php

Recommend this page to a friend!
  Classes of Michael Beck   Xoops 2.5   htdocs/modules/pm/viewpmsg.php   Download  
File: htdocs/modules/pm/viewpmsg.php
Role: Example script
Content type: text/plain
Description: Example script
Class: Xoops 2.5
Modular content management publication system
Author: By
Last change: non-canonical order

In docblock var tags, use "type variableName" more consistently
Date: 5 years ago
Size: 11,338 bytes
 

Contents

Class file image Download
<?php /** * Private message module * * You may not change or alter any portion of this comment or credits * of supporting developers from this source code or any supporting source code * which is considered copyrighted (c) material of the original comment or credit authors. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright (c) 2000-2016 XOOPS Project (www.xoops.org) * @license GNU GPL 2 (http://www.gnu.org/licenses/gpl-2.0.html) * @package pm * @since 2.3.0 * @author Jan Pedersen * @author Taiwen Jiang <phppp@users.sourceforge.net> */ include_once dirname(dirname(__DIR__)) . '/mainfile.php'; if (!is_object($GLOBALS['xoopsUser'])) { redirect_header(XOOPS_URL, 3, _NOPERM); } $xoopsConfig['module_cache'] = 0; //disable caching since the URL will be the same, but content different from one user to another $GLOBALS['xoopsOption']['template_main'] = 'pm_viewpmsg.tpl'; include $GLOBALS['xoops']->path('header.php'); $valid_op_requests = array('out', 'save', 'in'); $_REQUEST['op'] = !empty($_REQUEST['op']) && in_array($_REQUEST['op'], $valid_op_requests) ? $_REQUEST['op'] : 'in'; $start = empty($_REQUEST['start']) ? 0 : (int)$_REQUEST['start']; $pm_handler = xoops_getModuleHandler('message'); if (isset($_POST['delete_messages']) && (isset($_POST['msg_id']) || isset($_POST['msg_ids']))) { if (!$GLOBALS['xoopsSecurity']->check()) { $GLOBALS['xoopsTpl']->assign('errormsg', implode('<br>', $GLOBALS['xoopsSecurity']->getErrors())); } elseif (empty($_REQUEST['ok'])) { xoops_confirm(array( 'ok' => 1, 'delete_messages' => 1, 'op' => $_REQUEST['op'], 'msg_ids' => json_encode(array_map('intval', $_POST['msg_id']))), $_SERVER['REQUEST_URI'], _PM_SURE_TO_DELETE); include $GLOBALS['xoops']->path('footer.php'); exit(); } else { $clean_msg_id = json_decode($_POST['msg_ids'], true, 2); if (!empty($clean_msg_id)) { $clean_msg_id = array_map('intval', $clean_msg_id); } $size = count($clean_msg_id); $msg =& $clean_msg_id; for ($i = 0; $i < $size; ++$i) { $pm = $pm_handler->get($msg[$i]); if ($pm->getVar('to_userid') == $GLOBALS['xoopsUser']->getVar('uid')) { $pm_handler->setTodelete($pm); } elseif ($pm->getVar('from_userid') == $GLOBALS['xoopsUser']->getVar('uid')) { $pm_handler->setFromdelete($pm); } unset($pm); } $GLOBALS['xoopsTpl']->assign('msg', _PM_DELETED); } } if (isset($_POST['move_messages']) && isset($_POST['msg_id'])) { if (!$GLOBALS['xoopsSecurity']->check()) { $GLOBALS['xoopsTpl']->assign('errormsg', implode('<br>', $GLOBALS['xoopsSecurity']->getErrors())); } else { $size = count($_POST['msg_id']); $msg = $_POST['msg_id']; if ($_POST['op'] === 'save') { for ($i = 0; $i < $size; ++$i) { $pm = $pm_handler->get($msg[$i]); if ($pm->getVar('to_userid') == $GLOBALS['xoopsUser']->getVar('uid')) { $pm_handler->setTosave($pm, 0); } elseif ($pm->getVar('from_userid') == $GLOBALS['xoopsUser']->getVar('uid')) { $pm_handler->setFromsave($pm, 0); } unset($pm); } } else { if (!$GLOBALS['xoopsUser']->isAdmin()) { $total_save = $pm_handler->getSavecount(); $size = min($size, $GLOBALS['xoopsModuleConfig']['max_save'] - $total_save); } for ($i = 0; $i < $size; ++$i) { $pm = $pm_handler->get($msg[$i]); if ($_POST['op'] === 'in') { $pm_handler->setTosave($pm); } elseif ($_POST['op'] === 'out') { $pm_handler->setFromsave($pm); } unset($pm); } } if ($_POST['op'] === 'save') { $GLOBALS['xoopsTpl']->assign('msg', _PM_UNSAVED); } elseif (isset($total_save) && !$GLOBALS['xoopsUser']->isAdmin()) { $GLOBALS['xoopsTpl']->assign('msg', sprintf(_PM_SAVED_PART, $GLOBALS['xoopsModuleConfig']['max_save'], $i)); } else { $GLOBALS['xoopsTpl']->assign('msg', _PM_SAVED_ALL); } } } if (isset($_REQUEST['empty_messages'])) { if (!$GLOBALS['xoopsSecurity']->check()) { $GLOBALS['xoopsTpl']->assign('errormsg', implode('<br>', $GLOBALS['xoopsSecurity']->getErrors())); } elseif (empty($_REQUEST['ok'])) { xoops_confirm(array('ok' => 1, 'empty_messages' => 1, 'op' => $_REQUEST['op']), $_SERVER['REQUEST_URI'], _PM_RUSUREEMPTY); include $GLOBALS['xoops']->path('footer.php'); exit(); } else { if ($_POST['op'] === 'save') { $crit_to = new CriteriaCompo(new Criteria('to_delete', 0)); $crit_to->add(new Criteria('to_save', 1)); $crit_to->add(new Criteria('to_userid', $GLOBALS['xoopsUser']->getVar('uid'))); $crit_from = new CriteriaCompo(new Criteria('from_delete', 0)); $crit_from->add(new Criteria('from_save', 1)); $crit_from->add(new Criteria('from_userid', $GLOBALS['xoopsUser']->getVar('uid'))); $criteria = new CriteriaCompo($crit_to); $criteria->add($crit_from, 'OR'); } elseif ($_POST['op'] === 'out') { $criteria = new CriteriaCompo(new Criteria('from_delete', 0)); $criteria->add(new Criteria('from_userid', $GLOBALS['xoopsUser']->getVar('uid'))); $criteria->add(new Criteria('from_save', 0)); } else { $criteria = new CriteriaCompo(new Criteria('to_delete', 0)); $criteria->add(new Criteria('to_userid', $GLOBALS['xoopsUser']->getVar('uid'))); $criteria->add(new Criteria('to_save', 0)); } /* * The following method has critical scalability problem ! * deleteAll method should be used instead */ $pms = $pm_handler->getObjects($criteria); unset($criteria); if (count($pms) > 0) { foreach (array_keys($pms) as $i) { if ($pms[$i]->getVar('to_userid') == $GLOBALS['xoopsUser']->getVar('uid')) { if ($_POST['op'] === 'save') { $pm_handler->setTosave($pms[$i], 0); } elseif ($_POST['op'] === 'in') { $pm_handler->setTodelete($pms[$i]); } } if ($pms[$i]->getVar('from_userid') == $GLOBALS['xoopsUser']->getVar('uid')) { if ($_POST['op'] === 'save') { $pm_handler->setFromsave($pms[$i], 0); } elseif ($_POST['op'] === 'out') { $pm_handler->setFromdelete($pms[$i]); } } } } $GLOBALS['xoopsTpl']->assign('msg', _PM_EMPTIED); } } if ($_REQUEST['op'] === 'out') { $criteria = new CriteriaCompo(new Criteria('from_delete', 0)); $criteria->add(new Criteria('from_userid', $GLOBALS['xoopsUser']->getVar('uid'))); $criteria->add(new Criteria('from_save', 0)); } elseif ($_REQUEST['op'] === 'save') { $crit_to = new CriteriaCompo(new Criteria('to_delete', 0)); $crit_to->add(new Criteria('to_save', 1)); $crit_to->add(new Criteria('to_userid', $GLOBALS['xoopsUser']->getVar('uid'))); $crit_from = new CriteriaCompo(new Criteria('from_delete', 0)); $crit_from->add(new Criteria('from_save', 1)); $crit_from->add(new Criteria('from_userid', $GLOBALS['xoopsUser']->getVar('uid'))); $criteria = new CriteriaCompo($crit_to); $criteria->add($crit_from, 'OR'); } else { $criteria = new CriteriaCompo(new Criteria('to_delete', 0)); $criteria->add(new Criteria('to_userid', $GLOBALS['xoopsUser']->getVar('uid'))); $criteria->add(new Criteria('to_save', 0)); } $total_messages = $pm_handler->getCount($criteria); $criteria->setStart($start); $criteria->setLimit($GLOBALS['xoopsModuleConfig']['perpage']); $criteria->setSort('msg_time'); $criteria->setOrder('DESC'); $pm_arr = $pm_handler->getAll($criteria, null, false, false); unset($criteria); $GLOBALS['xoopsTpl']->assign('total_messages', $total_messages); $GLOBALS['xoopsTpl']->assign('op', $_REQUEST['op']); if ($total_messages > $GLOBALS['xoopsModuleConfig']['perpage']) { include_once $GLOBALS['xoops']->path('class/pagenav.php'); $nav = new XoopsPageNav($total_messages, $GLOBALS['xoopsModuleConfig']['perpage'], $start, 'start', 'op=' . htmlspecialchars($_REQUEST['op'])); $GLOBALS['xoopsTpl']->assign('pagenav', $nav->renderNav(4)); } $GLOBALS['xoopsTpl']->assign('display', $total_messages > 0); $GLOBALS['xoopsTpl']->assign('anonymous', $xoopsConfig['anonymous']); if (count($pm_arr) > 0) { foreach (array_keys($pm_arr) as $i) { if (isset($_REQUEST['op']) && $_REQUEST['op'] === 'out') { $uids[] = $pm_arr[$i]['to_userid']; } else { $uids[] = $pm_arr[$i]['from_userid']; } } /* @var XoopsMemberHandler $member_handler */ $member_handler = xoops_getHandler('member'); $senders = $member_handler->getUserList(new Criteria('uid', '(' . implode(', ', array_unique($uids)) . ')', 'IN')); foreach (array_keys($pm_arr) as $i) { $message = $pm_arr[$i]; $message['msg_image'] = htmlspecialchars($message['msg_image'], ENT_QUOTES); $message['msg_time'] = formatTimestamp($message['msg_time']); if (isset($_REQUEST['op']) && $_REQUEST['op'] === 'out') { $message['postername'] = $senders[$pm_arr[$i]['to_userid']]; $message['posteruid'] = $pm_arr[$i]['to_userid']; } else { $message['postername'] = $senders[$pm_arr[$i]['from_userid']]; $message['posteruid'] = $pm_arr[$i]['from_userid']; } $message['msg_no'] = $i; $GLOBALS['xoopsTpl']->append('messages', $message); } } include_once $GLOBALS['xoops']->path('class/xoopsformloader.php'); $send_button = new XoopsFormButton('', 'send', _PM_SEND); $send_button->setExtra("onclick='javascript:openWithSelfMain(\"" . XOOPS_URL . "/modules/pm/pmlite.php?send=1\", \"pmlite\", 565, 500);'"); $delete_button = new XoopsFormButton('', 'delete_messages', _PM_DELETE, 'submit'); $move_button = new XoopsFormButton('', 'move_messages', ($_REQUEST['op'] === 'save') ? _PM_UNSAVE : _PM_TOSAVE, 'submit'); $empty_button = new XoopsFormButton('', 'empty_messages', _PM_EMPTY, 'submit'); $pmform = new XoopsForm('', 'pmform', 'viewpmsg.php', 'post', true); $pmform->addElement($send_button); $pmform->addElement($move_button); $pmform->addElement($delete_button); $pmform->addElement($empty_button); $pmform->addElement(new XoopsFormHidden('op', $_REQUEST['op'])); $pmform->assign($GLOBALS['xoopsTpl']); include $GLOBALS['xoops']->path('footer.php');