public static function deliver(Module_PM $module, GWF_PM $pm) { if (false === ($pmo = GWF_PMOptions::getPMOptions($pm->getReceiver()))) { return 0; } if (!$pmo->isOptionEnabled(GWF_PMOptions::EMAIL_ON_PM)) { return 0; } $sender = $pm->getSender(); $receiver = $pm->getReceiver(); if ('' === ($rec = $receiver->getValidMail())) { return 0; } $sendername = $sender->getID() !== '0' ? $sender->display('user_name') : GWF_HTML::langUser($receiver, 'guest'); $email = new GWF_Mail(); $email->setSender($module->cfgEmailSender()); $email->setReceiver($rec); $email->setSubject($module->langUser($receiver, 'mail_subj', array($sendername))); $autofolder = sprintf('index.php?mo=PM&me=AutoFolder&pmid=%s&uid=%s&token=%s', $pm->getID(), $receiver->getID(), $pm->getHashcode()); $autofolder = Common::getAbsoluteURL($autofolder); $autofolder = GWF_HTML::anchor($autofolder, $autofolder); $delete = sprintf('index.php?mo=PM&me=Delete&pmid=%s&uid=%s&token=%s', $pm->getID(), $receiver->getID(), $pm->getHashcode()); $delete = Common::getAbsoluteURL($delete); $delete = GWF_HTML::anchor($delete, $delete); $email->setBody($module->langUser($receiver, 'mail_body', array($receiver->displayUsername(), $sendername, $pm->display('pm_title'), $pm->display('pm_message'), $autofolder, $delete))); if (false === $email->sendToUser($receiver)) { return -4; } return 1; }
/** * Put all your PMs into auto-folders. * @return string */ private function onAutoFolder() { $user = GWF_Session::getUser(); $userid = GWF_Session::getUserID(); if (false === ($pmo = GWF_PMOptions::getPMOptions($user))) { return GWF_HTML::err('ERR_DATABASE', array(__FILE__, __LINE__)); } if (0 >= ($peak = $pmo->getAutoFolderValue())) { return $this->module->message('msg_auto_folder_off'); } $del = GWF_PM::OWNER_DELETED; # count pm from and to user. $conditions = "(pm_owner={$userid} AND pm_options&{$del}=0)"; $db = gdo_db(); $pms = GDO::table('GWF_PM'); $sorted = array(); if (false === ($result = $pms->select('*', $conditions))) { return GWF_HTML::err('ERR_DATABASE', array(__FILE__, __LINE__)); } # Sort By UID while (false !== ($row = $db->fetchAssoc($result))) { $pm = new GWF_PM($row); $other_user = $pm->getOtherUser($user); $other_uid = $other_user->getID(); if (!isset($sorted[$other_uid])) { $sorted[$other_uid] = array(); } $sorted[$other_uid][] = $pm; } $db->free($result); $back = ''; foreach ($sorted as $uid => $pms) { if (count($pms) < $peak) { continue; } $other_user = $pms[0]->getOtherUser($user); $foldername = $other_user->getVar('user_name'); # Create the folder if not exists. if (false === ($folder = GWF_PMFolder::getByName($foldername, $user))) { $folder = GWF_PMFolder::fakeFolder($user->getID(), $foldername); if (false === $folder->insert()) { return GWF_HTML::err('ERR_DATABASE', array(__FILE__, __LINE__)); } $back .= $this->module->message('msg_auto_folder_created', array($other_user->displayUsername())); } $moved = 0; foreach ($pms as $pm) { if (false !== $pm->move($user, $folder)) { $moved++; } } if ($moved > 0) { $back .= $this->module->message('msg_auto_folder_moved', array($moved, $other_user->displayUsername())); } } return $back . $this->module->message('msg_auto_folder_done'); }
public function validate_limits(GWF_User $from, GWF_User $to) { $options = GWF_PMOptions::getPMOptions($to); if ($from->isGuest() && !$options->isOptionEnabled(GWF_PMOptions::ALLOW_GUEST_PM)) { return $this->error('err_user_no_ppm'); } if ($from->isAdmin() || $from->isStaff()) { return false; } if (!$this->cfgIsPMLimited()) { return false; } if ($from->getLevel() <= $options->getVar('pmo_level')) { return $this->error('err_user_pmo_level', array($options->getVar('pmo_level'))); } $user = GWF_Session::getUser(); $uid = GWF_Session::getUserID(); $within = $this->cfgLimitTimeout(); $cut = GWF_Time::getDate(GWF_Date::LEN_SECOND, time() - $within); $count = GDO::table('GWF_PM')->countRows("pm_from={$uid} AND pm_date>'{$cut}'"); $max = $this->calcPMLimit($user); if ($count >= $max) { return $this->lang('err_limit', array($max, GWF_Time::humanDuration($within))); } return false; }
public function displaySignature() { if (false === ($pmo = GWF_PMOptions::getPMOptions($this->getSender()))) { return ''; } if ('' === ($signature = $pmo->getVar('pmo_signature'))) { return ''; } // $highlight = GDO::getQuickSearchHighlights(Common::getRequest('term')); $highlight = array(); return '<div class="gwf_signature">' . GWF_Message::display($signature, true, true, true, $highlight) . '</div>'; }