sync
[Pman.Core] / UpdateDatabase.php
index 922be24..8a9fe5e 100644 (file)
@@ -126,7 +126,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 +135,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;
@@ -402,12 +408,38 @@ class Pman_Core_UpdateDatabase extends Pman
                 { 
                     // send the current file part to the browser 
                     $line = trim(fgets($fp, 1024));
-                    echo '->>> ' .  $line . " <<<---\n";
-                    echo "--";
+                    if (empty($line)) {
+                        continue;
+                    }
+                    $matches = array();
+                    if (!preg_match('/^ERROR\s+([0-9]+)/', $line, $matches)) {
+                        echo " ---- {$line}\n"; flush();
+                        continue;
+                    }
+                    $continue =0;
+                    switch($matches[1]) {
+                        case 1017: // cause by renaming table -- old one does not exist..
+                        case 1050: // create tables triggers this..
+                        case 1060: //    Duplicate column name
+                        case 1061: // Duplicate key name - triggered by add index.. but could hide error. - unlikely though.
+                        case 1091: // drop index -- name does not exist.. might hide errors..
+                        
+                        case 1146: // drop a index on an unknown table.. - happens rarely...
+                        case 1054: // Unknown column -- triggered by CHANGE COLUMN - but may hide other errrors..
+                            $continue = 1;
+                            break;
+                        
+                    }
+                    if ($continue) {
+                        echo " ---- {$line}\n"; flush();
+                        continue;
+                    }
+                    // real errors...
+                    // 1051: // Unknown table -- normally drop = add iff exists..
+                    echo "File: $fn\n$line\n";
+                    exit;
                     
                     
-                    // flush the content to the browser 
-                    flush(); 
                 } 
                 
             
@@ -754,14 +786,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)) {
@@ -788,7 +821,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();
             }
             
             
@@ -804,7 +838,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";
         }