]> git.mxchange.org Git - mailer.git/blobdiff - inc/extensions/ext-coupon.php
Naming convention on language strings applied, ACL handling fixed:
[mailer.git] / inc / extensions / ext-coupon.php
index 8c87f9ab67ca347f21b5bd0dddd6368c6126164f..2f223f2fb21cb4e1973de35abc456708c919bfaa 100644 (file)
@@ -48,56 +48,84 @@ setThisExtensionVersion('0.0');
 // Version history array (add more with , '0.1' and so on)
 setExtensionVersionHistory(array('0.0'));
 
-// This extension is in development (non-productive)
-enableExtensionProductive(false);
-
 switch (getExtensionMode()) {
-       case 'register': // Do stuff when installtion is running (modules.php?module=admin&action=login is called)
+       case 'register': // Do stuff when installtion is running
+               // This extension requires an up-to-date user
+               addExtensionDependency('user');
+
                // Coupon data
-               addDropTableSql('coupons');
-               addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_coupons` (
+               addDropTableSql('coupon_data');
+               addCreateTableSql('coupon_data', "(
 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
-`timestamp_created` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
-`timestamp_expired` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00',
+`coupon_created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
+`coupon_expired` TIMESTAMP NULL DEFAULT NULL,
 `coupon_type` ENUM('CODE','API') NOT NULL DEFAULT 'CODE',
-`coupon_code` VARCHAR(30) NULL DEFAULT NULL,
-`total_created` UNSIGNED BIGINT(20) NOT NULL DEFAULT 0,
-`total_used` UNSIGNED BIGINT(20) NOT NULL DEFAULT 0,
+`total_created` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`total_cashed` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`points` FLOAT(20,5) NOT NULL DEFAULT 0.00000,
 `coupon_description` TEXT,
-PRIMARY KEY (`id`),
-UNIQUE KEY (`coupon_code`)
+PRIMARY KEY (`id`)
 ) TYPE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = 'Created coupons'");
 
                // Coupon->user connection table
                addDropTableSql('user_coupons');
-               addExtensionSql("CREATE TABLE `{?_MYSQL_PREFIX?}_coupons` (
+               addCreateTableSql('user_coupons', "(
 `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
-`coupon_id BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
+`coupon_id` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0,
 `userid` BIGINT(2) UNSIGNED NOT NULL DEFAULT 0,
+`coupon_code` VARCHAR(30) NULL DEFAULT NULL,
+`cashed_on` TIMESTAMP NULL DEFAULT NULL,
 PRIMARY KEY (`id`),
-UNIQUE KEY `coupon_user` (`coupon_id`,`userid`)
+UNIQUE KEY `coupon_user` (`coupon_id`,`userid`),
+UNIQUE KEY (`coupon_code`)
 ) TYPE = {?_TABLE_TYPE?} CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = 'Coupon->user connection'");
 
                // Configuration entries
-
-               // Admin menus
-               addAdminMenuSql('setup','config_coupon','Gutscheine','Allgemeine Einstellungen zu Code-Gutscheinen und Gutscheinen von Sponsoren (z.B. per API) können hier vorgenommen werden.', 15);
+               addConfigAddSql('coupon_default_time', 'BIGINT(20) NOT NULL DEFAULT ' . (getOneDay() * 7));
+               addConfigAddSql('coupon_default_points', 'FLOAT(20,5) NOT NULL DEFAULT 100.00000');
+               addConfigAddSql('coupon_points_account', "ENUM('ORDER','GENERAL') NOT NULL DEFAULT 'ORDER'");
+               addConfigAddSql('coupon_payment_method', "ENUM('DIRECT','REF') NOT NULL DEFAULT 'DIRECT'");
+               addConfigAddSql('coupon_locked_points_mode', "ENUM('LOCKED','UNLOCKED') NOT NULL DEFAULT 'LOCKED'");
+               addConfigAddSql('coupon_autopurge_time', 'BIGINT(20) NOT NULL DEFAULT ' . (getOneDay() * 7));
+               addConfigAddSql('coupon_userid', 'BIGINT(20) UNSIGNED NOT NULL DEFAULT 0');
+
+               // User data table
+               addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_user_data` ADD `receiving_coupons` ENUM('Y','N') NOT NULL DEFAULT 'Y'");
+
+               // Menu systems:
+               //  - Admin entries
+               addAdminMenuSql('coupon', NULL, 'Gutscheine', 'Einrichten und Versenden von Code-Gutscheinen, sowie per API (noch in Planung). Bei Code-Gutscheinen wird ein Code pro Mitglied erzeugt, der dann an das Mitglied ausgesandt wird. Löst das Mitglied den Gutschein ein, erhält es die Gutschrift auf sein Konto gutgeschrieben. Ausgangseinstellung ist die Gutschrift auf das Werbeguthaben, was für Paidmailer von Wichtigkeit ist, dass Guthaben aus Gutscheinen nicht auszahlungsfähig ist.', 6);
+               addAdminMenuSql('coupon', 'list_coupon', 'Auflisten', 'Listet alle Gutscheine und Einlösungen durch die Mitglieder auf.', 1);
+               addAdminMenuSql('coupon', 'send_coupon', 'Versenden/Neuen erstellen', 'Versendet neue Gutscheine an die Mitglieder. Wenn Sie auf "Absenden" klicken, warten Sie bitte die Folgeseite ab, da der Versand der Gutscheine derzeit nicht gepoolt ist.', 2);
+               addAdminMenuSql('coupon', 'config_coupon', 'Einstellungen', 'Allgemeine Einstellungen zu Code-Gutscheinen und Gutscheinen von Sponsoren (z.B. per API) können hier vorgenommen werden.', 3);
+               //  - Member entries
+               addMemberMenuSql('coupon', NULL, 'Gutscheine', 'N', 'Y', 3);
+               addMemberMenuSql('coupon', 'cash_coupon', 'Gutschein einlösen', 'N', 'Y', 1);
+               addMemberMenuSql('coupon', 'list_coupon', 'Eingelöste auflisten', 'N', 'Y', 2);
+
+               // Add filter (for changing user_points column dynamically
+               registerFilter('determine_points_column_name', 'COUPON_CHANGE_POINTS_COLUMN_NAME', false, true, isExtensionDryRun());
                break;
 
        case 'remove': // Do stuff when removing extension
                // SQL commands to run
-               addDropTableSql('coupons');
+               addDropTableSql('coupon_data');
                addDropTableSql('user_coupons');
+               addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='coupon' LIMIT 4");
+               addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `action`='coupon' LIMIT 3");
+
+               // Remove all filters
+               unregisterFilter(__FUNCTION__, __LINE__, 'determine_points_column_name', 'COUPON_CHANGE_POINTS_COLUMN_NAME', true, isExtensionDryRun());
                break;
 
        case 'activate': // Do stuff when admin activates this extension
                // SQL commands to run
-               addExtensionSql('');
+               addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y', `locked`='N' WHERE `action`='coupon' LIMIT 3");
                break;
 
        case 'deactivate': // Do stuff when admin deactivates this extension
                // SQL commands to run
-               addExtensionSql('');
+               addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N', `locked`='Y' WHERE `action`='coupon' LIMIT 3");
                break;
 
        case 'update': // Update an extension