public static function controller_post_dispatch(XenForo_Controller $controller, $controllerResponse, $controllerName, $action) { $type = $controller->getInput()->filterSingle('type', XenForo_Input::STRING); if (empty($type)) { $type = $controller->getInput()->filterSingle('t', XenForo_Input::STRING); } if ('team' == $type) { $controller->getRouteMatch()->setSections(TEAM_ROUTE_ACTION); } }
public static function checkConfiguration(XenForo_Controller $controller, $class, $prefix, $contentType, array &$configValues, array $configDefinitions) { if ($controller->getInput()->filterSingle('_xfConfirm', XenForo_Input::UINT)) { foreach ($configValues as $name => $value) { $newValue = $controller->getInput()->filterSingle($name, XenForo_Input::STRING); if ($newValue) { $configValues[$name] = $newValue; } elseif (!$configValues[$name] && !empty($configDefinitions[$name]['required'])) { throw $controller->responseException($controller->responseError(new XenForo_Phrase('please_complete_required_fields'))); } } return true; } $methodTemplateId = $controller->getInput()->filterSingle('method_template_id', XenForo_Input::UINT); $viewParams = array('configValues' => $configValues, 'configDefinitions' => $configDefinitions, 'methodTemplateId' => $methodTemplateId, 'class' => $class, 'prefix' => $prefix, 'contentType' => $contentType); throw $controller->responseException($controller->responseView('ThemeHouse_Reflection_ViewAdmin_MethodTemplate_Config', 'th_method_template_config_reflection', $viewParams)); }
public function handleManage(XenForo_Controller $controller, array $user, array $providerData) { $input = $controller->getInput(); if ($controller->isConfirmedPost()) { if ($input->filterSingle('regen', XenForo_Input::BOOLEAN)) { $newProviderData = $this->generateInitialData($user, array()); /** @var XenForo_Model_Tfa $tfaModel */ $tfaModel = XenForo_Model::create('XenForo_Model_Tfa'); $tfaModel->enableUserTfaProvider($user['user_id'], $this->_providerId, $newProviderData); return $controller->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('account/two-step/manage', null, array('provider' => $this->_providerId))); } else { return null; } } $viewParams = array('provider' => $this, 'providerId' => $this->_providerId, 'user' => $user, 'providerData' => $providerData, 'usedCodes' => $this->_formatCodesForDisplay($providerData['used']), 'availableCodes' => $this->_formatCodesForDisplay($providerData['codes'])); return $controller->responseView('XenForo_ViewPublic_Account_Tfa_BackupManage', 'account_two_step_backup_manage', $viewParams); }
public function handleManage(XenForo_Controller $controller, array $user, array $providerData) { $input = $controller->getInput(); $request = $controller->getRequest(); $session = XenForo_Application::getSession(); $newProviderData = null; $newTriggerData = null; $showSetup = false; if ($controller->isConfirmedPost()) { $sessionKey = 'tfaData_totp'; if ($input->filterSingle('regen', XenForo_Input::BOOLEAN)) { $newProviderData = $this->generateInitialData($user, array()); $newTriggerData = $this->triggerVerification('setup', $user, $request->getClientIp(false), $newProviderData); $session->set($sessionKey, $newProviderData); $showSetup = true; } else { if ($input->filterSingle('confirm', XenForo_Input::BOOLEAN)) { $newProviderData = $session->get($sessionKey); if (!is_array($newProviderData)) { return null; } if (!$this->verifyFromInput('setup', $input, $user, $newProviderData)) { return $controller->responseError(new XenForo_Phrase('two_step_verification_value_could_not_be_confirmed')); } /** @var XenForo_Model_Tfa $tfaModel */ $tfaModel = XenForo_Model::create('XenForo_Model_Tfa'); $tfaModel->enableUserTfaProvider($user['user_id'], $this->_providerId, $newProviderData); $session->remove($sessionKey); return null; } else { return null; } } } $viewParams = array('provider' => $this, 'providerId' => $this->_providerId, 'user' => $user, 'providerData' => $providerData, 'newProviderData' => $newProviderData, 'newTriggerData' => $newTriggerData, 'showSetup' => $showSetup); return $controller->responseView('XenForo_ViewPublic_Account_Tfa_TotpManage', 'account_two_step_totp_manage', $viewParams); }
/** * Get the data and determine if we need to change the response code to 410. * * @param XenForo_Controller $controller * @param XenForo_ControllerResponse_Abstract|false $controllerResponse * @param string $controllerName * @param string $action * * @throws XenForo_Exception */ public static final function controllerPostDispatch(XenForo_Controller $controller, $controllerResponse, $controllerName, $action) { if ($controller instanceof XenForo_ControllerPublic_Abstract && $controllerResponse instanceof XenForo_ControllerResponse_Error && $controllerResponse->responseCode == 404) { $data = array(); XenForo_CodeEvent::fire('410_gone_data', array(&$data, $controller, $controllerName, $action)); $table = $field = ''; foreach ($data as $_controllerName => $info) { if ($_controllerName == $controllerName) { list($table, $field) = $info; break; } } if (($id = $controller->getInput()->filterSingle($field, XenForo_Input::UINT)) && $table && $field) { $db = XenForo_Application::getDb(); try { if (!$db->fetchOne("SELECT {$field} FROM {$table} WHERE {$field} = ?", $id) && $db->fetchOne("SELECT COUNT(*) FROM {$table} WHERE {$field} > ?", $id) > 0) { $controllerResponse->responseCode = 410; } } catch (Throwable $e) { XenForo_Error::logException($e, false, "410 Query Failed (Field: {$field}, Table: {$table}): "); } } } }
/** * * @param string $action */ protected function _upgradeAddOns() { $template = new XenForo_Template_Admin('PAGE_CONTAINER_SIMPLE', array('jQuerySource' => XenForo_Dependencies_Abstract::getJquerySource(), 'xenOptions' => XenForo_Application::get('options')->getOptions(), '_styleModifiedDate' => XenForo_Application::get('adminStyleModifiedDate'))); $template->setLanguageId(1); $template->setParam('title', 'Upgrading Add-ons...'); $addOns = array_keys(self::getUpgradeAddOns(true)); $addOnModel = XenForo_Model::create('XenForo_Model_AddOn'); $nextAddOnId = ''; if (count($addOns)) { $next = self::$_controller->getInput()->filterSingle('next', XenForo_Input::STRING); if ($next) { $addOn = $next; } else { $addOn = reset($addOns); } for ($i = 0; $i < count($addOns); $i++) { if ($addOns[$i] != $addOn) { unset($addOns[$i]); continue; } break; } $fileName = XenForo_Application::getInstance()->getRootDir() . '/install/data/addon-' . $addOn . '.xml'; try { $caches = $addOnModel->installAddOnXmlFromFile($fileName, $addOn); $template->setParam('contents', '<form action="' . XenForo_Link::buildAdminLink('add-ons/upgrade-all-from-xml') . '" class="xenForm formOverlay CacheRebuild" method="post"> <p id="ProgressText">Upgrading... <span class="RebuildMessage"></span> <span class="DetailedMessage"></span></p> <p id="ErrorText" style="display: none">' . new XenForo_Phrase('error_occurred_or_request_stopped') . '</p> <input type="submit" class="button" value="Continue Upgrading" /> <input type="hidden" name="_xfToken" value="' . XenForo_Visitor::getInstance()->get('csrf_token_page') . '" /> </form>'); } catch (Exception $e) { if (count($addOns) == 1) { $template->setParam('contents', 'Upgrade error (' . $addOn . '). Please use the <a href="' . XenForo_Link::buildAdminLink('add-ons/upgrade', array('addon_id' => $addOn)) . '">standard upgrade tool</a> and report any error messages to the developer.'); } else { unset($addOns[array_search($addOn, $addOns)]); $nextAddOnId = reset($addOns); $template->setParam('contents', '<form action="' . XenForo_Link::buildAdminLink('add-ons/upgrade-all-from-xml') . '" class="xenForm formOverlay CacheRebuild" method="post"> <p id="ProgressText">Upgrading... <span class="RebuildMessage"></span> <span class="DetailedMessage"></span></p> <p id="ErrorText" style="display: none">' . new XenForo_Phrase('error_occurred_or_request_stopped') . '</p> <input type="submit" class="button" value="Continue Upgrading" /> <input type="hidden" name="next" value="' . $nextAddOnId . '" /> <input type="hidden" name="_xfToken" value="' . XenForo_Visitor::getInstance()->get('csrf_token_page') . '" /> </form>'); } } } else { $caches = $addOnModel->rebuildAddOnCaches(); } if (!count($addOns) && (isset($caches) || XenForo_Application::$versionId > 1020000)) { if (self::$_controller->getRouteMatch()->getResponseType() == 'json') { header('Content-Type: application/json; charset=UTF-8'); echo json_encode(array('_redirectTarget' => XenForo_Link::buildAdminLink('index'))); } else { header('Location: ' . XenForo_Link::buildAdminLink('index')); } } elseif (count($addOns) == 1 && (isset($caches) || XenForo_Application::$versionId > 1020000)) { if (XenForo_Application::$versionId > 1020000) { $url = XenForo_Link::buildAdminLink('tools/run-deferred'); } else { $url = XenForo_Link::buildAdminLink('tools/cache-rebuild', null, array('caches' => json_encode($caches))); } if (self::$_controller->getRouteMatch()->getResponseType() == 'json') { header('Content-Type: application/json; charset=UTF-8'); echo json_encode(array('_redirectTarget' => $url)); } else { header('Location: ' . $url); } } else { if (self::$_controller->getRouteMatch()->getResponseType() == 'json') { echo json_encode(array('_redirectTarget' => XenForo_Link::buildAdminLink('add-ons/upgrade-all-from-xml', array(), array('next' => $nextAddOnId)))); } else { $output = $template->render(); $output = str_replace("<!--XenForo_Require:JS-->", '<script src="js/xenforo/cache_rebuild.js"></script>', $output); echo $output; } } exit; }