DataObjects/Core_project.php
[Pman.Core] / UpdateDatabase.php
index 4f579d5..1b3f1af 100644 (file)
@@ -68,7 +68,6 @@ class Pman_Core_UpdateDatabase extends Pman
             'max' => 1,
         ),
         
-        
         'json-person' => array(
             'desc' => 'Person JSON file',
             'default' => '',
@@ -126,7 +125,7 @@ class Pman_Core_UpdateDatabase extends Pman
         $this->authUser = $au;
         return true;
     }
-     
+    
     function get($args, $opts)
     {
         PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
@@ -135,6 +134,12 @@ class Pman_Core_UpdateDatabase extends Pman
    
         $ff = HTML_FlexyFramework::get();
         
+        if(!empty($ff->Core_Notify)){
+//            require_once 'Pman/Core/NotifySmtpCheck.php';
+//            $x = new Pman_Core_NotifySmtpCheck();
+//            $x->check();
+        }
+        
         $this->disabled = explode(',', $ff->disable);
         
         //$this->fixSequencesPgsql();exit;
@@ -144,6 +149,15 @@ class Pman_Core_UpdateDatabase extends Pman
         
         $this->checkOpts($opts);
         
+        
+        // do this first, so the innodb change + utf8 fixes column max sizes
+        
+        // this will trigger errors about freetext indexes - we will have to remove them manually.?
+        // otherwise we need to do an sql query to find them, then remove them (not really worth it as it only affects really old code..)
+        
+        $this->runExtensions(); 
+
+        
         if (empty($opts['data-only'])) {
             $this->importSQL();
         }
@@ -780,14 +794,15 @@ class Pman_Core_UpdateDatabase extends Pman
                 }
                 $g = DB_DataObject::Factory('Groups')->lookup('name',$data['bcc_group']);
                 
-                if (!$g) {
+                if (empty($g->id)) {
                     $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");
+                    $this->jerr("bcc_group {$data['bcc_group']} does not have any members");
                 }
                 
-                
                 $cm->bcc_group = $g->id;
             }
             if (empty($cm->test_class)) {
@@ -814,7 +829,8 @@ class Pman_Core_UpdateDatabase extends Pman
                 echo "email: {$name} - checked\n";
                 continue; /// we do not import the body content of templates that exist...
             } else {
-                $cm->insert();
+                
+                //$cm->insert();
             }
             
             
@@ -830,7 +846,7 @@ class Pman_Core_UpdateDatabase extends Pman
             }
             require_once 'Pman/Core/Import/Core_email.php';
             $x = new Pman_Core_Import_Core_email();
-            $x->get('', $opts);
+            $x->updateOrCreateEmail('', $opts, $cm);
             
             echo "email: {$name} - CREATED\n";
         }
@@ -869,6 +885,29 @@ class Pman_Core_UpdateDatabase extends Pman
             die("Error: set innodb_file_per_table = 1 in my.cnf\n\n");
         }
         
+        $db = DB_DataObject::factory('core_enum');
+        $db->query("select version() as version");
+        $db->fetch();
+        
+        if (version_compare($db->version, '5.7', '>=' )) {
+                
+            $db = DB_DataObject::factory('core_enum');
+            $db->query("show variables like 'sql_mode'");
+            $db->fetch();
+            
+            $modes = explode(",", $db->Value);
+            
+            // these are 'new' problems with mysql.
+            if(
+                    in_array('NO_ZERO_IN_DATE', $modes) ||
+                    in_array('NO_ZERO_DATE', $modes) ||
+                    in_array('STRICT_TRANS_TABLES', $modes) || 
+                    !in_array('ALLOW_INVALID_DATES', $modes)
+            ){
+                die("Error: set sql_mode include 'ALLOW_INVALID_DATES', remove 'NO_ZERO_IN_DATE' AND 'STRICT_TRANS_TABLES' AND 'NO_ZERO_DATE' in my.cnf\n\n");
+            }
+        }
+        
         $done_check = true;;