Ejemplo n.º 1
0
 /**
  * Application management screen.
  */
 public function Applications($Filter = '', $TransientKey = '')
 {
     $Session = Gdn::Session();
     $ApplicationName = $Session->ValidateTransientKey($TransientKey) ? $Filter : '';
     if (!in_array($Filter, array('enabled', 'disabled'))) {
         $Filter = '';
     }
     $this->Filter = $Filter;
     $this->Permission('Garden.Applications.Manage');
     $this->AddSideMenu('garden/settings/applications');
     $this->AddJsFile('applications.js');
     $this->Title(Translate('Applications'));
     $AuthenticatedPostBack = $this->Form->AuthenticatedPostBack();
     $ApplicationManager = new Gdn_ApplicationManager();
     $this->AvailableApplications = $ApplicationManager->AvailableVisibleApplications();
     $this->EnabledApplications = $ApplicationManager->EnabledVisibleApplications();
     // Loop through all of the available visible apps and mark them if they have an update available
     // Retrieve the list of apps that require updates from the config file
     $RequiredUpdates = Format::Unserialize(Gdn::Config('Garden.RequiredUpdates', ''));
     if (is_array($RequiredUpdates)) {
         foreach ($RequiredUpdates as $UpdateInfo) {
             if (is_object($UpdateInfo)) {
                 $UpdateInfo = Format::ObjectAsArray($UpdateInfo);
             }
             $NewVersion = ArrayValue('Version', $UpdateInfo, '');
             $Name = ArrayValue('Name', $UpdateInfo, '');
             $Type = ArrayValue('Type', $UpdateInfo, '');
             foreach ($this->AvailableApplications as $App => $Info) {
                 $CurrentName = ArrayValue('Name', $Info, $App);
                 if ($CurrentName == $Name && $Type == 'Application') {
                     $Info['NewVersion'] = $NewVersion;
                     $this->AvailableApplications[$App] = $Info;
                 }
             }
         }
     }
     if ($ApplicationName != '') {
         if (array_key_exists($ApplicationName, $this->EnabledApplications) === TRUE) {
             try {
                 $ApplicationManager->DisableApplication($ApplicationName);
             } catch (Exception $e) {
                 $this->Form->AddError(strip_tags($e->getMessage()));
             }
         } else {
             try {
                 $ApplicationManager->CheckRequirements($ApplicationName);
             } catch (Exception $e) {
                 $this->Form->AddError(strip_tags($e->getMessage()));
             }
             if ($this->Form->ErrorCount() == 0) {
                 $Validation = new Gdn_Validation();
                 $ApplicationManager->RegisterPermissions($ApplicationName, $Validation);
                 $ApplicationManager->EnableApplication($ApplicationName, $Validation);
                 if ($ApplicationManager->ApplicationHasSetup($ApplicationName)) {
                     $ApplicationManager->ApplicationSetup($ApplicationName, $this->ControllerName, $Validation);
                 }
             }
             $this->Form->SetValidationResults($Validation->Results());
         }
         if ($this->Form->ErrorCount() == 0) {
             Redirect('settings/applications');
         }
     }
     $this->Render();
 }