fix #8131 - chinese translations
[Pman.Core] / DataObjects / Core_templatestr.php
index e927fba..a800750 100644 (file)
@@ -84,7 +84,6 @@ class Pman_Core_DataObjects_Core_templatestr extends DB_DataObject
      */
     function onTableChange($roo, $obj, $chg)
     {
-        
         $ff = HTML_FlexyFramework::get()->Pman_Core;
             
         if(empty($ff['DataObjects_Core_templatestr']['tables'])){
@@ -95,11 +94,29 @@ class Pman_Core_DataObjects_Core_templatestr extends DB_DataObject
             return;
         }
         $cols = $ff['DataObjects_Core_templatestr']['tables'][$tn];
-        
-        $deactive = array();
-        $active = array();
 
+        $used = array();
         foreach($cols as $c) {
+            
+            if(strpos($c, ',') !== false) {
+                $arr = explode(',', $c);
+                $c = $arr[0];
+                $cond = $arr[1];
+
+                $ar = explode('=', $cond);
+                $key = $ar[0];
+
+                // skip if condition not fulfilled
+                if($obj->{$ar[0]} != $ar[1]) {
+                    continue;
+                }
+            }
+
+            // skip if empty string
+            if(empty($obj->$c)) {
+                continue;
+            }
+
             $x = $this->factory($this->tableName());
             $x->on_id = $obj->pid();
             $x->on_table = $tn;
@@ -107,25 +124,10 @@ class Pman_Core_DataObjects_Core_templatestr extends DB_DataObject
             $x->lang = ''; /// eg. base language..
             $up = $x->find(true);
 
-            if($up) {
-                // deactivate empty words
-                if(empty($obj->$c)) {
-                    $deactive[] = $x->id;
-                }
-                // activate non-empty words
-                else {
-                    $active[] = $x->id;
-                }
-
-                if($x->txt == $obj->$c) {
-                    continue; // skip when no change
-                }
-            }
-            else {
-                // skip empty words
-                if(empty($obj->$c)) {
-                    continue;
-                }
+            // skip when no change
+            if($up && $x->txt == $obj->$c) {
+                $used[] = $x->id;
+                continue;
             }
 
             $x->active = 1;
@@ -137,34 +139,18 @@ class Pman_Core_DataObjects_Core_templatestr extends DB_DataObject
             $up ? $x->update() : $x->insert();
         }
 
-        if(count($deactive)) {
-            $t = DB_DataObject::factory($this->tableName());
-            // deactivate the parent data
-            $t->query("UPDATE core_templatestr
-                      SET active = 0 WHERE id in (" . implode(',' ,$deactive) . ")
-                     ");
-
-            // deactivate the child data
-            $t->query("UPDATE  core_templatestr 
-            SET active = 0
-            WHERE
-                src_id IN (". implode(',' ,$deactive) . ")
-                AND
-                lang != ''
-             ");
-        }
-
-        if(count($active)) {
+        // make sure the used one are active
+        if(count($used)) {
             $t = DB_DataObject::factory($this->tableName());
             // activate the aprent data
             $t->query("UPDATE core_templatestr
-                SET active = 1 WHERE id in (" . implode(',' ,$active) . ")
+                SET active = 1 WHERE id in (" . implode(',' ,$used) . ")
             ");
-            // deactivate the child data
+            // activate the child data
             $t->query("UPDATE  core_templatestr 
             SET active = 1
               WHERE
-                 src_id IN (". implode(',' ,$active) . ")
+                 src_id IN (". implode(',' ,$used) . ")
                 AND
                 lang != ''
             ");