Introduced function determinePointsColumnFromSubjectLocked(), renamed filter:
authorRoland Häder <roland@mxchange.org>
Sat, 25 Jun 2011 00:46:57 +0000 (00:46 +0000)
committerRoland Häder <roland@mxchange.org>
Sat, 25 Jun 2011 00:46:57 +0000 (00:46 +0000)
- Introduced function determinePointsColumnFromSubjectLocked() which allows to
  "route" added points to a different user's sub-account than just 'normal'
  and 'locked'.
- Renamed filter 'add_points' to 'post_add_points'. You NEED to re-install
  ext-mediadata to get accurate media data back (ext-booking is still in
  development)

inc/extensions/ext-booking.php
inc/extensions/ext-mediadata.php
inc/filters.php
inc/mysql-manager.php

index 7993769..aa0f8f1 100644 (file)
@@ -77,7 +77,7 @@ PRIMARY KEY (`id`)
                addMemberMenuSql('main','booking','{OPEN_CONFIG}POINTS{CLOSE_CONFIG}-Kontoauszug','N','Y',5);
 
                // Add the filters
                addMemberMenuSql('main','booking','{OPEN_CONFIG}POINTS{CLOSE_CONFIG}-Kontoauszug','N','Y',5);
 
                // Add the filters
-               registerFilter('add_points', 'ADD_BOOKING_RECORD', false, true, isExtensionDryRun());
+               registerFilter('post_add_points', 'ADD_BOOKING_RECORD', false, true, isExtensionDryRun());
                registerFilter('sub_points', 'ADD_BOOKING_RECORD', false, true, isExtensionDryRun());
                break;
 
                registerFilter('sub_points', 'ADD_BOOKING_RECORD', false, true, isExtensionDryRun());
                break;
 
@@ -87,7 +87,7 @@ PRIMARY KEY (`id`)
                addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='booking'");
 
                // Remove the filters
                addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_member_menu` WHERE `what`='booking'");
 
                // Remove the filters
-               unregisterFilter(__FUNCTION__, __LINE__, 'add_points', 'ADD_BOOKING_RECORD', true, isExtensionDryRun());
+               unregisterFilter(__FUNCTION__, __LINE__, 'post_add_points', 'ADD_BOOKING_RECORD', true, isExtensionDryRun());
                unregisterFilter(__FUNCTION__, __LINE__, 'sub_points', 'ADD_BOOKING_RECORD', true, isExtensionDryRun());
                break;
 
                unregisterFilter(__FUNCTION__, __LINE__, 'sub_points', 'ADD_BOOKING_RECORD', true, isExtensionDryRun());
                break;
 
index 3612365..71da33b 100644 (file)
@@ -55,7 +55,7 @@ switch (getExtensionMode()) {
                addExtensionSql('');
 
                // Add the filters
                addExtensionSql('');
 
                // Add the filters
-               registerFilter('add_points', 'UPDATE_MEDIADATA_ENTRY', false, true, isExtensionDryRun());
+               registerFilter('post_add_points', 'UPDATE_MEDIADATA_ENTRY', false, true, isExtensionDryRun());
                registerFilter('sub_points', 'UPDATE_MEDIADATA_ENTRY', false, true, isExtensionDryRun());
                break;
 
                registerFilter('sub_points', 'UPDATE_MEDIADATA_ENTRY', false, true, isExtensionDryRun());
                break;
 
@@ -66,7 +66,7 @@ switch (getExtensionMode()) {
                addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='mediadata'");
 
                // Remove the filters
                addExtensionSql("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_guest_menu` WHERE `what`='mediadata'");
 
                // Remove the filters
-               unregisterFilter(__FUNCTION__, __LINE__, 'add_points', 'UPDATE_MEDIADATA_ENTRY', true, isExtensionDryRun());
+               unregisterFilter(__FUNCTION__, __LINE__, 'post_add_points', 'UPDATE_MEDIADATA_ENTRY', true, isExtensionDryRun());
                unregisterFilter(__FUNCTION__, __LINE__, 'sub_points', 'UPDATE_MEDIADATA_ENTRY', true, isExtensionDryRun());
                break;
 
                unregisterFilter(__FUNCTION__, __LINE__, 'sub_points', 'UPDATE_MEDIADATA_ENTRY', true, isExtensionDryRun());
                break;
 
index 9a2ca2d..fec9bae 100644 (file)
@@ -304,7 +304,9 @@ function FILTER_UPDATE_LOGIN_DATA () {
                $content = getUserDataArray();
 
                // Maybe first login time?
                $content = getUserDataArray();
 
                // Maybe first login time?
-               if (empty($content['last_module'])) $content['last_module'] = 'login';
+               if (empty($content['last_module'])) {
+                       $content['last_module'] = 'login';
+               } // END - if
 
                // This will be displayed on welcome page! :-)
                if (empty($GLOBALS['last_online']['module'])) {
 
                // This will be displayed on welcome page! :-)
                if (empty($GLOBALS['last_online']['module'])) {
@@ -316,7 +318,9 @@ function FILTER_UPDATE_LOGIN_DATA () {
                if (!isWhatSet()) {
                        // Fix it to default
                        setWhat('welcome');
                if (!isWhatSet()) {
                        // Fix it to default
                        setWhat('welcome');
-                       if (getIndexHome() != '') setWhatFromConfig('index_home');
+                       if (getIndexHome() != '') {
+                               setWhatFromConfig('index_home');
+                       } // END - if
                } // END - if
 
                // Update last module / online time
                } // END - if
 
                // Update last module / online time
index 143048b..58ea2cc 100644 (file)
@@ -996,7 +996,7 @@ function getReferalLevelPercents ($level) {
 
 /**
  *
 
 /**
  *
- * Dynamic referal system, can also send mails!
+ * Dynamic referal and points system, can also send mails!
  *
  * subject     = Subject line, write in lower-case letters and underscore is allowed
  * userid      = Referal id wich should receive...
  *
  * subject     = Subject line, write in lower-case letters and underscore is allowed
  * userid      = Referal id wich should receive...
@@ -1007,19 +1007,18 @@ function getReferalLevelPercents ($level) {
  * add_mode    = Add points only to $userid or also refs? (WARNING! Changing 'ref' to 'direct'
  *               for default value will cause no referal will get points ever!!!)
  */
  * add_mode    = Add points only to $userid or also refs? (WARNING! Changing 'ref' to 'direct'
  *               for default value will cause no referal will get points ever!!!)
  */
-function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify = false, $refid = '0', $add_mode = 'ref') {
+function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify = false, $refid = '0', $addMode = 'ref') {
        // By default nothing has been added
        $added = false;
 
        //* DEBUG: */ debugOutput('----------------------- <font color="#00aa00">' . __FUNCTION__ . ' - ENTRY</font> ------------------------<ul><li>');
        // Convert mode to lower-case
        // By default nothing has been added
        $added = false;
 
        //* DEBUG: */ debugOutput('----------------------- <font color="#00aa00">' . __FUNCTION__ . ' - ENTRY</font> ------------------------<ul><li>');
        // Convert mode to lower-case
-       $add_mode = strtolower($add_mode);
+       $addMode = strtolower($addMode);
 
        // When $userid = '0' add points to jackpot
        if (($userid == '0') && (isExtensionActive('jackpot'))) {
                // Add points to jackpot
 
        // When $userid = '0' add points to jackpot
        if (($userid == '0') && (isExtensionActive('jackpot'))) {
                // Add points to jackpot
-               addPointsToJackpot($points);
-               return;
+               return addPointsToJackpot($points);
        } // END - if
 
        // Count up referal depth
        } // END - if
 
        // Count up referal depth
@@ -1039,20 +1038,15 @@ function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify
                // Determine wether the user has some mails to click before he/she gets the points
                $locked = ifUserPointsLocked($userid);
 
                // Determine wether the user has some mails to click before he/she gets the points
                $locked = ifUserPointsLocked($userid);
 
-               // Default is 'normal' points
-               $data = 'points';
-
-               // Which points, locked or normal?
-               if ($locked === true) {
-                       $data = 'locked_points';
-               } // END - if
+               // Detect database column
+               $pointsColumn = determinePointsColumnFromSubjectLocked($subject, $locked);
 
                // This is the user and his ref
                $GLOBALS['cache_array']['add_userid'][getUserData('refid')] = $userid;
 
                // Get percents
                $per = getReferalLevelPercents($GLOBALS['ref_level']);
 
                // This is the user and his ref
                $GLOBALS['cache_array']['add_userid'][getUserData('refid')] = $userid;
 
                // Get percents
                $per = getReferalLevelPercents($GLOBALS['ref_level']);
-               //* DEBUG: */ debugOutput(__FUNCTION__ . '(<font color="#0000aa">' . __LINE__ . '</font>):userid='.$userid.',points='.$points.',depth='.$GLOBALS['ref_level'].',per='.$per.',mode='.$add_mode);
+               //* DEBUG: */ debugOutput(__FUNCTION__ . '(<font color="#0000aa">' . __LINE__ . '</font>):userid='.$userid.',points='.$points.',depth='.$GLOBALS['ref_level'].',per='.$per.',mode='.$addMode);
 
                // Some percents found?
                if ($per > 0) {
 
                // Some percents found?
                if ($per > 0) {
@@ -1061,7 +1055,7 @@ function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify
                        $ref_points = $points * $per / 100;
 
                        // Pay refback here if level > 0 and in ref-mode
                        $ref_points = $points * $per / 100;
 
                        // Pay refback here if level > 0 and in ref-mode
-                       if ((isExtensionActive('refback')) && ($GLOBALS['ref_level'] > 0) && ($per < 100) && ($add_mode == 'ref') && (isset($GLOBALS['cache_array']['add_userid'][$userid]))) {
+                       if ((isExtensionActive('refback')) && ($GLOBALS['ref_level'] > 0) && ($per < 100) && ($addMode == 'ref') && (isset($GLOBALS['cache_array']['add_userid'][$userid]))) {
                                //* DEBUG: */ debugOutput(__FUNCTION__ . '(<font color="#0000aa">' . __LINE__ . '</font>):userid='.$userid.',data='.$GLOBALS['cache_array']['add_userid'][$userid].',ref_points='.$ref_points.',depth='.$GLOBALS['ref_level'].' - BEFORE!');
                                $ref_points = addRefbackPoints($GLOBALS['cache_array']['add_userid'][$userid], $userid, $points, $ref_points);
                                //* DEBUG: */ debugOutput(__FUNCTION__ . '(<font color="#0000aa">' . __LINE__ . '</font>):userid='.$userid.',data='.$GLOBALS['cache_array']['add_userid'][$userid].',ref_points='.$ref_points.',depth='.$GLOBALS['ref_level'].' - AFTER!');
                                //* DEBUG: */ debugOutput(__FUNCTION__ . '(<font color="#0000aa">' . __LINE__ . '</font>):userid='.$userid.',data='.$GLOBALS['cache_array']['add_userid'][$userid].',ref_points='.$ref_points.',depth='.$GLOBALS['ref_level'].' - BEFORE!');
                                $ref_points = addRefbackPoints($GLOBALS['cache_array']['add_userid'][$userid], $userid, $points, $ref_points);
                                //* DEBUG: */ debugOutput(__FUNCTION__ . '(<font color="#0000aa">' . __LINE__ . '</font>):userid='.$userid.',data='.$GLOBALS['cache_array']['add_userid'][$userid].',ref_points='.$ref_points.',depth='.$GLOBALS['ref_level'].' - AFTER!');
@@ -1069,15 +1063,26 @@ function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify
 
                        // Update points...
                        SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_points` SET `%s`=`%s`+%s WHERE `userid`=%s AND `ref_depth`=%s LIMIT 1",
 
                        // Update points...
                        SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_points` SET `%s`=`%s`+%s WHERE `userid`=%s AND `ref_depth`=%s LIMIT 1",
-                               array($data, $data, $ref_points, bigintval($userid), bigintval($GLOBALS['ref_level'])), __FUNCTION__, __LINE__);
-                       //* DEBUG: */ debugOutput(__FUNCTION__ . '(<font color="#0000aa">' . __LINE__ . '</font>):data='.$data.',ref_points='.$ref_points.',userid='.$userid.',depth='.$GLOBALS['ref_level'].',mode='.$add_mode.' - UPDATE! ('.SQL_AFFECTEDROWS().')');
+                               array(
+                                       $pointsColumn,
+                                       $pointsColumn,
+                                       $ref_points,
+                                       bigintval($userid),
+                                       bigintval($GLOBALS['ref_level'])
+                               ), __FUNCTION__, __LINE__);
+                       //* DEBUG: */ debugOutput(__FUNCTION__ . '(<font color="#0000aa">' . __LINE__ . '</font>):pointsColumn='.$pointsColumn.',ref_points='.$ref_points.',userid='.$userid.',depth='.$GLOBALS['ref_level'].',mode='.$addMode.' - UPDATE! ('.SQL_AFFECTEDROWS().')');
 
                        // No entry updated?
                        if (SQL_HASZEROAFFECTED()) {
                                // First ref in this level! :-)
 
                        // No entry updated?
                        if (SQL_HASZEROAFFECTED()) {
                                // First ref in this level! :-)
-                               SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_points` (`userid`,`ref_depth`,`%s`) VALUES (%s,%s,%s)",
-                                       array($data, bigintval($userid), bigintval($GLOBALS['ref_level']), $ref_points), __FUNCTION__, __LINE__);
-                               //* DEBUG: */ debugOutput(__FUNCTION__ . '(<font color="#0000aa">' . __LINE__ . '</font>):data='.$data.',ref_points='.$ref_points.',userid='.$userid.',depth='.$GLOBALS['ref_level'].',mode='.$add_mode.' - INSERTED! ('.SQL_AFFECTEDROWS().')');
+                               SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_points` (`userid`, `ref_depth`, `%s`) VALUES (%s, %s, %s)",
+                                       array(
+                                               $pointsColumn,
+                                               bigintval($userid),
+                                               bigintval($GLOBALS['ref_level']),
+                                               $ref_points
+                                       ), __FUNCTION__, __LINE__);
+                               //* DEBUG: */ debugOutput(__FUNCTION__ . '(<font color="#0000aa">' . __LINE__ . '</font>):data='.$pointsColumn.',ref_points='.$ref_points.',userid='.$userid.',depth='.$GLOBALS['ref_level'].',mode='.$addMode.' - INSERTED! ('.SQL_AFFECTEDROWS().')');
                        } // END - if
 
                        // Check affected rows
                        } // END - if
 
                        // Check affected rows
@@ -1086,19 +1091,21 @@ function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify
 
                        // Prepare data for the filter
                        $filterData = array(
 
                        // Prepare data for the filter
                        $filterData = array(
-                               'subject'  => $subject,
-                               'userid'   => $userid,
-                               'points'   => $points,
-                               'notify'   => $sendNotify,
-                               'refid'    => $refid,
-                               'locked'   => $locked,
-                               'mode'     => 'add',
-                               'sub_mode' => $add_mode,
-                               'added'    => $added
+                               'subject'    => $subject,
+                               'userid'     => $userid,
+                               'points'     => $points,
+                               'ref_points' => $ref_points,
+                               'column'     => $pointsColumn,
+                               'notify'     => $sendNotify,
+                               'refid'      => $refid,
+                               'locked'     => $locked,
+                               'mode'       => 'add',
+                               'add_mode'   => $addMode,
+                               'added'      => $added
                        );
 
                        // Filter it now
                        );
 
                        // Filter it now
-                       $filterData = runFilterChain('add_points', $filterData);
+                       $filterData = runFilterChain('post_add_points', $filterData);
 
                        // Extract $added
                        $added = $filterData['added'];
 
                        // Extract $added
                        $added = $filterData['added'];
@@ -1118,7 +1125,7 @@ function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify
 
                                // Send email
                                sendEmail($userid, '{--THANX_REFERAL_ONE_SUBJECT--}', $message);
 
                                // Send email
                                sendEmail($userid, '{--THANX_REFERAL_ONE_SUBJECT--}', $message);
-                       } elseif (($sendNotify === true) && (!isValidUserId(getUserData('refid'))) && ($locked === false) && ($add_mode == 'direct')) {
+                       } elseif (($sendNotify === true) && (!isValidUserId(getUserData('refid'))) && ($locked === false) && ($addMode == 'direct')) {
                                // Prepare content
                                $content = array(
                                        'reason' => '{--REASON_DIRECT_PAYMENT--}',
                                // Prepare content
                                $content = array(
                                        'reason' => '{--REASON_DIRECT_PAYMENT--}',
@@ -1137,7 +1144,7 @@ function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify
                        }
 
                        // Maybe there's another ref?
                        }
 
                        // Maybe there's another ref?
-                       if ((isValidUserId(getUserData('refid'))) && ($points > 0) && (getUserData('refid') != $userid) && ($add_mode == 'ref')) {
+                       if ((isValidUserId(getUserData('refid'))) && ($points > 0) && (getUserData('refid') != $userid) && ($addMode == 'ref')) {
                                // Then let's credit him here...
                                //* DEBUG: */ debugOutput(__FUNCTION__ . '(<font color="#0000aa">' . __LINE__ . '</font>):userid='.$userid.',ref='.getUserData('refid').',points='.$points.' - ADVANCE!');
                                $added = ($added && addPointsThroughReferalSystem(sprintf("%s_ref:%s", $subject, $GLOBALS['ref_level']), getUserData('refid'), $points, $sendNotify, getUserData('refid')));
                                // Then let's credit him here...
                                //* DEBUG: */ debugOutput(__FUNCTION__ . '(<font color="#0000aa">' . __LINE__ . '</font>):userid='.$userid.',ref='.getUserData('refid').',points='.$points.' - ADVANCE!');
                                $added = ($added && addPointsThroughReferalSystem(sprintf("%s_ref:%s", $subject, $GLOBALS['ref_level']), getUserData('refid'), $points, $sendNotify, getUserData('refid')));
@@ -1991,5 +1998,32 @@ function updateLastActivity($userid) {
                ), __FUNCTION__, __LINE__);
 }
 
                ), __FUNCTION__, __LINE__);
 }
 
+// Determines database column name from given subject and locked
+function determinePointsColumnFromSubjectLocked ($subject, $locked) {
+       // Default is 'normal' points
+       $pointsColumn = 'points';
+
+       // Which points, locked or normal?
+       if ($locked === true) {
+               $pointsColumn = 'locked_points';
+       } // END - if
+
+       // Prepare array for filter
+       $filterData = array(
+               'subject' => $subject,
+               'locked'  => $locked,
+               'column'  => $pointsColumn
+       );
+
+       // Run the filter
+       $filterData = runFilterChain('determine_points_column_name', $filterData);
+
+       // Extract column name from array
+       $pointsColumn = $filterData['column'];
+
+       // Return it
+       return $pointsColumn;
+}
+
 // [EOF]
 ?>
 // [EOF]
 ?>