fix #8131 - chinese translations
[Pman.Core] / UpdateDatabase.php
index 8398e9d..6973f56 100644 (file)
@@ -67,6 +67,12 @@ class Pman_Core_UpdateDatabase extends Pman
             'min' => 1,
             'max' => 1,
         ),
+        'skip-email-import' => array(
+            'desc' => 'Skip email import',
+            'default' => '',
+            'min' => 1,
+            'max' => 1,
+        ),
         'procedures-only' => array(
             'desc' => 'Only import procedures (not supported by most modules yet) - ignores sql directory',
             'default' => '',
@@ -148,14 +154,14 @@ class Pman_Core_UpdateDatabase extends Pman
             'active' => 1,
             'description' => '9.1 Management System Password Reset',
             'template_dir' => '/Pman/Core/templates/mail/'
-
-            
         )
     );
     
     var $required_extensions = array(
         'curl',
-        'gd'
+        'gd',
+        'mbstring'
     );
     
     function getAuth() {
@@ -170,7 +176,7 @@ class Pman_Core_UpdateDatabase extends Pman
         parent::getAuth(); // load company!
         $au = $this->getAuthUser();
         if (!$au || $au->company()->comptype != 'OWNER') {
-            $this->jerr("Not authenticated", array('authFailure' => true));
+            $this->jerror("LOGIN-NOAUTH", "Not authenticated", array('authFailure' => true));
         }
         $this->authUser = $au;
         return true;
@@ -243,18 +249,20 @@ class Pman_Core_UpdateDatabase extends Pman
         
         // 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..)
-        
+        echo "Run extensions\n";
+
         $this->runExtensions(); 
 
         
         if (empty($opts['data-only'])) {
+            echo "Import SQL\n";
             $this->importSQL();
         }
         if (!empty($opts['only-module-sql'])) {
             return;
         }
         
-        
+        echo "run Update Modules Data\n";
 
         $this->runUpdateModulesData();
         
@@ -490,6 +498,7 @@ class Pman_Core_UpdateDatabase extends Pman
            
         $mysql_cmd = $mysql .
             ' -h ' . $dburl['host'] .
+            (empty($dburl['port']) ? '' : " -P{$dburl['port']} ") .
             ' -u' . escapeshellarg($dburl['user']) .
             (!empty($dburl['pass']) ? ' -p' . escapeshellarg($dburl['pass'])  :  '') .
             ' ' . basename($dburl['path']);
@@ -604,7 +613,10 @@ class Pman_Core_UpdateDatabase extends Pman
                 $extra[]  =   "create sequence {$tbl}_seq;";
               
             }
-            
+            if ($tbl && preg_match('#engine=\S+#i',  $l, $m)) {
+                $l = preg_replace('#engine=\S+#i', '', $l);
+                
+            }
             if (preg_match('#alter\s+table\s+(\`[a-z0-9_]+\`)#i',  $l, $m)){
                 $l = preg_replace('#alter\s+table\s+(\`[a-z0-9_]+\`)#i', "ALTER TABLE {$tbl}", $l);
             }
@@ -758,6 +770,7 @@ class Pman_Core_UpdateDatabase extends Pman
             if(!method_exists($x, 'updateData')){
                 continue;
             };
+            $x->rootDir =  $this->rootDir;
             echo "$module\n";
             $x->updateData();
         }
@@ -840,21 +853,25 @@ class Pman_Core_UpdateDatabase extends Pman
             array(
                 'name' => 'bcc-email', // group who are bcc'ed on all requests.
                 'type' => 0, // system
+                'is_system' => 1,
                 'display_name' => 'Standard BCC Group'
             ),
             array(
                 'name' => 'system-email-from',
                 'type' => 0, // system
+                'is_system' => 1,
                 'display_name' => 'Standard System Email From Group'
             ),
             array(
                 'name' => 'core-person-signup-bcc',
                 'type' => 0, // system
+                'is_system' => 1,
                 'display_name' => 'Standard Person Signup BCC Group'
             ),
             array(
                 'name' => 'Empty Group', // use for no bcc emails.
                 'type' => 0,
+                'is_system' => 1,
                 'display_name' => 'Standard Empty Group'
             )
 
@@ -907,12 +924,13 @@ class Pman_Core_UpdateDatabase extends Pman
     
     function updateDataEmails()
     {
+        if (!empty($this->opts['skip-email-import'])) {
+            return;
+        }
         foreach ($this->emailTemplates as $k => $mail) {
             
-            $mail_dir = "{$this->rootDir}{$mail['template_dir']}";
-
             $this->initEmails(
-                $mail_dir,
+                !empty($mail['template_dir']) ? "{$this->rootDir}{$mail['template_dir']}" : '',
                 array($k => $mail),
                 false
             );
@@ -936,11 +954,11 @@ class Pman_Core_UpdateDatabase extends Pman
                 
                 $g = DB_DataObject::Factory('core_group')->lookup('name',$data['bcc_group']);
                 
-                if (empty($g->id)) {
+                if (empty($g->id)) { // Admin group as bcc will not have any member at initialization.
                     $this->jerr("bcc_group {$data['bcc_group']} does not exist when importing template $name");
                 }
                 
-                if (!$g->members('email') && $g->name != 'Empty Group') {
+                if (!$g->members('email') && $g->name != 'Empty Group' &&  $g->name != 'Administrators') {
                     $this->jerr("bcc_group {$data['bcc_group']} does not have any members");
                 }
                 
@@ -1012,9 +1030,14 @@ class Pman_Core_UpdateDatabase extends Pman
             
             $opts = array(
                 'update' => 1,
-                'file' => $templateDir. $name .'.html'
             );
-            
+            if (!empty($templateDir)) {
+                $opts['file'] = $templateDir. $name .'.html';
+            }
+            if (!empty($data['raw_content'])) {
+                $opts['raw_content'] = $data['raw_content'];
+                $opts['name'] = $name;
+            }
             if (!empty($data['master'])) {
                 $opts['master'] = $templateDir . $master .'.html';
             }
@@ -1217,6 +1240,7 @@ class Pman_Core_UpdateDatabase extends Pman
             if (!file_exists(__DIR__.'/UpdateDatabase/'. $scls .'.php')) {
                 return;
             }
+            echo "Running : {$fn}\n";
             require_once $fn;
             $c = new $cls();
             
@@ -1242,17 +1266,16 @@ class Pman_Core_UpdateDatabase extends Pman
             'gifsicle', // used for gif conversions
         );
          
-         
-         
+          
         // these are prefered - but may have complicated depenacies
         $pref = $pref !== false ? $pref :  array(
             'abiword',
-            'faad',
+            //'faad',
             'ffmpeg',
             'html2text', // not availabe in debian squeeze
             'pdftocairo',  //poppler-utils - not available in debian squeeze.
 
-            'lame',
+            //'lame',
             'ssconvert',
             'unoconv',
             'wkhtmltopdf',