<?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 <[email protected]>
*/
if (!defined('XOOPS_MAINFILE_INCLUDED')) {
include_once dirname(dirname(__DIR__)) . '/mainfile.php';
} else {
chdir(XOOPS_ROOT_PATH . '/modules/pm/');
xoops_loadLanguage('main', 'pm');
}
XoopsLoad::load('XoopsRequest');
$subject_icons = XoopsLists::getSubjectsList();
$op = XoopsRequest::getCmd('op', '', 'POST');
$reply = XoopsRequest::getBool('reply', 0, 'GET');
$send = XoopsRequest::getBool('send', 0, 'GET');
$send2 = XoopsRequest::getBool('send2', 0, 'GET');
$sendmod = XoopsRequest::getBool('sendmod', 0, 'POST'); // send from other modules with post data
$to_userid = XoopsRequest::getInt('to_userid', 0, 'GET');
$msg_id = XoopsRequest::getInt('msg_id', 0, 'GET');
if (empty($_GET['refresh']) && $op !== 'submit') {
$jump = 'pmlite.php?refresh=' . time();
if ($send == 1) {
$jump .= "&send={$send}";
} elseif ($send2 == 1) {
$jump .= "&send2={$send2}&to_userid={$to_userid}";
} elseif ($reply == 1) {
$jump .= "&reply={$reply}&msg_id={$msg_id}";
} else {
}
header('location: ' . $jump);
exit();
}
if (!is_object($GLOBALS['xoopsUser'])) {
redirect_header(XOOPS_URL, 3, _NOPERM);
}
xoops_header();
$myts = MyTextSanitizer::getInstance();
if ($op === 'submit') {
/* @var XoopsMemberHandler $member_handler */
$member_handler = xoops_getHandler('member');
$count = $member_handler->getUserCount(new Criteria('uid', XoopsRequest::getInt('to_userid', 0, 'POST')));
if ($count != 1) {
echo '<br><br><div><h4>' . _PM_USERNOEXIST . '<br>';
echo _PM_PLZTRYAGAIN . '</h4><br>';
echo "[ <a href='javascript:history.go(-1)'>" . _PM_GOBACK . '</a> ]</div>';
} elseif ($GLOBALS['xoopsSecurity']->check()) {
$pm_handler = xoops_getModuleHandler('message', 'pm');
$pm = $pm_handler->create();
$pm->setVar('msg_time', time());
$msg_image = XoopsRequest::getString('msg_image', null, 'POST');
if (in_array($msg_image, $subject_icons)) {
$pm->setVar('msg_image', $msg_image);
}
$pm->setVar('subject', XoopsRequest::getString('subject', null, 'POST'));
$pm->setVar('msg_text', XoopsRequest::getString('message', null, 'POST'));
$pm->setVar('to_userid', XoopsRequest::getInt('to_userid', 0, 'POST'));
$pm->setVar('from_userid', $GLOBALS['xoopsUser']->getVar('uid'));
if (XoopsRequest::getBool('savecopy', 0)) {
//PMs are by default not saved in outbox
$pm->setVar('from_delete', 0);
}
if (!$pm_handler->insert($pm)) {
echo $pm->getHtmlErrors();
echo "<br><a href='javascript:history.go(-1)'>" . _PM_GOBACK . '</a>';
} else {
// @todo: Send notification email if user has selected this in the profile
echo "<br><br><div style='text-align:center;'><h4>" . _PM_MESSAGEPOSTED . "</h4><br><a href=\"javascript:window.opener.location='" . XOOPS_URL . "/viewpmsg.php';window.close();\">" . _PM_CLICKHERE . "</a><br><br><a href=\"javascript:window.close();\">" . _PM_ORCLOSEWINDOW . '</a></div>';
}
} else {
echo implode('<br>', $GLOBALS['xoopsSecurity']->getErrors());
echo "<br><a href=\"javascript:window.close();\">" . _PM_ORCLOSEWINDOW . '</a>';
}
} elseif ($reply == 1 || $send == 1 || $send2 == 1 || $sendmod == 1) {
if ($reply == 1) {
$pm_handler = xoops_getModuleHandler('message', 'pm');
$pm = $pm_handler->get($msg_id);
if ($pm->getVar('to_userid') == $GLOBALS['xoopsUser']->getVar('uid')) {
$pm_uname = XoopsUser::getUnameFromId($pm->getVar('from_userid'));
$message = "[quote]\n";
$message .= sprintf(_PM_USERWROTE, $pm_uname);
$message .= "\n" . $pm->getVar('msg_text', 'E') . "\n[/quote]";
} else {
unset($pm);
$reply = $send2 = 0;
}
}
include_once $GLOBALS['xoops']->path('class/xoopsformloader.php');
$pmform = new XoopsThemeForm('', 'pmform', 'pmlite.php', 'post', true);
$subject = '';
$message = '';
if ($reply == 1) {
$subject = $pm->getVar('subject', 'E');
if (!preg_match('/^' . _RE . '/i', $subject)) {
$subject = _RE . ' ' . $subject;
}
$pmform->addElement(new XoopsFormLabel(_PM_TO, $pm_uname));
$pmform->addElement(new XoopsFormHidden('to_userid', $pm->getVar('from_userid')));
} elseif ($sendmod == 1) {
$tmpUname = XoopsUser::getUnameFromId(XoopsRequest::getInt('to_userid', 0, 'POST'));
$pmform->addElement(new XoopsFormHidden('to_userid', XoopsRequest::getInt('to_userid', 0, 'POST')));
$pmform->addElement(new XoopsFormLabel(_PM_TO, $tmpUname));
$subject = $myts->htmlSpecialChars(XoopsRequest::getString('subject', '', 'POST'));
$message = $myts->htmlSpecialChars(XoopsRequest::getString('message', '', 'POST'));
} else {
if ($send2 == 1) {
$tmpUname = XoopsUser::getUnameFromId($to_userid, false);
$pmform->addElement(new XoopsFormLabel(_PM_TO, $tmpUname));
$pmform->addElement(new XoopsFormHidden('to_userid', $to_userid));
} else {
$to_username = new XoopsFormSelectUser(_PM_TO, 'to_userid');
$pmform->addElement($to_username);
}
}
$pmform->addElement(new XoopsFormText(_PM_SUBJECTC, 'subject', 30, 100, $subject), true);
$msg_image = '';
$icons_radio = new XoopsFormRadio(_MESSAGEICON, 'msg_image', $msg_image);
$subjectImages = array();
foreach ($subject_icons as $name => $value) {
$subjectImages[$name] = '<img src="' . XOOPS_URL . '/images/subject/' . $value .'">';
}
$icons_radio->addOptionArray($subjectImages);
$pmform->addElement($icons_radio);
$pmform->addElement(new XoopsFormDhtmlTextArea(_PM_MESSAGEC, 'message', $message, 8, 37), true);
$saveCheckbox = new XoopsFormCheckBox('', 'savecopy', 0);
$saveCheckbox->addOption('1', _PM_SAVEINOUTBOX);
$pmform->addElement($saveCheckbox);
$pmform->addElement(new XoopsFormHidden('op', 'submit'));
$elementTray = new XoopsFormElementTray('', '', 'tray');
$elementTray->addElement(new XoopsFormButton('', 'submit', _SUBMIT, 'submit'));
$elementTray->addElement(new XoopsFormButton('', 'reset', _PM_CLEAR, 'reset'));
$cancel_send = new XoopsFormButton('', 'cancel', _PM_CANCELSEND, 'button');
$cancel_send->setExtra("onclick='javascript:window.close();'");
$elementTray->addElement($cancel_send);
$pmform->addElement($elementTray);
$pmform->display();
}
xoops_footer();
|