function generateClasses() { // echo "GENERATE CLASSES?"; if (!HTML_FlexyFramework_Generator::$generateClasses) { return; } //echo "GENERATE CLASSES?"; parent::generateClasses(); }
/** * Autoload or manually load the table definitions * * * usage : * DB_DataObject::databaseStructure( 'databasename', * parse_ini_file('mydb.ini',true), * parse_ini_file('mydb.link.ini',true)); * * obviously you dont have to use ini files.. (just return array similar to ini files..) * * It should append to the table structure array * * * @param optional string name of database to assign / read * @param optional array structure of database, and keys * @param optional array table links * * @access public * @return true or PEAR:error on wrong paramenters.. or false if no file exists.. * or the array(tablename => array(column_name=>type)) if called with 1 argument.. (databasename) */ function databaseStructure() { global $_DB_DATAOBJECT; // Assignment code if ($args = func_get_args()) { if (count($args) == 1) { // this returns all the tables and their structure.. if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) { $this->debug("Loading Generator as databaseStructure called with args", 1); } $x = new DB_DataObject(); $x->_database = $args[0]; $this->_connect(); $DB =& $_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5]; $tables = $DB->getListOf('tables'); class_exists('DB_DataObject_Generator') ? '' : (require_once 'DB/DataObject/Generator.php'); foreach ($tables as $table) { $y = new DB_DataObject_Generator(); $y->fillTableSchema($x->_database, $table); } return $_DB_DATAOBJECT['INI'][$x->_database]; } else { $_DB_DATAOBJECT['INI'][$args[0]] = isset($_DB_DATAOBJECT['INI'][$args[0]]) ? $_DB_DATAOBJECT['INI'][$args[0]] + $args[1] : $args[1]; if (isset($args[1])) { $_DB_DATAOBJECT['LINKS'][$args[0]] = isset($_DB_DATAOBJECT['LINKS'][$args[0]]) ? $_DB_DATAOBJECT['LINKS'][$args[0]] + $args[2] : $args[2]; } return true; } } if (!$this->_database) { $this->_connect(); } // loaded already? if (!empty($_DB_DATAOBJECT['INI'][$this->_database])) { // database loaded - but this is table is not available.. if (empty($_DB_DATAOBJECT['INI'][$this->_database][$this->__table]) && !empty($_DB_DATAOBJECT['CONFIG']['proxy'])) { if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) { $this->debug("Loading Generator to fetch Schema", 1); } class_exists('DB_DataObject_Generator') ? '' : (require_once 'DB/DataObject/Generator.php'); $x = new DB_DataObject_Generator(); $x->fillTableSchema($this->_database, $this->__table); } return true; } if (empty($_DB_DATAOBJECT['CONFIG'])) { DB_DataObject::_loadConfig(); } // if you supply this with arguments, then it will take those // as the database and links array... $schemas = isset($_DB_DATAOBJECT['CONFIG']['schema_location']) ? array("{$_DB_DATAOBJECT['CONFIG']['schema_location']}/{$this->_database}.ini") : array(); if (isset($_DB_DATAOBJECT['CONFIG']["ini_{$this->_database}"])) { $schemas = is_array($_DB_DATAOBJECT['CONFIG']["ini_{$this->_database}"]) ? $_DB_DATAOBJECT['CONFIG']["ini_{$this->_database}"] : explode(PATH_SEPARATOR, $_DB_DATAOBJECT['CONFIG']["ini_{$this->_database}"]); } $_DB_DATAOBJECT['INI'][$this->_database] = array(); foreach ($schemas as $ini) { if (file_exists($ini) && is_file($ini)) { $_DB_DATAOBJECT['INI'][$this->_database] = array_merge($_DB_DATAOBJECT['INI'][$this->_database], parse_ini_file($ini, true)); if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) { if (!is_readable($ini)) { $this->debug("ini file is not readable: {$ini}", "databaseStructure", 1); } else { $this->debug("Loaded ini file: {$ini}", "databaseStructure", 1); } } } else { if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) { $this->debug("Missing ini file: {$ini}", "databaseStructure", 1); } } } // now have we loaded the structure.. if (!empty($_DB_DATAOBJECT['INI'][$this->_database][$this->__table])) { return true; } // - if not try building it.. if (!empty($_DB_DATAOBJECT['CONFIG']['proxy'])) { class_exists('DB_DataObject_Generator') ? '' : (require_once 'DB/DataObject/Generator.php'); $x = new DB_DataObject_Generator(); $x->fillTableSchema($this->_database, $this->__table); // should this fail!!!??? return true; } $this->debug("Cant find database schema: {$this->_database}/{$this->__table} \n" . "in links file data: " . print_r($_DB_DATAOBJECT['INI'], true), "databaseStructure", 5); // we have to die here!! - it causes chaos if we dont (including looping forever!) $this->raiseError("Unable to load schema for database and table (turn debugging up to 5 for full error message)", DB_DATAOBJECT_ERROR_INVALIDARGS, PEAR_ERROR_DIE); return false; }
// | that is bundled with this package in the file LICENSE, and is | // | available at through the world-wide-web at | // | http://www.php.net/license/2_02.txt. | // | If you did not receive a copy of the PHP license and are unable to | // | obtain it through the world-wide-web, please send a note to | // | license@php.net so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Author: Alan Knowles <*****@*****.**> // +----------------------------------------------------------------------+ // // $Id: createTables.php,v 1.1.1.1 2005/04/29 04:44:36 lux Exp $ // require_once 'DB/DataObject/Generator.php'; if (!ini_get('register_argc_argv')) { PEAR::raiseError("\nERROR: You must turn register_argc_argv On in you php.ini file for this to work\neg.\n\nregister_argc_argv = On\n\n", null, PEAR_ERROR_DIE); exit; } if (!@$_SERVER['argv'][1]) { PEAR::raiseError("\nERROR: createTable.php usage:\n\nC:\\php\\pear\\DB\\DataObjects\\createTable.php example.ini\n\n", null, PEAR_ERROR_DIE); exit; } $config = parse_ini_file($_SERVER['argv'][1], true); $options =& PEAR::getStaticProperty('DB_DataObject', 'options'); $options = $config['DB_DataObject']; if (!$options) { PEAR::raiseError("\nERROR: could not read ini file\n\n", null, PEAR_ERROR_DIE); exit; } //DB_DataObject::debugLevel(5); $generator = new DB_DataObject_Generator(); $generator->start();
/** * Autoload or manually load the table definitions * * * usage : * DB_DataObject::databaseStructure( 'databasename', * parse_ini_file('mydb.ini',true), * parse_ini_file('mydb.link.ini',true)); * * obviously you dont have to use ini files.. (just return array similar to ini files..) * * It should append to the table structure array * * * @param optional string name of database to assign / read * @param optional array structure of database, and keys * @param optional array table links * * @access public * @return true or PEAR:error on wrong paramenters.. or false if no file exists.. * or the array(tablename => array(column_name=>type)) if called with 1 argument.. (databasename) */ function databaseStructure() { global $_DB_DATAOBJECT; // Assignment code if ($args = func_get_args()) { if (count($args) == 1) { // this returns all the tables and their structure.. $x = new DB_DataObject(); $x->_database = $args[0]; $this->_connect(); $DB =& $_DB_DATAOBJECT['CONNECTIONS'][$this->_database_dsn_md5]; $tables = $DB->getListOf('tables'); require_once 'DB/DataObject/Generator.php'; foreach ($tables as $table) { $y = new DB_DataObject_Generator(); $y->fillTableSchema($x->_database, $table); } return $_DB_DATAOBJECT['INI'][$x->_database]; } else { $_DB_DATAOBJECT['INI'][$args[0]] = isset($_DB_DATAOBJECT['INI'][$args[0]]) ? $_DB_DATAOBJECT['INI'][$args[0]] + $args[1] : $args[1]; if (isset($args[1])) { $_DB_DATAOBJECT['LINKS'][$args[0]] = isset($_DB_DATAOBJECT['LINKS'][$args[0]]) ? $_DB_DATAOBJECT['LINKS'][$args[0]] + $args[2] : $args[2]; } return true; } } if (!$this->_database) { $this->_connect(); } // loaded already? if (!empty($_DB_DATAOBJECT['INI'][$this->_database])) { // database loaded - but this is table is not available.. if (empty($_DB_DATAOBJECT['INI'][$this->_database][$this->__table])) { require_once 'DB/DataObject/Generator.php'; $x = new DB_DataObject_Generator(); $x->fillTableSchema($this->_database, $this->__table); } return true; } if (empty($_DB_DATAOBJECT['CONFIG'])) { DB_DataObject::_loadConfig(); } // if you supply this with arguments, then it will take those // as the database and links array... $schemas = isset($_DB_DATAOBJECT['CONFIG']['schema_location']) ? array("{$_DB_DATAOBJECT['CONFIG']['schema_location']}/{$this->_database}.ini") : array(); if (isset($_DB_DATAOBJECT['CONFIG']["ini_{$this->_database}"])) { $schemas = is_array($_DB_DATAOBJECT['CONFIG']["ini_{$this->_database}"]) ? $_DB_DATAOBJECT['CONFIG']["ini_{$this->_database}"] : explode(PATH_SEPARATOR, $_DB_DATAOBJECT['CONFIG']["ini_{$this->_database}"]); } foreach ($schemas as $ini) { $links = isset($_DB_DATAOBJECT['CONFIG']["links_{$this->_database}"]) ? $_DB_DATAOBJECT['CONFIG']["links_{$this->_database}"] : str_replace('.ini', '.links.ini', $ini); if (file_exists($ini) && is_file($ini)) { $_DB_DATAOBJECT['INI'][$this->_database] = parse_ini_file($ini, true); if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) { $this->debug("Loaded ini file: {$ini}", "databaseStructure", 1); } } else { if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) { $this->debug("Missing ini file: {$ini}", "databaseStructure", 1); } } if (empty($_DB_DATAOBJECT['LINKS'][$this->_database]) && file_exists($links) && is_file($links)) { /* not sure why $links = ... here - TODO check if that works */ $_DB_DATAOBJECT['LINKS'][$this->_database] = parse_ini_file($links, true); if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) { $this->debug("Loaded links.ini file: {$links}", "databaseStructure", 1); } } else { if (!empty($_DB_DATAOBJECT['CONFIG']['debug'])) { $this->debug("Missing links.ini file: {$links}", "databaseStructure", 1); } } } // now have we loaded the structure.. - if not try building it.. if (empty($_DB_DATAOBJECT['INI'][$this->_database][$this->__table])) { require_once 'DB/DataObject/Generator.php'; $x = new DB_DataObject_Generator(); $x->fillTableSchema($this->_database, $this->__table); } return true; }
function start($cli = false, $mods = '', $overwrite = '') { $ff = HTML_Flexyframework::get(); $this->scanModules(); //echo '<PRE>'; print_r($this->modtables); exit; $options =& PEAR::getStaticProperty('DB_DataObject', 'options'); $proj = 'pman'; //ucfirst(basename($options['database'])); // we are going to generate all of the code into a temporay foldler.. $user = posix_getpwuid(posix_getuid()); $options['rootDir'] = ini_get('session.save_path') . '/temp_' . $proj . '_' . $user['name']; $options['cli'] = $cli; $options['mods'] = empty($mods) ? array() : explode('/', $mods); if (!file_exists($options['rootDir'])) { mkdir($options['rootDir'], 0775, true); } $this->rootDir = $options['rootDir']; $options['schema_location'] = $this->rootDir . '/' . $proj . '/DataObjects'; $options['class_location'] = $this->rootDir . '/' . $proj . '/DataObjects'; $options['require_prefix'] = $proj . '/DataObjects/'; $options['class_prefix'] = $proj . '_DataObjects_'; // print_r($this);exit; $this->importSQL(); $standard_database = $options['database']; parent::start(); $this->scanModules(); require_once 'System.php'; $diff = System::which('diff'); // now for each of the directories copy/show diffs.. echo $cli ? '' : '<PRE>'; $flist = explode(',', $overwrite); foreach ($this->modtables as $m => $ar) { if ($options['database'] != $standard_database) { $options['database'] = $standard_database; parent::start(); } $options['database'] = $standard_database; if (isset($options['database_' . $m])) { $options['database'] = $options['database_' . $m]; //var_dump($url);exit; // start again? parent::start(); } if (!empty($options['mods']) && !in_array($m, $options['mods'])) { continue; } foreach (scandir($options['rootDir'] . '/' . $m) as $f) { if (!strlen($f) || $f[0] == '.') { continue; } // does it exist!!! $src = $options['rootDir'] . "/{$m}/{$f}"; $tg = $ff->page->rootDir . "/Pman/{$m}/DataObjects/{$f}"; if (preg_match('/\\.js$/', $f)) { $tg = $ff->page->rootDir . "/Pman/{$m}/{$f}"; } if (!file_exists($tg) || !filesize($tg)) { if ($cli && in_array($f, $flist)) { echo "COPY {$src} {$tg}" . ($cli ? "\n" : "<BR>"); copy($src, $tg); continue; } echo "!!!!MISSING!!! {$tg}" . ($cli ? "\n" : "<BR>"); continue; } // always copy readers and ini file.= nope - not on live.. if ($cli && in_array($f, $flist)) { //|| $f=='pman.ini' || preg_match('/\.js$/', $f))) { echo "COPY {$src} {$tg}" . ($cli ? "\n" : "<BR>"); copy($src, $tg); continue; } // diff the two.. $cmd = "{$diff} -u -w " . escapeshellarg($tg) . ' ' . escapeshellarg($src); $out = array(); $ret = 0; exec($cmd, $out, $ret); if ($ret == 0) { // files match.. continue; } // var_dump($ret); echo "\n" . implode("\n", $out) . "\n"; } } }
function regenerateDataObject() { $generator = new DB_DataObject_Generator(); $generator->start(); }