/**
  * Get a list of the available applications.
  *
  * Looks through the root Garden directory for valid applications and
  * returns them as an associative array of "Application Name" =>
  * "Application Info Array". It also adds a "Folder" definition to the
  * Application Info Array for each application.
  */
 public function availableApplications()
 {
     if (!is_array($this->availableApplications)) {
         $ApplicationInfo = array();
         $AppFolders = Gdn_FileSystem::folders(PATH_APPLICATIONS);
         // Get an array of all application folders
         // Now look for about files within them.
         $ApplicationAboutFiles = Gdn_FileSystem::findAll(PATH_APPLICATIONS, 'settings' . DS . 'about.php', $AppFolders);
         // Include them all right here and fill the application info array
         $ApplicationCount = count($ApplicationAboutFiles);
         for ($i = 0; $i < $ApplicationCount; ++$i) {
             include $ApplicationAboutFiles[$i];
             // Define the folder name for the newly added item
             foreach ($ApplicationInfo as $ApplicationName => $Info) {
                 if (array_key_exists('Folder', $ApplicationInfo[$ApplicationName]) === false) {
                     $Folder = substr($ApplicationAboutFiles[$i], strlen(PATH_APPLICATIONS));
                     if (substr($Folder, 0, 1) == DS) {
                         $Folder = substr($Folder, 1);
                     }
                     $Folder = substr($Folder, 0, strpos($Folder, DS));
                     $ApplicationInfo[$ApplicationName]['Folder'] = $Folder;
                 }
             }
         }
         // Add all of the indexes to the applications.
         foreach ($ApplicationInfo as $Index => &$Info) {
             $Info['Index'] = $Index;
         }
         $this->availableApplications = $ApplicationInfo;
     }
     return $this->availableApplications;
 }