public function run() { if (!isset(self::$_checkForUpdates)) { self::$_checkForUpdates = true; $lastXMLUploadDate = $this->_getLastXmlUploadDate(); $addOns = array(); try { $installDataDir = XenForo_Application::getInstance()->getRootDir() . '/install/data/'; if (is_dir($installDataDir)) { /* @var $dir Directory */ $dir = dir($installDataDir); if (XenForo_Application::$versionId >= 1020000) { $allAddOns = XenForo_Application::get('addOns'); } while ($entry = $dir->read()) { if (strlen($entry) > strlen('addon-.xml') && substr($entry, 0, strlen('addon-')) == 'addon-') { $addOnId = substr($entry, strlen('addon-'), strlen($entry) - strlen('addon-.xml')); if (XenForo_Application::$versionId >= 1020000) { if (empty($allAddOns[$addOnId])) { continue; } } if (filemtime(XenForo_Application::getInstance()->getRootDir() . '/install/data/' . $entry) > $lastXMLUploadDate) { $addOns[] = $addOnId; } } } } } catch (Exception $e) { // do nothing } $addOnsNeedUpgrading = $this->_checkAddOnsNeedUpgrading($addOns); if (is_subclass_of(self::$_controller, 'XenForo_ControllerAdmin_Abstract')) { $controllerName = self::$_controller->getRequest()->getParam('_controllerName'); $action = self::$_controller->getRequest()->getParam('_action'); if ($controllerName == 'XenForo_ControllerAdmin_AddOn' && $action == 'UpgradeAllFromXml') { $this->_upgradeAddOns(); } } elseif ($addOnsNeedUpgrading) { $upgradeAddOns = $this->getUpgradeAddOns(); if (!empty($upgradeAddOns)) { XenForo_Application::get('options')->set('boardActive', false); if (!XenForo_Visitor::getInstance()->get('is_admin')) { try { self::$_controller->preDispatch(self::$_action, self::$_controllerName); } catch (XenForo_ControllerResponse_Exception $exception) { $controllerResponse = $exception->getControllerResponse(); if ($controllerResponse instanceof XenForo_ControllerResponse_Message) { $controllerResponse->message = new XenForo_Phrase('board_currently_being_upgraded'); } throw $exception; } } } } } $this->_run(); }
public function run() { if (is_subclass_of(self::$_controller, 'XenForo_ControllerAdmin_Abstract')) { if (!isset(self::$_checkForUpdates)) { self::$_checkForUpdates = true; $lastXMLUploadDate = $this->_getLastXmlUploadDate(); $addOns = array(); try { $installDataDir = XenForo_Application::getInstance()->getRootDir() . '/install/data/'; if (is_dir($installDataDir)) { /* @var $dir Directory */ $dir = dir($installDataDir); if (XenForo_Application::$versionId >= 1020000) { $allAddOns = XenForo_Application::get('addOns'); } while ($entry = $dir->read()) { if (strlen($entry) > strlen('addon-.xml') && substr($entry, 0, strlen('addon-')) == 'addon-') { $addOnId = substr($entry, strlen('addon-'), strlen($entry) - strlen('addon-.xml')); if (XenForo_Application::$versionId >= 1020000) { if (empty($allAddOns[$addOnId])) { continue; } } if (filemtime(XenForo_Application::getInstance()->getRootDir() . '/install/data/' . $entry) > $lastXMLUploadDate) { $addOns[] = $addOnId; } } } } } catch (Exception $e) { // do nothing } $addOnsNeedUpgrading = $this->_checkAddOnsNeedUpgrading($addOns); $controllerName = self::$_controller->getRequest()->getParam('_controllerName'); $action = self::$_controller->getRequest()->getParam('_action'); if ($controllerName == 'XenForo_ControllerAdmin_AddOn' && $action == 'UpgradeAllFromXml') { $this->_upgradeAddOns(); } } } $this->_run(); }
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); }