/** * 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); } }
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); } }