Login procedure rewritten to filters (internal TODO)
authorRoland Häder <roland@mxchange.org>
Mon, 16 Nov 2009 06:17:11 +0000 (06:17 +0000)
committerRoland Häder <roland@mxchange.org>
Mon, 16 Nov 2009 06:17:11 +0000 (06:17 +0000)
14 files changed:
DOCS/TODOs.txt
inc/extensions/ext-bonus.php
inc/extensions/ext-sql_patches.php
inc/extensions/ext-theme.php
inc/filter-functions.php
inc/filters.php
inc/functions.php
inc/gen_mediadata.php
inc/libs/bonus_functions.php
inc/libs/theme_functions.php
inc/modules/admin/what-list_bonus.php
inc/modules/chk_login.php
inc/modules/member/what-logout.php
inc/stylesheet.php

index 102b463..6a4e3d4 100644 (file)
 ./inc/extensions/ext-newsletter.php:215:               // @TODO Move these into configuration
 ./inc/extensions/ext-rallye.php:330:           // @TODO Move this code into rallye_functions.php
 ./inc/extensions/ext-rallye.php:93:            // @TODO Fix config_rallye_prices to list_rallye_prices
-./inc/extensions/ext-sql_patches.php:737:                      // @TODO Rewrite this to a filter
+./inc/extensions/ext-sql_patches.php:762:                      // @TODO Rewrite this to a filter
 ./inc/extensions/ext-sql_patches.php:94:               /* @TODO SQL_ALTER_TABLE() should work now properly
 ./inc/extensions/ext-yoomedia.php:122:         // @TODO Can this be moved into a database table?
 ./inc/extensions/ext-yoomedia.php:55:// @TODO Only deprecated when 'network' is ready! setExtensionDeprecated('Y');
 ./inc/extensions-functions.php:376:// @TODO Change from ext_id to ext_name (not just even the variable! ;-) )
 ./inc/extensions-functions.php:489:            // @TODO Extension is loaded, what next?
-./inc/functions.php:1016:// @TODO $simple is deprecated
-./inc/functions.php:1051:      // @TODO Do only use $content and deprecate $GLOBALS and $DATA in templates
-./inc/functions.php:2351:// @TODO Try to move this to inc/libs/theme_functions.php
+./inc/functions.php:1025:// @TODO $simple is deprecated
+./inc/functions.php:1060:      // @TODO Do only use $content and deprecate $GLOBALS and $DATA in templates
 ./inc/functions.php:241:       // @TODO Remove this sanity-check if all is fine
 ./inc/functions.php:244:       // @TODO Try to rewrite all $DATA to $content
-./inc/functions.php:2522:// @TODO Please describe this function
-./inc/functions.php:2540:      searchDirsRecursive($next_dir, $last_changed); // @TODO small change to API to $last_changed = searchDirsRecursive($next_dir, $time);
-./inc/functions.php:2636:              // @TODO Add a little more infos here
-./inc/functions.php:2647:      // @TODO This cannot be rewritten to app_die(), try to find a solution for this.
-./inc/functions.php:2728:                      // @TODO Rewrite this old lost code to a template
-./inc/functions.php:2817:                      // @TODO Are these convertions still required?
-./inc/functions.php:2835:// @TODO Rewrite this function to use readFromFile() and writeToFile()
-./inc/functions.php:3709:// @TODO Lame description for this function
-./inc/functions.php:3731:                      // @TODO Move this in a filter
-./inc/functions.php:467:       // @TODO Do only use $contentn, not $DATA or raw variables
-./inc/functions.php:537:               // @TODO Extension 'msg' does not exist
-./inc/functions.php:606:// @TODO Rewrite this to an extension 'smtp'
+./inc/functions.php:2458:// @TODO Please describe this function
+./inc/functions.php:2476:      searchDirsRecursive($next_dir, $last_changed); // @TODO small change to API to $last_changed = searchDirsRecursive($next_dir, $time);
+./inc/functions.php:2572:              // @TODO Add a little more infos here
+./inc/functions.php:2583:      // @TODO This cannot be rewritten to app_die(), try to find a solution for this.
+./inc/functions.php:2664:                      // @TODO Rewrite this old lost code to a template
+./inc/functions.php:2753:                      // @TODO Are these convertions still required?
+./inc/functions.php:2771:// @TODO Rewrite this function to use readFromFile() and writeToFile()
+./inc/functions.php:3645:// @TODO Lame description for this function
+./inc/functions.php:3667:                      // @TODO Move this in a filter
+./inc/functions.php:3785:      // @TODO This is still very static, rewrite it somehow
+./inc/functions.php:476:       // @TODO Do only use $contentn, not $DATA or raw variables
+./inc/functions.php:546:               // @TODO Extension 'msg' does not exist
+./inc/functions.php:615:// @TODO Rewrite this to an extension 'smtp'
 ./inc/install-functions.php:62:        // @TODO DEACTIVATED: changeDataInFile(getConfig('CACHE_PATH') . 'config-local.php', 'OUTPUT-MODE', "setConfigEntry('OUTPUT_MODE', '", "');", postRequestElement('omode'), 0);
-./inc/language/de.php:1145:// @TODO Rewrite these two constants
-./inc/language/de.php:1161:// @TODO Rewrite these five constants
+./inc/language/de.php:1146:// @TODO Rewrite these two constants
+./inc/language/de.php:1162:// @TODO Rewrite these five constants
 ./inc/language/de.php:848:// @TODO Are these constants longer used?
 ./inc/language-functions.php:45:// @TODO Rewrite all language constants to this function.
 ./inc/language/holiday_de.php:49:// @TODO Rewrite these two constants to one
 ./inc/libs/admins_functions.php:418:           // @TODO This can be, somehow, rewritten
 ./inc/libs/beg_functions.php:57:               // @TODO Try to rewrite the following unset()
 ./inc/libs/bonus_functions.php:215:                    // @TODO Try to find a way for rewriting this constant
+./inc/libs/bonus_functions.php:303:            // @TODO This query isn't right, it will only update if the user was for a longer time away!
 ./inc/libs/doubler_functions.php:45:// @TODO Lame description
 ./inc/libs/rallye_functions.php:718:   $EXPIRE = 3; // @TODO The hard-coded value...
 ./inc/libs/rallye_functions.php:782:           // @TODO Rewrite this to our API function
 ./inc/libs/refback_functions.php:60:           // @TODO Try to rewrite the following unset()
-./inc/libs/surfbar_functions.php:1497:         // @TODO This can be somehow rewritten
-./inc/libs/surfbar_functions.php:950:  // @TODO Invalid salt should be refused
+./inc/libs/surfbar_functions.php:1491:         // @TODO This can be somehow rewritten
+./inc/libs/surfbar_functions.php:944:  // @TODO Invalid salt should be refused
 ./inc/libs/task_functions.php:244:             // @TODO These can be rewritten to filter
 ./inc/libs/task_functions.php:52:// @TODO Move all extension-dependent queries into filters
 ./inc/libs/user_functions.php:137:     // @TODO These two constants are no longer used, maybe we reactivate this code?
@@ -87,7 +88,6 @@
 ./inc/modules/admin/what-config_rallye_prices.php:225:                 // @TODO Rewrite these two constants
 ./inc/modules/admin/what-config_register.php:67:       // @TODO Move this HTML code into a template
 ./inc/modules/admin/what-edit_user.php:20: * @TODO Add support for ext-country                                    *
-./inc/modules/admin/what-email_archiv.php:91:  // @TODO Rewrite to SQL_FETCHARRAY()
 ./inc/modules/admin/what-email_stats.php:47:// @TODO Unused at the moment
 ./inc/modules/admin/what-extensions.php:344:                                           // @TODO Rewrite this to a filter
 ./inc/modules/admin/what-guest_add.php:136:                            // @TODO This can be somehow rewritten to a function
 ./inc/modules/member/what-payout.php:240:                                      // @TODO Rewrite this to a filter
 ./inc/modules/member/what-points.php:54:// @TODO Should we rewrite this to a filter?
 ./inc/modules/member/what-rallyes.php:89:      // @TODO Reactivate this: $content['admin'] = "<a href=\"{?URL?}/modules.php?module=index&amp;what=impressum&amp;admin=".$content['admin_id']."\">".$content['login']."</a>";
-./inc/modules/member/what-reflinks.php:59:// @TODO Move this into a filter
+./inc/modules/member/what-reflinks.php:60:// @TODO Move this into a filter
 ./inc/modules/member/what-stats.php:118:               // @TODO Rewrite in template: clix->clicks
 ./inc/modules/member/what-transfer.php:141:                            // @TODO Rewrite this to a filter
 ./inc/modules/member/what-transfer.php:231:                            // @TODO Try to rewrite his to $content = SQL_FETCHARRAY(), see some lines above for two different queries
 ./inc/modules/member/what-unconfirmed.php:144: // @TODO Try to rewrite this to $content = SQL_FETCHARRAY()
 ./inc/modules/order.php:75:            // @TODO Unused: 2,4
 ./inc/monthly/monthly_bonus.php:68:    // @TODO Rewrite this to a filter
-./inc/mysql-manager.php:1564:                  // @TODO Try to rewrite this to $content = SQL_FETCHARRAY()
-./inc/mysql-manager.php:1788:                  // @TODO Rewrite this to $content = SQL_FETCHARRAY()
-./inc/mysql-manager.php:2110:          // @TODO This can be somehow rewritten
-./inc/mysql-manager.php:2133:// @TODO Fix inconsistency between last_module and getWhat()
-./inc/mysql-manager.php:220:                   // @TODO Nothing helped???
-./inc/mysql-manager.php:255:                   // @TODO Rewrite this to a filter
-./inc/mysql-manager.php:576:   // @TODO Try to rewrite this to one or more functions
+./inc/mysql-manager.php:1545:                  // @TODO Try to rewrite this to $content = SQL_FETCHARRAY()
+./inc/mysql-manager.php:1769:                  // @TODO Rewrite this to $content = SQL_FETCHARRAY()
+./inc/mysql-manager.php:2091:          // @TODO This can be somehow rewritten
+./inc/mysql-manager.php:2114:// @TODO Fix inconsistency between last_module and getWhat()
+./inc/mysql-manager.php:224:                   // @TODO Nothing helped???
+./inc/mysql-manager.php:259:                   // @TODO Rewrite this to a filter
+./inc/mysql-manager.php:552:   // @TODO Try to rewrite this to one or more functions
 ./inc/mysql-manager.php:93:// @TODO Can we cache this?
 ./inc/reset/reset_beg.php:50:// @TODO This should be converted in a daily beg rallye
 ./inc/reset/reset_birthday.php:92:                     // @TODO 4 is hard-coded here, should we move it out in config?
 ./templates/de/html/guest/guest_login.tpl:21:  @TODO Deactivated feature, try to implement it or remove it.
 ./templates/de/html/guest/guest_nickname_login.tpl:21: @TODO Deactivated feature, try to find a solution for this or remove it.
 ./templates/de/html/guest/guest_stats_member.tpl:23:   @TODO We have to fix these counters.
-./templates/de/html/surfbar/surfbar_frame_top.tpl:23:// @TODO Try to rewrite this JavaScript to js.php?js=surfbar_frame_top2 (wouldn't be easy)
+./templates/de/html/surfbar/surfbar_frame_top.tpl:23:// @TODO Try to rewrite this JavaScript to js.php?js=surfbar_frame_top (wouldn't be easy)
 ### ### DEPRECATION FOLLOWS: ### ###
 ./inc/modules/admin/admin-inc.php:532:// @DEPRECATED
 ### ### template-warnings.log follows: ### ###
index 49484c8..ef08734 100644 (file)
@@ -42,10 +42,10 @@ if (!defined('__SECURITY')) {
 } // END - if
 
 // Version of this extension
-setThisExtensionVersion('0.8.9');
+setThisExtensionVersion('0.9.0');
 
 // Version history array (add more with , '0.1.0' and so on)
-setExtensionVersionHistory(array('0.0', '0.1.6', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6', '0.5.7', '0.5.8', '0.5.9', '0.6.0', '0.6.1', '0.6.2', '0.6.3', '0.6.4', '0.6.5', '0.6.6', '0.6.7', '0.6.8', '0.6.9', '0.7.0', '0.7.1', '0.7.2', '0.7.3', '0.7.4', '0.7.5', '0.7.6', '0.7.7', '0.7.8', '0.7.9', '0.8.0', '0.8.1', '0.8.2', '0.8.3', '0.8.4', '0.8.5', '0.8.6', '0.8.7', '0.8.8', '0.8.9'));
+setExtensionVersionHistory(array('0.0', '0.1.6', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6', '0.5.7', '0.5.8', '0.5.9', '0.6.0', '0.6.1', '0.6.2', '0.6.3', '0.6.4', '0.6.5', '0.6.6', '0.6.7', '0.6.8', '0.6.9', '0.7.0', '0.7.1', '0.7.2', '0.7.3', '0.7.4', '0.7.5', '0.7.6', '0.7.7', '0.7.8', '0.7.9', '0.8.0', '0.8.1', '0.8.2', '0.8.3', '0.8.4', '0.8.5', '0.8.6', '0.8.7', '0.8.8', '0.8.9', '0.9.0'));
 
 switch (getExtensionMode()) {
        case 'register': // Do stuff when installation is running (modules.php?module=admin is called)
@@ -87,6 +87,9 @@ PRIMARY KEY  (`id`)
                addExtensionSql("DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bonus_urls`");
                addExtensionSql("DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bonus_customer`");
                addExtensionSql("DROP TABLE IF EXISTS `{?_MYSQL_PREFIX?}_bonus_turbo`");
+
+               // Unregister filter
+               unregisterFilter('member_login_check', 'ADD_LOGIN_BONUS', true, getExtensionDryRun());
                break;
 
        case 'activate': // Do stuff when admin activates this extension
@@ -538,6 +541,14 @@ WHERE `last_online` < ".$mark." ORDER BY `userid` ASC");
                                // Update notes
                                setExtensionUpdateNotes("Benachrichtigungsmails f&uuml;r z.B. Bettel- oder Aktiv-Rallye werden nun angezeigt.");
                                break;
+
+                       case '0.9.0': // SQL queries for v0.9.0
+                               // Register filter
+                               registerFilter('member_login_check', 'ADD_LOGIN_BONUS', false, true, getExtensionDryRun());
+
+                               // Update notes
+                               setExtensionUpdateNotes("Filter hinzugef&uuml;gt der den Login-Bonus aktualisiert (bzw. soll) (internes TODO).");
+                               break;
                }
                break;
 
index 6171a37..b9e699e 100644 (file)
@@ -42,10 +42,10 @@ if (!defined('__SECURITY')) {
 } // END - if
 
 // Version number
-setThisExtensionVersion('0.6.8');
+setThisExtensionVersion('0.6.9');
 
 // 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.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6', '0.5.7', '0.5.8', '0.5.9', '0.6.0', '0.6.1', '0.6.2', '0.6.3', '0.6.4', '0.6.4', '0.6.5', '0.6.6', '0.6.7', '0.6.8'));
+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.1.3', '0.1.4', '0.1.5', '0.1.6', '0.1.7', '0.1.8', '0.1.9', '0.2.0', '0.2.1', '0.2.2', '0.2.3', '0.2.4', '0.2.5', '0.2.6', '0.2.7', '0.2.8', '0.2.9', '0.3.0', '0.3.1', '0.3.2', '0.3.3', '0.3.4', '0.3.5', '0.3.6', '0.3.7', '0.3.8', '0.3.9', '0.4.0', '0.4.1', '0.4.2', '0.4.3', '0.4.4', '0.4.5', '0.4.6', '0.4.7', '0.4.8', '0.4.9', '0.5.0', '0.5.1', '0.5.2', '0.5.3', '0.5.4', '0.5.5', '0.5.6', '0.5.7', '0.5.8', '0.5.9', '0.6.0', '0.6.1', '0.6.2', '0.6.3', '0.6.4', '0.6.4', '0.6.5', '0.6.6', '0.6.7', '0.6.8', '0.6.9'));
 
 // Keep this extension always active!
 setExtensionAlwaysActive('Y');
@@ -119,6 +119,9 @@ switch (getExtensionMode()) {
                addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_cats` DROP INDEX `visible`");
                addExtensionSql("ALTER TABLE `{?_MYSQL_PREFIX?}_cats` DROP INDEX `sort`");
                */
+
+               // Unregister filter
+               unregisterFilter('member_login_check', 'RESET_USER_LOGIN_FAILURE', true, getExtensionDryRun());
                break;
 
        case 'activate': // Do stuff when admin activates this extension
@@ -729,6 +732,14 @@ CHANGE `what` `what` VARCHAR(50) NULL DEFAULT NULL');
                                // Update notes (these will be set as task text!)
                                setExtensionUpdateNotes("Spalten verk&uuml;rzt, damit die Schl&uuml;ssel passen.");
                                break;
+
+                       case '0.6.9': // SQL queries for 0.6.9
+                               // Register filter
+                               registerFilter('member_login_check', 'RESET_USER_LOGIN_FAILURE', false, true, getExtensionDryRun());
+
+                               // Update notes (these will be set as task text!)
+                               setExtensionUpdateNotes("Filter zum Zur&uuml;cksetzens des fehlgeschlagenen Mitgliederlogins hinzugef&uuml;gt (internes TODO).");
+                               break;
                } // END - switch
                break;
 
index c6a2e3b..2bd7f81 100644 (file)
@@ -42,10 +42,10 @@ if (!defined('__SECURITY')) {
 } // END - if
 
 // Version number
-setThisExtensionVersion('0.1.0');
+setThisExtensionVersion('0.1.1');
 
 // 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'));
+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'));
 
 switch (getExtensionMode()) {
        case 'register': // Do stuff when installation is running (modules.php?module=admin is called)
@@ -65,8 +65,9 @@ switch (getExtensionMode()) {
                // Delete member menu entries
                addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `action`='themes' OR `what`='themes'");
 
-               // Unregister filter
+               // Unregister filters
                unregisterFilter('init', 'HANDLE_THEME_CHANGE', true, getExtensionDryRun());
+               unregisterFilter('member_login_check', 'SET_USERS_THEME', true, getExtensionDryRun());
                break;
 
        case 'activate': // Do stuff when admin activates this extension
@@ -167,6 +168,14 @@ INDEX (`theme_active`)
                                // Update notes (these will be set as task text!)
                                setExtensionUpdateNotes("&Auml;ndern des Designs nun im Filter (internes TODO).");
                                break;
+
+                       case '0.1.1': // SQL queries for v0.1.1
+                               // Register filter
+                               registerFilter('member_login_check', 'SET_USERS_THEME', false, true, getExtensionDryRun());
+
+                               // Update notes (these will be set as task text!)
+                               setExtensionUpdateNotes("Setzen des Mitgliedes&#39; eigener Design-Auswahl per Filter (internes TODO).");
+                               break;
                } // END - switch
                break;
 
@@ -184,5 +193,5 @@ INDEX (`theme_active`)
                break;
 } // END - switch
 
-//
+// [EOF]
 ?>
index e2cf53d..4c3cae0 100644 (file)
@@ -184,6 +184,9 @@ ORDER BY
        registerFilter('page_footer', 'HANDLE_FATAL_ERRORS');
        registerFilter('page_footer', 'DISPLAY_COPYRIGHT');
        registerFilter('page_footer', 'DISPLAY_PARSING_TIME');
+
+       // Member login check. Always keep FETCH_USER_DATA as first entry!
+       registerFilter('member_login_check', 'FETCH_USER_DATA');
 }
 
 // "Registers" a new filter function
index 8970f8e..7b68914 100644 (file)
@@ -863,5 +863,47 @@ function FILTER_FLUSH_TEMPLATE_CACHE () {
        } // END - if
 }
 
+// Filter for loading user data
+function FILTER_FETCH_USER_DATA ($userid = 0) {
+       // Is the userid not set? Then use member id
+       if (($userid == '0') || (is_null($userid))) $userid = getMemberId();
+
+       // Get user data
+       if (!fetchUserData($userid)) {
+               // Userid is not valid
+               debug_report_bug('User id '.$userid . ' is invalid.');
+       } // END - if
+
+       // Set member id
+       setMemberId($userid);
+}
+
+// Filter for reseting users' last login failure, only available with latest ext-sql_patches
+function FILTER_RESET_USER_LOGIN_FAILURE () {
+       // Is the user data valid?
+       if (!isMember()) {
+               // Do only run for logged in members
+               debug_report_bug('Please only run this filter for logged in users.');
+       } // END - if
+
+       // Remmeber login failures if available
+       if (isExtensionInstalledAndNewer('sql_patches') >= '0.6.1') {
+               // Reset login failures
+               SQL_QUERY_ESC("UPDATE
+       `{?_MYSQL_PREFIX?}_user_data`
+SET
+       `login_failures`=0,
+       `last_failure`='0000-00-00 00:00:00'
+WHERE
+       `userid`=%s
+LIMIT 1",
+                       array(getMemberId()), __FILE__, __LINE__);
+
+               // Store it in session
+               setSession('mxchange_member_failures' , getUserData('login_failures'));
+               setSession('mxchange_member_last_fail', getUserData('last_failure'));
+       } // END - if
+}
+
 // [EOF]
 ?>
index a31c402..77065f9 100644 (file)
@@ -2311,89 +2311,16 @@ function getCurrentTheme () {
        // The default theme is 'default'... ;-)
        $ret = 'default';
 
-       // Load default theme if not empty from configuration
-       if ((isConfigEntrySet('default_theme')) && (getConfig('default_theme') != '')) $ret = getConfig('default_theme');
-
-       if (!isSessionVariableSet('mxchange_theme')) {
-               // Set default theme
-               setTheme($ret);
-       } elseif ((isSessionVariableSet('mxchange_theme')) && (isExtensionInstalledAndNewer('sql_patches', '0.1.4'))) {
-               //die("<pre>".print_r($GLOBALS['cache_array']['themes'], true)."</pre>");
-               // Get theme from cookie
-               $ret = getSession('mxchange_theme');
-
-               // Is it valid?
-               if (getThemeId($ret) == '0') {
-                       // Fix it to default
-                       $ret = 'default';
-               } // END - if
-       } elseif ((!isInstalled()) && ((isInstalling()) || (getOutputMode() == true)) && ((isGetRequestElementSet('theme')) || (isPostRequestElementSet('theme')))) {
-               // Prepare FQFN for checking
-               $theme = sprintf("%stheme/%s/theme.php", getConfig('PATH'), getRequestElement('theme'));
-
-               // Installation mode active
-               if ((isGetRequestElementSet('theme')) && (isFileReadable($theme))) {
-                       // Set cookie from URL data
-                       setTheme(getRequestElement('theme'));
-               } elseif (isFileReadable(sprintf("%stheme/%s/theme.php", getConfig('PATH'), secureString(postRequestElement('theme'))))) {
-                       // Set cookie from posted data
-                       setTheme(secureString(postRequestElement('theme')));
-               }
-
-               // Set return value
-               $ret = getSession('mxchange_theme');
-       } else {
-               // Invalid design, reset cookie
-               setTheme($ret);
-       }
+       // Do we have ext-theme installed and active?
+       if (isExtensionActive('theme')) {
+               // Call inner method
+               $ret = getActualTheme();
+       } // END - if
 
        // Return theme value
        return $ret;
 }
 
-// Setter for theme in session
-function setTheme ($newTheme) {
-       setSession('mxchange_theme', $newTheme);
-}
-
-// Get id from theme
-// @TODO Try to move this to inc/libs/theme_functions.php
-function getThemeId ($name) {
-       // Is the extension 'theme' installed?
-       if (!isExtensionActive('theme')) {
-               // Then abort here
-               return 0;
-       } // END - if
-
-       // Default id
-       $id = '0';
-
-       // Is the cache entry there?
-       if (isset($GLOBALS['cache_array']['themes']['id'][$name])) {
-               // Get the version from cache
-               $id = $GLOBALS['cache_array']['themes']['id'][$name];
-
-               // Count up
-               incrementStatsEntry('cache_hits');
-       } elseif (isExtensionInstalledAndNewer('cache', '0.1.8')) {
-               // Check if current theme is already imported or not
-               $result = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_themes` WHERE `theme_path`='%s' LIMIT 1",
-                       array($name), __FUNCTION__, __LINE__);
-
-               // Entry found?
-               if (SQL_NUMROWS($result) == 1) {
-                       // Fetch data
-                       list($id) = SQL_FETCHROW($result);
-               } // END - if
-
-               // Free result
-               SQL_FREERESULT($result);
-       }
-
-       // Return id
-       return $id;
-}
-
 // Generates an error code from given account status
 function generateErrorCodeFromUserStatus ($status='') {
        // If no status is provided, use the default, cached
index 2d6a61c..0228753 100644 (file)
@@ -45,8 +45,11 @@ if (!defined('__SECURITY')) {
 $bsent = '0'; $bclicks = '0'; $bcount = '0';
 
 // Check for normal mails
-$result_media = SQL_QUERY('SELECT SUM(max_rec) AS max_rec, SUM(clicks) AS clicks
-FROM `{?_MYSQL_PREFIX?}_user_stats`', __FILE__, __LINE__);
+$result_media = SQL_QUERY('SELECT
+       SUM(`max_rec`) AS max_rec,
+       SUM(`clicks`) AS clicks
+FROM
+       `{?_MYSQL_PREFIX?}_user_stats`', __FILE__, __LINE__);
 list($nsent, $nclicks) = SQL_FETCHROW($result_media);
 if (empty($nsent))   $nsent   = '0';
 if (empty($nclicks)) $nclicks = '0';
@@ -82,17 +85,17 @@ updateMediadataEntry(array('total_clicks', 'bonus_clicks') , 'init', $bclicks);
 updateMediadataEntry(array('total_orders', 'bonus_orders') , 'init', $bcount);
 
 // Aquire total used points
-$result = SQL_QUERY('SELECT SUM(used_points) AS used_points FROM `{?_MYSQL_PREFIX?}_user_data`', __FILE__, __LINE__);
+$result = SQL_QUERY('SELECT SUM(`used_points`) AS used_points FROM `{?_MYSQL_PREFIX?}_user_data`', __FILE__, __LINE__);
 list($used) = SQL_FETCHROW($result);
 SQL_FREERESULT($result);
 
 // ... and total points
-$result = SQL_QUERY('SELECT SUM(points) AS points FROM `{?_MYSQL_PREFIX?}_user_points`', __FILE__, __LINE__);
+$result = SQL_QUERY('SELECT SUM(`points`) AS points FROM `{?_MYSQL_PREFIX?}_user_points`', __FILE__, __LINE__);
 list($points) = SQL_FETCHROW($result);
 SQL_FREERESULT($result);
 
 // Update database
 updateMediadataEntry(array('total_points'), 'init', ($points - $used));
 
-//
+// [EOF]
 ?>
index 5564732..af551a1 100644 (file)
@@ -284,5 +284,50 @@ function purgeExpiredTurboBonus() {
        } // END - if
 }
 
+///////////////////////////////////////////////////////////////////////////////
+//                              Only filter functions
+///////////////////////////////////////////////////////////////////////////////
+
+// Filter for adding login bonus to the user's account
+function FILTER_ADD_LOGIN_BONUS () {
+       // Is the user data valid?
+       if (!isMember()) {
+               // Do only run for logged in members
+               debug_report_bug('Please only run this filter for logged in users.');
+       } // END - if
+
+       // Bonus is not given by default ;-)
+       $bonus = false;
+       if ((isExtensionInstalledAndNewer('sql_patches', '0.2.8')) && (getConfig('bonus_active') == 'Y') && (getConfig('bonus_login_yn') == 'Y')) {
+               // Update last login if far enougth away
+               // @TODO This query isn't right, it will only update if the user was for a longer time away!
+               SQL_QUERY_ESC("UPDATE
+       `{?_MYSQL_PREFIX?}_user_data`
+SET
+       `last_login`=UNIX_TIMESTAMP()
+WHERE
+       `userid`=%s AND
+       `last_login` < (UNIX_TIMESTAMP() - {?login_timeout?})
+LIMIT 1",
+                       array(
+                               getMemberId()
+                       ), __FILE__, __LINE__
+               );
+
+               // Updated entry?
+               $bonus = (SQL_AFFECTEDROWS() == 1);
+       } // END - if
+
+       if (($bonus === true) && (getRequestElement('mode') == 'bonus')) {
+               // Output message with added points
+               $GLOBALS['message'] .= "<div class=\"tiny\">
+  ".sprintf(getMessage('BONUS_LOGIN_BONUS_ADDED'), translateComma(getConfig('login_bonus')))."
+</div>";
+       } elseif (isExtensionActive('bonus')) {
+               // No login bonus added!
+               $GLOBALS['message'] .= "<div class=\"member_failed\">{--BONUS_LOGIN_BONUS_NOT_ADDED--}</div>";
+       }
+}
+
 // [EOF]
 ?>
index 70a2199..ed45abc 100644 (file)
@@ -44,11 +44,8 @@ if (!defined('__SECURITY')) {
 // Create a selection box with installed and activated themes or all if admin
 function generateThemeSelectionBox () {
        // Init variables and fill them if set
-       $what = '';
+       $what = getWhat();
        $mod = getModule();
-       if (isWhatSet()) {
-               $what = getWhat();
-       } // END - if
 
        // Construction URL
        $formAction = "{?URL?}/modules.php?module=" . $mod;
@@ -67,7 +64,13 @@ function generateThemeSelectionBox () {
        if (isAdmin()) $add = '';
 
        // Select all themes we want
-       $result = SQL_QUERY("SELECT `theme_path`, `theme_name` FROM `{?_MYSQL_PREFIX?}_themes`".$add." ORDER BY `theme_name` ASC", __FILE__, __LINE__);
+       $result = SQL_QUERY("SELECT
+       `theme_path`, `theme_name`
+FROM
+       `{?_MYSQL_PREFIX?}_themes`
+".$add."
+ORDER BY
+       `theme_name` ASC", __FILE__, __LINE__);
 
        // Load all themes
        while ($content = SQL_FETCHARRAY($result)) {
@@ -144,7 +147,7 @@ function getThemeVersion ($name) {
 // Checks wether a theme is found in db
 function ifThemeExists ($name) {
        // Get theme and is it not nul?
-       return (getThemeId($name) > 0);
+       return ((isExtensionActive('theme')) && (getThemeId($name) > 0));
 }
 
 // Checks if a theme is active
@@ -215,6 +218,91 @@ function getCurrentThemeName () {
        return $name;
 }
 
+// Get current theme name
+function getActualTheme () {
+       // The default theme is 'default'... ;-)
+       $ret = 'default';
+
+       // Load default theme if not empty from configuration
+       if ((isConfigEntrySet('default_theme')) && (getConfig('default_theme') != '')) $ret = getConfig('default_theme');
+
+       if (!isSessionVariableSet('mxchange_theme')) {
+               // Set default theme
+               setTheme($ret);
+       } elseif ((isSessionVariableSet('mxchange_theme')) && (isExtensionInstalledAndNewer('sql_patches', '0.1.4'))) {
+               //die("<pre>".print_r($GLOBALS['cache_array']['themes'], true)."</pre>");
+               // Get theme from cookie
+               $ret = getSession('mxchange_theme');
+
+               // Is it valid?
+               if ((!isExtensionActive('theme')) || (getThemeId($ret) == '0')) {
+                       // Fix it to default
+                       $ret = 'default';
+               } // END - if
+       } elseif ((!isInstalled()) && ((isInstalling()) || (getOutputMode() == true)) && ((isGetRequestElementSet('theme')) || (isPostRequestElementSet('theme')))) {
+               // Prepare filename for checking
+               $themeFile = sprintf("theme/%s/theme.php", getRequestElement('theme'));
+
+               // Installation mode active
+               if ((isGetRequestElementSet('theme')) && (isIncludeReadable($theme))) {
+                       // Set cookie from URL data
+                       setTheme(getRequestElement('theme'));
+               } elseif (isIncludeReadable(sprintf("theme/%s/theme.php", secureString(postRequestElement('theme'))))) {
+                       // Set cookie from posted data
+                       setTheme(secureString(postRequestElement('theme')));
+               }
+
+               // Set return value
+               $ret = getSession('mxchange_theme');
+       } else {
+               // Invalid design, reset cookie
+               setTheme($ret);
+       }
+
+       // Return theme value
+       return $ret;
+}
+
+// Setter for theme in session
+function setTheme ($newTheme) {
+       setSession('mxchange_theme', $newTheme);
+}
+
+// Get id from theme
+function getThemeId ($name) {
+       // Default id
+       $id = '0';
+
+       // Is the cache entry there?
+       if (isset($GLOBALS['cache_array']['themes']['id'][$name])) {
+               // Get the version from cache
+               $id = $GLOBALS['cache_array']['themes']['id'][$name];
+
+               // Count up
+               incrementStatsEntry('cache_hits');
+       } elseif (isExtensionInstalledAndNewer('cache', '0.1.8')) {
+               // Check if current theme is already imported or not
+               $result = SQL_QUERY_ESC("SELECT `id` FROM `{?_MYSQL_PREFIX?}_themes` WHERE `theme_path`='%s' LIMIT 1",
+                       array($name), __FUNCTION__, __LINE__);
+
+               // Entry found?
+               if (SQL_NUMROWS($result) == 1) {
+                       // Fetch data
+                       list($id) = SQL_FETCHROW($result);
+               } // END - if
+
+               // Free result
+               SQL_FREERESULT($result);
+       }
+
+       // Return id
+       return $id;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+//                              Only filter functions
+///////////////////////////////////////////////////////////////////////////////
+
 // Filter for generic handling of theme change
 function FILTER_HANDLE_THEME_CHANGE () {
        // Check if new theme is selcted
@@ -233,5 +321,17 @@ function FILTER_HANDLE_THEME_CHANGE () {
        } // END - if
 }
 
+// Filter for settings theme from user profile, must be executed only if FILTER_FETCH_USER_DATA() ran before
+function FILTER_SET_USERS_THEME () {
+       // Is the user data valid?
+       if (!isMember()) {
+               // Do only run for logged in members
+               debug_report_bug('Please only run this filter for logged in users.');
+       } // END - if
+
+       // Change to new theme
+       setTheme(getUserData('curr_theme'));
+}
+
 // [EOF]
 ?>
index 2605fa9..b50b650 100644 (file)
@@ -57,11 +57,11 @@ if (getConfig('bonus_active') == 'Y') {
        if (getExtensionVersion('bonus') >= '0.6.9') {
                // Add more bonus points here
                $USE = '(0';
-               if (getConfig('bonus_click_yn') == 'Y') $USE .= " + `turbo_bonus`";
-               if (getConfig('bonus_login_yn') == 'Y') $USE .= " + `login_bonus`";
-               if (getConfig('bonus_order_yn') == 'Y') $USE .= " + `bonus_order`";
-               if (getConfig('bonus_stats_yn') == 'Y') $USE .= " + `bonus_stats`";
-               if (getConfig('bonus_ref_yn')   == 'Y') $USE .= " + `bonus_ref`";
+               if (getConfig('bonus_click_yn') == 'Y') $USE .= ' + `turbo_bonus`';
+               if (getConfig('bonus_login_yn') == 'Y') $USE .= ' + `login_bonus`';
+               if (getConfig('bonus_order_yn') == 'Y') $USE .= ' + `bonus_order`';
+               if (getConfig('bonus_stats_yn') == 'Y') $USE .= ' + `bonus_stats`';
+               if (getConfig('bonus_ref_yn')   == 'Y') $USE .= ' + `bonus_ref`';
                $USE .= ')';
        } else {
                // Old version ???
index 216166d..ad4bc4c 100644 (file)
@@ -42,82 +42,22 @@ if (!defined('__SECURITY')) {
 } // END - if
 
 // Initial message part
-$message = "<strong>{--VALIDATING_LOGIN--}</strong>";
+$GLOBALS['message'] = '<strong>{--VALIDATING_LOGIN--}</strong>';
 
 // Is the member id and u_hash set?
-if (isMemberIdSet() && (isSessionVariableSet('u_hash'))) {
-       // Is 'theme' installed and activated?
-       if (isExtensionActive('theme')) {
-               // Get theme from profile
-               if (!fetchUserData(getMemberId())) {
-                       // Userid is not valid
-                       debug_report_bug('User id '.getMemberId() . ' is invalid.');
-               } // END - if
-
-               // Load data
-               $data = getUserDataArray();
-
-               // Change to new theme
-               setTheme($data['curr_theme']);
-
-               // Remmeber login failures if available
-               if (getExtensionVersion('sql_patches') >= '0.6.1') {
-                       // Reset login failures
-                       SQL_QUERY_ESC("UPDATE
-       `{?_MYSQL_PREFIX?}_user_data`
-SET
-       `login_failures`=0,
-       `last_failure`='0000-00-00 00:00:00'
-WHERE
-       `userid`=%s
-LIMIT 1",
-                               array(getMemberId()), __FILE__, __LINE__);
-
-                       // Store it in session
-                       setSession('mxchange_member_failures', $data['login_failures']);
-                       setSession('mxchange_member_last_fail', $data['last_failure']);
-               } // END - if
-       } // END - if
-
-       // Bonus is not given by default ;-)
-       $bonus = false;
-       if ((isExtensionInstalledAndNewer('sql_patches', '0.2.8')) && (isExtensionInstalledAndNewer('bonus', '0.2.1')) && (getConfig('bonus_active') == 'Y') && (getConfig('bonus_login_yn') == 'Y')) {
-               // Update last login if far enougth away
-               SQL_QUERY_ESC("UPDATE
-       `{?_MYSQL_PREFIX?}_user_data`
-SET
-       `last_login`=UNIX_TIMESTAMP()
-WHERE
-       `userid`=%s AND
-       `last_login` < (UNIX_TIMESTAMP() - %s)
-LIMIT 1",
-                       array(
-                               getMemberId(),
-                               getConfig('login_timeout')
-                       ), __FILE__, __LINE__
-               );
-               if (SQL_AFFECTEDROWS() == 1) $bonus = true;
-       } // END - if
-
-       if (($bonus === true) && (getRequestElement('mode') == 'bonus') && (isExtensionActive('bonus'))) {
-               // Output message with added points
-               $message .= "<div class=\"tiny\">
-  ".sprintf(getMessage('BONUS_LOGIN_BONUS_ADDED'), translateComma(getConfig('login_bonus')))."
-</div>";
-       } elseif (isExtensionActive('bonus')) {
-               // No login bonus added!
-               $message .= "<div class=\"member_failed\">{--BONUS_LOGIN_BONUS_NOT_ADDED--}</div>";
-       }
+if (isMember()) {
+       // Run filter chain here
+       runFilterChain('member_login_check');
 
        // Redirect to member area
-       $message .= loadTemplate('member_login_js', true);
+       $GLOBALS['message'] .= loadTemplate('member_login_js', true);
 } else {
        // Login failed!
-       $message .= loadTemplate('login_failed_js', true);
+       $GLOBALS['message'] .= loadTemplate('login_failed_js', true);
 }
 
 // Output final message
-loadTemplate('admin_settings_saved', false, $message);
+loadTemplate('admin_settings_saved', false, $GLOBALS['message']);
 
 // [EOF]
 ?>
index 4e7ccf6..b29aa2d 100644 (file)
@@ -48,7 +48,7 @@ $URL = 'modules.php?module=index&amp;code=';
 
 if (destroyMemberSession()) {
        // Remove theme cookie as well
-       setTheme('');
+       if (isExtensionActive('theme')) setTheme('');
 
        // Logout completed
        $URL .= getCode('LOGOUT_DONE');
index c5e0d7a..d8e1514 100644 (file)
@@ -42,12 +42,12 @@ if (!defined('__SECURITY')) {
 }
 
 // Default styles
-$STYLES = array(
+$stylesList = array(
                'general.css',
 );
 
 // Add stylesheet for installation
-if ((isInstallationPhase())) $STYLES[] = 'install.css';
+if ((isInstallationPhase())) $stylesList[] = 'install.css';
 
 // When no CSS output-mode is set, set it to file-output
 if (!isConfigEntrySet('css_php')) setConfigEntry('css_php', 'FILE');
@@ -55,13 +55,13 @@ if (!isConfigEntrySet('css_php')) setConfigEntry('css_php', 'FILE');
 // Output CSS files or content or link to css.php ?
 if ((getOutputMode() == 1) || (getConfig('css_php') == 'DIRECT')) {
        // Load CSS files
-       $STYLES = merge_array($STYLES, getExtensionCssFiles());
+       $stylesList = merge_array($stylesList, getExtensionCssFiles());
 
        // Generate base path
        $basePath = sprintf("%stheme/%s/css/", getConfig('PATH'), getCurrentTheme());
 
        // Output inclusion lines
-       foreach ($STYLES as $value) {
+       foreach ($stylesList as $value) {
                // Only include found CSS files (to reduce 404 requests)
                $FQFN = $basePath . $value;
 
@@ -84,14 +84,14 @@ if ((getOutputMode() == 1) || (getConfig('css_php') == 'DIRECT')) {
        } // END - foreach
 } elseif ((getOutputMode() == '0') || (getConfig('css_php') == 'INLINE')) {
        // Load CSS files
-       $STYLES = merge_array($STYLES, getExtensionCssFiles());
+       $stylesList = merge_array($stylesList, getExtensionCssFiles());
 
        // Generate base path
        $basePath = sprintf("%stheme/%s/css/", getConfig('PATH'), getCurrentTheme());
 
        // Output inclusion lines
        $OUT = '';
-       foreach ($STYLES as $value) {
+       foreach ($stylesList as $value) {
                // Only include found CSS files (to reduce 404 requests)
                $FQFN = $basePath . $value;