示例#1
0
 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);
     }
 }
示例#2
0
 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));
 }
示例#3
0
 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);
 }
示例#4
0
 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);
 }
示例#5
0
 /**
  * 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}): ");
             }
         }
     }
 }
示例#6
0
    /**
     *
     * @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;
    }