sync
[Pman.Core] / UpdateDatabase.php
index 11a3ca0..ee26b73 100644 (file)
@@ -61,6 +61,12 @@ class Pman_Core_UpdateDatabase extends Pman
             'min' => 1,
             'max' => 1,
         ),
+        'skip-mysql-checks' => array(
+            'desc' => 'Skip mysql checks',
+            'default' => '',
+            'min' => 1,
+            'max' => 1,
+        ),
         'procedures-only' => array(
             'desc' => 'Only import procedures (not supported by most modules yet) - ignores sql directory',
             'default' => '',
@@ -144,7 +150,7 @@ class Pman_Core_UpdateDatabase extends Pman
         $ff = HTML_FlexyFramework::get();
         
         if(!isset($ff->Pman) || !isset($ff->Pman['local_base_url'])){
-            die("Please setup local_base_url");
+            die("Please setup Pman[local_base_url]\n");
         }
         
         $this->local_base_url = $ff->Pman['local_base_url'];
@@ -195,6 +201,7 @@ class Pman_Core_UpdateDatabase extends Pman
          
     }
     function output() {
+        echo "\nUpdate Completed SUCCESS\n";
         return '';
     }
      /**
@@ -676,14 +683,14 @@ class Pman_Core_UpdateDatabase extends Pman
             echo "$module\n";
             $x->updateData();
         }
-            
-        print_R('run?????');exit;
+        
     }
     
     
     function updateDataEnums()
     {
-        
+        HTML_FlexyFramework::get()->generateDataobjectsCache(true);
+
         $enum = DB_DataObject::Factory('core_enum');
         //DB_DAtaObject::debugLevel(1);
         $enum->initEnums(
@@ -739,7 +746,8 @@ class Pman_Core_UpdateDatabase extends Pman
                             
                         
                     )
-                ),
+                )
+               
             )
         ); 
         
@@ -763,6 +771,8 @@ class Pman_Core_UpdateDatabase extends Pman
                 'name' => 'core-person-signup-bcc',
                 'type' => 0, // system
             ),
+        
+
         ));
         
     }
@@ -807,16 +817,17 @@ class Pman_Core_UpdateDatabase extends Pman
     }
     
     
-    function initEmails($templateDir, $emails)
+    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");
                 }
@@ -826,19 +837,42 @@ 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;
             }
-            if (empty($cm->test_class)) {
+            // 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)) {
                 if (empty($data['test_class'])) {
                     $this->jerr("missing test_class for template $name");
                 }
                 $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);
@@ -874,7 +908,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";
         }
@@ -907,13 +942,18 @@ class Pman_Core_UpdateDatabase extends Pman
         if ($done_check) {
             return;
         }
+        
+        
+        if (!empty($this->opts['skip-mysql-checks'])) {
+            return;
+        }
         // innodb in single files is far more efficient that MYD or one big innodb file.
         // first check if database is using this format.
         $db = DB_DataObject::factory('core_enum');
         $db->query("show variables like 'innodb_file_per_table'");
         $db->fetch();
         if ($db->Value == 'OFF') {
-            die("Error: set innodb_file_per_table = 1 in my.cnf\n\n");
+            die("Error: set innodb_file_per_table = 1 in my.cnf (or run with --skip-mysql-checks\n\n");
         }
         
         $db = DB_DataObject::factory('core_enum');
@@ -1070,25 +1110,26 @@ class Pman_Core_UpdateDatabase extends Pman
     }
     
     
-    function checkSystem()
+    function checkSystem($req = false, $pref = false)
     {
         // most of these are from File_Convert...
         
         // these are required - and have simple dependancies.
         require_once 'System.php';
-        $req = array( 
+        $req = $req !== false ? $req : array( 
             'convert',
             'grep',
             'pdfinfo',
             'pdftoppm',
             'rsvg-convert',  //librsvg2-bin
             'strings',
+            'oathtool'
         );
          
          
          
         // these are prefered - but may have complicated depenacies
-        $pref= array(
+        $pref = $pref !== false ? $pref :  array(
             'abiword',
             'faad',
             'ffmpeg',
@@ -1128,12 +1169,10 @@ class Pman_Core_UpdateDatabase extends Pman
     
     function generateDataobjectsCache()
     {
-        $url = "http://localhost{$this->local_base_url}/Roo/Core/RefreshDatabaseCache";
+        $url = "http://localhost{$this->local_base_url}/Core/RefreshDatabaseCache";
             
-        $response = $this->curl($url);
+        $this->curl($url);
         
-        echo "here\n";
-        print_r($response);exit;
     }
     
     function curl($url, $request = array(), $method = 'GET') 
@@ -1160,7 +1199,7 @@ class Pman_Core_UpdateDatabase extends Pman
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
         
         curl_setopt($ch, CURLOPT_HEADER, false);
-        curl_setopt($ch, CURLOPT_VERBOSE, 1);
+        curl_setopt($ch, CURLOPT_VERBOSE, 0);
         curl_setopt($ch, CURLOPT_TIMEOUT, 30);
         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
 
@@ -1173,4 +1212,4 @@ class Pman_Core_UpdateDatabase extends Pman
     
     
     
-}
\ No newline at end of file
+}