]> git.mxchange.org Git - mailer.git/blobdiff - inc/extensions/ext-newsletter.php
Words 'User-Id' in German language replace with 'Mitglieder-Id', more mt_word placeho...
[mailer.git] / inc / extensions / ext-newsletter.php
index ae073d52016ec9c3d6d42670568f8cad6c35120a..24b0cd111329330927e4f4d87b317a1f64478c36 100644 (file)
  * -------------------------------------------------------------------- *
  * Kurzbeschreibung  : Erweiterung zum Versenden von Newslettern        *
  * -------------------------------------------------------------------- *
- * $Revision:: 856                                                    $ *
- * $Date:: 2009-03-06 20:24:32 +0100 (Fr, 06. March 2009)             $ *
+ * $Revision::                                                        $ *
+ * $Date::                                                            $ *
  * $Tag:: 0.2.1-FINAL                                                 $ *
- * $Author:: stelzi                                                   $ *
+ * $Author::                                                          $ *
  * Needs to be in all Files and every File needs "svn propset           *
  * svn:keywords Date Revision" (autoprobset!) at least!!!!!!            *
  * -------------------------------------------------------------------- *
- * Copyright (c) 2003 - 2008 by Roland Haeder                           *
+ * Copyright (c) 2003 - 2009 by Roland Haeder                           *
  * For more information visit: http://www.mxchange.org                  *
  *                                                                      *
  * This program is free software; you can redistribute it and/or modify *
 
 // Some security stuff...
 if (!defined('__SECURITY')) {
-       $INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4) . "/security.php";
-       require($INC);
-}
+       die();
+} // END - if
 
 // Version number
-EXT_SET_VERSION("0.1.2");
-
-// Version history array (add more with , "0.1" and so on)
-EXT_SET_VER_HISTORY(array("0.0", "0.0.1", "0.0.2", "0.0.3", "0.0.4", "0.0.5", "0.0.6", "0.0.7", "0.0.8", "0.0.9", "0.1.0", "0.1.1", "0.1.2"));
-
-switch ($EXT_LOAD_MODE)
-{
-case "register": // Do stuff when installation is running (modules.php?module=admin&action=login is called)
-       // SQL commands to run
-       ADD_SQL("");
-       break;
-
-case "remove": // Do stuff when removing extension
-       // SQL commands to run
-       ADD_SQL("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_admin_menu` WHERE `action`='newsletter' AND what != 'send_newsletter' LIMIT 3");
-       ADD_SQL("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_member_menu` WHERE `what`='newsletter' LIMIT 1");
-       break;
-
-case "activate": // Do stuff when admin activates this extension
-       // SQL commands to run
-       ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET `locked`='N', `visible`='Y' WHERE `what`='newsletter' LIMIT 1");
-       break;
-
-case "deactivate": // Do stuff when admin deactivates this extension
-       // SQL commands to run
-       ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_member_menu` SET `locked`='Y', `visible`='N' WHERE `what`='newsletter' LIMIT 1");
-       break;
-
-case "update": // Update an extension
-       switch ($EXT_VER)
-       {
-       case "0.0.1": // SQL queries for v0.0.1
-               ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('newsletter', NULL, 'Newsletter','Einstellungen am Newsletter, Newsletter versenden, Abbestellungen auflisten usw.', 3)");
-               ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('newsletter','list_newsletter','Abbestellungen','Alle Abbestellungen auflisten und bearbeiten.', 2)");
-               ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('newsletter','config_newsletter','Einstellungen','Gebühr zum Abbestellen des Newsletters usw. sind hier einstellbar.', 3)");
-               ADD_SQL("UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET `action`='newsletter', `what`='send_newsletter', `title`='Versenden', `sort`='1' WHERE `what`='newsletter' LIMIT 1");
-               ADD_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`visible`,`locked`,`sort`) VALUES ('main','newsletter','Newsletter-Empfang','N','Y', 10)");
-               ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD nl_charge FLOAT(10,2) UNSIGNED NOT NULL DEFAULT '5.00'");
-               ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD nl_receive ENUM('Y','N') NOT NULL DEFAULT 'Y'");
-               ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD nl_until VARCHAR(10) NOT NULL DEFAULT 0");
-               ADD_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD nl_timespan VARCHAR(10) NOT NULL DEFAULT 0");
-
-               // Update notes (these will be set as task text!)
-               EXT_SET_UPDATE_NOTES("Vor der eigentlichen Freigabe dieser Erweiterungen habe ich sie versehendlich im Archiv mit auf den Server hochgeladen. Diese Version fügt die bereits angekündigte Funktionalitäten, wie zum Beispiel das Einstellen der Abschaltgebühr.");
-               break;
+setThisExtensionVersion('0.2.0');
 
-       case "0.0.2": // SQL queries for v0.0.2
-               // Update notes (these will be set as task text!)
-               EXT_SET_UPDATE_NOTES("URL im Versendeformular und Option <em>Immer aktiv</em> f&uuml;r diese Erweiterung deaktiviert.");
-               break;
+// Version history array (add more with , '0.1.0' and so on)
+setExtensionVersionHistory(array('0.0', '0.0.1', '0.0.2', '0.0.3', '0.0.4', '0.0.5', '0.0.6', '0.0.7', '0.0.8', '0.0.9', '0.1.0', '0.1.1', '0.1.2', '0.2.0'));
 
-       case "0.0.3": // SQL queries for v0.0.3
-               // Update notes (these will be set as task text!)
-               EXT_SET_UPDATE_NOTES("W&ouml;rter <strong>Mailtausch</strong>, <strong>Mailtausches</strong> und <strong>Mailtauscher</strong> sind austauschbar.");
+switch (getExtensionMode()) {
+       case 'register': // Do stuff when installation is running (modules.php?module=admin is called)
+               // SQL commands to run
+               addExtensionSql('');
                break;
 
-       case "0.0.4": // SQL queries for v0.0.4
-               // Update notes (these will be set as task text!)
-               EXT_SET_UPDATE_NOTES("HTML-Code ausgelagert in Templates und SQL-Anweisungen abgesichert.");
+       case 'remove': // Do stuff when removing extension
+               // SQL commands to run
+               addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='newsletter'");
+               addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='newsletter'");
+               addExtensionSql("DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_newsletter_data`");
+               addExtensionSql("DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_newsletter_topics`");
+               addExtensionSql("DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_newsletter_orders`");
                break;
 
-       case "0.0.5": // SQL queries for v0.0.5
-               // Update notes (these will be set as task text!)
-               EXT_SET_UPDATE_NOTES("Abspeichern von Einstellungen repariert.");
+       case 'activate': // Do stuff when admin activates this extension
+               // SQL commands to run
+               addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `locked`='N', `visible`='Y' WHERE `what`='newsletter' LIMIT 1");
                break;
 
-       case "0.0.6": // SQL queries for v0.0.6
-               // Update notes (these will be set as task text!)
-               EXT_SET_UPDATE_NOTES("Bitte Script inc/monthly_newsletter.php l&ouml;schen!");
+       case 'deactivate': // Do stuff when admin deactivates this extension
+               // SQL commands to run
+               addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `locked`='Y', `visible`='N' WHERE `what`='newsletter' LIMIT 1");
                break;
 
-       case "0.0.7": // SQL queries for v0.0.7
-               // Update notes (these will be set as task text!)
-               EXT_SET_UPDATE_NOTES("Script <strong>inc/monthly/monthly_newsletter.php</strong> wird nicht mehr ausgef&uuml;hrt, wenn die Erweiterung nicht aktiviert ist.");
+       case 'update': // Update an extension
+               switch (getCurrentExtensionVersion()) {
+                       case '0.0.1': // SQL queries for v0.0.1
+                               addAdminMenuSql('newsletter', NULL, 'Newsletter','Einstellungen am Newsletter, Newsletter versenden, usw.', 3);
+                               addAdminMenuSql('newsletter','config_newsletter','Einstellungen','Einstellungen am Newsletter vornehmen.', 3);
+                               addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what`='newsletter' LIMIT 1");
+                               addMemberMenuSql('main','newsletter','Newsletter-Empfang','N','Y', 10);
+                               addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `nl_receive` ENUM('Y','N') NOT NULL DEFAULT 'Y'");
+
+                               // Update notes (these will be set as task text!)
+                               setExtensionUpdateNotes("Men&uuml;punkte hinzuf&uuml;gen und Mitgliedereinstellung.");
+                               break;
+
+                       case '0.0.2': // SQL queries for v0.0.2
+                               // Update notes (these will be set as task text!)
+                               setExtensionUpdateNotes("URL im Versendeformular und Option <em>Immer aktiv</em> f&uuml;r diese Erweiterung deaktiviert.");
+                               break;
+
+                       case '0.0.3': // SQL queries for v0.0.3
+                               // Update notes (these will be set as task text!)
+                               setExtensionUpdateNotes("W&ouml;rter <strong>{?mt_word?}</strong>, <strong>{?mt_word2?}</strong> und <strong>{?mt_word3?}</strong> sind austauschbar.");
+                               break;
+
+                       case '0.0.4': // SQL queries for v0.0.4
+                               // Update notes (these will be set as task text!)
+                               setExtensionUpdateNotes("HTML-Code ausgelagert in Templates und SQL-Anweisungen abgesichert.");
+                               break;
+
+                       case '0.0.5': // SQL queries for v0.0.5
+                               // Update notes (these will be set as task text!)
+                               setExtensionUpdateNotes("Abspeichern von Einstellungen repariert.");
+                               break;
+
+                       case '0.0.6': // SQL queries for v0.0.6
+                               // Update notes (these will be set as task text!)
+                               setExtensionUpdateNotes("Bitte Script inc/monthly_newsletter.php l&ouml;schen!");
+                               break;
+
+                       case '0.0.7': // SQL queries for v0.0.7
+                               // Update notes (these will be set as task text!)
+                               setExtensionUpdateNotes("Script <strong>inc/monthly/monthly_newsletter.php</strong> wird nicht mehr ausgef&uuml;hrt, wenn die Erweiterung nicht aktiviert ist.");
+                               break;
+
+                       case '0.0.8': // SQL queries for v0.0.8
+                               // Update notes (these will be set as task text!)
+                               setExtensionUpdateNotes("Sicherheitsupdate f&uuml;r die Include-Befehle.");
+                               break;
+
+                       case '0.0.9': // SQL queries for v0.0.9
+                               // Update notes (these will be set as task text!)
+                               setExtensionUpdateNotes("Nur bei installierter Erweiterung <strong>html_mail</strong> k&ouml;nnen Sie auch HTML-Mails versenden.");
+                               break;
+
+                       case '0.1.0': // SQL queries for v0.2.1
+                               // Update notes (these will be set as task text!)
+                               setExtensionUpdateNotes("Nur bei installierter Erweiterung <strong>html_mail</strong> k&ouml;nnen Sie auch HTML-Mails versenden.");
+                               break;
+
+                       case '0.1.1': // SQL queries for v0.1.1
+                               // Update notes (these will be set as task text!)
+                               setExtensionUpdateNotes("W&auml;hrung auf die Erweiterung <a href=\"#\"><strong>ext-other.zip</strong></a> verlagert. Bitte auch diese aktualisieren.");
+                               break;
+
+                       case '0.1.2': // SQL queries for v0.1.2
+                               // Update notes (these will be set as task text!)
+                               setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
+                               break;
+
+                       case '0.2.0': // SQL queries for v0.2.0
+                               // Tables:
+                               // - Main data table
+                               addExtensionSql("DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_newsletter_data`");
+                               addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_newsletter_data` (
+`nl_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
+`nl_subject` VARCHAR(255) NOT NULL DEFAULT '{OPEN_CONFIG}nl_default_subject{CLOSE_CONFIG}',
+`nl_header_text` MEDIUMTEXT,
+`nl_footer_text` MEDIUMTEXT,
+`nl_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+`nl_send` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00',
+`nl_ready` ENUM('Y','N') NOT NULL DEFAULT 'N',
+`nl_sent` ENUM('Y','N') NOT NULL DEFAULT 'N',
+`nl_expired` ENUM('Y','N') NOT NULL DEFAULT 'N',
+`nl_do_archive` ENUM('Y','N') NOT NULL DEFAULT 'Y',
+`nl_recipients` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`nl_received` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`nl_total_clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+PRIMARY KEY (`nl_id`)
+) TYPE={?_TABLE_TYPE?} COMMENT='General newsletter data'");
+
+                               // - Topics data table
+                               addExtensionSql("DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_newsletter_topics`");
+                               addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_newsletter_topics` (
+`nl_topic_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
+`nl_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`nl_topic_title` VARCHAR(255) NOT NULL DEFAULT '',
+`nl_topic_text` MEDIUMTEXT,
+INDEX `newsletter_id` (`nl_id`),
+PRIMARY KEY (`nl_topic_id`)
+) TYPE={?_TABLE_TYPE?} COMMENT='Newsletter topics'");
+
+                               // - Sponsor orders data table
+                               addExtensionSql("DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_newsletter_orders`");
+                               addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_newsletter_orders` (
+`nl_order_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
+`nl_sponsor_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`nl_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`nl_topic_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`nl_order_placed` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+`nl_order_accepted` ENUM('Y','N') NOT NULL DEFAULT 'N',
+UNIQUE KEY `sponsor_nl_topic` (`nl_sponsor_id`,`nl_id`,`nl_topic_id`),
+INDEX `topic` (`nl_topic_id`),
+PRIMARY KEY (`nl_order_id`)
+) TYPE={?_TABLE_TYPE?} COMMENT='Newsletter orders'");
+
+                               // Configuration
+                               addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `nl_expire` BIGINT(20) UNSIGNED NOT NULL DEFAULT ".(getConfig('ONE_DAY') * 7)."");
+                               addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `nl_archive_expire` BIGINT(20) UNSIGNED NOT NULL DEFAULT ".(getConfig('ONE_DAY') * 14)."");
+                               addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `nl_default_subject` VARCHAR(255) NOT NULL DEFAULT 'Newsletter vom {OPEN_CONFIG}CURRENT_DATE{CLOSE_CONFIG}'");
+                               addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `nl_default_header` MEDIUMTEXT");
+                               addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `nl_default_footer` MEDIUMTEXT");
+                               addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_config` ADD `nl_archive` ENUM('Y','N') NOT NULL DEFAULT 'Y'");
+
+                               // Admin menu
+                               addAdminMenuSql('newsletter', 'add_newsletter','Neuen erstellen','Legen Sie hier einen neuen Newsletter mit Betreff und Verfallsdatum an.', 1);
+
+                               // Update notes (these will be set as task text!)
+                               setExtensionUpdateNotes("Komplett&uuml;berarbeitung der Erweiterung, siehe neuer Beschreibungstext.");
+                               break;
+               } // END - switch
                break;
 
-       case "0.0.8": // SQL queries for v0.0.8
-               // Update notes (these will be set as task text!)
-               EXT_SET_UPDATE_NOTES("Sicherheitsupdate f&uuml;r die Include-Befehle.");
+       case 'modify': // When the extension got modified
                break;
 
-       case "0.0.9": // SQL queries for v0.0.9
-               // Update notes (these will be set as task text!)
-               EXT_SET_UPDATE_NOTES("Nur bei installierter Erweiterung <strong>html_mail</strong> k&ouml;nnen Sie auch HTML-Mails versenden.");
+       case 'test': // For testing purposes. For details see file inc/modules/admin/what-extensions.php, arround line 305.
                break;
 
-       case "0.1.0": // SQL queries for v0.2.1
-               // Update notes (these will be set as task text!)
-               EXT_SET_UPDATE_NOTES("Nur bei installierter Erweiterung <strong>html_mail</strong> k&ouml;nnen Sie auch HTML-Mails versenden.");
+       case 'init': // Do stuff when extension is initialized
+               // URL ends which are used to indentify the end of an URL or email link
+               // Don't use these chars in links... ;-)
+               // @TODO Move these into configuration
+               $GLOBALS['url_ends'] = array(
+                       ' ',
+                       "\n",
+                       "\r",
+                       ')',
+               );
+
+               // Valid email chars (without @, or do you want to have another @ inside your email addresses?)
+               $GLOBALS['valid_email_chars'] = array(
+                       'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s',
+                       't','u','v','w','x','y','z','a','B','C','D','E','F','G','H','I','J','K','L',
+                       'M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','-','.','_',0,1,
+                       2,3,4,5,6,7,8,9
+               );
                break;
 
-       case "0.1.1": // SQL queries for v0.1.1
-
-               // Update notes (these will be set as task text!)
-               EXT_SET_UPDATE_NOTES("W&auml;hrung auf die Erweiterung <a href=\"#\"><strong>ext-other.zip</strong></a> verlagert. Bitte auch diese aktualisieren.");
+       default: // Unknown extension mode
+               DEBUG_LOG(__FILE__, __LINE__, sprintf("Unknown extension mode %s detected.", getExtensionMode()));
                break;
+} // END - switch
 
-       case "0.1.2": // SQL queries for v0.1.2
-               // Update notes (these will be set as task text!)
-               EXT_SET_UPDATE_NOTES("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
-               break;
-       }
-       break;
-
-case "modify": // When the extension got modified
-       break;
-
-case "test": // For testing purposes. For details see file inc/modules/admin/what-extensions.php, arround line 305.
-       break;
-
-default: // Do stuff when extension is loaded
-       // URL ends which are used to indentify the end of an URL or email link
-       // Don't use these chars in links... ;-)
-       //
-       $GLOBALS['url_ends'] = array(
-               " ",
-               "\n",
-               "\r",
-               ")",
-       );
-
-       // Valid email chars (without @, or do you want to have another @ inside your email addy?)
-       $GLOBALS['valid_email_chars'] = array(
-               'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s',
-               't','u','v','w','x','y','z','a','B','C','D','E','F','G','H','I','J','K','L',
-               'M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','-','.','_','0','1',
-               '2','3','4','5','6','7','8','9'
-       );
-
-       if (isResetModeEnabled() && (!isDebugModeEnabled()) && ($GLOBALS['output_mode'] != 1)) {
-               // Daily reset was run so let's check out for expired newsletter orders
-               $INC_POOL[] = sprintf("%sinc/monthly/monthly_newsletter.php", constant('PATH'));
-       }
-       break;
-}
-
-//
+// [EOF]
 ?>