From 0cc945636e6c8c1a967578086696ada2caad4494 Mon Sep 17 00:00:00 2001 From: Christian Schneider Date: Sun, 30 Sep 2007 19:23:31 +0000 Subject: Do not create class for non-existant tables --- it_dbi.class | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/it_dbi.class b/it_dbi.class index 585856e..95eb18a 100644 --- a/it_dbi.class +++ b/it_dbi.class @@ -116,21 +116,34 @@ function createclass($p) if (!is_array($p)) $p = array('table' => $p); - $classname = $p['classprefix'] . $p['table']; + # Make sure singleton exists + $dbi = $GLOBALS['it_dbi'] ? $GLOBALS['it_dbi'] : new it_dbi(array('table' => null) + $p); + $db = $dbi->_p['db']; - if (substr($classname, 0, 4) != 'PMA_') # It is designed behaviour that an error is generated if this class already exists! + if (!isset($dbi->_tables[$db])) { - $code = "class $classname extends it_dbi + for ($res = $dbi->query('SHOW TABLES'); $row = mysql_fetch_row($res);) + $dbi->_tables[$db][] = $row[0]; + } + + if (in_array($p['table'], $dbi->_tables[$db])) # Do not generate classes for non-existant tables + { + $classname = $p['classprefix'] . $p['table']; + + if (substr($classname, 0, 4) != 'PMA_') # It is designed behaviour that an error is generated if this class already exists! { - function $classname(\$query = null, \$p = array()) + $code = "class $classname extends it_dbi { - \$p += " . var_export($p, true) . "; - \$this->it_dbi(\$p, \$query); - } - }"; + function $classname(\$query = null, \$p = array()) + { + \$p += " . var_export($p, true) . "; + \$this->it_dbi(\$p, \$query); + } + }"; - debug("it_dbi::createclass('{$p['table']}'): creating class $classname", 5); - eval($code); + debug("it_dbi::createclass('{$p['table']}'): creating class $classname", 5); + eval($code); + } } } -- cgit v1.2.3