/** * Function to format the actual message (applies BBcode, etc) * * @param string Raw text * @param array PM data * @return string Processed text */ private function _formatMessageForDisplay($msgContent, $data = array()) { IPSText::resetTextClass('bbcode'); $this->settings['max_emos'] = 0; IPSText::getTextClass('bbcode')->parse_smilies = 1; IPSText::getTextClass('bbcode')->parse_nl2br = 1; IPSText::getTextClass('bbcode')->parse_html = 0; IPSText::getTextClass('bbcode')->parse_bbcode = 1; IPSText::getTextClass('bbcode')->parsing_section = 'pms'; IPSText::getTextClass('bbcode')->parsing_mgroup = $data['member_group_id']; IPSText::getTextClass('bbcode')->parsing_mgroup_others = $data['mgroup_others']; $msgContent = IPSText::getTextClass('bbcode')->preDisplayParse($msgContent); return $msgContent; }
/** * Class entry point * * @access public * @param object Registry reference * @return void [Outputs to screen/redirects] */ public function doExecute(ipsRegistry $registry) { //----------------------------------------- // Check viewing permissions, etc //----------------------------------------- if (!$this->memberData['g_use_pm']) { $this->registry->getClass('output')->showError('messenger_disabled', 10222); } if ($this->memberData['members_disable_pm']) { $this->registry->getClass('output')->showError('messenger_disabled', 10223); } if (!$this->memberData['member_id']) { $this->registry->getClass('output')->showError('messenger_no_guests', 10224); } if (!IPSLib::moduleIsEnabled('messaging', 'members')) { $this->registry->getClass('output')->showError('messenger_disabled', 10227); } //----------------------------------------- // Reset Classes //----------------------------------------- IPSText::resetTextClass('bbcode'); IPSText::resetTextClass('editor'); //----------------------------------------- // Load lang file //----------------------------------------- $this->registry->getClass('class_localization')->loadLanguageFile(array("public_error", "public_editors"), 'core'); //----------------------------------------- // Post Key //----------------------------------------- $this->_postKey = ($this->request['postKey'] and $this->request['postKey'] != '') ? $this->request['postKey'] : md5(microtime()); //----------------------------------------- // Can we upload? //----------------------------------------- if ($this->memberData['g_attach_max'] != -1 and $this->memberData['g_can_msg_attach']) { $this->_canUpload = 1; } $this->lang->words['the_max_length'] = $this->settings['max_post_length'] * 1024; //----------------------------------------- // Language //----------------------------------------- /* Load post lang file for attachments stuff */ $this->registry->class_localization->loadLanguageFile(array('public_post'), 'forums'); $this->registry->class_localization->loadLanguageFile(array('public_messaging'), 'members'); //----------------------------------------- // Grab class //----------------------------------------- require_once IPSLib::getAppDir('members') . '/sources/classes/messaging/messengerFunctions.php'; $this->messengerFunctions = new messengerFunctions($registry); /* Messenger Totals */ $totals = $this->messengerFunctions->buildMessageTotals(); //----------------------------------------- // Did we preview new topic? //----------------------------------------- if ($this->request['preview']) { $this->request['do'] = 'form'; } //----------------------------------------- // Or a reply? //----------------------------------------- if ($this->request['previewReply']) { if ($this->request['do'] == 'sendEdit') { $this->request['do'] = 'editMessage'; } else { $this->request['do'] = 'replyForm'; } } //----------------------------------------- // What to do? //----------------------------------------- switch ($this->request['do']) { default: case 'form': $html = $this->_showNewTopicForm(); break; case 'replyForm': $html = $this->_showForm('reply'); break; case 'send': $html = $this->_sendNewPersonalTopic(); break; case 'sendReply': $html = $this->_sendReply(); break; case 'editMessage': $html = $this->_showForm('edit'); break; case 'sendEdit': $html = $this->_sendEdit(); break; case 'deleteReply': $html = $this->_deleteReply(); break; } //----------------------------------------- // If we have any HTML to print, do so... //----------------------------------------- $this->registry->output->addContent($this->registry->getClass('output')->getTemplate('messaging')->messengerTemplate($html, $this->messengerFunctions->_jumpMenu, $this->messengerFunctions->_dirData, $totals, array(), $this->_errorString)); $this->registry->output->setTitle($this->_title); $this->registry->output->addNavigation($this->lang->words['messenger__nav'], 'app=members&module=messaging'); if (is_array($this->_navigation) and count($this->_navigation)) { foreach ($this->_navigation as $idx => $data) { $this->registry->output->addNavigation($data[0], $data[1]); } } $this->registry->output->sendOutput(); }
/** * Function to format the actual message (applies BBcode, etc) * * @access private * @param string Raw text * @param array PM data * @return string Processed text */ private function _formatMessageForDisplay($msgContent, $data = array()) { //----------------------------------------- // Reset Classes //----------------------------------------- IPSText::resetTextClass('bbcode'); //----------------------------------------- // Post process the editor // Now we have safe HTML and bbcode //----------------------------------------- $this->settings['max_emos'] = 0; IPSText::getTextClass('bbcode')->parse_smilies = 1; IPSText::getTextClass('bbcode')->parse_nl2br = 1; IPSText::getTextClass('bbcode')->parse_html = $this->settings['msg_allow_html']; IPSText::getTextClass('bbcode')->parse_bbcode = $this->settings['msg_allow_code']; IPSText::getTextClass('bbcode')->parsing_section = 'pms'; IPSText::getTextClass('bbcode')->parsing_mgroup = $data['member_group_id']; IPSText::getTextClass('bbcode')->parsing_mgroup_others = $data['mgroup_others']; $msgContent = IPSText::getTextClass('bbcode')->preDisplayParse($msgContent); if (IPSText::getTextClass('bbcode')->error != "") { //throw new Exception( "BBCODE_" . IPSText::getTextClass('bbcode')->error ); } return $msgContent; }
/** * Returns PM notification * * @return string JSON either error or status * @since IPB 3.0.0.2008-06-25 */ protected function _getPMNotification() { //----------------------------------------- // INIT //----------------------------------------- $limit = intval($this->request['limit']); //----------------------------------------- // INIT the parser //----------------------------------------- IPSText::resetTextClass('bbcode'); IPSText::getTextClass('bbcode')->allow_update_caches = 0; IPSText::getTextClass('bbcode')->parse_bbcode = 1; IPSText::getTextClass('bbcode')->parse_smilies = 1; IPSText::getTextClass('bbcode')->parse_html = 0; IPSText::getTextClass('bbcode')->parsing_section = 'pms'; //----------------------------------------- // Get last PM details //----------------------------------------- $msg = $this->DB->buildAndFetch(array('select' => 'mt.*', 'from' => array('message_topics' => 'mt'), 'where' => "mt.mt_owner_id=" . $this->memberData['member_id'] . " AND mt.mt_vid_folder='in'", 'order' => 'mt.mt_date DESC', 'limit' => array(intval($limit), 1), 'add_join' => array(array('select' => 'msg.*', 'from' => array('message_text' => 'msg'), 'where' => 'msg.msg_id=mt.mt_msg_id', 'type' => 'left'), array('select' => 'm.member_id,m.name,m.member_group_id,m.mgroup_others,m.email,m.joined,m.posts, m.last_visit, m.last_activity, m.warn_level, m.warn_lastwarn, m.members_display_name', 'from' => array('members' => 'm'), 'where' => 'm.member_id=mt.mt_from_id', 'type' => 'left'), array('select' => 'pp.*', 'from' => array('profile_portal' => 'pp'), 'where' => 'pp.pp_member_id=mt.mt_from_id', 'type' => 'left'), array('select' => 'g.g_id, g.g_title, g.g_icon, g.g_dohtml', 'from' => array('groups' => 'g'), 'where' => 'g.g_id=m.member_group_id', 'type' => 'left')))); //----------------------------------------- // Check... //----------------------------------------- if (!$msg['msg_id'] and !$msg['mt_id'] and !$msg['id']) { $this->returnJsonError('noMsg'); } //----------------------------------------- // Strip and wrap //----------------------------------------- IPSText::getTextClass('bbcode')->parsing_mgroup = $msg['member_group_id']; IPSText::getTextClass('bbcode')->parsing_mgroup_others = $msg['mgroup_others']; $msg['msg_post'] = IPSText::getTextClass('bbcode')->stripAllTags(strip_tags(str_replace('<br />', "\n", $msg['msg_post']))); $msg['msg_post'] = wordwrap($msg['msg_post'], 50, "\n"); if (IPSText::mbstrlen($msg['msg_post']) > 300) { $msg['msg_post'] = IPSText::truncate($msg['msg_post'], 350); } $msg['msg_post'] = nl2br($msg['msg_post']); //----------------------------------------- // Add attach icon //----------------------------------------- if ($msg['mt_hasattach']) { $msg['attach_img'] = '<{ATTACH_ICON}> '; } //----------------------------------------- // Date //----------------------------------------- $msg['msg_date'] = $this->registry->getClass('class_localization')->getDate($msg['msg_date'], 'TINY'); //----------------------------------------- // Next / Total links //----------------------------------------- $msg['_cur_num'] = intval($limit) + 1; $msg['_msg_count_total'] = intval($this->memberData['msg_count_new']) ? intval($this->memberData['msg_count_new']) : 1; //----------------------------------------- // Return loverly HTML //----------------------------------------- return $this->returnHtml($this->registry->getClass('output')->getTemplate('messaging')->PMNotificationBox($msg)); }
/** * Show BBCode Helpy file * * @return @e void */ public function bbcodePopUpList() { /* Load the Parser */ IPSText::resetTextClass('bbcode'); IPSText::getTextClass('bbcode')->parse_smilies = 1; IPSText::getTextClass('bbcode')->parse_html = 0; IPSText::getTextClass('bbcode')->parse_bbcode = 1; IPSText::getTextClass('bbcode')->parsing_section = 'global'; /* Loop through the bbcode and build the output array */ $rows = array(); /* Add in custom bbcode */ if (count($this->caches['bbcode'])) { foreach ($this->caches['bbcode'] as $row) { if ($row['bbcode_groups'] != 'all') { $pass = false; $groups = array_diff(explode(',', $row['bbcode_groups']), array('')); $mygroups = array($this->memberData['member_group_id']); $mygroups = array_diff(array_merge($mygroups, explode(',', IPSText::cleanPermString($this->memberData['mgroup_others']))), array('')); foreach ($groups as $g_id) { if (in_array($g_id, $mygroups)) { $pass = true; break; } } if (!$pass) { continue; } } if ($row['bbcode_tag'] == 'member') { $row['bbcode_example'] = str_replace('[member=admin]', '[member=' . $this->memberData['members_display_name'] . ']', $row['bbcode_example']); } $before = htmlspecialchars($row['bbcode_example']); $classToLoad = IPSLib::loadLibrary(IPS_ROOT_PATH . 'sources/classes/text/parser.php', 'classes_text_parser'); $parser = new $classToLoad(); /* Set up some settings */ $parser->set(array('memberData' => $this->memberData, 'parseBBCode' => true, 'parseHtml' => false, 'parseEmoticons' => true)); /* img is hardcoded as the new style format was never available in the php bbcode parser and is handled via js library now */ $t = $row['bbcode_tag'] == 'img' ? "<img src='http://www.google.com/intl/en_ALL/images/logo.gif' />" : ($t = $parser->display($before)); $before = preg_replace("#(\\[" . $row['bbcode_tag'] . "(?:[^\\]]+)?\\])#is", $this->registry->output->getTemplate('legends')->wrap_tag("\\1"), $before); $before = preg_replace("#(\\[/" . $row['bbcode_tag'] . "\\])#is", $this->registry->output->getTemplate('legends')->wrap_tag("\\1"), $before); $rows[] = array('title' => $row['bbcode_title'], 'desc' => $row['bbcode_desc'], 'before' => nl2br($before), 'after' => $t); } } /* Output */ $this->page_title = $this->lang->words['bbc_title']; $this->output .= $this->registry->getClass('output')->getTemplate('legends')->bbcodePopUpList($rows); }
/** * Show BBCode Helpy file * * @access public * @return void **/ public function bbcodePopUpList() { /* Load the Parser */ IPSText::resetTextClass('bbcode'); IPSText::getTextClass('bbcode')->parse_smilies = 1; IPSText::getTextClass('bbcode')->parse_html = 0; IPSText::getTextClass('bbcode')->parse_bbcode = 1; IPSText::getTextClass('bbcode')->parsing_section = 'global'; /* Loop through the bbcode and build the output array */ $rows = array(); /* Add in custom bbcode */ if (count($this->caches['bbcode'])) { foreach ($this->caches['bbcode'] as $row) { if ($row['bbcode_groups'] != 'all') { $pass = false; $groups = array_diff(explode(',', $row['bbcode_groups']), array('')); $mygroups = array($this->memberData['member_group_id']); $mygroups = array_diff(array_merge($mygroups, explode(',', IPSText::cleanPermString($this->memberData['mgroup_others']))), array('')); foreach ($groups as $g_id) { if (in_array($g_id, $mygroups)) { $pass = true; break; } } if (!$pass) { continue; } } if ($row['bbcode_tag'] == 'member') { $row['bbcode_example'] = str_replace('[member=admin]', '[member=' . $this->memberData['members_display_name'] . ']', $row['bbcode_example']); } $before = htmlspecialchars($row['bbcode_example']); $t = IPSText::getTextClass('bbcode')->preDisplayParse(IPSText::getTextClass('bbcode')->preDbParse($before)); $before = preg_replace("#(\\[" . $row['bbcode_tag'] . "(?:[^\\]]+)?\\])#is", $this->registry->output->getTemplate('legends')->wrap_tag("\\1"), $before); $before = preg_replace("#(\\[/" . $row['bbcode_tag'] . "\\])#is", $this->registry->output->getTemplate('legends')->wrap_tag("\\1"), $before); $rows[] = array('title' => $row['bbcode_title'], 'desc' => $row['bbcode_desc'], 'before' => nl2br($before), 'after' => $t); } } /* Output */ $this->page_title = $this->lang->words['bbc_title']; $this->output .= $this->registry->getClass('output')->getTemplate('legends')->bbcodePopUpList($rows); }