DataObjects/Core_company.php
[Pman.Core] / UpdateDatabase.php
index 2910806..3b4b4ec 100644 (file)
@@ -68,7 +68,6 @@ class Pman_Core_UpdateDatabase extends Pman
             'max' => 1,
         ),
         
-        
         'json-person' => array(
             'desc' => 'Person JSON file',
             'default' => '',
@@ -126,19 +125,22 @@ class Pman_Core_UpdateDatabase extends Pman
         $this->authUser = $au;
         return true;
     }
-     
-    function get($args, $opts)
+    
+    function get($args, $opts=array())
     {
         PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
    
         $this->checkSystem();
+        
+        
+        HTML_FlexyFramework::get()->generateDataobjectsCache(true);
    
         $ff = HTML_FlexyFramework::get();
         
         if(!empty($ff->Core_Notify)){
-            require_once 'Pman/Core/NotifySmtpCheck.php';
-            $x = new Pman_Core_NotifySmtpCheck();
-            $x->check();
+//            require_once 'Pman/Core/NotifySmtpCheck.php';
+//            $x = new Pman_Core_NotifySmtpCheck();
+//            $x->check();
         }
         
         $this->disabled = explode(',', $ff->disable);
@@ -150,6 +152,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();
         }
@@ -163,7 +174,7 @@ class Pman_Core_UpdateDatabase extends Pman
         if (!empty($opts['add-company']) && !in_array('Core', $this->disabled)) {
             // make sure we have a good cache...?
            
-            DB_DataObject::factory('companies')->initCompanies($this, $opts);
+            DB_DataObject::factory('core_company')->initCompanies($this, $opts);
         }
         
         $this->runExtensions();
@@ -191,6 +202,8 @@ class Pman_Core_UpdateDatabase extends Pman
         //$this->{'import' . $url['scheme']}($url);
         
         $dbtype = $dburl['scheme'];
+        
+        
         $dirmethod = 'import' . $dburl['scheme'] . 'dir';
         
         
@@ -355,7 +368,9 @@ class Pman_Core_UpdateDatabase extends Pman
      * 
      *
      */
-    
+    function importmysqlidir($dburl, $dir) {
+        return $this->importmysqldir($dburl, $dir);
+    }
     
     function importmysqldir($dburl, $dir)
     {
@@ -711,7 +726,7 @@ class Pman_Core_UpdateDatabase extends Pman
     function updateDataGroups()
     {
          
-        $groups = DB_DataObject::factory('groups');
+        $groups = DB_DataObject::factory('core_group');
         $groups->initGroups();
         
         $groups->initDatabase($this,array(
@@ -735,7 +750,7 @@ class Pman_Core_UpdateDatabase extends Pman
     {
          
         // fix comptypes enums..
-        $c = DB_DataObject::Factory('Companies');
+        $c = DB_DataObject::Factory('core_company');
         $c->selectAdd();
         $c->selectAdd('distinct(comptype) as comptype');
         $c->whereAdd("comptype != ''");
@@ -753,11 +768,11 @@ class Pman_Core_UpdateDatabase extends Pman
         $c->initEnums($ctb);
         //DB_DataObject::debugLevel(1);
         // fix comptypeid
-        $c = DB_DataObject::Factory('Companies');
+        $c = DB_DataObject::Factory('core_company');
         $c->query("
-            UPDATE Companies 
+            UPDATE {$c->tableName()} 
                 SET
-                    comptype_id = (SELECT id FROM core_enum where etype='comptype' and name=Companies.comptype LIMIT 1)
+                    comptype_id = (SELECT id FROM core_enum where etype='comptype' and name={$c->tableName()}.comptype LIMIT 1)
                 WHERE
                     comptype_id = 0
                     AND
@@ -784,14 +799,15 @@ class Pman_Core_UpdateDatabase extends Pman
                 if (empty($data['bcc_group'])) {
                     $this->jerr("missing bcc_group for template $name");
                 }
-                $g = DB_DataObject::Factory('Groups')->lookup('name',$data['bcc_group']);
+                $g = DB_DataObject::Factory('core_group')->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;
@@ -820,7 +836,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();
             }
             
             
@@ -836,7 +853,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";
         }
@@ -875,6 +892,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;;