From 7a7ee712b612fe54062b6ea150d394000dc4efbc Mon Sep 17 00:00:00 2001 From: flyskyko Date: Tue, 6 Nov 2012 01:29:27 +0000 Subject: [PATCH] sort dbms as priority git-svn-id: http://xe-core.googlecode.com/svn/branches/maserati@12129 201d5d3c-b55e-5fd7-737f-ddc643e51545 --- classes/db/DB.class.php | 48 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/classes/db/DB.class.php b/classes/db/DB.class.php index 5960af780..8bd4fc184 100644 --- a/classes/db/DB.class.php +++ b/classes/db/DB.class.php @@ -45,6 +45,18 @@ */ class DB { + /** + * priority of DBMS + * @var array + */ + var $priority_dbms = array( + 'mysqli' => 5, + 'mysql' => 4, + 'mysql_innodb' => 3, + 'cubrid' => 2, + 'mssql' => 1 + ); + /** * count cache path * @var string @@ -250,7 +262,6 @@ $db_classes_path = _XE_PATH_."classes/db/"; $filter = "/^DB([^\.]+)\.class\.php/i"; $supported_list = FileHandler::readDir($db_classes_path, $filter, true); - sort($supported_list); // after creating instance of class, check is supported for($i = 0; $i < count($supported_list); $i++) { @@ -275,10 +286,45 @@ $get_supported_list[] = $obj; } + + // sort + @usort($get_supported_list, array($this, '_sortDBMS')); + $this->supported_list = $get_supported_list; return $this->supported_list; } + /** + * sort dbms as priority + */ + function _sortDBMS($a, $b) + { + if(!isset($this->priority_dbms[$a->db_type])) + { + $priority_a = 0; + } + else + { + $priority_a = $this->priority_dbms[$a->db_type]; + } + + if(!isset($this->priority_dbms[$b->db_type])) + { + $priority_b = 0; + } + else + { + $priority_b = $this->priority_dbms[$b->db_type]; + } + + if($priority_a == $priority_b) + { + return 0; + } + + return ($priority_a > $priority_b) ? -1 : 1; + } + /** * Return dbms supportable status * The value is set in the child class