Ähm, ja.
Ich bin mir nicht sicher, ob ich selbst alles zusammenbekomme, aber ich kann es versuchen. Auf eigene Gefahr, keine Garantie, keine Zeit und ein Backup der Dateien und der DB ist eine unglaublich gute Idee. Und eine Dokumentation der Änderungen in der DB...
classes:
Code: Alles auswählen
class.newsletter.php
class.newsletter.groups.php
class.newsletter.jobs.php
class.newsletter.logs.php
class.newsletter.recipients.php
class.phpmailer.php
class.smtp.php
classes/contenido:
includes:
Code: Alles auswählen
include.clientsettings.php (weiß nicht, ob man in V4.6.15 schon sprachabhängige Mandanteneinstellungen machen konnte)
include.newsletter_edit.php
include.newsletter_edit_message.php
include.newsletter_jobs_subnav.php
include.newsletter_jobs_menu.php
include.newsletter_left_top.php
include.newsletter_jobs_details.php
include.newsletter_menu.php
include.newsletter_subnav.php
include.recipients_edit.php
include.recipients.group_edit.php
include.recipients_import.php (hier muss eine Korrektur durchgeführt werden, siehe unten)
include.recipients_menu.php
include.recipients.group_menu.php
include.recipients.group.subnav.php
images:
Code: Alles auswählen
newsletter_dispatch_16_off.gif
newsletter_sendtest_16_off.gif
newsletter_16_off.gif
newsletter_16.gif
Korrektur in include.recipients_import.php:
Statt
Code: Alles auswählen
$sGroupName = str_replace(str_split(" \t\n\r\0\x0B;"), "", $oRcpGroup->get("groupname"));
dies setzen:
Code: Alles auswählen
$sGroupName = $oRcpGroup->get("groupname");
$sGroupName = str_replace(" ", "", $sGroupName);
$sGroupName = str_replace("\t", "", $sGroupName);
$sGroupName = str_replace("\n", "", $sGroupName);
$sGroupName = str_replace("\r", "", $sGroupName);
$sGroupName = str_replace("\0", "", $sGroupName);
$sGroupName = str_replace("\x0B;", "", $sGroupName);
Jetzt kommt der schwierige Teil, die DB-Aktualisierungen. Persönlich würde ich Dir empfehlen, die folgenden Zeilen in die angegebene Datei im Setup-Verzeichnis (eines V4.6.15-Setups!) einzufügen (und dabei ggf. vorhandene, ähnliche Einträge zu ersetzen! Die sind überall vertreuselt!) und das Setup mit "Upgrade" durchlaufen zu lassen. Ich erkläre auch unten nochmal was die Einträge bedeuten, aber das mit der Hand nachzuziehen, ist ... ähm ... anstrengend.
data/tables.txt:
Code: Alles auswählen
"news";"idnews";"int(10)";"";"PRI";"0";"";"1"
"news";"idclient";"int(10)";"";"";"0";"";""
"news";"idlang";"int(10)";"";"";"0";"";""
"news";"idart";"int(10)";"";"";"0";"";""
"news";"template_idart";"int(10)";"";"";"0";"";""
"news";"type";"varchar(10)";"";"";"text";"";""
"news";"name";"varchar(255)";"";"";"";"";""
"news";"subject";"text";"YES";"";"";"";""
"news";"message";"longtext";"YES";"";"";"";""
"news";"newsfrom";"varchar(255)";"";"";"";"";""
"news";"newsfromname";"varchar(255)";"YES";"";"";"";""
"news";"newsdate";"datetime";"YES";"";"";"";""
"news";"welcome";"tinyint(1)";"";"";"0";"";""
"news";"use_cronjob";"tinyint(1)";"";"";"0";"";""
"news";"send_to";"varchar(32)";"";"";"all";"";""
"news";"send_ids";"text";"YES";"";"";"";""
"news";"dispatch";"tinyint(1)";"";"";"0";"";""
"news";"dispatch_count";"int(5)";"";"";"50";"";""
"news";"dispatch_delay";"int(5)";"";"";"5";"";""
"news";"author";"varchar(32)";"";"";"";"";""
"news";"created";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news";"modified";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news";"modifiedby";"varchar(32)";"";"";"";"";""
"news_log";"idnewslog";"int(10)";"";"PRI";"0";"";"1"
"news_log";"idnewsjob";"int(10)";"";"";"0";"";""
"news_log";"idnewsrcp";"int(10)";"";"";"0";"";""
"news_log";"rcpname";"varchar(255)";"";"";"";"";""
"news_log";"rcpemail";"varchar(255)";"";"";"";"";""
"news_log";"rcphash";"varchar(32)";"";"";"";"";""
"news_log";"rcpnewstype";"tinyint(1)";"";"";"0";"";""
"news_log";"status";"varchar(255)";"";"";"";"";""
"news_log";"sent";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_log";"created";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_jobs";"idnewsjob";"int(10)";"";"PRI";"0";"";"1"
"news_jobs";"idclient";"int(10)";"";"";"0";"";""
"news_jobs";"idlang";"int(10)";"";"";"0";"";""
"news_jobs";"idnews";"int(10)";"";"";"0";"";""
"news_jobs";"status";"tinyint(1)";"";"";"0";"";""
"news_jobs";"use_cronjob";"tinyint(1)";"";"";"0";"";""
"news_jobs";"started";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_jobs";"finished";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_jobs";"name";"varchar(255)";"";"";"";"";""
"news_jobs";"type";"varchar(10)";"";"";"text";"";""
"news_jobs";"encoding";"varchar(32)";"";"";"iso-8859-1";"";""
"news_jobs";"newsfrom";"varchar(255)";"";"";"";"";""
"news_jobs";"newsfromname";"varchar(255)";"";"";"";"";""
"news_jobs";"newsdate";"datetime";"YES";"";"0000-00-00 00:00:00";"";""
"news_jobs";"subject";"text";"YES";"";"";"";""
"news_jobs";"idart";"int(10)";"";"";"0";"";""
"news_jobs";"message_text";"longtext";"";"";"";"";""
"news_jobs";"message_html";"longtext";"YES";"";"";"";""
"news_jobs";"send_to";"text";"";"";"";"";""
"news_jobs";"dispatch";"tinyint(1)";"";"";"0";"";""
"news_jobs";"dispatch_count";"int(5)";"";"";"50";"";""
"news_jobs";"dispatch_delay";"int(5)";"";"";"5";"";""
"news_jobs";"author";"varchar(32)";"";"";"";"";""
"news_jobs";"authorname";"varchar(32)";"";"";"";"";""
"news_jobs";"rcpcount";"int(10)";"";"";"0";"";""
"news_jobs";"sendcount";"int(10)";"";"";"0";"";""
"news_jobs";"created";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_jobs";"modified";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_jobs";"modifiedby";"varchar(32)";"";"";"";"";""
"news_groupmembers";"idnewsgroupmember";"int(10)";"";"PRI";"0";"";"1"
"news_groupmembers";"idnewsgroup";"int(10)";"";"";"0";"";""
"news_groupmembers";"idnewsrcp";"int(10)";"";"";"0";"";""
"news_groups";"idnewsgroup";"int(10)";"";"PRI";"0";"";"1"
"news_groups";"idclient";"int(10)";"";"";"0";"";""
"news_groups";"idlang";"int(10)";"";"";"0";"";""
"news_groups";"groupname";"varchar(32)";"";"";"";"";""
"news_groups";"defaultgroup";"tinyint(1)";"";"";"0";"";""
"news_rcp";"idnewsrcp";"int(10)";"";"PRI";"0";"";"1"
"news_rcp";"idclient";"int(10)";"";"";"0";"";""
"news_rcp";"idlang";"int(10)";"";"";"0";"";""
"news_rcp";"email";"varchar(255)";"YES";"";"";"";""
"news_rcp";"confirmed";"tinyint(1)";"";"";"0";"";""
"news_rcp";"confirmeddate";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_rcp";"lastaction";"varchar(32)";"YES";"";"";"";""
"news_rcp";"name";"varchar(255)";"YES";"";"";"";""
"news_rcp";"hash";"varchar(32)";"";"";"";"";""
"news_rcp";"deactivated";"tinyint(1)";"";"";"0";"";""
"news_rcp";"news_type";"tinyint(1)";"";"";"0";"";""
"news_rcp";"author";"varchar(32)";"";"";"";"";""
"news_rcp";"created";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_rcp";"lastmodified";"datetime";"";"";"0000-00-00 00:00:00";"";""
"news_rcp";"modifiedby";"varchar(32)";"";"";"";"";""
Für eine manuelle Anlage, z.B. via phpMyAdmin:
1. Eintrag: Name der Tabelle ohne Prefix
2. Eintrag: Name der Spalte
3. Eintrag: Typ und Größe
4. Eintrag: Null?
5. Eintrag: Primary Key?
6. Eintrag: Standardwert
Weitere: Ignorieren
Es sind die kompletten Tabellendeklarationen angegeben - in den meisten Fällen genügt es, einzelne Spalten zu ergänzen.
Die folgenden Änderungen machen sich per Hand und mit phpMyAdmin ganz gut:
In _actions jeweils auf den zweiten Wert als Area filtern (z.B. 16, 50, etc.). Es muss folgende Einträge geben, fehlende ergänzen:
Code: Alles auswählen
'337', '16', '', 'news_save', '', '', '1'
'338', '16', '', 'news_create', '', '', '1'
'339', '16', '', 'news_delete', '', '', '1'
'434', '16', '', 'news_add_job', '', '', '1'
'435', '16', '', 'news_send_test', '', '', '0'
'439', '16', '', 'news_html_settings', '', '', '1'
'427', '16', '', 'news_duplicate', '', '', '0'
'341', '50', '', 'recipients_save', '', '', '1'
'342', '50', '', 'recipients_create', '', '', '1'
'343', '50', '', 'recipients_delete', '', '', '1'
'428', '50', '', 'recipients_purge', '', '', '0'
'422', '86', '', 'recipientgroup_delete', '', '', '1'
'423', '86', '', 'recipientgroup_create', '', '', '1'
'424', '86', '', 'recipientgroup_recipient_delete', '', '', '1'
'425', '86', '', 'recipientgroup_sa1ve_group', '', '', '1'
'436', '90', '', 'news_job_delete', '', '', '1'
'437', '90', '', 'news_job_details', '', '', '0'
'438', '90', '', 'news_job_detail_delete', '', '', '1'
'441', '90', '', 'news_job_run', '', '', '1'
'440', '91', '', 'recipients_import', '', '', '0'
'442', '91', '', 'recipients_import_exec', '', '', '0'
Bedauerlicherweise wirst Du Dich auf die erste hier angegebene Zahl nicht verlassen können, da es u.U. bereits entsprechende Actions in der DB gibt. Dann einfach die ID anhand der höchsten Zahl hochzählen (wenn Du Plugins verwendest, dann anhand der höchsten Zahl
unter 10000 hochzählen).
In _area sicherstellen, dass folgende Areas existieren (hier müssen alle Angaben übereinstimmen, insbesondere die ID, erster Wert):
Code: Alles auswählen
'86', '0', 'recipientgroups', '1', '1', '0'
'90', 'news', 'news_jobs', '1', '1', '0'
'91', 'recipients', 'recipients_import', '1', '1', '0'
In _files diese Einträge prüfen und ggf. ergänzen:
Code: Alles auswählen
'114', '16', 'include.newsletter_subnav.php', 'main'
'189', '86', 'include.recipients.group_menu.php', 'main'
'190', '86', 'include.recipients.group.subnav.php', 'main'
'191', '86', 'include.recipients.group_edit.php', 'main'
'201', '90', 'include.newsletter_jobs_menu.php', 'main'
'202', '90', 'include.newsletter_jobs_details.php', 'main'
'203', '90', 'include.newsletter_jobs_subnav.php', 'main'
'204', '17', 'include.newsletter_edit_message.php', 'main'
'205', '91', 'include.recipients_import.php', 'main'
Es wäre wahnsinnig praktisch, wenn die IDs noch verfügbar wären (der erste Eintrag mit 114 müsste bereits vorhanden sein). Wenn nicht, wieder die IDs hochzählen - dieses Mal aber genau aufschreiben, für welche Datei welche ID verwendet wurde!
In _frame_files folgende Einträge prüfen (jetzt wird es hakelig):
Code: Alles auswählen
'196', '86', '2', '189'
'197', '86', '3', '190'
'198', '86', '4', '191'
'209', '90', '2', '201'
'210', '90', '4', '202'
'211', '90', '3', '203'
'212', '17', '4', '204'
'213', '91', '4', '205'
Die
letzte Zahl entspricht dabei jeweils der ID aus der _files-Tabelle, die erste ID kann - wenn es nicht schon einen entsprechenden Eintrag mit der gleichen Area (zweiter Wert), Frame (dritter Wert) und Datei-ID (vierter Wert) gibt - beliebig hochgezählt werden.
Außerdem diesen Eintrag korrigieren (für den Eintrag in der Tabelle, der idarea = 16 und frame = 3 hat, idfile in 114 ändern):
In _nav_sub folgende Einträge prüfen:
Code: Alles auswählen
'81', '3', '86', '1', 'navigation/extra/recipientgroups', '1'
Und schon sind wir fertig...
(Neue Module einsetzen!)
Gruß
HerrB