Beispiel #1
0
 function generateClasses()
 {
     //        echo "GENERATE CLASSES?";
     if (!HTML_FlexyFramework_Generator::$generateClasses) {
         return;
     }
     //echo "GENERATE CLASSES?";
     parent::generateClasses();
 }
Beispiel #2
0
 /**
  * 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;
 }
Beispiel #3
0
// | 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;
 }
Beispiel #5
0
 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();
}