/** * 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; }