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