/**
  * Fetch bbcode as JSON for editors, etc
  *
  * @access	public
  * @return	string		JSON
  */
 public static function fetchBbcodeAsJson()
 {
     $bbcodes = array();
     $protectedBbcodes = array('right', 'left', 'center', 'b', 'i', 'u', 'url', 'img', 'quote', 'indent', 'list', 'strike', 'sub', 'sup', 'email', 'background', 'color', 'size', 'font', 'media');
     foreach (ipsRegistry::cache()->getCache('bbcode') as $bbcode) {
         if (in_array($bbcode['bbcode_tag'], $protectedBbcodes)) {
             continue;
         }
         if ($bbcode['bbcode_groups'] != 'all') {
             $pass = false;
             $groups = array_diff(explode(',', $bbcode['bbcode_groups']), array(''));
             $mygroups = array(ipsRegistry::member()->getProperty('member_group_id'));
             $mygroups = array_diff(array_merge($mygroups, explode(',', IPSText::cleanPermString(ipsRegistry::member()->getProperty('mgroup_others')))), array(''));
             foreach ($groups as $g_id) {
                 if (in_array($g_id, $mygroups)) {
                     $pass = true;
                     break;
                 }
             }
             if (!$pass) {
                 continue;
             }
         }
         $bbcodes[$bbcode['bbcode_tag']] = array('id' => $bbcode['bbcode_id'], 'title' => $bbcode['bbcode_title'], 'desc' => $bbcode['bbcode_desc'], 'tag' => $bbcode['bbcode_tag'], 'useoption' => $bbcode['bbcode_useoption'], 'example' => $bbcode['bbcode_example'], 'switch_option' => $bbcode['bbcode_switch_option'], 'menu_option_text' => $bbcode['bbcode_menu_option_text'], 'menu_content_text' => $bbcode['bbcode_menu_content_text'], 'single_tag' => $bbcode['bbcode_single_tag'], 'optional_option' => $bbcode['bbcode_optional_option'], 'image' => $bbcode['bbcode_image']);
     }
     return IPSText::simpleJsonEncode($bbcodes);
 }
 /**
  * Generates the poll box
  *
  * @param	string	Form type (new/edit/reply)
  * @return	string	HTML
  * @author	MattMecham
  * @access	protected
  */
 protected function _generatePollBox($formType)
 {
     if ($this->can_add_poll) {
         //-----------------------------------------
         // Did someone hit preview / do we have
         // post info?
         //-----------------------------------------
         $poll_questions = array();
         $poll_question = "";
         $poll_view_voters = 0;
         $poll_choices = array();
         $show_open = 0;
         $is_mod = 0;
         $poll_votes = array();
         $poll_only = array();
         $poll_multi = array();
         if (isset($_POST['question']) and is_array($_POST['question']) and count($_POST['question'])) {
             foreach ($_POST['question'] as $id => $question) {
                 $poll_questions[$id] = $question;
             }
             $poll_question = ipsRegistry::$request['poll_question'];
             $show_open = 1;
         }
         if (isset($_POST['multi']) and is_array($_POST['multi']) and count($_POST['multi'])) {
             foreach ($_POST['multi'] as $id => $checked) {
                 $poll_multi[$id] = $checked;
             }
         }
         if (isset($_POST['choice']) and is_array($_POST['choice']) and count($_POST['choice'])) {
             foreach ($_POST['choice'] as $id => $choice) {
                 $poll_choices[$id] = $choice;
             }
         }
         if ($formType == 'edit') {
             if (isset($_POST['votes']) && is_array($_POST['votes']) and count($_POST['votes'])) {
                 foreach ($_POST['votes'] as $id => $vote) {
                     $poll_votes[$id] = $vote;
                 }
             }
         }
         $poll_only = 0;
         if ($this->settings['ipb_poll_only'] and ipsRegistry::$request['poll_only'] and ipsRegistry::$request['poll_only'] == 1) {
             $poll_only = 1;
         }
         if ($formType == 'edit' and (!isset($_POST['question']) or !is_array($_POST['question']) or !count($_POST['question']))) {
             //-----------------------------------------
             // Load the poll from the DB
             //-----------------------------------------
             $this->poll_data = $this->DB->buildAndFetch(array('select' => '*', 'from' => 'polls', 'where' => "tid=" . $this->getTopicID()));
             $this->poll_answers = $this->poll_data['choices'] ? unserialize(stripslashes($this->poll_data['choices'])) : array();
             //-----------------------------------------
             // Lezz go
             //-----------------------------------------
             foreach ($this->poll_answers as $question_id => $data) {
                 if (!$data['question'] or !is_array($data['choice'])) {
                     continue;
                 }
                 $poll_questions[$question_id] = $data['question'];
                 $poll_multi[$question_id] = isset($data['multi']) ? intval($data['multi']) : 0;
                 foreach ($data['choice'] as $choice_id => $text) {
                     $poll_choices[$question_id . '_' . $choice_id] = $text;
                     $poll_votes[$question_id . '_' . $choice_id] = intval($data['votes'][$choice_id]);
                 }
             }
             $poll_only = 0;
             if ($this->settings['ipb_poll_only'] and $this->poll_data['poll_only'] == 1) {
                 $poll_only = "checked='checked'";
             }
             $poll_view_voters = $this->poll_data['poll_view_voters'];
             $poll_question = $this->poll_data['poll_question'];
             $show_open = $this->poll_data['choices'] ? 1 : 0;
             $is_mod = $this->can_add_poll_mod;
         } else {
             $poll_view_voters = $this->request['poll_view_voters'];
         }
         return $this->registry->getClass('output')->getTemplate('post')->pollBox($this->max_poll_questions, $this->max_poll_choices_per_question, IPSText::simpleJsonEncode($poll_questions), IPSText::simpleJsonEncode($poll_choices), IPSText::simpleJsonEncode($poll_votes), $show_open, $poll_question, $is_mod, json_encode($poll_multi), $poll_only, $poll_view_voters, intval($this->poll_data['votes']));
     }
     return '';
 }
Beispiel #3
0
 /**
  * Fetch bbcode as JSON for editors, etc
  *
  * @return	string		JSON
  */
 public static function fetchBbcodeAsJson($filter = array())
 {
     $bbcodes = array();
     $currentBbcodes = ipsRegistry::cache()->getCache('bbcode');
     if ($filter['noParseOnly'] == 1) {
         /* Find no parse codes */
         $noParse = array();
         foreach ($currentBbcodes as $bbcode) {
             /* Allowed this BBCode? */
             if ($bbcode['bbcode_no_parsing']) {
                 /* CODE is a special case */
                 if ($bbcode['bbcode_tag'] != 'code') {
                     $noParse[] = $bbcode['bbcode_tag'];
                 }
             }
         }
         return json_encode($noParse);
     }
     /* Normal method */
     $protectedBbcodes = array('right', 'left', 'center', 'b', 'i', 'u', 'url', 'img', 'quote', 'indent', 'snapback', 'list', 'strike', 'sub', 'sup', 'email', 'color', 'size', 'font');
     /* Remove protected bbcodes */
     foreach ($protectedBbcodes as $_key) {
         unset($currentBbcodes[$_key]);
     }
     /* Get all others */
     foreach ($currentBbcodes as $bbcode) {
         if ($bbcode['bbcode_groups'] != 'all') {
             $pass = false;
             $groups = array_diff(explode(',', $bbcode['bbcode_groups']), array(''));
             $mygroups = array(ipsRegistry::member()->getProperty('member_group_id'));
             $mygroups = array_diff(array_merge($mygroups, explode(',', IPSText::cleanPermString(ipsRegistry::member()->getProperty('mgroup_others')))), array(''));
             foreach ($groups as $g_id) {
                 if (in_array($g_id, $mygroups)) {
                     $pass = true;
                     break;
                 }
             }
             if (!$pass) {
                 continue;
             }
         }
         if (!empty($filter['skip']) && is_array($filter['skip'])) {
             if (in_array($bbcode['bbcode_tag'], $filter['skip'])) {
                 continue;
             }
         }
         $bbcodes[$bbcode['bbcode_tag']] = array('id' => $bbcode['bbcode_id'], 'title' => $bbcode['bbcode_title'], 'desc' => $bbcode['bbcode_desc'], 'tag' => $bbcode['bbcode_tag'], 'useoption' => $bbcode['bbcode_useoption'], 'example' => $bbcode['bbcode_example'], 'switch_option' => $bbcode['bbcode_switch_option'], 'menu_option_text' => $bbcode['bbcode_menu_option_text'], 'menu_content_text' => $bbcode['bbcode_menu_content_text'], 'single_tag' => $bbcode['bbcode_single_tag'], 'optional_option' => $bbcode['bbcode_optional_option'], 'aliases' => explode(',', $bbcode['bbcode_aliases']), 'image' => $bbcode['bbcode_image']);
     }
     return IPSText::simpleJsonEncode($bbcodes);
 }
 /**
  * Generates the poll box
  *
  * @param	string	Form type (new/edit/reply)
  * @return	string	HTML
  * @author	MattMecham
  */
 protected function _generatePollBox($formType)
 {
     if ($this->can_add_poll) {
         //-----------------------------------------
         // Did someone hit preview / do we have
         // post info?
         //-----------------------------------------
         $poll_questions = array();
         $poll_question = "";
         $poll_view_voters = 0;
         $poll_choices = array();
         $show_open = 0;
         $is_mod = 0;
         $poll_votes = array();
         $poll_only = 0;
         $poll_multi = array();
         if ($this->settings['ipb_poll_only'] and ipsRegistry::$request['poll_only'] and ipsRegistry::$request['poll_only'] == 1) {
             $poll_only = 1;
         }
         if (isset($_POST['question']) and is_array($_POST['question']) and count($_POST['question'])) {
             foreach ($_POST['question'] as $id => $question) {
                 $poll_questions[$id] = IPSText::parseCleanValue($question);
             }
             $poll_question = ipsRegistry::$request['poll_question'];
             $show_open = 1;
         }
         if (isset($_POST['multi']) and is_array($_POST['multi']) and count($_POST['multi'])) {
             foreach ($_POST['multi'] as $id => $checked) {
                 $poll_multi[$id] = $checked;
             }
         }
         if (isset($_POST['choice']) and is_array($_POST['choice']) and count($_POST['choice'])) {
             foreach ($_POST['choice'] as $id => $choice) {
                 $poll_choices[$id] = IPSText::parseCleanValue($choice);
             }
         }
         if ($formType == 'edit') {
             if (isset($_POST['votes']) && is_array($_POST['votes']) and count($_POST['votes'])) {
                 foreach ($_POST['votes'] as $id => $vote) {
                     $poll_votes[$id] = $vote;
                 }
             }
         }
         if ($formType == 'edit' and (!isset($_POST['question']) or !is_array($_POST['question']) or !count($_POST['question']) or $this->getIsPreview())) {
             //-----------------------------------------
             // Load the poll from the DB
             //-----------------------------------------
             $this->poll_data = $this->DB->buildAndFetch(array('select' => '*', 'from' => 'polls', 'where' => "tid=" . $this->getTopicID()));
             $this->poll_answers = IPSLib::safeUnserialize(stripslashes($this->poll_data['choices']));
             if (!is_array($this->poll_answers) or !count($this->poll_answers)) {
                 $this->poll_answers = IPSLib::safeUnserialize(preg_replace('!s:(\\d+):"(.*?)";!se', "'s:'.strlen('\$2').':\"\$2\";'", stripslashes($this->poll_data['choices'])));
             }
             if (!is_array($this->poll_answers) or !count($this->poll_answers)) {
                 $this->poll_answers = array();
             }
             //-----------------------------------------
             // Lezz go
             //-----------------------------------------
             foreach ($this->poll_answers as $question_id => $data) {
                 if (!$data['question'] or !is_array($data['choice'])) {
                     continue;
                 }
                 $poll_questions[$question_id] = $data['question'];
                 $poll_multi[$question_id] = isset($data['multi']) ? intval($data['multi']) : 0;
                 foreach ($data['choice'] as $choice_id => $text) {
                     $poll_choices[$question_id . '_' . $choice_id] = stripslashes($text);
                     $poll_votes[$question_id . '_' . $choice_id] = intval($data['votes'][$choice_id]);
                 }
             }
             $poll_only = 0;
             if ($this->settings['ipb_poll_only'] and $this->poll_data['poll_only'] == 1) {
                 $poll_only = 1;
             }
             $poll_view_voters = $this->poll_data['poll_view_voters'];
             $poll_question = $this->poll_data['poll_question'];
             $show_open = $this->poll_data['choices'] ? 1 : 0;
             $is_mod = $this->can_add_poll_mod;
         } else {
             $poll_view_voters = $this->request['poll_view_voters'];
         }
         return $this->registry->getClass('output')->getTemplate('post')->pollBox(array('max_poll_questions' => $this->max_poll_questions, 'max_poll_choices' => $this->max_poll_choices_per_question, 'poll_questions' => IPSText::simpleJsonEncode($poll_questions), 'poll_choices' => IPSText::simpleJsonEncode($poll_choices), 'poll_votes' => IPSText::simpleJsonEncode($poll_votes), 'show_open' => $show_open, 'poll_question' => $poll_question, 'is_mod' => $is_mod, 'poll_multi' => json_encode($poll_multi), 'poll_only' => $poll_only, 'poll_view_voters' => $poll_view_voters, 'poll_total_votes' => intval($this->poll_data['votes']), 'poll_data' => $this->poll_data, 'poll_answers' => $this->poll_answers));
     }
     return '';
 }