Example #1
0
/**
* Sends the reply notification to users subscribed to this issue.
*
* @param	array	Info about this issue
* @param	array	Info about this note (including text)
*/
function send_issue_reply_notification($issue, $issuenote)
{
    global $vbulletin, $db, $vbphrase;
    if ($issuenote['type'] != 'user' and $issuenote['type'] != 'petition') {
        // only send if the note is a "normal" note type
        return;
    }
    $project = fetch_project_info($issue['projectid']);
    $previousnote = $db->query_first("\r\n\t\tSELECT MAX(dateline) AS dateline\r\n\t\tFROM " . TABLE_PREFIX . "pt_issuenote AS issuenote\r\n\t\tWHERE issuenote.issueid = {$issue['issueid']}\r\n\t\t\tAND issuenote.dateline < {$issuenote['dateline']}\r\n\t\t\tAND issuenote.visible = 'visible'\r\n\t\t\tAND issuenote.type IN ('user', 'petition')\r\n\t");
    $notifications = $db->query_read_slave("\r\n\t\tSELECT user.*\r\n\t\tFROM " . TABLE_PREFIX . "pt_issuesubscribe AS issuesubscribe\r\n\t\tINNER JOIN " . TABLE_PREFIX . "user AS user ON (issuesubscribe.userid = user.userid)\r\n\t\tLEFT JOIN " . TABLE_PREFIX . "usergroup AS usergroup ON (usergroup.usergroupid = user.usergroupid)\r\n\t\tLEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON (usertextfield.userid = user.userid)\r\n\t\tWHERE issuesubscribe.issueid = {$issue['issueid']}\r\n\t\t\tAND issuesubscribe.subscribetype = 'instant'\r\n\t\t\tAND (usergroup.genericoptions & " . $vbulletin->bf_ugp_genericoptions['isnotbannedgroup'] . ")\r\n\t\t\t" . ($issuenote['userid'] ? "AND CONCAT(' ', IF(usertextfield.ignorelist IS NULL, '', usertextfield.ignorelist), ' ') NOT LIKE ' " . intval($issuenote['userid']) . " '" : '') . "\r\n\t\t\tAND user.userid <> {$issuenote['userid']}\r\n\t\t\tAND user.lastactivity >= " . intval($previousnote['dateline']) . "\r\n\t");
    if ($db->num_rows($notifications) == 0) {
        return;
    }
    require_once DIR . '/includes/functions_misc.php';
    require_once DIR . '/includes/class_bbcode_alt.php';
    $plaintext_parser =& new vB_BbCodeParser_PlainText($vbulletin, fetch_tag_list());
    $pagetext_cache = array();
    // used to cache the results per languageid for speed
    $evalemail = array();
    $email_texts = $vbulletin->db->query_read_slave("\r\n\t\tSELECT text, languageid, fieldname\r\n\t\tFROM " . TABLE_PREFIX . "phrase\r\n\t\tWHERE fieldname IN ('emailsubject', 'emailbody') AND varname = 'notify_pt'\r\n\t");
    while ($email_text = $vbulletin->db->fetch_array($email_texts)) {
        $emails["{$email_text['languageid']}"]["{$email_text['fieldname']}"] = $email_text['text'];
    }
    foreach ($emails as $languageid => $email_text) {
        // lets cycle through our array of notify phrases
        $text_message = str_replace("\\'", "'", addslashes(iif(empty($email_text['emailbody']), $emails['-1']['emailbody'], $email_text['emailbody'])));
        $text_message = replace_template_variables($text_message);
        $text_subject = str_replace("\\'", "'", addslashes(iif(empty($email_text['emailsubject']), $emails['-1']['emailsubject'], $email_text['emailsubject'])));
        $text_subject = replace_template_variables($text_subject);
        $evalemail["{$languageid}"] = '
			$message = "' . $text_message . '";
			$subject = "' . $text_subject . '";
		';
    }
    vbmail_start();
    while ($notification = $vbulletin->db->fetch_array($notifications)) {
        // check that this user has the correct permissions to view
        if (verify_issue_perms($issue, $notification) === false or verify_issue_note_perms($issue, $issuenote, $notification) === false) {
            continue;
        }
        $notification['username'] = unhtmlspecialchars($notification['username']);
        $notification['languageid'] = iif($notification['languageid'] == 0, $vbulletin->options['languageid'], $notification['languageid']);
        // parse the page text into plain text, taking selected language into account
        if (!isset($pagetext_cache["{$notification['languageid']}"])) {
            $plaintext_parser->set_parsing_language($notification['languageid']);
            $pagetext_cache["{$notification['languageid']}"] = $plaintext_parser->parse($issuenote['pagetext'], 'pt');
        }
        $pagetext = $pagetext_cache["{$notification['languageid']}"];
        eval(empty($evalemail["{$notification['languageid']}"]) ? $evalemail["-1"] : $evalemail["{$notification['languageid']}"]);
        vbmail($notification['email'], $subject, $message);
    }
    unset($plaintext_parser, $pagetext_cache);
    vbmail_end();
}
Example #2
0
 /**
  * Fetches the moderators affected by this report
  *
  * @return null|array	The moderators affected.
  *
  */
 function fetch_affected_moderators()
 {
     $projectid = $this->extrainfo['issue']['projectid'];
     $issuetypeid = $this->extrainfo['issue']['issuetypeid'];
     if (isset($this->registry->pt_report_users) and !empty($this->registry->pt_report_users[$projectid]) and !empty($this->registry->pt_report_users[$projectid][$issuetypeid])) {
         $users = $this->registry->pt_report_users[$projectid][$issuetypeid];
         if (empty($users)) {
             return;
         }
         $users_check = $this->registry->db->query_read_slave("\r\n\t\t\t\tSELECT userid, usergroupid, membergroupids, infractiongroupids\r\n\t\t\t\tFROM " . TABLE_PREFIX . "user AS user\r\n\t\t\t\tWHERE userid IN (" . implode(',', array_keys($users)) . ")\r\n\t\t\t");
         while ($user_check = $this->registry->db->fetch_array($users_check)) {
             // check that the user can actually see the state in order to do something with it.
             if (!verify_issue_note_perms($this->extrainfo['issue'], $this->extrainfo['issue_note'], $user_check)) {
                 unset($users[$user_check['userid']]);
             }
         }
         if (!empty($users)) {
             return $this->registry->db->query_read_slave("\r\n\t\t\t\t\tSELECT DISTINCT user.email, user.languageid, user.userid, user.username\r\n\t\t\t\t\tFROM " . TABLE_PREFIX . "user AS user\r\n\t\t\t\t\tWHERE userid IN (" . implode(',', array_keys($users)) . ")\r\n\t\t\t\t");
         }
     }
 }
Example #3
0
     eval(standard_error(fetch_error('emaildisabled')));
 }
 $userinfo = fetch_userinfo($issuenote['userid']);
 $reportobj =& new vB_ReportItem_Pt_IssueNote($vbulletin);
 $reportobj->set_extrainfo('user', $userinfo);
 $reportobj->set_extrainfo('issue', $issue);
 $reportobj->set_extrainfo('issue_note', $issuenote);
 $reportobj->set_extrainfo('project', $project);
 $perform_floodcheck = $reportobj->need_floodcheck();
 if ($perform_floodcheck) {
     $reportobj->perform_floodcheck_precommit();
 }
 if (!$issuenote or $issuenote['type'] != 'user' and $issuenote['type'] != 'petition') {
     eval(standard_error(fetch_error('invalidid', $vbphrase['message'], $vbulletin->options['contactuslink'])));
 }
 if (!verify_issue_note_perms($issue, $issuenote, $vbulletin->userinfo)) {
     eval(standard_error(fetch_error('invalidid', $vbphrase['issue_note'], $vbulletin->options['contactuslink'])));
 }
 ($hook = vBulletinHook::fetch_hook('project_report_start')) ? eval($hook) : false;
 if ($_REQUEST['do'] == 'report') {
     $navbits = array('project.php' . $vbulletin->session->vars['sessionurl_q'] => $vbphrase['projects'], "project.php?" . $vbulletin->session->vars['sessionurl'] . "projectid={$project['projectid']}" => $project['title_clean'], 'project.php?' . $vbulletin->session->vars['sessionurl'] . "issueid={$issue['issueid']}" => $issue['title'], '' => $vbphrase['report_issue_note']);
     $navbits = construct_navbits($navbits);
     require_once DIR . '/includes/functions_editor.php';
     $textareacols = fetch_textarea_width();
     eval('$usernamecode = "' . fetch_template('newpost_usernamecode') . '";');
     eval('$navbar = "' . fetch_template('navbar') . '";');
     $url =& $vbulletin->url;
     ($hook = vBulletinHook::fetch_hook('project_report_form_start')) ? eval($hook) : false;
     $forminfo = $reportobj->set_forminfo($issuenote);
     eval('print_output("' . fetch_template('reportitem') . '");');
 }