function guessDbPrefix(DbSimple_Interface $db, $database = null, $prefix = null) { $res = array(); foreach ($dbs = $db->selectCol("SHOW DATABASES") as $dbname) { try { $tables = $db->selectCol("SHOW TABLES FROM ?# LIKE '%{$this->guessTablePattern}'", $dbname); } catch (Am_Exception_Db $e) { continue; } if (is_array($tables)) { foreach ($tables as $t) { // check fields here $info = $db->select("SHOW COLUMNS FROM `{$dbname}`.{$t}"); $infostr = ""; if (is_array($info)) { foreach ($info as $k => $v) { $infostr .= join(';', $v) . "\n"; } } $wrong = 0; foreach ($this->guessFieldsPattern as $pat) { if (!preg_match('|^' . $pat . '|m', $infostr)) { $wrong++; } } if ($wrong) { continue; } $res[] = $dbname . '.' . substr($t, 0, -strlen($this->guessTablePattern)); } } } return $res; }
protected static function setUpSubuserProfileFormIfNotExist(DbSimple_Interface $db) { if (!$db->selectCell("SELECT COUNT(*) FROM ?_saved_form WHERE type=?", self::SAVED_FORM_TYPE)) { $db->query("INSERT INTO ?_saved_form (title, comment, type, fields)\n SELECT 'Subuser Profile Form', 'subuser profile form', ?, fields\n FROM ?_saved_form WHERE type=?", self::SAVED_FORM_TYPE, SavedForm::T_PROFILE); } }
protected static function setUpAffFormIfNotExist(DbSimple_Interface $db) { if (!$db->selectCell("SELECT COUNT(*) FROM ?_saved_form WHERE type=?", 'aff')) { $db->query("INSERT INTO ?_saved_form (title, comment, type, fields)\n VALUE (?a)", array('Affiliate Signup Form', '', 'aff', '[{"id":"name","class":"name","hide":"1"},{"id":"email","class":"email","hide":true},{"id":"login","class":"login","hide":true},{"id":"password","class":"password","hide":true},{"id":"address","class":"address","hide":"1","config":{"fields":{"street":1,"city":1,"country":1,"state":1,"zip":1}}},{"id":"payout","class":"payout"}]')); } }
public function parseTables(DbSimple_Interface $db) { $prefix = $db->getPrefix(); foreach ($db->selectCol("SHOW TABLES LIKE ?", $prefix . '%') as $tablename) { if (strlen($prefix) && strpos($tablename, $prefix) !== 0) { continue; } // other prefix? $name = substr($tablename, strlen($prefix)); $table = Am_DbSync_Table::createFromDb($name, $db->select("SHOW CREATE TABLE ?#", $tablename)); foreach ($db->select("DESCRIBE ?#", $tablename) as $row) { $table->addField(Am_DbSync_Field::createFromDb($row)); } $indexes = array(); foreach ($db->select("SHOW INDEX FROM ?#", $tablename) as $row) { $indexes[$row['Key_name']][] = $row; } foreach ($indexes as $indexRows) { $table->addIndex(Am_DbSync_Index::createFromDb($indexRows)); } $this->addTable($table); } }