/** * Retrieve all the extension information for all the extensions * in extension directory. Beware, we're relying on scandir's * extension retrieval order here, array indices will be used as * ids for extensions that are not installed later on. * * @access private * * @return array list of extensions */ private function _discoverAvailable() { $result = array(); if ($this->_extDir) { $e = scandir($this->_extDir); foreach ($e as $dc => $name) { $dir = $this->_extDir . DIRECTORY_SEPARATOR . $name; $infoFile = $dir . DIRECTORY_SEPARATOR . self::EXT_INFO_FILENAME; if (is_dir($dir) && file_exists($infoFile)) { $ext = new CRM_Core_Extensions_Extension($name); $ext->setLocal(); $ext->readXMLInfo(); $result[] = $ext; } } } return $result; }