X-Git-Url: http://git.roojs.org/?p=Pman.Core;a=blobdiff_plain;f=Generator.php;h=7ffeb57b856b59713a431cae841142b4762957d7;hp=d04ef1a3f8b3b0e65a2f5df3a64fd630f19d0d1d;hb=443623f47935eb52acd65a3ff0d84eab1fd5a98b;hpb=5d168ff628c7a8590940b747cefd1a9384cdf487 diff --git a/Generator.php b/Generator.php index d04ef1a3..7ffeb57b 100644 --- a/Generator.php +++ b/Generator.php @@ -2,15 +2,20 @@ /** + * + * THIS HAS NOT BEEN TESTED WITH PDO yet... + * * - * Generate DataObjects... and readers in the right places.. + * Generate DataObjects... + * + * This does not generate ini files any more - as that is done on the fly by the framework. * * note - we write to a temporary directory first... * * */ -require_once 'DB/DataObject/Generator.php'; +require_once 'PDO/DataObject/Generator.php'; /** basic thing now works... @@ -40,10 +45,16 @@ $this->def['forms'][$table][$t->name] = $form; -class Pman_Core_Generator extends DB_DataObject_Generator +class Pman_Core_Generator extends PDO_DataObject_Generator { - + + function getAuth() + { + + die("do not use this directly.. - use Core/RunGenerator"); + + } // inherrited.. // $tablekeys @@ -79,7 +90,7 @@ class Pman_Core_Generator extends DB_DataObject_Generator // we always overwrite the definition!!! // set to array('all') to overwrite everything!!! - function start($cli=false, $mods='', $overwrite='') + function start($cli=false, $mods='', $overwrite=array()) { $ff = HTML_Flexyframework::get(); @@ -106,15 +117,14 @@ class Pman_Core_Generator extends DB_DataObject_Generator $options['class_location'] = $this->rootDir .'/'.$proj.'/DataObjects'; $options['require_prefix'] = $proj . '/DataObjects/'; $options['class_prefix'] = $proj . '_DataObjects_'; + $this->debug(print_r($options,true)); // print_r($this);exit; - $this->importSQL(); - $standard_database = $options['database']; - + @@ -128,7 +138,7 @@ class Pman_Core_Generator extends DB_DataObject_Generator $diff = System::which('diff'); // now for each of the directories copy/show diffs.. echo $cli ? '' : '
';
-        $flist = explode(',', $overwrite);
+        $flist =   $overwrite;
         foreach($this->modtables as $m=>$ar) {
             if ($options['database'] !=  $standard_database) {
                 $options['database'] =  $standard_database ;
@@ -149,7 +159,15 @@ class Pman_Core_Generator extends DB_DataObject_Generator
             if (!empty($options['mods'] ) && !in_array($m,  $options['mods'] )) {
                 continue;
             }
+            // this happens when we have no database tables from a module,
+            // but module code has been defined.
+            if (!file_exists($options['rootDir'].'/'.$m)) {
+                continue;
+            }
             foreach(scandir($options['rootDir'].'/'.$m) as $f) {
+                
+                echo "SCAN {$options['rootDir']} $f\n";
+                
                 if (!strlen($f) || $f[0] == '.') {
                     continue;
                 }
@@ -162,8 +180,8 @@ class Pman_Core_Generator extends DB_DataObject_Generator
                 
                 if (!file_exists($tg) || !filesize($tg) ) {
                   
-                    if ($cli && in_array($f, $flist)) {
-                       echo "COPY $src $tg" . ($cli ? "\n" : "
"); + if ($cli && file_exists($tg) || in_array($f, $flist) || in_array('_all_', $flist )) { + echo "COPY $src $tg" . ($cli ? "\n" : "
"); copy($src, $tg); continue; } @@ -172,7 +190,7 @@ class Pman_Core_Generator extends DB_DataObject_Generator continue; } // always copy readers and ini file.= nope - not on live.. - if ($cli && in_array($f, $flist)) { + if ($cli && in_array($f, $flist) || in_array('_all_', $flist )) { //|| $f=='pman.ini' || preg_match('/\.js$/', $f))) { echo "COPY $src $tg". ($cli ? "\n" : "
"); @@ -201,62 +219,7 @@ class Pman_Core_Generator extends DB_DataObject_Generator } - - - - function importSQL() - { - $options = &PEAR::getStaticProperty('DB_DataObject','options'); - - $ff = HTML_Flexyframework::get(); - - $url = parse_url($options['database']); - // hide stuff for web.. - $cli = $options['cli']; - if (!$cli) { - $url['pass'] = '*****'; - $url['user'] = '*****'; - $url['host'] = '*****'; - } - - - - require_once 'System.php'; - $cat = System::which('cat'); - $mysql = System::which('mysql'); - print_r($options['mods'] ); - foreach($this->modsql as $m => $fl) - { - if ($cli && isset($options['database_'. $m])) { - $url =parse_url($options['database_'.$m]); - } - - $mysql_cmd = $mysql . - ' -h ' . $url['host'] . - ' -u' . escapeshellarg($url['user']) . - (!empty($url['pass']) ? ' -p' . escapeshellarg($url['pass']) : '') . - ' ' . basename($url['path']); - - echo $mysql_cmd . "\n" ; - - if (!empty($options['mods'] ) && !in_array($m, $options['mods'] )) { - continue; - } - - foreach($fl as $f) { - $fn = $ff->page->rootDir. "/Pman/$m/DataObjects/$f"; - $cmd = $cat . ' ' . escapeshellarg($fn) . " | $mysql_cmd -f "; - echo $cmd. ($cli ? "\n" : "
\n"); - if ($cli) { - passthru($cmd); - } - - } - } - - - - } + /** * Scan the folders for DataObjects * - Use the list of php files in DataObjects folders @@ -349,17 +312,24 @@ class Pman_Core_Generator extends DB_DataObject_Generator if (in_array($this->table, $ignore)) { continue; } - - - die("No existing DataObject file found for table {$this->table} + if (empty($mods)) { + + die("No existing DataObject file found for table {$this->table} + - either add it to Pman_Builder[skip_tables] or\n +- run generator and specify that module.. - create an empty file in the related Module/DataObjects directory eg. touch Pman/????/DataObjects/".ucfirst($this->table).".php - -"); - + + "); + } + // use mods to determine where it should output to.. + //var_dump($mods);exit; + $this->modmap[$tn] = $mods[0]; + + } $mod = $this->modmap[$tn]; $inis[$mod] = isset($inis[$mod]) ? $inis[$mod] : ''; @@ -371,29 +341,7 @@ touch Pman/????/DataObjects/".ucfirst($this->table).".php $inis[$mod] .= $this->_newConfig; } - - //echo '
';print_r($this->_inis); exit;
-        $options = PEAR::getStaticProperty('DB_DataObject','options');
-        
-        $rd = $options['rootDir'];
-        foreach($inis as $m=>$ini) {
-            if (!empty($mods) && !in_array($m, $mods)) {
-                continue;
-            }
-            
-            if (!file_exists($rd.'/'.$m)) {
-                mkdir($rd.'/'.$m, 0775, true);
-            }
-            $fname = '/pman.ini';
-            if (isset($options['database_'. $m])) {
-                $url = parse_url($options['database_'.$m]);
-                $fname = '/'. basename($url['path']).'.ini';
-            }
-
-            
-            file_put_contents($rd.'/'.$m.$fname, $ini);
-        }
-         
+        return; // we do not generate in ifiles any more..
          
     }
     
@@ -412,6 +360,7 @@ touch Pman/????/DataObjects/".ucfirst($this->table).".php
         $cli = $options['cli'];
 
         foreach($this->tables as $this->table) {
+            
             $this->table        = trim($this->table);
             $tn  = strtolower($this->table);
             $mod = $this->modmap[$tn];
@@ -420,16 +369,18 @@ touch Pman/????/DataObjects/".ucfirst($this->table).".php
                 continue;
             }
             
+            $clean_table = preg_replace('/[^A-Z0-9]+/i','_',ucfirst(trim($this->table)));
             
-            $this->classname    = 'Pman_'.$mod . '_DataObjects_'. ucfirst($this->table); // replace odd chars?
+            $this->classname    = 'Pman_'.$mod . '_DataObjects_'. $clean_table; // replace odd chars?
            
            
-            $outfilename    = $rd.'/'.$mod.'/'. ucfirst($this->table).'.php';
-            $orig           = $ff->page->rootDir .'/Pman/'.$mod.'/DataObjects/'. ucfirst($this->table).'.php';
+            $outfilename    = $rd.'/'.$mod.'/'. $clean_table .'.php';
+            $orig           = $ff->page->rootDir .'/Pman/'.$mod.'/DataObjects/'.  $clean_table.'.php';
             
            
                 // file_get_contents???
-            $oldcontents = file_get_contents($orig);
+            
+            $oldcontents = file_exists($orig) ? file_get_contents($orig) : '';
             
              
             echo "GENERATE: " .   $this->classname  . ($cli ? "\n" : "
"); @@ -440,7 +391,9 @@ touch Pman/????/DataObjects/".ucfirst($this->table).".php $out = preg_replace('/(\n|\r\n)\s*function staticGet[^\n]+(\n|\r\n)/s', '', $out); $out = preg_replace('#/\* Static get \*/#s', '', $out); - + if (!file_exists(dirname($outfilename))) { + mkdir(dirname($outfilename), 0755, true); + } // $this->debug( "writing $this->classname\n"); //$tmpname = tempnam(session_save_path(),'DataObject_'); file_put_contents($outfilename, $out); @@ -485,8 +438,7 @@ touch Pman/????/DataObjects/".ucfirst($this->table).".php // print_r( $this->def['colmodels'][$table]); //print_r($this->def['readers'][$table]); exit; - } - + function writeFileEx($n, $f, $str) {