Index: trunk/admin/install.php =================================================================== diff -u -r557 -r561 --- trunk/admin/install.php (.../install.php) (revision 557) +++ trunk/admin/install.php (.../install.php) (revision 561) @@ -1,7 +1,6 @@ GetIDField(); @@ -1163,6 +1163,7 @@ if($objSession->HasSystemPermission("DEBUG.LIST")) echo htmlentities($insert,ENT_NOQUOTES)."
\n"; $this->adodbConnection->Execute($insert); + //echo $insert."
"; } function CopyFromEditTable($idfield = null) Index: trunk/kernel/include/language.php =================================================================== diff -u -r534 -r561 --- trunk/kernel/include/language.php (.../language.php) (revision 534) +++ trunk/kernel/include/language.php (.../language.php) (revision 561) @@ -419,8 +419,11 @@ $c->Create(); $id = $c->Get("LanguageId"); $phrase_table = $objSession->GetEditTable("Phrase"); + $message_table = $objSession->GetEditTable("EmailMessage"); $sql = "UPDATE $phrase_table SET LanguageId=$id WHERE LanguageId=$oldid"; $this->adodbConnection->Execute($sql); + $sql = "UPDATE $message_table SET LanguageId=$id WHERE LanguageId=$oldid"; + $this->adodbConnection->Execute($sql); } $rs->MoveNext(); } Index: trunk/admin/category/addcategory_custom.php =================================================================== diff -u -r553 -r561 --- trunk/admin/category/addcategory_custom.php (.../addcategory_custom.php) (revision 553) +++ trunk/admin/category/addcategory_custom.php (.../addcategory_custom.php) (revision 561) @@ -240,7 +240,7 @@
- +
" name="viewmenu"> @@ -249,10 +249,5 @@
- - + Index: trunk/kernel/include/emailmessage.php =================================================================== diff -u -r553 -r561 --- trunk/kernel/include/emailmessage.php (.../emailmessage.php) (revision 553) +++ trunk/kernel/include/emailmessage.php (.../emailmessage.php) (revision 561) @@ -433,7 +433,27 @@ $this->Clear(); return $this->Query_Item($sql); } + + function &AddEmailEvent($Template, $Type, $LangId, $EventId) + { + $e = new clsEmailMessage(); + $e->tablename = $this->SourceTable; + $e->Set(array("Template","MessageType","LanguageId","EventId"), + array($Template,$Type,$LangId,$EventId)); + $e->Dirty(); + $e->Create(); + return $e; + } + + function DeleteLanguage($LangId) + { + $sql = "DELETE FROM ".$this->SourceTable." WHERE LanguageId=$LangId OR LanguageId = 0"; + if( $GLOBALS['debuglevel'] ) echo $sql."
\n"; + + $this->adodbConnection->Execute($sql); + } + function &GetMessage($EventId,$LangId,$LoadFromDB=TRUE) { $found=FALSE; @@ -474,44 +494,49 @@ return $i; } - function CreateEmptyEditTable($IdList) + function CreateEmptyEditTable($IdList, $use_parent = false) { global $objSession; - $edit_table = $objSession->GetEditTable($this->SourceTable); - @$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table"); - $query = "SELECT * FROM ".$this->SourceTable." WHERE $idfield = -1"; - $insert = "CREATE TABLE ".$edit_table." ".$query; - if($objSession->HasSystemPermission("DEBUG.LIST")) - echo htmlentities($insert,ENT_NOQUOTES)."
\n"; - $this->adodbConnection->Execute($insert); - $this->LoadLanguage(); - $idvalue = -1; - for($i=0;$i<$this->NumItems();$i++) - { - $e =& $this->Items[$i]; - $e->SourceTable = $edit_table; - if(is_array($IdList)) - { - foreach($IdList as $id) - { - $e->UnsetIdField(); - $e->Set("EmailMessageId",$idvalue--); - $e->Set("LanguageId",$id); - $e->Set("Description",admin_language("la_desc_emailevent_".$e->Get("Event"),$id)); - $e->Create(); - } - } - else - { - $e->UnsetIdField(); - $e->Set("EmailMessageId",$idvalue--); - $e->Set("LanguageId",$IdList); - $e->Set("Description",admin_language("la_desc_emailevent_".$e->Get("Event"),$LangId)); - $e->Create(); - } + if (!$use_parent) { + $edit_table = $objSession->GetEditTable($this->SourceTable); + @$this->adodbConnection->Execute("DROP TABLE IF EXISTS $edit_table"); + $query = "SELECT * FROM ".$this->SourceTable." WHERE $idfield = -1"; + $insert = "CREATE TABLE ".$edit_table." ".$query; + if($objSession->HasSystemPermission("DEBUG.LIST")) + echo htmlentities($insert,ENT_NOQUOTES)."
\n"; + $this->adodbConnection->Execute($insert); + $this->LoadLanguage(); + $idvalue = -1; + for($i=0;$i<$this->NumItems();$i++) + { + $e =& $this->Items[$i]; + $e->SourceTable = $edit_table; + if(is_array($IdList)) + { + foreach($IdList as $id) + { + $e->UnsetIdField(); + $e->Set("EmailMessageId",$idvalue--); + $e->Set("LanguageId",$id); + $e->Set("Description",admin_language("la_desc_emailevent_".$e->Get("Event"),$id)); + $e->Create(); + } + } + else + { + $e->UnsetIdField(); + $e->Set("EmailMessageId",$idvalue--); + $e->Set("LanguageId",$IdList); + $e->Set("Description",admin_language("la_desc_emailevent_".$e->Get("Event"),$LangId)); + $e->Create(); + } + } + $this->Clear(); } - $this->Clear(); + else { + parent::CreateEmptyEditTable($IdList); + } } function CopyFromEditTable() @@ -520,7 +545,7 @@ $idfield = "EmailMessageId"; $edit_table = $objSession->GetEditTable($this->SourceTable); - $sql = "SELECT * FROM $edit_table"; + $sql = "SELECT * FROM $edit_table WHERE LanguageId <> 0"; $rs = $this->adodbConnection->Execute($sql); while($rs && !$rs->EOF) { Index: trunk/kernel/action.php =================================================================== diff -u -r534 -r561 --- trunk/kernel/action.php (.../action.php) (revision 534) +++ trunk/kernel/action.php (.../action.php) (revision 561) @@ -837,7 +837,6 @@ break; case "m_edit_custom_data": - $id = $_POST["ItemId"]; $objEditData = new clsCustomDataList(); //$objSession->GetEditTable("CustomMetaData")); $objEditData->SetTable('edit'); @@ -1240,7 +1239,8 @@ $ado->Execute($sql); if($_POST["importlabels"]==1 && $_POST["srcpack"]>0) { - $sql = "SELECT * FROM ".GetTablePrefix()."Phrase WHERE LanguageId=".$_POST["srcpack"]; + // Phrase import + $sql = "SELECT * FROM ".GetTablePrefix()."Phrase WHERE LanguageId=".$_POST["srcpack"]; if($objSession->HasSystemPermission("DEBUG.LIST")) echo $sql."
\n"; @@ -1265,6 +1265,50 @@ $MinId--; $rs->MoveNext(); } + + // Events import + $sql = "SELECT * FROM ".GetTablePrefix()."EmailMessage WHERE LanguageId=".$_POST["srcpack"]; + if($objSession->HasSystemPermission("DEBUG.LIST")) + echo $sql."
\n"; + + $rs = $ado->Execute($sql); + + $eList = new clsEmailMessageList(); + //$eList->SourceTable = $objSession->GetEditTable("EmailMessage"); + + if (!$l->TableExists($objSession->GetEditTable("EmailMessage"))) { + $eList->CreateEmptyEditTable("EmailMessageId", true); + $eList->SourceTable = $objSession->GetEditTable("EmailMessage"); + } + else { + $eList->SourceTable = $objSession->GetEditTable("EmailMessage"); + } + + $sql = "SELECT MIN(EmailMessageId) as MinId FROM ".$eList->SourceTable; + $as = $ado->Execute($sql); + + if($as && !$as->EOF) + { + $MinId = (int)$as->fields["MinId"]; + } + else { + $MinId = 0; + } + + $MinId--; + + while($rs && !$rs->EOF) + { + $data = $rs->fields; + $eList->AddEmailEvent($data["Template"], $data["MessageType"], $NewId, $data["EventId"]); + + $sql = "UPDATE ".$eList->SourceTable." SET EmailMessageId=$MinId WHERE EmailMessageId=0 LIMIT 1"; + $ado->Execute($sql); + + $MinId--; + + $rs->MoveNext(); + } } break; case "m_lang_export": @@ -1316,6 +1360,51 @@ $rs->MoveNext(); } unset($plist); + + // Events import + $sql = "SELECT * FROM ".GetTablePrefix()."EmailMessage WHERE LanguageId=".$_POST["srcpack"]; + if($objSession->HasSystemPermission("DEBUG.LIST")) + echo $sql."
\n"; + + $rs = $ado->Execute($sql); + + $eList = new clsEmailMessageList(); + //$eList->SourceTable = $objSession->GetEditTable("EmailMessage"); + + if (!$l->TableExists($objSession->GetEditTable("EmailMessage"))) { + $eList->CreateEmptyEditTable("EmailMessageId", true); + $eList->SourceTable = $objSession->GetEditTable("EmailMessage"); + } + else { + $eList->SourceTable = $objSession->GetEditTable("EmailMessage"); + } + + $sql = "SELECT MIN(EmailMessageId) as MinId FROM ".$eList->SourceTable; + $as = $ado->Execute($sql); + + if($as && !$as->EOF) + { + $MinId = (int)$as->fields["MinId"]; + } + else { + $MinId = 0; + } + + $MinId--; + + while($rs && !$rs->EOF) + { + $data = $rs->fields; + $eList->AddEmailEvent($data["Template"], $data["MessageType"], $_POST["LanguageId"], $data["EventId"]); + + $sql = "UPDATE ".$eList->SourceTable." SET EmailMessageId=$MinId WHERE EmailMessageId=0 LIMIT 1"; + $ado->Execute($sql); + + $MinId--; + + $rs->MoveNext(); + } + unset($eList); } break; @@ -1324,12 +1413,15 @@ if (isset($_POST["itemlist"])) { $Phrases = new clsPhraseList(); + $Messages = new clsEmailMessageList(); foreach($_POST["itemlist"] as $id) { $objLanguages->DeleteLanguage($id); $Phrases->DeleteLanguage($id); + $Messages->DeleteLanguage($id); } unset($Phrases); + unset($Messages); } break; @@ -2250,16 +2342,17 @@ /* Language Edit */ if( GetVar('LangEditStatus') == 1 ) { - $Messages = new clsEmailMessageList(); - $Messages->CopyFromEditTable(); - $Messages->Clear(); $objLanguages->CopyFromEditTable(); $objLanguages->Clear(); $Phrases = new clsPhraseList(); $Phrases->CopyFromEditTable(); $Phrases->Clear(); $Phrases->PurgeEditTable(); + + $Messages = new clsEmailMessageList(); + $Messages->CopyFromEditTable(); + $Messages->Clear(); } if( GetVar('LangEditStatus') == 2 ) { Index: trunk/kernel/include/itemdb.php =================================================================== diff -u -r534 -r561 --- trunk/kernel/include/itemdb.php (.../itemdb.php) (revision 534) +++ trunk/kernel/include/itemdb.php (.../itemdb.php) (revision 561) @@ -378,7 +378,7 @@ echo $sql."
\n"; if ($this->adodbConnection->Execute($sql) === false) - { + { $Errors->AddError("error.DatabaseError",NULL,$this->adodbConnection->ErrorMsg(),"",get_class($this),"Create"); return false; }