// // ------------------------------------------------------------------------ // // This program is free software; you can redistribute it and/or modify // // it under the terms of the GNU General Public License as published by // // the Free Software Foundation; either version 2 of the License, or // // (at your option) any later version. // // // // 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. See the // // GNU General Public License for more details. // // // // You should have received a copy of the GNU General Public License // // along with this program; if not, write to the Free Software // // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // ------------------------------------------------------------------------ // // Author: Kazumi Ono (AKA onokazu) // // URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ // // Project: The XOOPS Project // // ------------------------------------------------------------------------- // if ( !is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid()) ) { exit("Access Denied"); } else { include_once XOOPS_ROOT_PATH."/class/xoopsformloader.php"; $op = "form"; if (!empty($_POST['op']) && $_POST['op'] == "send") { $op = $_POST['op']; } if ( !$GLOBALS['xoopsSecurity']->check() || $op == "form" ) { xoops_cp_header(); //OpenTable(); if (count($GLOBALS['xoopsSecurity']->getErrors()) > 0) { echo "
".implode('
', $GLOBALS['xoopsSecurity']->getErrors())."
"; } $display_criteria = 1; include XOOPS_ROOT_PATH."/modules/system/admin/mailusers/mailform.php"; $form->display(); //CloseTable(); xoops_cp_footer(); } if ($op == "send" && !empty($_POST['mail_send_to'])) { $added = array(); $added_id = array(); $criteria = array(); if ( !empty($_POST['mail_inactive']) ) { $criteria[] = "level = 0"; } else { if (!empty($_POST['mail_mailok'])) { $criteria[] = 'user_mailok = 1'; } else { if (!empty($_POST['mail_to_group'])) { $member_handler =& xoops_gethandler('member'); $user_list = array(); foreach ($_POST['mail_to_group'] as $groupid ) { $members =& $member_handler->getUsersByGroup($groupid, false); $user_list = array_unique(array_merge($members, $user_list)); unset($members); } if (!empty($user_list)) { $criteria[] = 'uid IN (' . join(',', $user_list) . ')'; } } } if ( !empty($_POST['mail_lastlog_min']) ) { $f_mail_lastlog_min = trim($_POST['mail_lastlog_min']); $time = mktime(0,0,0,substr($f_mail_lastlog_min,5,2),substr($f_mail_lastlog_min,8,2),substr($f_mail_lastlog_min,0,4)); if ( $time > 0 ) { $criteria[] = "last_login > $time"; } } if ( !empty($_POST['mail_lastlog_max']) ) { $f_mail_lastlog_max = trim($_POST['mail_lastlog_max']); $time = mktime(0,0,0,substr($f_mail_lastlog_max,5,2),substr($f_mail_lastlog_max,8,2),substr($f_mail_lastlog_max,0,4)); if ( $time > 0 ) { $criteria[] = "last_login < $time"; } } if ( !empty($_POST['mail_idle_more']) && is_numeric($_POST['mail_idle_more']) ) { $f_mail_idle_more = intval(trim($_POST['mail_idle_more'])); $time = 60 * 60 * 24 * $f_mail_idle_more; $time = time() - $time; if ( $time > 0 ) { $criteria[] = "last_login < $time"; } } if ( !empty($_POST['mail_idle_less']) && is_numeric($_POST['mail_idle_less']) ) { $f_mail_idle_less = intval(trim($_POST['mail_idle_less'])); $time = 60 * 60 * 24 * $f_mail_idle_less; $time = time() - $time; if ( $time > 0 ) { $criteria[] = "last_login > $time"; } } } if ( !empty($_POST['mail_regd_min']) ) { $f_mail_regd_min = trim($_POST['mail_regd_min']); $time = mktime(0,0,0,substr($f_mail_regd_min,5,2),substr($f_mail_regd_min,8,2),substr($f_mail_regd_min,0,4)); if ( $time > 0 ) { $criteria[] = "user_regdate > $time"; } } if ( !empty($_POST['mail_regd_max']) ) { $f_mail_regd_max = trim($_POST['mail_regd_max']); $time = mktime(0,0,0,substr($f_mail_regd_max,5,2),substr($f_mail_regd_max,8,2),substr($f_mail_regd_max,0,4)); if ( $time > 0 ) { $criteria[] = "user_regdate < $time"; } } if ( !empty($criteria) ) { if ( empty($_POST['mail_inactive']) ) { $criteria[] = "level > 0"; } $criteria_object = new CriteriaCompo(); foreach ($criteria as $c) { list ($field, $op, $value) = split(' ', $c); $criteria_object->add(new Criteria($field,$value,$op), 'AND'); } $member_handler =& xoops_gethandler('member'); $getusers =& $member_handler->getUsers($criteria_object); foreach ($getusers as $getuser) { if ( !in_array($getuser->getVar("uid"), $added_id) ) { $added[] = $getuser; $added_id[] = $getuser->getVar("uid"); } } } if ( !empty($_POST['mail_to_user']) ) { foreach ($_POST['mail_to_user'] as $to_user) { if ( !in_array($to_user, $added_id) ) { $added[] = new XoopsUser($to_user); $added_id[] = $to_user; } } } $added_count = count($added); xoops_cp_header(); //OpenTable(); if ( $added_count > 0 ) { $mail_start = !empty($_POST['mail_start']) ? $_POST['mail_start'] : 0; $mail_end = ($added_count > ($mail_start + 100)) ? ($mail_start + 100) : $added_count; $myts =& MyTextSanitizer::getInstance(); $xoopsMailer =& getMailer(); for ( $i = $mail_start; $i < $mail_end; $i++) { $xoopsMailer->setToUsers($added[$i]); } $xoopsMailer->setFromName($myts->oopsStripSlashesGPC($_POST['mail_fromname'])); $xoopsMailer->setFromEmail($myts->oopsStripSlashesGPC($_POST['mail_fromemail'])); $xoopsMailer->setSubject($myts->oopsStripSlashesGPC($_POST['mail_subject'])); $xoopsMailer->setBody($myts->oopsStripSlashesGPC($_POST['mail_body'])); if ( in_array("mail", $_POST['mail_send_to']) ) { $xoopsMailer->useMail(); } if ( in_array("pm", $_POST['mail_send_to']) && empty($_POST['mail_inactive']) ) { $xoopsMailer->usePM(); } $xoopsMailer->send(true); echo $xoopsMailer->getSuccess(); echo $xoopsMailer->getErrors(); if ( $added_count > $mail_end ) { $form = new XoopsThemeForm(_AM_SENDMTOUSERS, "mailusers", "admin.php?fct=mailusers", 'post', true); if ( !empty($_POST['mail_to_group']) ) { foreach ( $_POST['mail_to_group'] as $mailgroup) { $group_hidden = new XoopsFormHidden("mail_to_group[]", $mailgroup); $form->addElement($group_hidden); } } $inactive_hidden = new XoopsFormHidden("mail_inactive", $mail_inactive); $lastlog_min_hidden = new XoopsFormHidden("mail_lastlog_min", $myts->makeTboxData4PreviewInForm($_POST['mail_lastlog_min'])); $lastlog_max_hidden = new XoopsFormHidden("mail_lastlog_max", $myts->makeTboxData4PreviewInForm($_POST['mail_lastlog_max'])); $regd_min_hidden = new XoopsFormHidden("mail_regd_min", $myts->makeTboxData4PreviewInForm($_POST['mail_regd_max'])); $regd_max_hidden = new XoopsFormHidden("mail_regd_max", $myts->makeTboxData4PreviewInForm($_POST['mail_regd_max'])); $idle_more_hidden = new XoopsFormHidden("mail_idle_more", $myts->makeTboxData4PreviewInForm($_POST['mail_idle_more'])); $idle_less_hidden = new XoopsFormHidden("mail_idle_less", $myts->makeTboxData4PreviewInForm($_POST['mail_idle_less'])); $fname_hidden = new XoopsFormHidden("mail_fromname", $myts->makeTboxData4PreviewInForm($_POST['mail_fromname'])); $femail_hidden = new XoopsFormHidden("mail_fromemail", $myts->makeTboxData4PreviewInForm($_POST['mail_fromemail'])); $subject_hidden = new XoopsFormHidden("mail_subject", $myts->makeTboxData4PreviewInForm($_POST['mail_subject'])); $body_hidden = new XoopsFormHidden("mail_body", $myts->makeTareaData4PreviewInForm($_POST['mail_body'])); $start_hidden = new XoopsFormHidden("mail_start", $mail_end); $to_hidden = new XoopsFormHidden("mail_send_to[]", "mail"); $op_hidden = new XoopsFormHidden("op", "send"); $submit_button = new XoopsFormButton("", "mail_submit", _AM_SENDNEXT, "submit"); $sent_label = new XoopsFormLabel(_AM_SENT, sprintf(_AM_SENTNUM, $_POST['mail_start']+1, $mail_end, $added_count)); $form->addElement($sent_label); $form->addElement($inactive_hidden); $form->addElement($lastlog_min_hidden); $form->addElement($lastlog_max_hidden); $form->addElement($regd_min_hidden); $form->addElement($regd_max_hidden); $form->addElement($idle_more_hidden); $form->addElement($idle_less_hidden); $form->addElement($fname_hidden); $form->addElement($femail_hidden); $form->addElement($subject_hidden); $form->addElement($body_hidden); $form->addElement($to_hidden); $form->addElement($op_hidden); $form->addElement($start_hidden); $form->addElement($submit_button); $form->display(); } else { echo "

"._AM_SENDCOMP."

"; } } else { echo "

"._AM_NOUSERMATCH."

"; } //CloseTable(); xoops_cp_footer(); } } ?>