Ejemplo n.º 1
0
 public function updateRequest(array $params)
 {
     $this->checkXP();
     $themeDto = $this->getThemeDtoByName($params);
     $language = OW::getLanguage();
     $remoteThemeInfo = (array) $this->themeService->getThemeInfoForUpdate($themeDto->getName(), $themeDto->getDeveloperKey());
     if (OW::getConfig()->getValue('base', 'update_soft')) {
         $this->assign("platformUpdateAvail", true);
     }
     if (empty($remoteThemeInfo) || !empty($remoteThemeInfo['error'])) {
         $this->assign('mode', 'error');
         $this->assign('text', $language->text('admin', 'theme_update_request_error'));
         $this->assign('returnUrl', OW::getRouter()->urlForRoute('admin_themes_choose'));
     } else {
         if ((bool) $remoteThemeInfo['freeware']) {
             $this->assign('mode', 'free');
             $this->assign('text', $language->text('admin', 'free_theme_request_text', array('oldVersion' => $themeDto->getBuild(), 'newVersion' => $remoteThemeInfo['build'], 'name' => $themeDto->getTitle())));
             $this->assign('redirectUrl', OW::getRouter()->urlFor('ADMIN_CTRL_Themes', 'update', $params));
             $this->assign('returnUrl', OW::getRouter()->urlForRoute('admin_themes_choose'));
         } else {
             if ($remoteThemeInfo['build'] === null) {
                 $query = "UPDATE `" . OW_DB_PREFIX . "base_theme` SET `update` = 0 WHERE `name` = :name";
                 OW::getDbo()->query($query, array('name' => $params['name']));
                 $this->assign('mode', 'error');
                 $this->assign('text', $language->text('admin', 'theme_update_not_available_error'));
                 $this->assign('returnUrl', OW::getRouter()->urlForRoute('admin_themes_choose'));
             } else {
                 $this->assign('text', $language->text('admin', 'com_theme_request_text', array('oldVersion' => $themeDto->getBuild(), 'newVersion' => $remoteThemeInfo['build'], 'name' => $themeDto->getTitle())));
                 $form = new Form('license-key');
                 $licenseKey = new TextField('key');
                 $licenseKey->setValue($themeDto->getLicenseKey());
                 $licenseKey->setRequired();
                 $licenseKey->setLabel($language->text('admin', 'com_theme_request_name_label'));
                 $form->addElement($licenseKey);
                 $submit = new Submit('submit');
                 $submit->setValue($language->text('admin', 'license_form_submit_label'));
                 $form->addElement($submit);
                 $button = new Button('button');
                 $button->setValue($language->text('admin', 'license_form_leave_label'));
                 $button->addAttribute('onclick', "window.location='" . OW::getRouter()->urlForRoute('admin_themes_choose') . "'");
                 $form->addElement($button);
                 $this->addForm($form);
                 if (OW::getRequest()->isPost()) {
                     if ($form->isValid($_POST)) {
                         $data = $form->getValues();
                         $params['licenseKey'] = $data['key'];
                         $result = $this->themeService->checkLicenseKey($themeDto->getName(), $themeDto->getDeveloperKey(), $data['key']);
                         if ($result === true) {
                             $this->redirect(OW::getRouter()->urlFor('ADMIN_CTRL_Themes', 'update', $params));
                         } else {
                             OW::getFeedback()->error($language->text('admin', 'themes_manage_invalid_license_key_error_message'));
                             $this->redirect();
                         }
                     }
                 }
             }
         }
     }
 }