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