DataObjects/Images.php
[Pman.Core] / UpdateDatabase.php
index 8015e5d..3b3c98c 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' => '',
@@ -108,6 +114,9 @@ class Pman_Core_UpdateDatabase extends Pman
     
     
     var $cli = false;
+    
+    var $local_base_url = false;
+    
     function getAuth() {
         
         
@@ -141,10 +150,10 @@ 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'];
         
         if(!empty($ff->Core_Notify)){
 //            require_once 'Pman/Core/NotifySmtpCheck.php';
@@ -179,7 +188,6 @@ class Pman_Core_UpdateDatabase extends Pman
         
         $this->runUpdateModulesData();
         
-        
         if (!empty($opts['add-company']) && !in_array('Core', $this->disabled)) {
             // make sure we have a good cache...?
            
@@ -187,7 +195,9 @@ class Pman_Core_UpdateDatabase extends Pman
         }
         
         $this->runExtensions();
-         
+        
+        $this->generateDataobjectsCache();
+        
          
     }
     function output() {
@@ -672,7 +682,7 @@ class Pman_Core_UpdateDatabase extends Pman
             echo "$module\n";
             $x->updateData();
         }
-                
+        
     }
     
     
@@ -902,13 +912,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');
@@ -1065,25 +1080,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',
@@ -1121,5 +1137,49 @@ class Pman_Core_UpdateDatabase extends Pman
         
     }
     
+    function generateDataobjectsCache()
+    {
+        $url = "http://localhost{$this->local_base_url}/Core/RefreshDatabaseCache";
+            
+        $this->curl($url);
+        
+    }
+    
+    function curl($url, $request = array(), $method = 'GET') 
+    {
+        if($method == 'GET'){
+            $request = http_build_query($request);
+            $url = $url . "?" . $request;  
+        }
+        
+        $ch = curl_init($url);
+        
+        if ($method == 'POST') {
+            
+            curl_setopt($ch, CURLOPT_POST, 1);
+            curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
+            
+        } else {
+            
+            curl_setopt($ch, CURLOPT_HTTPHEADER,
+                    array("Content-Type: application/x-www-form-urlencoded", "Content-Length: " . strlen($request)));
+            
+        }
+        
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+        
+        curl_setopt($ch, CURLOPT_HEADER, false);
+        curl_setopt($ch, CURLOPT_VERBOSE, 0);
+        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
+        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+
+        $response = curl_exec($ch);
+        
+        curl_close($ch);
+        
+        return $response;
+    }
+    
+    
     
 }
\ No newline at end of file