user connection table'); // Admin menu addAdminMenuSql('rallye', NULL, 'Rallye-Management','Richten Sie neue Ref-Rallyes ein, die zeitgesteuert anfangen und aufhöhren. Dabei wird alles weitere automatisch geregelt.',9); addAdminMenuSql('rallye','add_rallye','Neue Rallye hinzufügen','Neue Ref-Rallye hinzufügen.',1); // @TODO Fix config_rallye_prices to list_rallye_prices addAdminMenuSql('rallye','config_rallye_prices','Preise einrichten','Richten Sie Preise zu den Rallyes ein.',2); addAdminMenuSql('rallye','list_rallyes','Rallyes verwalten','Alle bestehenden Ref-Rallyes auflisten, bearbeiten, stoppen, löschen usw.',3); // Guest menu addGuestMenuSql('main', 'rallyes', 'Ref-Rallyes', 9); // Member menu addMemberMenuSql('main', 'rallyes', 'Ref-Rallyes', 9); break; case 'remove': // Do stuff when removing extension // Drop tables addDropTableSql('rallye_data'); addDropTableSql('rallye_prices'); addDropTableSql('rallye_users'); // Remove menus addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_admin_menu` WHERE `action`='rallye'"); addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='rallyes' LIMIT 1"); addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='rallyes' LIMIT 1"); // Unregister filter unregisterFilter(__FUNCTION__, __LINE__, 'extra_autopurge', 'RALLYE_EXTRA_AUTOPURGE', true, isExtensionDryRun()); break; case 'activate': // Do stuff when admin activates this extension // SQL commands to run addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='Y',`locked`='N' WHERE `what`='rallyes' LIMIT 1"); addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y',`locked`='N' WHERE `what`='rallyes' LIMIT 1"); break; case 'deactivate': // Do stuff when admin deactivates this extension // SQL commands to run addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_guest_menu` SET `visible`='N',`locked`='Y' WHERE `what`='rallyes' LIMIT 1"); addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='N',`locked`='Y' WHERE `what`='rallyes' LIMIT 1"); break; case 'update': // Update an extension switch (getCurrentExtensionVersion()) { case '0.0.1': // SQL queries for v0.0.1 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_rallye_data` ADD expired ENUM('Y','N') NOT NULL DEFAULT 'N'"); // Update notes (these will be set as task text!) setExtensionUpdateNotes("Ablaufen der Rallyes intergriert."); break; case '0.0.2': // SQL queries for v0.0.2 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_rallye_users` ADD curr_points FLOAT(20,5) UNSIGNED NOT NULL DEFAULT 0.00000"); // Update notes (these will be set as task text!) setExtensionUpdateNotes("Aktueller {?POINTS?}-Stand wird beachtet."); break; case '0.0.6': // SQL queries for v0.0.6 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Fehler Unknown column 'd.useid' in 'on clause' behoben."); break; case '0.0.7': // SQL queries for v0.0.7 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Fehlende Abfrage im Mitlieder-Modul, on Erweiterung auch aktiviert ist."); break; case '0.0.8': // SQL queries for v0.0.8 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Fehler Template nicht gefunden behoben und Admin-Formulare ausgelagert"); break; case '0.0.9': // SQL queries for v0.0.9 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist. Und der vorherige Fehler Template nicht gefunden ist endlich beseitigt."); break; case '0.1.0': // SQL queries for v0.2.1 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_rallye_users` CHANGE curr_points curr_points FLOAT(23,5) UNSIGNED NOT NULL DEFAULT 0.00000"); // Update notes (these will be set as task text!) setExtensionUpdateNotes("5 Nachkommastellen implementiert."); break; case '0.1.1': // SQL queries for v0.1.1 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Fehler beseitigt, wenn error_reporting=E_ALL gesetzt ist."); break; case '0.1.2': // SQL queries for v0.1.2 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Problem mit Speicherung der Einstellungen beseitigt."); break; case '0.1.3': // SQL queries for v0.1.3 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Anzeigefehler im Gast-/Mitgliedsbereich behoben."); break; case '0.1.4': // SQL queries for v0.1.4 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Admin-Mails korregiert."); break; case '0.1.5': // SQL queries for v0.1.5 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Menüpunkte im Gast-/Mitgliedsbereich können nicht mehr aufgerufen werden, wenn die Erweiterung deaktiviert ist."); break; case '0.1.6': // SQL queries for v0.1.6 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Seit Patch 340 überflüssige HTML-Tags entfernt."); break; case '0.1.7': // SQL queries for v0.1.7 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Aktivierte bzw. abgelaufene Rallyes werden nur ausserhalb des CSS-Modus geladen (wenn also nicht css.php aufgerufen wurde)"); break; case '0.1.8': // SQL queries for v0.1.8 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Weitere Templates vom Admin-Bereich ausgelagert und Referral-Anazahl in der Mail zur Rallye-Ankündigung repariert."); break; case '0.1.9': // SQL queries for v0.1.9 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Funktion generateUserProfileLink() mit Verlinkung auf Referral-Liste implementiert."); break; case '0.2.0': // SQL queries for v0.2.0 addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_rallye_data` ADD `min_users` BIGINT(20) UNSIGNED NOT NULL DEFAULT 0"); addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_rallye_data` ADD `min_prices` BIGINT(20) UNSIGNED NOT NULL DEFAULT 3"); // Update notes (these will be set as task text!) setExtensionUpdateNotes("Ablaufen der Rallyes intergriert. Bauen Sie in Ihr Template templates/de/emails/member/member_rallye_notify.tpl folgende zwei Zeilen ein:
Zudem sollten Sie mindestens folgende Templates (in templates/".getLanguage()."/html/guest/ !) aktualisieren:
"); break; case '0.2.1': // SQL queries for v0.2.1 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Wörter {?mt_word?}, {?mt_word2?} und {?mt_word3?} sind austauschbar."); break; case '0.2.2': // SQL queries for v0.2.2 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Links wegen what=admins_contct geändert."); break; case '0.2.3': // SQL queries for v0.2.3 // Update notes (these will be set as task text!) setExtensionUpdateNotes("HTML-Code ausgelagert in Templates und SQL-Anweisungen abgesichert."); break; case '0.2.4': // SQL queries for v0.2.4 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Abspeichern von Einstellungen repariert."); break; case '0.2.5': // SQL queries for v0.2.5 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Menüpunkt "Rallyes verwalten" repariert."); break; case '0.2.6': // SQL queries for v0.2.6 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Automatisches Starten von Referral-Rallyes repariert."); break; case '0.2.7': // SQL queries for v0.2.7 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Fatalen Fehler beseitigt."); break; case '0.2.8': // SQL queries for v0.2.8 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Vorbereitung auf die neue Mediendaten v0.0.4."); break; case '0.2.9': // SQL queries for v0.2.9 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Sicherheitsupdate für die Include-Befehle."); break; case '0.3.0': // SQL queries for v0.3.0 // Update notes (these will be set as task text!) setExtensionUpdateNotes("if-Anweisungen auf Funktion empty() umgestellt."); break; case '0.3.1': // SQL queries for v0.3.1 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Erweiterung für automatisch generierte Admin-Kontaktlinks geändert."); break; case '0.3.2': // SQL queries for v0.3.2 addExtensionSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `action`='rals',`title`='Referral-Rallye',`sort`=1 WHERE `what`='rallyes' LIMIT 1"); // Update notes (these will be set as task text!) setExtensionUpdateNotes("Mitgliedsmenü komplett umgebaut."); break; case '0.3.3': // SQL queries for v0.3.3 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Rallyes werden nun nur dann automatisch beseitigt, wenn die Erweiterung autopurge installiert und aktiviert ist."); break; case '0.3.4': // SQL queries for v0.3.4 // Update notes (these will be set as task text!) setExtensionUpdateNotes("Fehlerhinweis bei deaktivierter Erweiterung verbessert."); break; case '0.3.5': // SQL queries for 0.3.5 // This update depends on ext-sql_patches addExtensionDependency('sql_patches'); // Register filter registerFilter('extra_autopurge', 'RALLYE_EXTRA_AUTOPURGE', false, true, isExtensionDryRun()); // Update notes (these will be set as task text!) setExtensionUpdateNotes("Filter hinzugefügt und ist von sql_patches abhängig."); break; case '0.3.6': // SQL queries for v0.3.6 addExtensionSql("INSERT INTO `{?_MYSQL_PREFIX?}_points_data` (`subject`,`column_name`,`locked_mode`,`payment_method`) VALUES ('rallye_winner','points','LOCKED','DIRECT')"); // This depends on ext-sql_patches addExtensionDependency('sql_patches'); // Update notes setExtensionUpdateNotes("Gewinn aus der Referral-Rallye wird nun über die Tabelle {OPEN_CONFIG}_MYSQL_PREFIX{CLOSE_CONFIG}_points_data verwaltet."); break; } // END - switch break; case 'modify': // When the extension got modified break; case 'test': // For testing purposes break; case 'init': // Do stuff when extension is initialized // Do stuff only when not in CSS mode // @TODO Move this code into a hook if (!isCssOutputMode()) { // Get total member count $total = getTotalConfirmedUser(); // Add more data on higher versions $ADD1 = ''; $ADD2 = ''; $OR = ''; if (isExtensionInstalledAndNewer('rallye', '0.2.0')) { $ADD1 = ",`min_users`,`min_prices`"; $ADD2 = ",d.`min_users`,d.`min_prices`"; $OR = " OR (d.`min_users` <= " . $total . " AND d.`min_users` > 0)"; } // END - if // Check for new started but not notified rallyes $result = SQL_QUERY("SELECT SQL_SMALL_RESULT `id`,`title`,`start_time`,`end_time`,`send_notify`" . $ADD1 . " FROM `{?_MYSQL_PREFIX?}_rallye_data` WHERE `is_active`='Y' AND `notified`='N' AND `expired`='N' AND `start_time` <= UNIX_TIMESTAMP() AND `end_time` > UNIX_TIMESTAMP() LIMIT 1", __FILE__, __LINE__); if (SQL_NUMROWS($result) == 1) { // Start rallye autostartReferralRallyes($result); } // END - if // Free memory SQL_FREERESULT($result); // Check for expired rallyes $result = SQL_QUERY("SELECT SQL_SMALL_RESULT d.`id`, d.`title`, d.`start_time`, d.`end_time`, d.`send_notify` " . $ADD2 . " FROM `{?_MYSQL_PREFIX?}_rallye_data` AS d WHERE d.`is_active`='Y' AND d.`notified`='Y' AND d.`expired`='N' AND (d.`end_time` <= UNIX_TIMESTAMP()".$OR.") LIMIT 1", __FILE__, __LINE__); if ((SQL_NUMROWS($result) == 1) && (isExtensionActive('autopurge'))) { // End rallye here... markReferralRallyesAsExpired($result); } // END - if // Free memory SQL_FREERESULT($result); } // END - if break; default: // Unknown extension mode logDebugMessage(__FILE__, __LINE__, sprintf("Unknown extension mode %s in extension %s detected.", getExtensionMode(), getCurrentExtensionName())); break; } // END - switch // [EOF] ?>