protected static function _getTempPath($path) { if (Zend_Uri::check($path)) { $tempPath = DevHelper_Helper_ShippableHelper_TempFile::download($path); } else { $tempPath = $path; } return $tempPath; }
private static function _onAddOnUpgrade(XenForo_ControllerResponse_View &$controllerResponse) { if (!empty($_GET[self::PARAM_AUTHORIZE]) && $_GET[self::PARAM_AUTHORIZE] === self::$_config['apiUrl']) { $downloadLink = XenForo_Link::buildAdminLink('full:add-ons/upgrade', $controllerResponse->params['addOn'], array(self::PARAM_DOWNLOAD => self::$_config['apiUrl'])); $downloadLinkJson = json_encode($downloadLink); $accessTokenParamJson = json_encode(self::PARAM_ACCESS_TOKEN); $js = <<<EOF <script> var hash = window.location.hash.substr(1); var regex = /access_token=(.+?)(&|\$)/; var match = hash.match(regex); if (match) { var accessToken = match[1]; var downloadLink = {$downloadLinkJson}; var redirect = downloadLink + '&' + {$accessTokenParamJson} + '=' + encodeURIComponent(accessToken); window.location = redirect; } </script> EOF; die($js); } if (!empty($_GET[self::PARAM_DOWNLOAD]) && $_GET[self::PARAM_DOWNLOAD] === self::$_config['apiUrl']) { $accessToken = ''; if (!empty($_GET[self::PARAM_ACCESS_TOKEN])) { $accessToken = $_GET[self::PARAM_ACCESS_TOKEN]; } $addOnId = $controllerResponse->params['addOn']['addon_id']; $data = self::_fetchData(self::$_config['apiUrl'], array($addOnId), $accessToken); if (!empty($data[$addOnId]['links']['content'])) { $tempFile = DevHelper_Helper_ShippableHelper_TempFile::download($data[$addOnId]['links']['content']); $xmlPath = self::_updateAddOnFiles($addOnId, $tempFile); /** @noinspection BadExpressionStatementJS */ die(sprintf('<script>window.location = %s;</script>', json_encode(XenForo_Link::buildAdminLink('add-ons/upgrade', array('addon_id' => $addOnId), array(self::PARAM_IMPORT_XML => self::$_config['apiUrl'], self::PARAM_IMPORT_XML_PATH => $xmlPath))))); } } if (!empty($_GET[self::PARAM_IMPORT_XML]) && $_GET[self::PARAM_IMPORT_XML] === self::$_config['apiUrl'] && !empty($_GET[self::PARAM_IMPORT_XML_PATH])) { $addOnId = $controllerResponse->params['addOn']['addon_id']; $xmlPath = $_GET[self::PARAM_IMPORT_XML_PATH]; /** @var XenForo_Model_AddOn $addOnModel */ $addOnModel = XenForo_Model::create('XenForo_Model_AddOn'); $addOnModel->installAddOnXmlFromFile($xmlPath, $addOnId); $addOn = $addOnModel->getAddOnById($addOnId); echo sprintf('Updated add-on %1$s to v%2$s (#%3$d)', $addOn['title'], $addOn['version_string'], $addOn['version_id']); /** @noinspection BadExpressionStatementJS */ die(sprintf('<script>window.f=function(){window.location=%s;};' . 'window.setTimeout("f()",5000);</script>', json_encode(XenForo_Link::buildAdminLink('full:tools/run-deferred', null, array('redirect' => XenForo_Link::buildAdminLink('full:add-ons')))))); } if (!empty($_GET[self::PARAM_IGNORE]) && $_GET[self::PARAM_IGNORE] === self::$_config['apiUrl']) { $addOnId = $controllerResponse->params['addOn']['addon_id']; $data = self::_refreshData(self::$_config['apiUrl'], self::$_config['addOnIds'], false); if (!empty($data[$addOnId]['version_id'])) { self::$_config['ignored'][$addOnId] = $data[$addOnId]['version_id']; self::_saveConfig(self::$_config); } $controllerResponse = new XenForo_ControllerResponse_Redirect(); $controllerResponse->redirectType = XenForo_ControllerResponse_Redirect::RESOURCE_UPDATED; $controllerResponse->redirectTarget = XenForo_Link::buildAdminLink('add-ons'); } }