Exemple #1
0
 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();
 }
Exemple #2
0
 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();
 }
Exemple #3
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);
 }