示例#1
0
 /**
  *  raidmessenger
  *
  *  eventhandler for
  *  raidplan add send to all who have a dkp member with points
  *  raidplan update send to raidplan participants
  *  raidplan delete send to raidplan participants
  *
  * @param $trigger
  */
 public function raidmessenger($trigger)
 {
     global $user, $config;
     global $phpEx, $phpbb_root_path;
     include_once $phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx;
     include_once $phpbb_root_path . 'includes/functions.' . $phpEx;
     include_once $phpbb_root_path . 'includes/functions_messenger.' . $phpEx;
     include_once $phpbb_root_path . 'includes/functions_user.' . $phpEx;
     $rpm = new \bbdkp\controller\raidplanner\Raidmessenger();
     $rpm->get_notifiable_users($trigger, $this->id);
     $emailrecipients = array();
     $messenger = new \messenger();
     foreach ($rpm->send_user_data as $id => $row) {
         $data = array();
         // get template
         switch ($trigger) {
             case 1:
                 $messenger->template('raidplan_add', $row['user_lang']);
                 $subject = '[' . $user->lang['RAIDPLANNER'] . '] ' . $user->lang['NEWRAID'] . ': ' . $this->eventlist[$this->event_type]['event_name'] . ' ' . $user->format_date($this->start_time, $config['rp_date_time_format'], true);
                 break;
             case 2:
                 $messenger->template('raidplan_update', $row['user_lang']);
                 $subject = '[' . $user->lang['RAIDPLANNER'] . '] ' . $user->lang['UPDRAID'] . ': ' . $this->eventlist[$this->event_type]['event_name'] . ' ' . $user->format_date($this->start_time, $config['rp_date_time_format'], true);
                 break;
             case 3:
                 $messenger->template('raidplan_delete', $row['user_lang']);
                 $subject = '[' . $user->lang['RAIDPLANNER'] . '] ' . $user->lang['DELRAID'] . ': ' . $this->eventlist[$this->event_type]['event_name'] . ' ' . $user->format_date($this->start_time, $config['rp_date_time_format'], true);
                 break;
         }
         $userids = array($this->poster);
         $rlname = array();
         user_get_id_name($userids, $rlname);
         $messenger->assign_vars(array('RAIDLEADER' => $rlname[$this->poster], 'USERNAME' => htmlspecialchars_decode($row['username']), 'EVENT_SUBJECT' => $subject, 'EVENT' => $this->eventlist[$this->event_type]['event_name'], 'INVITE_TIME' => $user->format_date($this->invite_time, $config['rp_date_time_format'], true), 'START_TIME' => $user->format_date($this->start_time, $config['rp_date_time_format'], true), 'END_TIME' => $user->format_date($this->end_time, $config['rp_date_time_format'], true), 'TZ' => $user->lang['tz'][(int) $user->data['user_timezone']], 'U_RAIDPLAN' => generate_board_url() . "/dkp.{$phpEx}?page=planner&view=raidplan&raidplanid=" . $this->id));
         $messenger->msg = trim($messenger->tpl_obj->assign_display('body'));
         $messenger->msg = str_replace("\r\n", "\n", $messenger->msg);
         $messenger->msg = utf8_normalize_nfc($messenger->msg);
         $uid = $bitfield = $options = '';
         // will be modified by generate_text_for_storage
         $allow_bbcode = $allow_smilies = $allow_urls = true;
         generate_text_for_storage($messenger->msg, $uid, $bitfield, $options, $allow_bbcode, $allow_urls, $allow_smilies);
         $messenger->msg = generate_text_for_display($messenger->msg, $uid, $bitfield, $options);
         $data = array('address_list' => array('u' => array($row['user_id'] => 'to')), 'from_user_id' => $user->data['user_id'], 'from_username' => $user->data['username'], 'icon_id' => 0, 'from_user_ip' => $user->data['user_ip'], 'enable_bbcode' => true, 'enable_smilies' => true, 'enable_urls' => true, 'enable_sig' => true, 'message' => $messenger->msg, 'bbcode_bitfield' => $this->bbcode['bitfield'], 'bbcode_uid' => $this->bbcode['uid']);
         if ($config['rp_pm_rpchange'] == 1 && (int) $row['user_allow_pm'] == 1) {
             // send a PM
             submit_pm('post', $subject, $data, false);
         }
         if ($config['rp_email_rpchange'] == 1 && $row['user_email'] != '') {
             //send email, reuse messenger object
             $email = $messenger;
             $emailrecipients[] = $row['username'];
             $email->to($row['user_email'], $row['username']);
             $email->anti_abuse_headers($config, $user);
             $email->send(0);
         }
     }
     if ($config['rp_email_rpchange'] == 1 && isset($email)) {
         $email->save_queue();
         $emailrecipients = implode(', ', $emailrecipients);
         add_log('admin', 'LOG_MASS_EMAIL', $emailrecipients);
     }
 }
示例#2
0
 function signupmessenger($trigger, Raidplan $raidplan, $eventlist)
 {
     global $user, $config;
     global $phpEx, $phpbb_root_path;
     include_once $phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx;
     include_once $phpbb_root_path . 'includes/functions.' . $phpEx;
     include_once $phpbb_root_path . 'includes/functions_messenger.' . $phpEx;
     include_once $phpbb_root_path . 'includes/functions_user.' . $phpEx;
     // get recipient data (email, etc)
     if (!class_exists('\\bbdkp\\controller\\raidplanner\\Raidmessenger')) {
         require "{$phpbb_root_path}includes/bbdkp/controller/raidplanner/raidmessenger.{$phpEx}";
     }
     $rpm = new Raidmessenger();
     $rpm->get_notifiable_users($trigger, $this->raidplan_id, $this->signup_id);
     $emailrecipients = array();
     $messenger = new \messenger();
     if (!isset($eventlist[$raidplan->getEventType()])) {
         //this event is closed, so fetch the whole eventlist including closed ones.
         $eventlist = new \bbdkp\controller\raidplanner\rpevents(0);
         $eventlist = $eventlist->events;
     }
     foreach ($rpm->send_user_data as $id => $row) {
         $data = array();
         // get template
         switch ($trigger) {
             case 4:
                 // send signup to RL
                 $messenger->template('signup_new', $row['user_lang']);
                 $subject = '[' . $user->lang['RAIDPLANNER'] . '] ' . $user->lang['NEWSIGN'] . ': ' . $eventlist->events[$raidplan->getEventType()]['event_name'] . ' ' . $user->format_date($raidplan->getStartTime(), $config['rp_date_time_format'], true);
                 $data['address_list'] = array('u' => array($raidplan->getPoster() => 'to'));
                 break;
             case 5:
                 // send confirmation to RL and raider
                 $messenger->template('signup_confirm', $row['user_lang']);
                 $subject = '[' . $user->lang['RAIDPLANNER'] . '] ' . $user->lang['CONFIRMSIGN'] . ': ' . $eventlist->events[$raidplan->getEventType()]['event_name'] . ' ' . $user->format_date($raidplan->getStartTime(), $config['rp_date_time_format'], true);
                 $data['address_list'] = array('u' => array($row['user_id'] => 'to'));
                 break;
             case 6:
                 // send cancellation to RL and raider
                 $messenger->template('signup_unsign', $row['user_lang']);
                 $subject = '[' . $user->lang['RAIDPLANNER'] . '] ' . $user->lang['UNSIGNED'] . ': ' . $eventlist->events[$raidplan->getEventType()]['event_name'] . ' ' . $user->format_date($raidplan->getStartTime(), $config['rp_date_time_format'], true);
                 $data['address_list'] = array('u' => array($row['user_id'] => 'to'));
                 break;
         }
         $userids = array($raidplan->getPoster());
         $rlname = array();
         user_get_id_name($userids, $rlname);
         $messenger->assign_vars(array('RAIDLEADER' => $rlname[$raidplan->getPoster()], 'EVENT_SUBJECT' => $subject, 'SIGNUP_TIME' => $user->format_date($this->signup_time, $config['rp_date_time_format'], true), 'USERNAME' => htmlspecialchars_decode($user->data['username']), 'RAIDER' => $this->dkpmembername, 'EVENT' => $eventlist->events[$raidplan->getEventType()]['event_name'], 'ROLE' => $this->role_name, 'INVITE_TIME' => $user->format_date($raidplan->getInviteTime(), $config['rp_date_time_format'], true), 'START_TIME' => $user->format_date($raidplan->getStartTime(), $config['rp_date_time_format'], true), 'END_TIME' => $user->format_date($raidplan->getEndTime(), $config['rp_date_time_format'], true), 'TZ' => $user->lang['tz'][(int) $user->data['user_timezone']], 'U_RAIDPLAN' => generate_board_url() . "/dkp.{$phpEx}?page=planner&view=raidplan&raidplanid=" . $raidplan->id));
         $messenger->msg = trim($messenger->tpl_obj->assign_display('body'));
         $messenger->msg = str_replace("\r\n", "\n", $messenger->msg);
         $messenger->msg = utf8_normalize_nfc($messenger->msg);
         $uid = $bitfield = $options = '';
         // will be modified by generate_text_for_storage
         $allow_bbcode = $allow_smilies = $allow_urls = true;
         generate_text_for_storage($messenger->msg, $uid, $bitfield, $options, $allow_bbcode, $allow_urls, $allow_smilies);
         $messenger->msg = generate_text_for_display($messenger->msg, $uid, $bitfield, $options);
         $data['from_user_id'] = $user->data['user_id'];
         $data['from_username'] = $user->data['username'];
         $data['icon_id'] = 0;
         $data['from_user_ip'] = $user->data['user_ip'];
         $data['enable_bbcode'] = true;
         $data['enable_smilies'] = true;
         $data['enable_urls'] = true;
         $data['enable_sig'] = true;
         $data['message'] = $messenger->msg;
         $data['bbcode_bitfield'] = $this->bbcode['bitfield'];
         $data['bbcode_uid'] = $this->bbcode['uid'];
         if ($config['rp_pm_signup'] == 1 && (int) $row['user_allow_pm'] == 1) {
             // send a PM
             submit_pm('post', $subject, $data, false);
         }
         if ($config['rp_email_signup'] == 1 && $row['user_email'] != '') {
             //send email, reuse messenger object
             $email = $messenger;
             $emailrecipients[] = $row['username'];
             $email->to($row['user_email'], $row['username']);
             $email->anti_abuse_headers($config, $user);
             $email->send(0);
         }
     }
     if ($config['rp_email_signup'] == 1 && isset($email)) {
         $email->save_queue();
         $emailrecipients = implode(', ', $emailrecipients);
         add_log('admin', 'LOG_MASS_EMAIL', $emailrecipients);
     }
 }