Esempio n. 1
0
 public static function quoteVerse(array $tag, array $rendererStates, XenForo_BbCode_Formatter_Base $formatter)
 {
     $option = explode(',', $tag['option']);
     $xenOptions = XenForo_Application::get('options');
     $verse = '';
     $version = null;
     if (count($option) > 1) {
         $verse = $option[0];
         $version = strtoupper($option[1]);
     } elseif ($option[0]) {
         if (preg_match('#^[A-z]+$#', $tag['option'])) {
             $verse = '';
             $version = strtoupper($tag['option']);
         } else {
             $verse = $tag['option'];
             $version = strtoupper($xenOptions->th_bible_defaultBible);
         }
     }
     if (!$verse && count($tag['children']) == 1 && is_string($tag['children'][0])) {
         $bibleId = $version ? strtolower($version) : null;
         /* @var $verseModel ThemeHouse_Bible_Model_Verse */
         $verseModel = XenForo_Model::create('ThemeHouse_Bible_Model_Verse');
         $verseText = $verseModel->getVerseFromText($tag['children'][0], $bibleId, true);
         if ($verseText) {
             $verse = $tag['children'][0];
             $version = strtoupper($bibleId);
             $tag['children'] = $verseText;
         }
     }
     $link = '';
     $params = array('bible_id' => strtolower($version));
     if (in_array(strtolower($version), $xenOptions->th_bible_bbCodeBibles)) {
         if (preg_match('#^(.*)\\s+([0-9\\-:]+)$#', $verse, $matches)) {
             $urlPortion = strtolower(XenForo_Link::getTitleForUrl($matches[1], true));
             $link = XenForo_Link::buildPublicLink('bible/' . $urlPortion . '/' . $matches[2] . '/', null, $params);
             /* @var $bibleModel ThemeHouse_Bible_Model_Bible */
             $bibleModel = XenForo_Model::create('ThemeHouse_Bible_Model_Bible');
             $titlePhraseName = $bibleModel->getBibleTitlePhraseName(strtolower($version));
             $bibleTitle = new XenForo_Phrase($titlePhraseName);
             $bibleTitle->setPhraseNameOnInvalid(false);
             if ((string) $bibleTitle) {
                 $version = $bibleTitle;
             }
         } else {
             $urlPortion = strtolower(XenForo_Link::getTitleForUrl($verse, true));
             $link = XenForo_Link::buildPublicLink('bible/' . $urlPortion . '/', null, $params);
         }
     } else {
         $link = '';
     }
     $content = $formatter->renderSubTree($tag['children'], $rendererStates);
     $view = $formatter->getView();
     if ($view) {
         $template = $view->createTemplateObject('th_bb_code_verse_bible', array('content' => $content, 'verse' => $verse, 'version' => $version, 'link' => $link));
         $content = $template->render();
         return trim($content);
     }
     return $content;
 }
Esempio n. 2
0
 /**
  * Gets the HTML value of the resource field.
  *
  * @param array $field
  * @param mixed $value Value of the field; if null, pulls from field_value
  *        in field
  */
 public static function getResourceFieldValueHtml(XenForo_View $view, array $field, $value = null)
 {
     if ($value === null && isset($field['field_value'])) {
         $value = $field['field_value'];
     }
     if ($value === '' || $value === null) {
         return '';
     }
     $multiChoice = false;
     $choice = '';
     switch ($field['field_type']) {
         case 'radio':
         case 'select':
             $choice = $value;
             $value = new XenForo_Phrase("resource_field_{$field['field_id']}_choice_{$value}");
             $value->setPhraseNameOnInvalid(false);
             break;
         case 'checkbox':
         case 'multiselect':
             $multiChoice = true;
             if (!is_array($value) || count($value) == 0) {
                 return '';
             }
             $newValues = array();
             foreach ($value as $id => $choice) {
                 $phrase = new XenForo_Phrase("resource_field_{$field['field_id']}_choice_{$choice}");
                 $phrase->setPhraseNameOnInvalid(false);
                 $newValues[$choice] = $phrase;
             }
             $value = $newValues;
             break;
         case 'textbox':
         case 'textarea':
         default:
             $value = nl2br(htmlspecialchars(XenForo_Helper_String::censorString($value)));
     }
     if (!empty($field['display_callback_class']) && !empty($field['display_callback_method'])) {
         $value = call_user_func_array(array($field['display_callback_class'], $field['display_callback_method']), array($view, $field, $value));
     } elseif (!empty($field['display_template'])) {
         if ($multiChoice && is_array($value)) {
             foreach ($value as $choice => &$thisValue) {
                 $thisValue = strtr($field['display_template'], array('{$fieldId}' => $field['field_id'], '{$value}' => $thisValue, '{$valueUrl}' => urlencode($thisValue), '{$choice}' => $choice));
             }
         } else {
             $value = strtr($field['display_template'], array('{$fieldId}' => $field['field_id'], '{$value}' => $value, '{$valueUrl}' => urlencode($value), '{$choice}' => $choice));
         }
     }
     return $value;
 }
Esempio n. 3
0
 /**
  * Gets the HTML value of the resource field.
  *
  * @param array $resource
  * @param array|string $field If string, field ID
  * @param mixed $value Value of the field; if null, pulls from field_value in field
  *
  * @return string
  */
 public static function getResourceFieldValueHtml(array $resource, $field, $value = null)
 {
     if (!is_array($field)) {
         $fields = XenForo_Model::create('XenResource_Model_ResourceField')->getResourceFieldCache();
         if (!isset($fields[$field])) {
             return '';
         }
         $field = $fields[$field];
     }
     if (!XenForo_Application::isRegistered('view')) {
         return 'No view registered';
     }
     if ($value === null && isset($field['field_value'])) {
         $value = $field['field_value'];
     }
     if ($value === '' || $value === null) {
         return '';
     }
     $multiChoice = false;
     $choice = '';
     $view = XenForo_Application::get('view');
     switch ($field['field_type']) {
         case 'radio':
         case 'select':
             $choice = $value;
             $value = new XenForo_Phrase("resource_field_{$field['field_id']}_choice_{$value}");
             $value->setPhraseNameOnInvalid(false);
             $valueRaw = $value;
             break;
         case 'checkbox':
         case 'multiselect':
             $multiChoice = true;
             if (!is_array($value) || count($value) == 0) {
                 return '';
             }
             $newValues = array();
             foreach ($value as $id => $choice) {
                 $phrase = new XenForo_Phrase("resource_field_{$field['field_id']}_choice_{$choice}");
                 $phrase->setPhraseNameOnInvalid(false);
                 $newValues[$choice] = $phrase;
             }
             $value = $newValues;
             $valueRaw = $value;
             break;
         case 'bbcode':
             $valueRaw = htmlspecialchars(XenForo_Helper_String::censorString($value));
             $bbCodeParser = new XenForo_BbCode_Parser(XenForo_BbCode_Formatter_Base::create('Base', array('view' => $view)));
             $value = $bbCodeParser->render($value, array('noFollowDefault' => empty($resource['isTrusted'])));
             break;
         case 'textbox':
         case 'textarea':
         default:
             $valueRaw = htmlspecialchars(XenForo_Helper_String::censorString($value));
             $value = XenForo_Template_Helper_Core::callHelper('bodytext', array($value));
     }
     if (!empty($field['display_template'])) {
         if ($multiChoice && is_array($value)) {
             foreach ($value as $choice => &$thisValue) {
                 $thisValue = strtr($field['display_template'], array('{$fieldId}' => $field['field_id'], '{$value}' => $thisValue, '{$valueRaw}' => $thisValue, '{$valueUrl}' => urlencode($thisValue), '{$choice}' => $choice));
             }
         } else {
             $value = strtr($field['display_template'], array('{$fieldId}' => $field['field_id'], '{$value}' => $value, '{$valueRaw}' => $valueRaw, '{$valueUrl}' => urlencode($value), '{$choice}' => $choice));
         }
     }
     if (is_array($value)) {
         if (empty($value)) {
             return '';
         }
         return '<ul class="plainList"><li>' . implode('</li><li>', $value) . '</li></ul>';
     }
     return $value;
 }
Esempio n. 4
0
 /**
  * Gets the HTML value of the media field.
  *
  * @param array|string $field If string, field ID
  * @param mixed $value Value of the field; if null, pulls from field_value in field
  * @param XenForo_BbCode_Parser $parser
  *
  * @return string
  */
 public static function getMediaFieldValueHtml($field, $value = null, $parser = null)
 {
     if (!is_array($field)) {
         $fields = self::_getModelFromCache('XenGallery_Model_Field')->getGalleryFieldCache();
         if (!isset($fields[$field])) {
             return '';
         }
         $field = $fields[$field];
     }
     if ($value === null && isset($field['field_value'])) {
         $value = $field['field_value'];
     }
     if ($value === '' || $value === null) {
         return '';
     }
     $multiChoice = false;
     $choice = '';
     switch ($field['field_type']) {
         case 'radio':
         case 'select':
             $choice = $value;
             $value = new XenForo_Phrase("xengallery_field_{$field['field_id']}_choice_{$value}");
             $value->setPhraseNameOnInvalid(false);
             break;
         case 'checkbox':
         case 'multiselect':
             $multiChoice = true;
             if (!is_array($value) || count($value) == 0) {
                 return '';
             }
             $newValues = array();
             foreach ($value as $id => $choice) {
                 $phrase = new XenForo_Phrase("xengallery_field_{$field['field_id']}_choice_{$choice}");
                 $phrase->setPhraseNameOnInvalid(false);
                 $newValues[$choice] = $phrase;
             }
             $value = $newValues;
             break;
         case 'bbcode':
             if (!$parser instanceof XenForo_BbCode_Parser) {
                 trigger_error('BB code parser not specified correctly.', E_USER_WARNING);
                 break;
             }
             $value = $parser->render($value, array());
             break;
         case 'textbox':
         case 'textarea':
         default:
             $value = XenForo_Template_Helper_Core::callHelper('bodytext', array($value));
     }
     if (!empty($field['display_template'])) {
         if ($multiChoice && is_array($value)) {
             foreach ($value as $choice => &$thisValue) {
                 $thisValue = strtr($field['display_template'], array('{$fieldId}' => $field['field_id'], '{$value}' => $thisValue, '{$valueUrl}' => urlencode($thisValue), '{$choice}' => $choice));
             }
         } else {
             $value = strtr($field['display_template'], array('{$fieldId}' => $field['field_id'], '{$value}' => $value, '{$valueUrl}' => urlencode($value), '{$choice}' => $choice));
         }
     }
     if (is_array($value)) {
         if (empty($value)) {
             return '';
         }
         return '<ul class="plainList"><li>' . implode('</li><li>', $value) . '</li></ul>';
     }
     return $value;
 }