Pman.Tab.BuilderView.bjs
[Pman.Builder] / Generator.php
index f463af0..bd15eaf 100644 (file)
@@ -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);
        
@@ -114,7 +116,6 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
        
        
        
-          $ff = HTML_FlexyFramework::get();
        
        
        
@@ -128,7 +129,7 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
         // now for each of the directories copy/show diffs..
         echo $cli ? '' : '<PRE>';
         $flist = explode(',', $overwrite);
-        foreach($ff->page->modtables as $m=>$ar) {
+        foreach($this->modtables as $m=>$ar) {
             if ($options['database'] !=  $standard_database) {
                 $options['database'] =  $standard_database ;
                 
@@ -207,7 +208,7 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
     {
         $options = &PEAR::getStaticProperty('DB_DataObject','options');
         
-        $ff = HTML_FlexyFramework::get();
+        $ff = HTML_Flexyframework::get();
         
         $url = parse_url($options['database']);
         // hide stuff for web..
@@ -223,8 +224,9 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
         require_once 'System.php';
         $cat = System::which('cat');
         $mysql = System::which('mysql');
-        
-        foreach($ff->page->modsql as $m => $fl)
+        //print_r($ff);
+        //print_r($options['mods'] );
+        foreach($this->modsql as $m => $fl)
         {
             if ($cli && isset($options['database_'. $m])) {
                 $url =parse_url($options['database_'.$m]);
@@ -236,11 +238,12 @@ 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 = $ff->page->rootDir. "/Pman/$m/DataObjects/$f";
                 $cmd = $cat . ' ' . escapeshellarg($fn) . " | $mysql_cmd -f ";
@@ -265,21 +268,22 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
     
     function scanModules()
     {
-        $ff = HTML_FlexyFramework::get();
+        
         $options = &PEAR::getStaticProperty('DB_DataObject','options');
         if (isset($options['modtables'])) {
-            $ff->page->modtables = $options['modtables'];
-            $ff->page->modmap = $options['modmap'];
-            $ff->page->modsql = $options['modsql'];
+            $this->modtables = $options['modtables'];
+            $this->modmap = $options['modmap'];
+            $this->modsql = $options['modsql'];
             return;
         }
         
-        
+        $ff = HTML_Flexyframework::get();
         
         $top = $ff->page->rootDir .'/Pman';
-        $ff->page->modtables = array();
-        $ff->page->modmap = array();
-        $ff->page->modmapsql = array();
+        $this->modtables = array();
+        $this->modmap = array();
+        $this->modmapsql = array();
+        
         foreach(scandir($top) as $m) {
             
             if (!strlen($m) || 
@@ -289,27 +293,28 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
                 ) {
                 continue;
             }
-            $ff->page->modtables[$m] = array();
-            $ff->page->modsql[$m] = array();
+            $this->modtables[$m] = array();
+            $this->modsql[$m] = array();
             foreach(scandir($top .'/'.$m.'/DataObjects') as $f) {
                 if (!strlen($f) ||   $m[0] == '.') {
                     continue;
                 }
                 if (preg_match('/\.sql$/', $f))  {
-                    $ff->page->modsql[$m][] = $f;
+                    $this->modsql[$m][] = $f;
                 }
                                 
                 if (preg_match('/\.php$/', $f))  {
                     $tn = strtolower(preg_replace('/\.php$/', '', $f));
-                    $ff->page->modtables[$m][] = $tn;
-                    $ff->page->modmap[$tn] = $m;
+                    $this->modtables[$m][] = $tn;
+                    $this->modmap[$tn] = $m;
                     continue;
                 }
             }
         }
-        $options['modtables'] = $ff->page->modtables;
-        $options['modmap'] = $ff->page->modmap;
-        $options['modsql'] = $ff->page->modsql;
+        $options['modtables'] = $this->modtables;
+        $options['modmap'] = $this->modmap;
+        $options['modsql'] = $this->modsql;
+       // print_r($options);
         
     }
     /**
@@ -323,26 +328,41 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
             $this->debug("-- NO TABLES -- \n");
             return;
         }
-        if (!isset($ff->page->modmap)) {
+        if (!isset($this->modmap)) {
             $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 = '';
         foreach($this->tables as $this->table) {
             
             $tn  = strtolower($this->table);
-            //print_r($ff->page->modmap);//[$tn]);//
-            if (!isset($ff->page->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");
+            //print_r($this->modmap);//[$tn]);//
+            
+            
+            
+            if (!isset($this->modmap[$tn])) {
+                
+                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 = $ff->page->modmap[$tn];
+            $mod = $this->modmap[$tn];
             $inis[$mod] = isset($inis[$mod]) ? $inis[$mod] : '';
             
             
@@ -380,10 +400,11 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
     
     function generateClasses() 
     {
-      // print_R($ff->page->modmap);
+      // print_R($this->modmap);
        // die("generateClasses");
         $options = &PEAR::getStaticProperty('DB_DataObject','options');
-        $ff = HTML_FlexyFramework::get();
+        
+        $ff = HTML_Flexyframework::get();
         
         $rd = $options['rootDir'];
         $mods = $options['mods'];
@@ -394,7 +415,7 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
         foreach($this->tables as $this->table) {
             $this->table        = trim($this->table);
             $tn  = strtolower($this->table);
-            $mod = $ff->page->modmap[$tn];
+            $mod = $this->modmap[$tn];
             
              if (!empty($mods) && !in_array($mod, $mods)) {
                 continue;
@@ -435,12 +456,17 @@ 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');
-           $ff = HTML_FlexyFramework::get();
          $mods = $options['mods'];
         $this->rootDir = $options['rootDir'];
         $this->overwrite = true;
@@ -466,7 +492,7 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
         $ds = ucfirst($this->_database);
        
         // we always write these files....
-        foreach($ff->page->modtables as $m=>$ts) {
+        foreach($this->modtables as $m=>$ts) {
              if (!empty($mods) && !in_array($m, $mods)) {
                 continue;
             }
@@ -484,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;
@@ -496,7 +522,7 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
         foreach($this->tables as $this->table) {
             
             
-            if ($ff->page->modmap[strtolower($this->table)] != $m) {
+            if ($this->modmap[strtolower($this->table)] != $m) {
                 continue;
             }
             
@@ -509,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;
@@ -818,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'];
         
@@ -827,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'];
@@ -836,15 +862,22 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
         
     }
     
-      
+     
+     
+   
     function parseConfig()
     {
-        $ff = HTML_FlexyFramework::get();
+         $options = &PEAR::getStaticProperty('DB_DataObject','options');
         
-        //print_r($ff);
+        if (isset($options['modtables'])) {
+            $this->modtables = $options['modtables'];
+            $this->modmap = $options['modmap'];
+            $this->modsql = $options['modsql'];
+        }
         
-         $dirs = array($ff->page->rootDir.'/Pman/DataObjects'); // not used anymore!
-        foreach($ff->page->modtables as $m=>$ts) {
+        $ff = HTML_Flexyframework::get();
+        $dirs = array($ff->page->rootDir.'/Pman/DataObjects'); // not used anymore!
+        foreach($this->modtables as $m=>$ts) {
             $dirs[] = $ff->page->rootDir.'/Pman/'.$m.'/DataObjects';
         }
         $ini = array('database__render' => array());
@@ -862,7 +895,8 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
             $ini['database__render'] = array_merge($ini['database__render'] , $r);
         }
          //echo '<PRE>';print_R($ini);//exit;
-         
+        
+        
         if (!isset($ini['database__render'])) {
             die("database__render not available in links files.");
             return;
@@ -880,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..
@@ -895,9 +936,7 @@ class Pman_Builder_Generator extends DB_DataObject_Generator
             // reader:
             //- just add an extra line..
             if (!isset($this->def['readers'][$tab][$rshow])){
-                
                 echo "WARNING in links.ini TABLE $tab does not have renderer $rshow <BR>\n";
-                print_r($this->def['readers']);exit;
                 continue;
             }