DataObjects/Core_watch.php
[Pman.Core] / UpdateDatabase.php
index b13388d..3bb92ef 100644 (file)
@@ -1,6 +1,15 @@
 <?php
 
-
+/**
+ *
+ * This applies database files from
+ * a) OLD - {MODULE}/DataObjects/XXXX.{dbtype}.sql
+ *
+ * b) NEW - {MODULE}/sql/XXX.sql (SHARED or translable)
+ *  and {MODULE}/{dbtype}/XXX.sql (SHARED or translable)
+ *
+ *
+ */
 
 require_once 'Pman.php';
 class Pman_Core_UpdateDatabase extends Pman
@@ -9,16 +18,6 @@ class Pman_Core_UpdateDatabase extends Pman
     static $cli_desc = "Update SQL - Beta";
  
  
-    static $cli_opts = array(
-        'account' => array(
-            'desc' => 'Account name primary email? (email)',
-            'short' => 'a',
-            
-            'min' => 1,
-            'max' => 1,
-            
-        )
-    );
     
     var $cli = false;
     function getAuth() {
@@ -62,6 +61,13 @@ class Pman_Core_UpdateDatabase extends Pman
         $this->{'import' . $url['scheme']}($url);
         
     }
+    
+    /**
+     * mysql - does not support conversions.
+     * 
+     *
+     */ 
+    
     function importmysql($url)
     {
         
@@ -82,7 +88,7 @@ class Pman_Core_UpdateDatabase extends Pman
         echo $mysql_cmd . "\n" ;
         
         
-        
+        // old -- DAtaObjects/*.sql
         
         foreach($ar as $m) {
             
@@ -94,7 +100,12 @@ class Pman_Core_UpdateDatabase extends Pman
                 if (preg_match('/migrate/i', basename($fn))) { // skip migration scripts at present..
                     continue;
                 }
-                
+                // .my.sql but not .pg.sql
+                if (preg_match('#\.[a-z]{2}\.sql#i', basename($fn))
+                    && !preg_match('#\.my\.sql#i', basename($fn))
+                ) { // skip migration scripts at present..
+                    continue;
+                }
                 $cmd = "$mysql_cmd -f < " . escapeshellarg($fn) ;
                 
                 echo $cmd. ($this->cli ? "\n" : "<BR>\n");
@@ -103,6 +114,29 @@ class Pman_Core_UpdateDatabase extends Pman
             
                 
             }
+            // new -- sql directory..
+            // new style will not support migrate ... they have to go into mysql-migrate.... directories..
+            // new style will not support pg.sql etc.. naming - that's what the direcotries are for..
+            $fd = $this->rootDir. "/Pman/$m/sql";
+            
+            foreach(glob($fd.'/*.sql') as $fn) {
+                $cmd = "$mysql_cmd -f < " . escapeshellarg($fn) ;
+                echo $cmd. ($this->cli ? "\n" : "<BR>\n");
+                passthru($cmd);
+            }
+            $fd = $this->rootDir. "/Pman/$m/mysql";
+            
+            foreach(glob($fd.'/*.sql') as $fn) {
+                $cmd = "$mysql_cmd -f < " . escapeshellarg($fn) ;
+                echo $cmd. ($this->cli ? "\n" : "<BR>\n");
+                passthru($cmd);
+            }
+              
+            
+            
+            
+            
+            
         }
         
         
@@ -144,18 +178,49 @@ class Pman_Core_UpdateDatabase extends Pman
                 if (preg_match('/migrate/i', basename($bfn))) { // skip migration scripts at present..
                     continue;
                 }
-                $fn = $this->convertToPG($bfn);
+                if (preg_match('#\.[a-z]{2}\.sql#i', basename($bfn))
+                    && !preg_match('#\.pg\.sql#i', basename($bfn))
+                ) { // skip migration scripts at present..
+                    continue;
+                }
+                // files ending in .pg.sql are native postgres files..
+                $fn = preg_match('#\.pg\.sql$#', basename($bfn)) ? false : $this->convertToPG($bfn);
                 
-                $cmd = "$psql_cmd -f  " . escapeshellarg($fn) . ' 2>&1' ;
+                $cmd = "$psql_cmd  < " . escapeshellarg($fn ? $fn : $bfn) . ' 2>&1' ;
                 
                 echo "$bfn:   $cmd ". ($this->cli ? "\n" : "<BR>\n");
                 
                 
-                $res = `$cmd`;
+                passthru($cmd);
                 
+                if ($fn) {
+                    unlink($fn);
+                }
+            }
+            
+            
+            
+            $fd = $this->rootDir. "/Pman/$m/sql";
+            // sql directory  - we try to convert..
+            foreach(glob($fd.'/*.sql') as $bfn) {
+                $fn =  $this->convertToPG($bfn);
+                $cmd = "$psql_cmd  < " . escapeshellarg($fn) ;
+                echo $cmd. ($this->cli ? "\n" : "<BR>\n");
+                passthru($cmd);
+            }
+            
+            // postgres specific directory..
+            
+            $fd = $this->rootDir. "/Pman/$m/pgsql";
             
-                unlink($fn);
+            foreach(glob($fd.'/*.sql') as $fn) {
+                $cmd = "$psql_cmd   < " . escapeshellarg($fn) ;
+                echo $cmd. ($this->cli ? "\n" : "<BR>\n");
+                passthru($cmd);
             }
+            
+            
+            
         }
         
     }