From 4cc68ea1845d9882cc721202f2f25796eb5d7a95 Mon Sep 17 00:00:00 2001
From: stronk7 <stronk7>
Date: Sun, 9 Sep 2007 16:09:00 +0000
Subject: [PATCH] Now mysql returns getCheckConstraintsFromDB() in a compatible
 way (array of name & description objects) with the check constraints found in
 the table

---
 .../classes/generators/mysql/mysql.class.php  | 27 +++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)

diff --git a/lib/xmldb/classes/generators/mysql/mysql.class.php b/lib/xmldb/classes/generators/mysql/mysql.class.php
index 9c6b758f39..149e0288ec 100644
--- a/lib/xmldb/classes/generators/mysql/mysql.class.php
+++ b/lib/xmldb/classes/generators/mysql/mysql.class.php
@@ -251,11 +251,34 @@ class XMLDBmysql extends XMLDBGenerator {
      * in the table (fetched from DB)
      * Each element contains the name of the constraint and its description
      * If no check constraints are found, returns an empty array
-     * MySQL doesn't have check constraints in this implementation
+     * MySQL doesn't have check constraints in this implementation, but
+     * we return them based on the enum fields in the table
      */
     function getCheckConstraintsFromDB($xmldb_table) {
 
-        return array();
+        global $db;
+
+        $results = array();
+
+        $tablename = $this->getTableName($xmldb_table);
+
+    /// Fetch all the columns in the table
+        if ($columns = $db->MetaColumns($tablename)) {
+        /// Normalize array keys
+            $columns = array_change_key_case($columns, CASE_LOWER);
+        /// Iterate over columns searching for enums
+            foreach ($columns as $key => $column) {
+            /// Enum found, let's add it to the constraints list
+                if (!empty($column->enums)) {
+                    $result = new object;
+                    $result->name = $key;
+                    $result->description = implode(', ', $column->enums);
+                    $results[$key] = $result;
+                }
+            }
+        }
+
+        return $results;
     }
 
     /**
-- 
2.39.5