/** * Determines if CAPTCHA is valid (passed). * * @see XenForo_Captcha_Abstract::isValid() */ public function isValid(array $input) { $cleaner = new XenForo_Input($input); $answer = $cleaner->filterSingle('captcha_question_answer', XenForo_Input::STRING); $hash = $cleaner->filterSingle('captcha_question_hash', XenForo_Input::STRING); return XenForo_Model_CaptchaQuestion::isCorrect($answer, $hash); }
/** * Determines if CAPTCHA is valid (passed). * * @see XenForo_Captcha_Abstract::isValid() */ public function isValid(array $input) { $cleaner = new XenForo_Input($input); $answer = $cleaner->filterSingle('captcha_question_answer', XenForo_Input::STRING); $hash = $cleaner->filterSingle('captcha_question_hash', XenForo_Input::STRING); /** @var XenForo_Model_CaptchaQuestion $model */ $model = XenForo_Model::create('XenForo_Model_CaptchaQuestion'); return $model->verifyTextCaptcha($hash, $answer); }
public static function getTypeConstraintsFromInput(XenForo_Input $input, array $fields, $fieldType) { $xenOptions = XenForo_Application::get('options'); $constraints = array(); $fieldValues = $input->filterSingle('custom_fields', XenForo_Input::ARRAY_SIMPLE); if ($fieldValues && $fields) { foreach ($fields as $fieldId => $field) { if (empty($fieldValues[$fieldId])) { continue; } $fieldValue = $fieldValues[$fieldId]; if (in_array($field['field_type'], array('multiselect', 'checkbox'))) { if (is_array($fieldValue)) { $newFieldValue = array(); foreach ($fieldValue as $_fieldValue) { $newFieldValue[$_fieldValue] = $_fieldValue; } $fieldValue = array('=', serialize($newFieldValue)); } else { $fieldValue = array('LIKE', '%' . serialize($fieldValue) . '%'); } } elseif ($xenOptions->waindigo_customFields_partialSearch) { $fieldValue = array('LIKE', '%' . $fieldValue . '%'); } else { $fieldValue = array('=', $fieldValue); } $constraints[$fieldType . '_field_id_' . $fieldId] = $fieldId; $constraints[$fieldType . '_field_value_' . $fieldId] = $fieldValue; } } return $constraints; }
public static function validateNoForum(&$option, XenForo_DataWriter $dw, $fieldName) { $_request = new Zend_Controller_Request_Http(); $_input = new XenForo_Input($_request); $optionsInput = $_input->filterSingle('options', XenForo_Input::ARRAY_SIMPLE); $sandbox = isset($optionsInput['th_noForo_sandbox']); if (!isset($option['no_forum'])) { $option = array(); } if ($sandbox) { return true; } /* @var $noForoModel ThemeHouse_NoForo_Model_NoForo */ $noForoModel = XenForo_Model::create('ThemeHouse_NoForo_Model_NoForo'); if (isset($option['no_forum'])) { if (!isset($option['no_link_forums'])) { $option['no_link_forums'] = $noForoModel->isNoLinkForums(); } } $option = array_filter($option); if ($option) { $noForoModel->removeForum($option); } else { $noForoModel->rebuildForum(); } return true; }
/** * Converts WYSIWYG editor HTML back to BB code * * @param string $messageTextHtml HTML to convert * @param XenForo_Input $input * @param integer $htmlCharacterLimit Max length of HTML before processing; defaults to 4 * message length option * * @return string BB code input */ public function convertEditorHtmlToBbCode($messageTextHtml, XenForo_Input $input, $htmlCharacterLimit = -1) { if ($htmlCharacterLimit < 0) { $htmlCharacterLimit = 4 * XenForo_Application::get('options')->messageMaxLength; // quadruple the limit as HTML can be a lot more verbose } if ($htmlCharacterLimit && utf8_strlen($messageTextHtml) > $htmlCharacterLimit) { throw new XenForo_Exception(new XenForo_Phrase('submitted_message_is_too_long_to_be_processed'), true); } $options = array(); $requestPaths = XenForo_Application::get('requestPaths'); $options['baseUrl'] = $requestPaths['fullBasePath']; $relativeResolver = $input->filterSingle('_xfRelativeResolver', XenForo_Input::STRING); if ($relativeResolver && isset($_SERVER['HTTP_USER_AGENT'])) { if (preg_match('#Firefox/([0-9]+)\\.([0-9]+)\\.([0-9]+)#i', $_SERVER['HTTP_USER_AGENT'], $match)) { // FF versions sometime before 3.6.12 have an issue with respecting the base tag of the editor, // 3.6.8 is a known version that has problems $useResolver = $match[1] <= 3 && $match[2] <= 6 && $match[3] <= 8; } else { $useResolver = false; } if ($useResolver) { // take off query string and then up to the last directory $relativeResolver = preg_replace('/\\?.*$/', '', $relativeResolver); $relativeResolver = preg_replace('#/[^/]+$#', '', $relativeResolver); $options['baseUrl'] = $relativeResolver; } } $rendered = XenForo_Html_Renderer_BbCode::renderFromHtml($messageTextHtml, $options); return trim(XenForo_Input::cleanString($rendered)); }
public function verifyFromInput($context, XenForo_Input $input, array $user, array &$providerData) { $code = $input->filterSingle('code', XenForo_Input::STRING); $code = preg_replace('/[^0-9]/', '', $code); if (!$code) { return false; } $matched = null; foreach ($providerData['codes'] as $i => $expectedCode) { if (XenForo_Application::hashEquals($expectedCode, $code)) { $matched = $i; break; } } if ($matched === null) { return false; } $providerData['used'][] = $providerData['codes'][$matched]; unset($providerData['codes'][$matched]); if (!$providerData['codes']) { // regenerate automatically $regenerated = true; $this->generateInitialData($user, array()); } else { $regenerated = false; } $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''; $mail = XenForo_Mail::create('two_step_login_backup', array('user' => $user, 'ip' => $ip, 'regenerated' => $regenerated), $user['language_id']); $mail->send($user['email'], $user['username']); return true; }
protected function _preSave() { $_input = new XenForo_Input($_REQUEST); $bbm_bm_editor = $_input->filterSingle('bbm_bm_editor', XenForo_Input::STRING); $bbm_bm_editor = empty($bbm_bm_editor) ? 'disable' : $bbm_bm_editor; $this->set('bbm_bm_editor', $bbm_bm_editor); return parent::_preSave(); }
public static function getJokePollInput(XenForo_Input $controllerInput) { $input['poll'] = $controllerInput->filterSingle('poll', XenForo_Input::ARRAY_SIMPLE); $pollInputHandler = new XenForo_Input($input['poll']); if (isset($input['poll']['joke'])) { $jokePollInputHandler = new XenForo_Input($input['poll']['joke']); $jokePollInput = $jokePollInputHandler->filter(array('first_choice' => XenForo_Input::UINT)); } else { $jokePollInput = array(); } return $jokePollInput; }
/** * Turns a serialized (by jQuery) query string from input into a XenForo_Input object. * * @param string Name of index to fetch from $this->_input * @param boolean On error, throw an exception or return false * @param string * * @return XenForo_Input|false */ protected function _getInputFromSerialized($varname, $throw = true, &$errorPhraseKey = null) { if ($inputString = $this->_input->filterSingle($varname, XenForo_Input::STRING)) { try { return new XenForo_Input(XenForo_Application::parseQueryString($inputString)); } catch (Exception $e) { $errorPhraseKey = 'string_could_not_be_converted_to_input'; if ($throw) { throw $this->responseException($this->responseError(new XenForo_Phrase($errorPhraseKey))); } } } return false; }
protected function _preSave() { $options = XenForo_Application::get('options'); if (!$options->sedo_at_preventracing) { return parent::_preSave(); } $_input = new XenForo_Input($_REQUEST); $sedo_agent = $_input->filterSingle('allow_sedo_agent', XenForo_Input::UINT); if ($_input->inRequest('allow_sedo_agent')) { //The wrapped conditionnal prevents the field 'allow_sedo_agent' to be modified outside the page 'user' //Fixes a problem with profile posts $this->set('allow_sedo_agent', $sedo_agent); } return parent::_preSave(); }
public function verifyFromInput($context, XenForo_Input $input, array $user, array &$providerData) { if (empty($providerData['code']) || empty($providerData['codeGenerated'])) { return false; } if (time() - $providerData['codeGenerated'] > 900) { return false; } $code = $input->filterSingle('code', XenForo_Input::STRING); $code = preg_replace('/[^0-9]/', '', $code); if (!XenForo_Application::hashEquals($providerData['code'], $code)) { return false; } unset($providerData['code']); unset($providerData['codeGenerated']); return true; }
protected static function _xenMediaPhotoIndexParams($team) { $categoryModel = self::$controller->getModelFromCache('XenGallery_Model_Category'); $category = $categoryModel->getCategoryById(self::$setup->getOption('XenMediaCategoryId')); $noPermission = false; if (!$category) { $noPermission = true; } else { if (!$categoryModel->canAddMediaToCategory($category)) { $noPermission = true; } } if ($noPermission) { return array('templateName' => 'Team_photo', 'viewName' => '', 'provider' => 'XenGallery', 'noPermission' => true); } $mediaModel = self::$controller->getModelFromCache('XenGallery_Model_Media'); $albumModel = self::$controller->getModelFromCache('XenGallery_Model_Album'); $order = self::$input->filterSingle('order', XenForo_Input::STRING); $type = self::$input->filterSingle('type', XenForo_Input::STRING); $page = self::$input->filterSingle('page', XenForo_Input::UINT); $perPage = XenForo_Application::getOptions()->xengalleryMediaMaxPerPage; $visitor = XenForo_Visitor::getInstance(); $conditions = array('deleted' => $mediaModel->canViewDeletedMedia(), 'type' => $type ? $type : 'all', 'privacyUserId' => $visitor->user_id, 'viewAlbums' => $albumModel->canViewAlbums(), 'viewCategoryIds' => $mediaModel->getViewableCategoriesForVisitor($visitor->toArray()), 'newerThan' => $mediaModel->getMediaHomeCutOff(), 'social_group_id' => $team['team_id']); $fetchOptions = self::_getMediaFetchOptions() + array('order' => $order ? $order : 'media_date', 'orderDirection' => 'desc', 'page' => $page, 'perPage' => $perPage); $fetchOptions['join'] |= XenGallery_Model_Media::FETCH_PRIVACY; $media = $mediaModel->getMedia($conditions, $fetchOptions); $media = $mediaModel->prepareMediaItems($media); $inlineModOptions = $mediaModel->prepareInlineModOptions($media); $ignoredNames = array(); foreach ($media as $item) { if (!empty($item['isIgnored'])) { $ignoredNames[] = $item['username']; } } $mediaCount = $mediaModel->countMedia($conditions, $fetchOptions); self::$controller->canonicalizePageNumber($page, $perPage, $mediaCount, TEAM_ROUTE_PREFIX . '/photos', $team); self::$controller->canonicalizeRequestUrl(XenForo_Link::buildPublicLink(TEAM_ROUTE_PREFIX . '/photos', $team, array('page' => $page))); $pageNavParams = array('order' => $order, 'type' => $type); return array('templateName' => 'Team_photo', 'viewName' => '', 'provider' => 'XenGallery', 'canViewRatings' => $mediaModel->canViewRatings(), 'mediaHome' => true, 'media' => $media, 'ignoredNames' => array_unique($ignoredNames), 'mediaCount' => $mediaCount, 'page' => $page <= 1 ? '' : $page, 'perPage' => $perPage, 'pageNavParams' => $pageNavParams, 'order' => $order, 'type' => $type, 'time' => XenForo_Application::$time, 'showTypeTabs' => $albumModel->canViewAlbums(), 'inlineModOptions' => $inlineModOptions, 'userPage' => false); }
public function verifyFromInput($context, XenForo_Input $input, array $user, array &$providerData) { if (empty($providerData['secret'])) { return false; } $code = $input->filterSingle('code', XenForo_Input::STRING); $code = preg_replace('/[^0-9]/', '', $code); if (!$code) { return false; } if (!empty($providerData['lastCode']) && $providerData['lastCode'] === $code) { // prevent a replay attack: once the code has been used, don't allow it to be used in the slice again if (!empty($providerData['lastCodeTime']) && time() - $providerData['lastCodeTime'] < 30) { return false; } } $auth = $this->_getAuthHandler(); if (!$auth->verifyCode($providerData['secret'], $code)) { return false; } $providerData['lastCode'] = $code; $providerData['lastCodeTime'] = time(); return true; }
<?php $startTime = microtime(true); $fileDir = dirname(__FILE__); require $fileDir . '/library/XenForo/Autoloader.php'; XenForo_Autoloader::getInstance()->setupAutoloader($fileDir . '/library'); XenForo_Application::initialize($fileDir . '/library', $fileDir); XenForo_Application::set('page_start_time', $startTime); $deps = new XenForo_Dependencies_Public(); $deps->preLoadData(); $input = new XenForo_Input(new Zend_Controller_Request_Http()); $contactId = $input->filterSingle('Id', XenForo_Input::UINT); if ($contactId) { /* $contactDataModel ThemeHouse_Infusionsoft_Model_InfusionsoftApi_DataService_Contact */ $contactDataModel = XenForo_Model::create('ThemeHouse_Infusionsoft_Model_InfusionsoftApi_DataService_Contact'); $contactDataModel->processContact($contactId); }
/** * Gets the search form controller response for this type. * * @see XenForo_Search_DataHandler_Abstract::getSearchFormControllerResponse() */ public function getSearchFormControllerResponse(XenForo_ControllerPublic_Abstract $controller, XenForo_Input $input, array $viewParams) { $params = $input->filterSingle('c', XenForo_Input::ARRAY_SIMPLE); return $controller->responseView('sonnb_XenGallery_ViewPublic_Search_Form_Video', 'sonnb_xengallery_search_form_video', $viewParams); }
/** * Get type-specific constrints from input. * * @param XenForo_Input $input * * @return array */ public function getTypeConstraintsFromInput(XenForo_Input $input) { $constraints = array(); if ($profileUsersInput = $input->filterSingle('profile_users', XenForo_Input::STRING)) { $userModel = $this->_getUserModel(); $profileUsers = $userModel->getUsersByNames(explode(',', $profileUsersInput)); if ($profileUsers) { $constraints['profile_user'] = array_keys($profileUsers); } } return $constraints; }
/** * Gets the search form controller response for this type. * * @see XenForo_Search_DataHandler_Abstract::getSearchFormControllerResponse() */ public function getSearchFormControllerResponse(XenForo_ControllerPublic_Abstract $controller, XenForo_Input $input, array $viewParams) { $params = $input->filterSingle('c', XenForo_Input::ARRAY_SIMPLE); if (!empty($params['profile_user'])) { $profileUsers = $this->_getUserModel()->getUsersByIds($params['profile_user']); foreach ($profileUsers as &$profileUser) { $profileUser = $profileUser['username']; } } $viewParams['search'] = array_merge($viewParams['search'], array('profile_users' => empty($profileUsers) ? '' : implode(', ', $profileUsers))); return $controller->responseView('XenForo_ViewPublic_Search_Form_ProfilePost', 'search_form_profile_post', $viewParams); }
/** * Gets the search form controller response for this type. * * @see XenForo_Search_DataHandler_Abstract::getSearchFormControllerResponse() * * @param XenForo_ControllerPublic_Abstract $controller * @param XenForo_Input $input * @param array $viewParams * @return false|XenForo_ControllerResponse_Abstract|XenForo_ControllerResponse_View */ public function getSearchFormControllerResponse(XenForo_ControllerPublic_Abstract $controller, XenForo_Input $input, array $viewParams) { $params = $input->filterSingle('c', XenForo_Input::ARRAY_SIMPLE); if (!empty($params['category'])) { $viewParams['search']['categories'] = array_fill_keys(explode(' ', $params['category']), true); } else { $viewParams['search']['categories'] = array(); } $viewParams['search']['child_categories'] = true; $viewParams['categories'] = XenForo_Model::create('sonnb_XenGallery_Model_Category')->getAllCachedCategories(); return $controller->responseView('sonnb_XenGallery_ViewPublic_Search_Form_Album', 'sonnb_xengallery_search_form_album', $viewParams); }
/** * Gets the search form controller response for this type. * * @see XenForo_Search_DataHandler_Abstract::getSearchFormControllerResponse() */ public function getSearchFormControllerResponse(XenForo_ControllerPublic_Abstract $controller, XenForo_Input $input, array $viewParams) { $controller->getRouteMatch()->setSections('xengallery'); $options = XenForo_Application::getOptions(); if ($options->xengalleryOverrideStyle) { $controller->setViewStateChange('styleId', $options->xengalleryOverrideStyle); } $params = $input->filterSingle('c', XenForo_Input::ARRAY_SIMPLE); if (!empty($params['mediacat'])) { $viewParams['search']['categories'] = array_fill_keys(explode(' ', $params['mediacat']), true); } else { $viewParams['search']['categories'] = array(); } $viewParams['categories'] = XenForo_Model::create('XenGallery_Model_Category')->getCategoryStructure(); return $controller->responseView('XenGallery_ViewPublic_Search_Form_Media', 'xengallery_search_form_media', $viewParams); }
/** * Gets the search form controller response for this type. * * @see XenForo_Search_DataHandler_Abstract::getSearchFormControllerResponse() */ public function getSearchFormControllerResponse(XenForo_ControllerPublic_Abstract $controller, XenForo_Input $input, array $viewParams) { $params = $input->filterSingle('c', XenForo_Input::ARRAY_SIMPLE); $viewParams['search'] = array_merge($viewParams['search'], array('reply_count' => empty($params['reply_count']) ? '' : $params['reply_count'])); return $controller->responseView('XenForo_ViewPublic_Search_Form_Post', 'search_form_post', $viewParams); }
/** * Gets the search form controller response for this type. * * @see XenForo_Search_DataHandler_Abstract::getSearchFormControllerResponse() */ public function getSearchFormControllerResponse(XenForo_ControllerPublic_Abstract $controller, XenForo_Input $input, array $viewParams) { $teamModel = $this->_getTeamModel(); if (!$teamModel->canViewTeams($error)) { return $controller->responseNoPermission(); } $params = $input->filterSingle('c', XenForo_Input::ARRAY_SIMPLE); if (!empty($params['category'])) { $viewParams['search']['categories'] = array_fill_keys(explode(' ', $params['category']), true); } else { $viewParams['search']['categories'] = array(); } $viewParams['search']['child_categories'] = true; $viewParams['categories'] = XenForo_Model::create('Nobita_Teams_Model_Category')->getViewableCategories(); return $controller->responseView('Nobita_Teams_ViewPublic_Search_Form_Team', 'Team_search_form_team', $viewParams); }
/** * Gets the search form controller response for this type. * * @see XenForo_Search_DataHandler_Abstract::getSearchFormControllerResponse() */ public function getSearchFormControllerResponse(XenForo_ControllerPublic_Abstract $controller, XenForo_Input $input, array $viewParams) { $params = $input->filterSingle('c', XenForo_Input::ARRAY_SIMPLE); $viewParams['search']['reply_count'] = empty($params['reply_count']) ? '' : $params['reply_count']; if (!empty($params['prefix'])) { $viewParams['search']['prefixes'] = array_fill_keys(explode(' ', $params['prefix']), true); } else { $viewParams['search']['prefixes'] = array(); } /** @var $threadPrefixModel XenForo_Model_ThreadPrefix */ $threadPrefixModel = XenForo_Model::create('XenForo_Model_ThreadPrefix'); $viewParams['prefixes'] = $threadPrefixModel->getPrefixesByGroups(); if ($viewParams['prefixes']) { $visiblePrefixes = $threadPrefixModel->getVisiblePrefixIds(); foreach ($viewParams['prefixes'] as $key => &$prefixes) { foreach ($prefixes as $prefixId => $prefix) { if (!isset($visiblePrefixes[$prefixId])) { unset($prefixes[$prefixId]); } } if (!count($prefixes)) { unset($viewParams['prefixes'][$key]); } } } $viewParams['search']['thread'] = array(); if (!empty($params['thread'])) { $threadModel = $this->_getThreadModel(); $thread = $threadModel->getThreadById($params['thread'], array('join' => XenForo_Model_Thread::FETCH_FORUM, 'permissionCombinationId' => XenForo_Visitor::getPermissionCombinationId())); if ($thread) { $permissions = XenForo_Permission::unserializePermissions($thread['node_permission_cache']); if ($threadModel->canViewThreadAndContainer($thread, $thread, $null, $permissions)) { $viewParams['search']['thread'] = $this->_getThreadModel()->getThreadById($params['thread']); } } } return $controller->responseView('XenForo_ViewPublic_Search_Form_Post', 'search_form_post', $viewParams); }
/** * Gets the search form controller response for this type. * * @see XenForo_Search_DataHandler_Abstract::getSearchFormControllerResponse() */ public function getSearchFormControllerResponse(XenForo_ControllerPublic_Abstract $controller, XenForo_Input $input, array $viewParams) { /** @var $resourceModel XenResource_Model_Resource */ $resourceModel = XenForo_Model::create('XenResource_Model_Resource'); if (!$resourceModel->canViewResources($error)) { return $controller->responseNoPermission(); } $params = $input->filterSingle('c', XenForo_Input::ARRAY_SIMPLE); if (!empty($params['rescat'])) { $viewParams['search']['categories'] = array_fill_keys(explode(' ', $params['rescat']), true); } else { $viewParams['search']['categories'] = array(); } $viewParams['search']['child_categories'] = true; $viewParams['categories'] = XenForo_Model::create('XenResource_Model_Category')->getViewableCategories(); if (!empty($params['prefix'])) { $viewParams['search']['prefixes'] = array_fill_keys(explode(' ', $params['prefix']), true); } else { $viewParams['search']['prefixes'] = array(); } /** @var $prefixModel XenResource_Model_Prefix */ $prefixModel = XenForo_Model::create('XenResource_Model_Prefix'); $viewParams['prefixes'] = $prefixModel->getPrefixesByGroups(); if ($viewParams['prefixes']) { $visiblePrefixes = $prefixModel->getVisiblePrefixIds(); foreach ($viewParams['prefixes'] as $key => $prefixes) { foreach ($prefixes as $prefixId => $prefix) { if (!isset($visiblePrefixes[$prefixId])) { unset($prefixes[$prefixId]); } } if (!count($prefixes)) { unset($viewParams['prefixes'][$key]); } } } $viewParams['search']['is_resource'] = !empty($params['is_resource']); return $controller->responseView('XenResource_ViewPublic_Search_Form_ResourceUpdate', 'search_form_resource_update', $viewParams); }
/** * Gets the search form controller response for this type. * * @see XenForo_Search_DataHandler_Abstract::getSearchFormControllerResponse() */ public function getSearchFormControllerResponse(XenForo_ControllerPublic_Abstract $controller, XenForo_Input $input, array $viewParams) { $params = $input->filterSingle('c', XenForo_Input::ARRAY_SIMPLE); if (!empty($params['camera'])) { $viewParams['search']['camera'] = $params['camera']; } if (!empty($params['exposure'])) { $viewParams['search']['exposure'] = $params['exposure']; } if (!empty($params['focal'])) { $viewParams['search']['focal'] = $params['focal']; } if (!empty($params['iso'])) { $viewParams['search']['iso'] = $params['iso']; } if (!empty($params['aperture'])) { $viewParams['search']['aperture'] = $params['aperture']; } return $controller->responseView('sonnb_XenGallery_ViewPublic_Search_Form_Photo', 'sonnb_xengallery_search_form_photo', $viewParams); }
public function parseOptionsInput(XenForo_Input $input, array $widget) { $configuration = $this->getConfiguration(); $options = empty($widget['options']) ? array() : $widget['options']; foreach ($configuration['options'] as $optionKey => $optionType) { $optionValue = $input->filterSingle(self::getNamePrefix() . $optionKey, $optionType); if ($this->_validateOptionValue($optionKey, $optionValue) !== false) { $options[$optionKey] = $optionValue; } } if (!empty($widget['widget_page_id'])) { if (empty($options['layout_sizeRow'])) { $options['layout_sizeRow'] = 1; } if (empty($options['layout_sizeCol'])) { $options['layout_sizeCol'] = 1; } } if (!empty($options['conditional']) and !empty($options['expression'])) { unset($options['expression']); } return $options; }
/** * Gets the search form controller response for this type. * * @see XenForo_Search_DataHandler_Abstract::getSearchFormControllerResponse() */ public function getSearchFormControllerResponse(XenForo_ControllerPublic_Abstract $controller, XenForo_Input $input, array $viewParams) { $params = $input->filterSingle('c', XenForo_Input::ARRAY_SIMPLE); $viewParams['search']['reply_count'] = empty($params['reply_count']) ? '' : $params['reply_count']; $viewParams['search']['conversation'] = array(); if (!empty($params['conversation'])) { $conversationModel = $this->_getConversationModel(); $conversation = $conversationModel->getConversationById($params['conversation'], array('join' => XenForo_Model_Conversation::FETCH_FORUM, 'permissionCombinationId' => XenForo_Visitor::getPermissionCombinationId())); if ($conversation) { $permissions = XenForo_Permission::unserializePermissions($conversation['node_permission_cache']); if ($conversationModel->canViewConversationAndContainer($conversation, $conversation, $null, $permissions)) { $viewParams['search']['conversation'] = $this->_getConversationModel()->getConversationById($params['conversation']); } } } return $controller->responseView('ThemeHouse_ConvSearch_ViewPublic_Search_Form_ConversationMessage', 'search_form_conversation_message', $viewParams); }