UpdateDatabase.php
[Pman.Core] / UpdateDatabase.php
index 568b3c4..3207977 100644 (file)
@@ -81,6 +81,14 @@ class Pman_Core_UpdateDatabase extends Pman
             'max' => 1,
             
         ),
+        'debug' => array(
+            'desc' => 'Debug the database',
+            'short' => 'D',
+            'default' => '',
+            'min' => 1,
+            'max' => 1,
+            
+        ),
     );
     
     static function cli_opts()
@@ -100,9 +108,11 @@ class Pman_Core_UpdateDatabase extends Pman
             require_once $fd;
             
             $cls = new ReflectionClass('Pman_'. $m . '_UpdateDatabase');
-            
-            $ret = array_merge($ret, $cls->getStaticPropertyValue('cli_opts'));
-            
+            $ar = $cls->getStaticProperties();
+            if (isset($ar['cli_opts'])) {
+                  
+                $ret = array_merge($ret, $cls->getStaticPropertyValue('cli_opts'));
+            }
             
         }
         
@@ -137,6 +147,7 @@ class Pman_Core_UpdateDatabase extends Pman
     
     function get($args, $opts=array())
     {
+         
         PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
    
         $this->checkSystem();
@@ -166,10 +177,15 @@ class Pman_Core_UpdateDatabase extends Pman
         //$this->fixSequencesPgsql();exit;
         $this->opts = $opts;
         
+        if (!empty($opts['debug'])) {
+             DB_DataObject::DebugLevel($opts['debug']);
+        }
+        
         // ask all the modules to verify the opts
         
         $this->checkOpts($opts);
         
+          
         
         // do this first, so the innodb change + utf8 fixes column max sizes
         
@@ -186,6 +202,8 @@ class Pman_Core_UpdateDatabase extends Pman
             return;
         }
         
+        
+
         $this->runUpdateModulesData();
         
         if (!empty($opts['add-company']) && !in_array('Core', $this->disabled)) {
@@ -196,11 +214,12 @@ class Pman_Core_UpdateDatabase extends Pman
         
         $this->runExtensions();
         
-        $this->generateDataobjectsCache();
+        $this->clearApacheDataobjectsCache();
         
          
     }
     function output() {
+        echo "\nUpdate Completed SUCCESS\n";
         return '';
     }
      /**
@@ -688,7 +707,8 @@ class Pman_Core_UpdateDatabase extends Pman
     
     function updateDataEnums()
     {
-        
+        HTML_FlexyFramework::get()->generateDataobjectsCache(true);
+
         $enum = DB_DataObject::Factory('core_enum');
         //DB_DAtaObject::debugLevel(1);
         $enum->initEnums(
@@ -815,16 +835,17 @@ class Pman_Core_UpdateDatabase extends Pman
     }
     
     
-    function initEmails($templateDir, $emails, $active = 1, $to_group = -1)
+    function initEmails($templateDir, $emails, $mapping = false)
     {
-      
+        HTML_FlexyFramework::get()->generateDataobjectsCache(true);
+
         $pg = HTML_FlexyFramework::get()->page;
         foreach($emails as $name=>$data) {
             $cm = DB_DataObject::factory('core_email');
             $update = $cm->get('name', $name);
             $old = clone($cm);
             
-            if (empty($cm->bcc_group)) {
+            if (empty($cm->bcc_group_id)) {
                 if (empty($data['bcc_group'])) {
                     $this->jerr("missing bcc_group for template $name");
                 }
@@ -834,12 +855,11 @@ class Pman_Core_UpdateDatabase extends Pman
                     $this->jerr("bcc_group {$data['bcc_group']} does not exist when importing template $name");
                 }
                 
-                
                 if (!$g->members('email')) {
                     $this->jerr("bcc_group {$data['bcc_group']} does not have any members");
                 }
                 
-                $cm->bcc_group = $g->id;
+                $cm->bcc_group_id = $g->id;
             }
             // initEmails will always have the latest location of the test class - in theory the user should not be changign the value of this...
             //if (empty($cm->test_class)) {
@@ -848,6 +868,29 @@ class Pman_Core_UpdateDatabase extends Pman
                 }
                 $cm->test_class = $data['test_class'];
             //}
+            if(isset($cm->to_group_id)) {
+                print_r('isset');
+            }
+            
+            if (
+                !empty($data['to_group']) &&
+                (!isset($cm->to_group_id) || !empty($cm->to_group_id)) 
+            ) {
+                $gp = DB_DataObject::Factory('core_group')->lookup('name',$data['to_group']);
+                
+                if (empty($gp->id)) {
+                    $this->jerr("to_group {$data['to_group']} does not exist when importing template $name");
+                }
+                
+                $cm->to_group_id = $gp->id;
+            }
+            
+            if(
+                isset($data['active']) && !isset($cm->active)
+            ) {
+                $cm->active = $data['active'];
+            }
+            
             require_once $cm->test_class . '.php';
             
             $clsname = str_replace('/','_', $cm->test_class);
@@ -883,7 +926,8 @@ class Pman_Core_UpdateDatabase extends Pman
             }
             require_once 'Pman/Core/Import/Core_email.php';
             $x = new Pman_Core_Import_Core_email();
-            $x->updateOrCreateEmail('', $opts, $cm);
+            
+            $x->updateOrCreateEmail('', $opts, $cm, $mapping);
             
             echo "email: {$name} - CREATED\n";
         }
@@ -897,6 +941,8 @@ class Pman_Core_UpdateDatabase extends Pman
             PDO_DataObject_Introspection::$cache = array();
         }
         HTML_FlexyFramework::get()->generateDataobjectsCache(true);
+        
+         
         $this->updateDataEnums();
         $this->updateDataGroups();
         $this->updateDataCompanies();
@@ -1141,11 +1187,22 @@ class Pman_Core_UpdateDatabase extends Pman
         
     }
     
-    function generateDataobjectsCache()
+    function clearApacheDataobjectsCache()
     {
+        
+        // this needs to clear it's own cache along with remote one..
+  
         $url = "http://localhost{$this->local_base_url}/Core/RefreshDatabaseCache";
-            
-        $this->curl($url);
+        
+        $response = $this->curl($url);
+        
+        $json = json_decode($response, true);
+        
+        if(empty($json['data']) || $json['data'] != 'DONE'){
+            echo $response. "\n";
+            echo "CURL clear cache failed\n";
+            exit;
+        }
         
     }