Ejemplo n.º 1
0
 /**
  * Creates a Piece_ORM_Config object from a configuration file or
  * a cache.
  *
  * @param string $configDirectory
  * @param string $cacheDirectory
  * @return Piece_ORM_Config
  * @static
  */
 function &factory($configDirectory = null, $cacheDirectory = null)
 {
     if (is_null($configDirectory)) {
         $config =& new Piece_ORM_Config();
         return $config;
     }
     if (!file_exists($configDirectory)) {
         Piece_ORM_Error::push(PIECE_ORM_ERROR_NOT_FOUND, "The configuration directory [ {$configDirectory} ] not found.");
         $return = null;
         return $return;
     }
     $configFile = "{$configDirectory}/piece-orm-config.yaml";
     if (!file_exists($configFile)) {
         Piece_ORM_Error::push(PIECE_ORM_ERROR_NOT_FOUND, "The configuration file [ {$configFile} ] not found.");
         $return = null;
         return $return;
     }
     if (!is_readable($configFile)) {
         Piece_ORM_Error::push(PIECE_ORM_ERROR_NOT_READABLE, "The configuration file [ {$configFile} ] is not readable.");
         $return = null;
         return $return;
     }
     if (is_null($cacheDirectory)) {
         return Piece_ORM_Config_Factory::_createConfigurationFromFile($configFile);
     }
     if (!file_exists($cacheDirectory)) {
         trigger_error("The cache directory [ {$cacheDirectory} ] is not found.", E_USER_WARNING);
         return Piece_ORM_Config_Factory::_createConfigurationFromFile($configFile);
     }
     if (!is_readable($cacheDirectory) || !is_writable($cacheDirectory)) {
         trigger_error("The cache directory [ {$cacheDirectory} ] is not readable or writable.", E_USER_WARNING);
         return Piece_ORM_Config_Factory::_createConfigurationFromFile($configFile);
     }
     return Piece_ORM_Config_Factory::_getConfiguration($configFile, $cacheDirectory);
 }