Process/Php7.php
[Pman.Core] / UpdateDatabase.php
index 9f0b460..2385354 100644 (file)
@@ -113,7 +113,6 @@ class Pman_Core_UpdateDatabase extends Pman
                   
                 $ret = array_merge($ret, $cls->getStaticPropertyValue('cli_opts'));
             }
-            
         }
         
         return $ret;
@@ -129,6 +128,7 @@ class Pman_Core_UpdateDatabase extends Pman
     
     var $emailTemplates = array(
         'EVENT_ERRORS_REPORT' => array(
+            'bcc_group' => 'Empty Group',
             'test_class' => 'Pman/Admin/Report/SendEventErrors',
             'to_group' => 'Administrators',
             'active' => 1,
@@ -137,6 +137,11 @@ class Pman_Core_UpdateDatabase extends Pman
         )
     );
     
+    var $required_extensions = array(
+        'curl',
+        'gd'
+    );
+    
     function getAuth() {
         
         
@@ -157,12 +162,11 @@ class Pman_Core_UpdateDatabase extends Pman
     
     function get($args, $opts=array())
     {
-         
         PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'onPearError'));
    
         $this->checkSystem();
         
-        $this->verifyExtensions(array('curl'));
+        $this->verifyExtensions($this->required_extensions);
         
         if (class_exists('PDO_DataObjects_Introspection')) {
             PDO_DataObject_Introspection::$cache = array();
@@ -194,10 +198,30 @@ class Pman_Core_UpdateDatabase extends Pman
         }
         
         // ask all the modules to verify the opts
-        echo "Checi options\n";
+        echo "Checking options\n";
         $this->checkOpts($opts);
         
-          
+        $response = $this->curl("http://localhost{$this->local_base_url}/Core/UpdateDatabase/VerifyExtensions");
+        $json = json_decode($response, true);
+        
+        if(empty($json['data']) || $json['data'] != 'DONE'){
+            echo "\nError: Missing php extensions:\n";
+            print_r($response);
+            echo "Please install the above extensions and restart the apache.\n";
+            sleep(5);
+            
+            //exit;
+        }
+        
+        echo "Checking Setup Requirements\n";
+        require_once 'Pman/Core/UpdateDatabase/VerifyConfig.php';
+        $sq = new Pman_Core_UpdateDatabase_VerifyConfig();
+        $ret = $sq->get($args, $opts);
+        
+        if(!empty($ret)){
+            echo implode("\n", $ret) . "\n";
+            sleep(30);
+        }
         
         // do this first, so the innodb change + utf8 fixes column max sizes
         
@@ -823,17 +847,21 @@ class Pman_Core_UpdateDatabase extends Pman
         $c = DB_DataObject::Factory('core_company');
         $c->selectAdd();
         $c->selectAdd('distinct(comptype) as comptype');
-        $c->whereAdd("comptype != ''");
+        $c->whereAdd("
+                comptype != '' 
+            AND 
+                comptype != 'undefined' 
+            AND 
+                comptype != 'undefine'
+        ");
         
         $ctb = array();
         foreach($c->fetchAll('comptype') as $cts) {
             
-            
-            
-           $ctb[]= array( 'etype'=>'COMPTYPE', 'name' => $cts, 'display_name' => ucfirst(strtolower($cts)));
+            $ctb[]= array( 'etype'=>'COMPTYPE', 'name' => $cts, 'display_name' => ucfirst(strtolower($cts)));
         
         }
-         $c = DB_DataObject::Factory('core_enum');
+        $c = DB_DataObject::Factory('core_enum');
          
         $c->initEnums($ctb);
         //DB_DataObject::debugLevel(1);
@@ -890,7 +918,7 @@ class Pman_Core_UpdateDatabase extends Pman
                     $this->jerr("bcc_group {$data['bcc_group']} does not exist when importing template $name");
                 }
                 
-                if (!$g->members('email')) {
+                if (!$g->members('email') && $g->name != 'Empty Group') {
                     $this->jerr("bcc_group {$data['bcc_group']} does not have any members");
                 }
                 
@@ -986,7 +1014,6 @@ class Pman_Core_UpdateDatabase extends Pman
         }
         HTML_FlexyFramework::get()->generateDataobjectsCache(true);
         
-         
         $this->updateDataEnums();
         $this->updateDataGroups();
         $this->updateDataCompanies();
@@ -995,10 +1022,6 @@ class Pman_Core_UpdateDatabase extends Pman
         
         $c = DB_DataObject::Factory('I18n');
         $c->buildDB();
-         
-       
-        
-        
     }
     
     function fixMysqlInnodb()
@@ -1041,7 +1064,9 @@ class Pman_Core_UpdateDatabase extends Pman
                     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");
+                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".
+                    "Recommended line: \n\nsql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ALLOW_INVALID_DATES\n\n"
+                );
             }
         }
         
@@ -1189,7 +1214,8 @@ class Pman_Core_UpdateDatabase extends Pman
             'pdftoppm',
             'rsvg-convert',  //librsvg2-bin
             'strings',
-            'oathtool'
+            'oathtool',
+            'gifsicle', // used for gif conversions
         );
          
          
@@ -1238,13 +1264,14 @@ class Pman_Core_UpdateDatabase extends Pman
         echo "Clearing Database Cache\n";
         // this needs to clear it's own cache along with remote one..
   
-        
-        $response = $this->curl("http://localhost{$this->local_base_url}/Core/RefreshDatabaseCache");
+        $url = "http://localhost{$this->local_base_url}/Core/RefreshDatabaseCache";
+        $response = $this->curl($url);
         
         $json = json_decode($response, true);
         
         if(empty($json['data']) || $json['data'] != 'DONE'){
-            echo $response. "\n";
+            echo "fetching $url\n";
+            echo "GOT:" . $response. "\n";
             echo "Clear DataObjects Cache failed\n";
             exit;
         }
@@ -1311,7 +1338,7 @@ class Pman_Core_UpdateDatabase extends Pman
         
         foreach ($extensions as $e){
             
-            if(extension_loaded($e)) {
+            if(empty($e) || extension_loaded($e)) {
                 continue;
             }