Example #1
0
 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;
 }
Example #2
0
 /**
  * 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');
 }
Example #3
0
 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;
 }
Example #4
0
 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>';
 }