/** * Returns the edition upgrade modal. * * @return null */ public function actionGetUpgradeModal() { $this->requireAjaxRequest(); // Make it so Craft Client accounts can perform the upgrade. if (craft()->getEdition() == Craft::Pro) { craft()->userSession->requireAdmin(); } $etResponse = craft()->et->fetchEditionInfo(); if (!$etResponse) { $this->returnErrorJson(Craft::t('Craft is unable to fetch edition info at this time.')); } // Make sure we've got a valid license key (mismatched domain is OK for these purposes) if ($etResponse->licenseKeyStatus == LicenseKeyStatus::Invalid) { $this->returnErrorJson(Craft::t('Your license key is invalid.')); } // Make sure they've got a valid licensed edition, just to be safe if (!AppHelper::isValidEdition($etResponse->licensedEdition)) { $this->returnErrorJson(Craft::t('Your license has an invalid Craft edition associated with it.')); } $editions = array(); foreach ($etResponse->data as $edition => $info) { $editions[$edition]['price'] = $info['price']; $editions[$edition]['formattedPrice'] = craft()->numberFormatter->formatCurrency($info['price'], 'USD', true); if (isset($info['salePrice']) && $info['salePrice'] < $info['price']) { $editions[$edition]['salePrice'] = $info['salePrice']; $editions[$edition]['formattedSalePrice'] = craft()->numberFormatter->formatCurrency($info['salePrice'], 'USD', true); } else { $editions[$edition]['salePrice'] = null; } } $canTestEditions = craft()->canTestEditions(); $modalHtml = craft()->templates->render('_upgrademodal', array('editions' => $editions, 'licensedEdition' => $etResponse->licensedEdition, 'canTestEditions' => $canTestEditions)); $this->returnJson(array('success' => true, 'editions' => $editions, 'licensedEdition' => $etResponse->licensedEdition, 'canTestEditions' => $canTestEditions, 'modalHtml' => $modalHtml)); }