<?php
/************************************************************************
- * MXChange v0.2.1 Start: 02/26/2005 *
- * ================ Last change: 02/26/2005 *
+ * Mailer v0.2.1-FINAL Start: 02/26/2005 *
+ * =================== Last change: 02/26/2005 *
* *
* -------------------------------------------------------------------- *
* File : ext-newsletter.php *
* $Date:: $ *
* $Tag:: 0.2.1-FINAL $ *
* $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 *
- * For more information visit: http://www.mxchange.org *
+ * Copyright (c) 2003 - 2009 by Roland Haeder *
+ * Copyright (c) 2009 - 2011 by Mailer Developer Team *
+ * For more information visit: http://mxchange.org *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
// 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');
+setThisExtensionVersion('0.2.0');
-// Version history array (add more with , '0.1.0' 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'));
+// Version history array (add more with , '0.0.1' and so on)
+setExtensionVersionHistory(array('0.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'));
-switch ($EXT_LOAD_MODE)
-{
- case 'register': // Do stuff when installation is running (modules.php?module=admin is called)
+// This extension is in development (non-productive)
+enableExtensionProductive(false);
+
+switch (getExtensionMode()) {
+ case 'register': // Do stuff when installation is running
// SQL commands to run
- ADD_EXT_SQL('');
+ addExtensionSql('');
break;
case 'remove': // Do stuff when removing extension
// SQL commands to run
- ADD_EXT_SQL("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_admin_menu` WHERE `action`='newsletter' AND what != 'send_newsletter'");
- ADD_EXT_SQL("DELETE LOW_PRIORITY FROM `{!_MYSQL_PREFIX!}_member_menu` WHERE `what`='newsletter'");
+ addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='newsletter'");
+ addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='newsletter'");
+ addDropTableSql('newsletter_data');
+ addDropTableSql('newsletter_topics');
+ addDropTableSql('newsletter_orders');
break;
case 'activate': // Do stuff when admin activates this extension
- // SQL commands to run
- ADD_EXT_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_EXT_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)
- {
+ switch (getCurrentExtensionVersion()) {
case '0.0.1': // SQL queries for v0.0.1
- ADD_EXT_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_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_admin_menu` (`action`,`what`,`title`,`descr`,`sort`) VALUES ('newsletter','list_newsletter','Abbestellungen','Alle Abbestellungen auflisten und bearbeiten.', 2)");
- ADD_EXT_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_EXT_SQL("UPDATE `{!_MYSQL_PREFIX!}_admin_menu` SET `action`='newsletter', `what`='send_newsletter', `title`='Versenden', `sort`='1' WHERE `what`='newsletter' LIMIT 1");
- ADD_EXT_SQL("INSERT INTO `{!_MYSQL_PREFIX!}_member_menu` (`action`,`what`,`title`,`visible`,`locked`,`sort`) VALUES ('main','newsletter','Newsletter-Empfang','N','Y', 10)");
- ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_config` ADD nl_charge FLOAT(10,2) UNSIGNED NOT NULL DEFAULT '5.00'");
- ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD nl_receive ENUM('Y','N') NOT NULL DEFAULT 'Y'");
- ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD nl_until VARCHAR(10) NOT NULL DEFAULT 0");
- ADD_EXT_SQL("ALTER TABLE `{!_MYSQL_PREFIX!}_user_data` ADD nl_timespan VARCHAR(10) NOT NULL DEFAULT 0");
+ addAdminMenuSql('newsletter', NULL, 'Newsletter','Einstellungen am Newsletter, Newsletter versenden, usw.', 3);
+ addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `what` IN ('newsletter','config_newsletter') LIMIT 1");
+ 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!)
- 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.");
+ setExtensionUpdateNotes('Menüpunkte hinzufügen und Mitgliedereinstellung.');
break;
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ür diese Erweiterung deaktiviert.");
+ setExtensionUpdateNotes('URL im Versendeformular und Option <em>Immer aktiv</em> für diese Erweiterung deaktiviert.');
break;
case '0.0.3': // SQL queries for v0.0.3
// Update notes (these will be set as task text!)
- EXT_SET_UPDATE_NOTES("Wörter <strong>Mailtausch</strong>, <strong>Mailtausches</strong> und <strong>Mailtauscher</strong> sind austauschbar.");
+ setExtensionUpdateNotes('Wö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!)
- EXT_SET_UPDATE_NOTES("HTML-Code ausgelagert in Templates und SQL-Anweisungen abgesichert.");
+ 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!)
- EXT_SET_UPDATE_NOTES("Abspeichern von Einstellungen repariert.");
+ 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!)
- EXT_SET_UPDATE_NOTES("Bitte Script inc/monthly_newsletter.php löschen!");
+ setExtensionUpdateNotes('Bitte Script inc/monthly_newsletter.php löschen!');
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ührt, wenn die Erweiterung nicht aktiviert ist.");
+ setExtensionUpdateNotes('Script <strong>inc/monthly/monthly_newsletter.php</strong> wird nicht mehr ausgefü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!)
- EXT_SET_UPDATE_NOTES("Sicherheitsupdate für die Include-Befehle.");
+ setExtensionUpdateNotes('Sicherheitsupdate für die Include-Befehle.');
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önnen Sie auch HTML-Mails versenden.");
+ setExtensionUpdateNotes('Nur bei installierter Erweiterung <strong>html_mail</strong> kö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!)
- EXT_SET_UPDATE_NOTES("Nur bei installierter Erweiterung <strong>html_mail</strong> können Sie auch HTML-Mails versenden.");
+ setExtensionUpdateNotes('Nur bei installierter Erweiterung <strong>html_mail</strong> kö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!)
- EXT_SET_UPDATE_NOTES("Währung auf die Erweiterung <a href=\"#\"><strong>ext-other.zip</strong></a> verlagert. Bitte auch diese aktualisieren.");
+ setExtensionUpdateNotes('Wä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!)
- EXT_SET_UPDATE_NOTES("Fehlerhinweis bei deaktivierter Erweiterung verbessert.");
+ setExtensionUpdateNotes('Fehlerhinweis bei deaktivierter Erweiterung verbessert.');
break;
- }
- break;
- case 'modify': // When the extension got modified
- break;
+ case '0.2.0': // SQL queries for v0.2.0
+ // Tables:
+ // - Main data table
+ addDropTableSql('newsletter_data');
+ addCreateTableSql('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`)",
+ 'General newsletter data');
+
+ // - Topics data table
+ addDropTableSql('newsletter_topics');
+ addCreateTableSql('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,
+`nl_topic_clicks` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+PRIMARY KEY (`nl_topic_id`),
+INDEX `newsletter_id` (`nl_id`)",
+ 'Newsletter topics');
+
+ // - Sponsor orders data table
+ addDropTableSql('newsletter_orders');
+ addCreateTableSql('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',
+PRIMARY KEY (`nl_order_id`),
+UNIQUE INDEX `sponsor_nl_topic` (`nl_sponsor_id`,`nl_id`,`nl_topic_id`),
+INDEX `topic` (`nl_topic_id`)",
+ 'Newsletter orders');
+
+ // Configuration
+ addConfigAddSql('nl_expire', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 7));
+ addConfigAddSql('nl_archive_expire', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT ' . (getOneDay() * 14));
+ addConfigAddSql('nl_default_subject', "VARCHAR(255) NOT NULL DEFAULT 'Newsletter vom {OPEN_CONFIG}CURRENT_DATE{CLOSE_CONFIG}'");
+ addConfigAddSql('nl_default_header', 'MEDIUMTEXT');
+ addConfigAddSql('nl_default_footer', 'MEDIUMTEXT');
+ addConfigAddSql('nl_archive', "ENUM('Y','N') NOT NULL DEFAULT 'Y'");
+
+ // Admin menu
+ addAdminMenuSql('newsletter', 'list_newsletter', 'Newsletter Verwalten', 'Legen Sie hier einen neuen Newsletter mit Betreff und Verfallsdatum an und listen Sie bestehende auf. Die Grunddaten lassen sich hier ebenfalls ändern.', 1);
+ addAdminMenuSql('newsletter', 'list_newsletter_topic', 'Thema verwalten', 'Legen Sie hier ein weiteres Thema an oder editieren bzw. löschen Sie bestehende.', 2);
+ addAdminMenuSql('newsletter', 'list_newsletter_ordrs', 'Buchungen verwalten', 'Verwalten Sie hier die Buchungen im Newsletter von Ihren Sponsoren.', 3);
+ addAdminMenuSql('newsletter', 'config_newsletter', 'Einstellungen', 'Einstellungen am Newsletter vornehmen.', 4);
+
+ // Remove member menu
+ addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='newsletter' LIMIT 1");
- case 'test': // For testing purposes. For details see file inc/modules/admin/what-extensions.php, arround line 305.
+ // Update notes (these will be set as task text!)
+ setExtensionUpdateNotes('Komplettüberarbeitung der Erweiterung, siehe neuer Beschreibungstext.');
break;
+ } // END - switch
+ 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'
+ case 'modify': // When the extension got modified
+ break;
+
+ case 'test': // For testing purposes
+ break;
+
+ 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",
+ ')',
);
- if (isResetModeEnabled() && (!isDebugModeEnabled()) && (getOutputMode() != 1)) {
- // Daily reset was run so let's check out for expired newsletter orders
- ADD_INC_TO_POOL(sprintf("%sinc/monthly/monthly_newsletter.php", constant('PATH')));
- }
+ // 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;
+
+ default: // Unknown extension mode
+ logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName()));
break;
-}
+} // END - switch
-//
+// [EOF]
?>