Exemplo n.º 1
0
	/**
	 * Returns an Atomik_Db_Script object
	 * 
	 * @return Atomik_Db_Script
	 */
	public static function getDbScript($filter = array(), $echo = false)
	{
		$filter = array_map('ucfirst', $filter);
		
		require_once 'Atomik/Db/Script.php';
		require_once 'Atomik/Db/Script/Output/Text.php';
		require_once 'Atomik/Db/Script/File.php';
		
		$script = new Atomik_Db_Script();
		$script->setOutputHandler(new Atomik_Db_Script_Output_Text($echo));
		
		// plugins
        foreach (Atomik::getLoadedPlugins(true) as $plugin => $path) {
            if ((count($filter) && in_array($plugin, $filter)) || !count($filter)) {
	            if (@is_dir($path . '/models')) {
	                $script->addScripts(Atomik_Db_Script_Model::getScriptFromDir($path . '/models'));
	            }
	            if (@is_dir($path . '/sql')) {
	                $script->addScripts(Atomik_Db_Script_File::getScriptFromDir($path . '/sql'));
	            }
            }
        }
        
        // app
        if ((count($filter) && in_array('App', $filter)) || !count($filter)) {
            foreach (Atomik::path(self::$config['model_dirs'], true) as $path) {
                if (@is_dir($path)) {
                    $script->addScripts(Atomik_Db_Script_Model::getScriptFromDir($path));
                }
            }
            foreach (Atomik::path(self::$config['sql_dirs'], true) as $path) {
                if (@is_dir($path)) {
                    $script->addScripts(Atomik_Db_Script_File::getScriptFromDir($path));
                }
            }
        }
		
		Atomik::fireEvent('Db::Script', array($script, $paths));
		return $script;
	}