Readers.php
[Pman.Builder] / Generator.php
index 1419596..bd15eaf 100644 (file)
@@ -44,7 +44,7 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
 {
     
 
-    
+   
     // inherrited..
     // $tablekeys
     // $tables
@@ -67,7 +67,7 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
     var $def;
     
       
-    
+    var $page = false; // page container when run from cli.
     
     // dont do usual stuff!!!
     var $rootDir = '';
@@ -82,7 +82,7 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
     function start($cli=false, $mods='', $overwrite='')
     {
         
-        
+        $ff = HTML_Flexyframework::get();
         $this->scanModules();
         //echo '<PRE>'; print_r($this->modtables); exit;
         
@@ -91,7 +91,9 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
         
         $proj = 'pman'; //ucfirst(basename($options['database']));
         // we are going to generate all of the code into a temporay foldler..
-        $options['rootDir'] = ini_get('session.save_path').'/temp_'. $proj;
+        $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);
        
@@ -119,7 +121,6 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
        
        
        
-       
         parent::start();
         
         $this->scanModules();
@@ -154,9 +155,9 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
                 }
                 // does it exist!!!
                 $src = $options['rootDir']."/$m/$f";
-                $tg = dirname(__FILE__)."/../$m/DataObjects/$f";
+                $tg = $ff->page->rootDir."/Pman/$m/DataObjects/$f";
                 if (preg_match('/\.js$/', $f)) {
-                    $tg = dirname(__FILE__)."/../$m/$f";
+                    $tg = $ff->page->rootDir."/Pman/$m/$f";
                 }
                 
                 if (!file_exists($tg) || !filesize($tg) ) {
@@ -207,6 +208,8 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
     {
         $options = &PEAR::getStaticProperty('DB_DataObject','options');
         
+        $ff = HTML_Flexyframework::get();
+        
         $url = parse_url($options['database']);
         // hide stuff for web..
         $cli = $options['cli'];
@@ -221,7 +224,8 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
         require_once 'System.php';
         $cat = System::which('cat');
         $mysql = System::which('mysql');
-        
+        //print_r($ff);
+        //print_r($options['mods'] );
         foreach($this->modsql as $m => $fl)
         {
             if ($cli && isset($options['database_'. $m])) {
@@ -234,13 +238,14 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
                 (!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 = dirname(__FILE__). "/../$m/DataObjects/$f";
+                $fn = $ff->page->rootDir. "/Pman/$m/DataObjects/$f";
                 $cmd = $cat . ' ' . escapeshellarg($fn) . " | $mysql_cmd -f ";
                 echo $cmd. ($cli ? "\n" : "<BR>\n");
                 if ($cli) {
@@ -272,12 +277,13 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
             return;
         }
         
+        $ff = HTML_Flexyframework::get();
         
-        
-        $top = dirname(__FILE__).'/..';
+        $top = $ff->page->rootDir .'/Pman';
         $this->modtables = array();
         $this->modmap = array();
         $this->modmapsql = array();
+        
         foreach(scandir($top) as $m) {
             
             if (!strlen($m) || 
@@ -308,6 +314,7 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
         $options['modtables'] = $this->modtables;
         $options['modmap'] = $this->modmap;
         $options['modsql'] = $this->modsql;
+       // print_r($options);
         
     }
     /**
@@ -325,6 +332,9 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
             $this->scanModules();
         }
          $options = &PEAR::getStaticProperty('DB_DataObject','options');
+        $builder_options = PEAR::getStaticProperty('Pman_Builder','options');
+        $ignore = empty($builder_options['skip_tables']) ? array() : $builder_options['skip_tables'];
+        
          $mods = $options['mods'];
         $inis = array();
         $this->_newConfig = '';
@@ -332,12 +342,24 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
             
             $tn  = strtolower($this->table);
             //print_r($this->modmap);//[$tn]);//
+            
+            
+            
             if (!isset($this->modmap[$tn])) {
-                die("No existing DataObject file found for table {$this->table} \n".
-                    "- create an empty file in the related Module/DataObjects directory
-                    eg. 
-                    touch Pman/????/DataObjects/".ucfirst($this->table).".php
-                   \n");
+                
+                if (in_array($this->table, $ignore)) {
+                    continue;
+                }
+             
+             
+                die("No existing DataObject file found for table {$this->table} 
+                
+- either add it to Pman_Builder[skip_tables] or\n
+- create an empty file in the related Module/DataObjects directory
+eg. 
+touch Pman/????/DataObjects/".ucfirst($this->table).".php
+
+");
                     
             }
             $mod = $this->modmap[$tn];
@@ -381,6 +403,9 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
       // print_R($this->modmap);
        // die("generateClasses");
         $options = &PEAR::getStaticProperty('DB_DataObject','options');
+        
+        $ff = HTML_Flexyframework::get();
+        
         $rd = $options['rootDir'];
         $mods = $options['mods'];
         $this->_extends = 'DB_DataObject';
@@ -401,7 +426,7 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
            
            
             $outfilename    = $rd.'/'.$mod.'/'. ucfirst($this->table).'.php';
-            $orig           = dirname(__FILE__). '/../'.$mod.'/DataObjects/'. ucfirst($this->table).'.php';
+            $orig           = $ff->page->rootDir .'/Pman/'.$mod.'/DataObjects/'. ucfirst($this->table).'.php';
             
            
                 // file_get_contents???
@@ -431,10 +456,16 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
    // function generateClasses() { }
    
     var $jsHeader = "//<script type=\"text/javascript\">\n";
-        
+    /**
+     * 
+     * generate the reader tables.. 
+     * I'm not sure if this is needed any more, as our desktop builder 
+     * generates that data anyway.
+     * 
+     */
     function generateRoo()
     {
-         
+        
         $options = &PEAR::getStaticProperty('DB_DataObject','options');
          $mods = $options['mods'];
         $this->rootDir = $options['rootDir'];
@@ -479,8 +510,8 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
     
     function _generateReaders($m)
     {
-         
-        $udb = ucfirst($this->_database);
+        $ff = HTML_FlexyFramework::get();
+        
         $ret = $this->jsHeader;
         $j = new Pman_Builder_Generator_JSON();
         $j->indent = 0;
@@ -504,7 +535,7 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
                 }
             }
             $this->readersArgs[$this->table]['xtype'] = 'JsonReader';
-            $ret.="\n$udb.Readers.$utable = ";
+            $ret.="\n{$ff->project}.Readers.$utable = ";
             $x = $j->encodeUnsafe($this->readersArgs[$this->table]);
             $ret .=  trim(substr($x, 0, -1)) . ",\n"; // strip of trailing ;};
             $ret .=  $j->tab . "fields : [\n". $j->tab.$j->tab;
@@ -813,7 +844,7 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
             'id' => 'id', // primary key!!?
         );
          
-        $d = $this->tableToData($this->_definitions[$table]);
+        $d = $this->tableToData($table, $this->_definitions[$table]);
         
         $this->tablekeys[$this->table]  = $d['tablekey'];
         
@@ -822,7 +853,7 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
             // store the globals
         $this->def['order'][$table] = $d['order'];
         $this->def['readers'][$table]= $d['readers'];
-        $this->def['colmodels'][$table] = $d['colmodes'];
+        $this->def['colmodels'][$table] = $d['colmodels'];
         $this->def['forms'][$table] = $d['forms'];
         
         $this->readersArgs[$table]   = $d['args'];
@@ -832,18 +863,22 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
     }
     
      
-    
-   
-    
      
-      
    
     function parseConfig()
     {
+         $options = &PEAR::getStaticProperty('DB_DataObject','options');
         
-        $dirs = array(dirname(__FILE__).'/../DataObjects');
+        if (isset($options['modtables'])) {
+            $this->modtables = $options['modtables'];
+            $this->modmap = $options['modmap'];
+            $this->modsql = $options['modsql'];
+        }
+        
+        $ff = HTML_Flexyframework::get();
+        $dirs = array($ff->page->rootDir.'/Pman/DataObjects'); // not used anymore!
         foreach($this->modtables as $m=>$ts) {
-            $dirs[] = dirname(__FILE__).'/../'.$m.'/DataObjects';
+            $dirs[] = $ff->page->rootDir.'/Pman/'.$m.'/DataObjects';
         }
         $ini = array('database__render' => array());
         foreach($dirs as $d) {
@@ -879,6 +914,13 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
     function mergeConfig($table, $conf, $render)
     {
         $this->mapcols[$table] = array();
+        $options = &PEAR::getStaticProperty('DB_DataObject','options');
+        if (isset($options['modtables'])) {
+            $this->modtables = $options['modtables'];
+            $this->modmap = $options['modmap'];
+            $this->modsql = $options['modsql'];
+        }
+        
         
         foreach($conf as $ocol=>$info) {
             // format col => showval..