X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fmysql-manager.php;h=aecb0317be43d219a26733d02766037d63177a2a;hp=7436f55ae7df70374dc711c1b3516edb5f2e1060;hb=9b8fe454a575a1f000b00bc7ca37eaad6d59d21a;hpb=db0c6702086eea2c44d0aae1702dc2e77a0afc4e diff --git a/inc/mysql-manager.php b/inc/mysql-manager.php index 7436f55ae7..aecb0317be 100644 --- a/inc/mysql-manager.php +++ b/inc/mysql-manager.php @@ -108,8 +108,8 @@ function addYouAreHereLink ($accessLevel, $FQFN, $return = false) { $dummy = substr($search, 0, -4); $ADD .= sprintf(" AND `action`='%s'", getActionFromModuleWhat($accessLevel, $dummy)); - } elseif (($accessLevel == 'sponsor') || ($accessLevel == 'engine')) { - // Sponsor / engine menu + } elseif ($accessLevel == 'sponsor') { + // Sponsor menu $type = 'what'; $search = $file; $modCheck = getModule(); @@ -260,7 +260,7 @@ ORDER BY $OUT .= ''; } else { // Not found - open - $OUT .= ''; + $OUT .= ''; } // Menu title @@ -427,25 +427,28 @@ function isMember () { } // Fetch user data for given user id -function fetchUserData ($userid, $column = 'userid') { +function fetchUserData ($value, $column = 'userid') { // If we should look for userid secure&set it here if (substr($column, -2, 2) == 'id') { // Secure userid - $userid = bigintval($userid); + $value = bigintval($value); // Set it here - setCurrentUserId($userid); + setCurrentUserId($value); // Don't look for invalid userids... - if (!isValidUserId($userid)) { + if (!isValidUserId($value)) { // Invalid, so abort here - debug_report_bug(__FUNCTION__, __LINE__, 'User id ' . $userid . ' is invalid.'); + debug_report_bug(__FUNCTION__, __LINE__, 'User id ' . $value . ' is invalid.'); } elseif (isUserDataValid()) { // Use cache, so it is fine return true; } - } elseif (isUserDataValid()) { - // Use cache, so it is fine + } elseif (!isExtensionActive('user')) { + // Absent ext-user is really not good + return false; + } elseif (isUserDataValid()) { + // Using cache is fine return true; } @@ -454,11 +457,13 @@ function fetchUserData ($userid, $column = 'userid') { // Extra statements $ADD = ''; - if (isExtensionInstalledAndNewer('user', '0.3.5')) $ADD = ', UNIX_TIMESTAMP(`lock_timestamp`) AS `lock_timestamp`'; + if (isExtensionInstalledAndNewer('user', '0.3.5')) { + $ADD = ', UNIX_TIMESTAMP(`lock_timestamp`) AS `lock_timestamp`'; + } // END - if // Query for the user $result = SQL_QUERY_ESC("SELECT *".$ADD." FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `%s`='%s' LIMIT 1", - array($column, $userid), __FUNCTION__, __LINE__); + array($column, $value), __FUNCTION__, __LINE__); // Do we have a record? if (SQL_NUMROWS($result) == 1) { @@ -467,6 +472,8 @@ function fetchUserData ($userid, $column = 'userid') { // Set the userid for later use setCurrentUserId($data['userid']); + + // And cache the data for this userid $GLOBALS['user_data'][getCurrentUserId()] = $data; // Rewrite 'last_failure' if found and ext-user has version >= 0.3.7 @@ -626,18 +633,21 @@ function addMaxReceiveList ($mode, $default = '', $return = false) { // Checks wether the given email address is used. function isEmailTaken ($email) { + // Replace dot with {DOT} + $email = str_replace('.', '{DOT}', $email); + // Query the database - $result = SQL_QUERY_ESC("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `email` LIKE '%%%s%%' OR `email` LIKE '%%%s%%' LIMIT 1", - array($email, str_replace('.', '{DOT}', $email)), __FUNCTION__, __LINE__); + $result = SQL_QUERY_ESC("SELECT `userid` FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `email` LIKE '%%%s%%' LIMIT 1", + array($email), __FUNCTION__, __LINE__); // Is the email there? - $ret = (SQL_NUMROWS($result) == 1); + $isTaken = (SQL_NUMROWS($result) == 1); // Free the result SQL_FREERESULT($result); // Return result - return $ret; + return $isTaken; } // Validate the given menu action @@ -661,7 +671,7 @@ function isMenuActionValid ($mode, $action, $what, $updateEntry=false) { //* DEBUG: */ debugOutput(__LINE__ . ':' . $mode . '/' . $action . '/' . $what . '*'); if (($mode != 'admin') && ($updateEntry === true)) { // Update guest or member menu - $sql = SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_%s_menu` SET counter=counter+1 WHERE `action`='%s' AND `what`='%s'".$add." LIMIT 1", + $sql = SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_%s_menu` SET `counter`=`counter`+1 WHERE `action`='%s' AND `what`='%s'".$add." LIMIT 1", array( $mode, $action, @@ -745,7 +755,7 @@ function getActionFromModuleWhat ($module, $what) { // Get it directly from URL return getAction(); } - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '): ret=' . $data['action']); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ' ret=' . $data['action']); // Does the module have a menu? if (ifModuleHasMenu($module)) { @@ -835,7 +845,7 @@ function getPaymentTitlePrice ($pid, $full=false) { // Get (basicly) the price of given payment id function getPaymentPoints ($pid, $lookFor = 'price') { // Default value... - $data[$lookFor] = '-1'; + $data[$lookFor] = -1; // Search for it in database $result = SQL_QUERY_ESC("SELECT `%s` FROM `{?_MYSQL_PREFIX?}_payments` WHERE `id`=%s LIMIT 1", @@ -992,7 +1002,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... @@ -1000,105 +1010,112 @@ function getReferalLevelPercents ($level) { * sendNotify = shall I send the referal an email or not? * refid = inc/modules/guest/what-confirm.php need this * locked = Shall I pay it to normal (false) or locked (true) points ammount? - * add_mode = Add points only to $userid or also refs? (WARNING! Changing 'ref' to 'direct' + * add_mode = Add points only to $userid or also refs? (WARNING! Changing 'REFERAL' 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 = 'REFERAL') { // By default nothing has been added $added = false; //* DEBUG: */ debugOutput('----------------------- ' . __FUNCTION__ . ' - ENTRY ------------------------
  • '); - // Convert mode to lower-case - $add_mode = strtolower($add_mode); + // Convert mode to upper-case + $addMode = strtoupper($addMode); // 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 if (!isset($GLOBALS['ref_level'])) { // Initialialize referal system - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '): Referal system initialized!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ' Referal system initialized!'); $GLOBALS['ref_level'] = '0'; } else { // Increase referal level $GLOBALS['ref_level']++; - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '): Referal level increased. DEPTH='.$GLOBALS['ref_level']); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, ' Referal level increased. DEPTH='.$GLOBALS['ref_level']); } // Check user account - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):userid='.$userid.',points='.$points); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.$userid.',points='.$points); if (fetchUserData($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']); - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):userid='.$userid.',points='.$points.',depth='.$GLOBALS['ref_level'].',per='.$per.',mode='.$add_mode); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.$userid.',points='.$points.',depth='.$GLOBALS['ref_level'].',per='.$per.',mode='.$addMode); // Some percents found? if ($per > 0) { // Calculate new points - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):userid='.$userid.',points='.$points.',per='.$per.',depth='.$GLOBALS['ref_level']); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.$userid.',points='.$points.',per='.$per.',depth='.$GLOBALS['ref_level']); $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]))) { - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):userid='.$userid.',data='.$GLOBALS['cache_array']['add_userid'][$userid].',ref_points='.$ref_points.',depth='.$GLOBALS['ref_level'].' - BEFORE!'); + if ((isExtensionActive('refback')) && ($GLOBALS['ref_level'] > 0) && ($per < 100) && ($addMode == 'REFERAL') && (isset($GLOBALS['cache_array']['add_userid'][$userid]))) { + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, '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__ . '(' . __LINE__ . '):userid='.$userid.',data='.$GLOBALS['cache_array']['add_userid'][$userid].',ref_points='.$ref_points.',depth='.$GLOBALS['ref_level'].' - AFTER!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.$userid.',data='.$GLOBALS['cache_array']['add_userid'][$userid].',ref_points='.$ref_points.',depth='.$GLOBALS['ref_level'].' - AFTER!'); } // END - if // 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__ . '(' . __LINE__ . '):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: */ logDebugMessage(__FUNCTION__, __LINE__, '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! :-) - 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__ . '(' . __LINE__ . '):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: */ logDebugMessage(__FUNCTION__, __LINE__, 'data='.$pointsColumn.',ref_points='.$ref_points.',userid='.$userid.',depth='.$GLOBALS['ref_level'].',mode='.$addMode.' - INSERTED! ('.SQL_AFFECTEDROWS().')'); } // END - if // Check affected rows $added = SQL_AFFECTEDROWS(); - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):added='.intval($added)); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'added='.intval($added)); // 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 - $filterData = runFilterChain('add_points', $filterData); + $filterData = runFilterChain('post_add_points', $filterData); // Extract $added $added = $filterData['added']; - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):added='.intval($added)); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'added='.intval($added)); // Points updated, maybe I shall send him an email? if (($sendNotify === true) && (isValidUserId(getUserData('refid'))) && ($locked === false)) { @@ -1114,7 +1131,7 @@ function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify // 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--}', @@ -1133,9 +1150,9 @@ function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify } // 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 == 'REFERAL')) { // Then let's credit him here... - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):userid='.$userid.',ref='.getUserData('refid').',points='.$points.' - ADVANCE!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, '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'))); } // END - if } // END - if @@ -1149,14 +1166,14 @@ function addPointsThroughReferalSystem ($subject, $userid, $points, $sendNotify function updateReferalCounter ($userid) { // Make it sure referal level zero (member him-/herself) is at least selected if (empty($GLOBALS['cache_array']['ref_level'][$userid])) $GLOBALS['cache_array']['ref_level'][$userid] = 1; - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):userid='.$userid.',level='.$GLOBALS['cache_array']['ref_level'][$userid]); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.$userid.',level='.$GLOBALS['cache_array']['ref_level'][$userid]); // Update counter SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_refsystem` SET `counter`=`counter`+1 WHERE `userid`=%s AND `level`='%s' LIMIT 1", array(bigintval($userid), $GLOBALS['cache_array']['ref_level'][$userid]), __FUNCTION__, __LINE__); // When no entry was updated then we have to create it here - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):updated=' . SQL_AFFECTEDROWS()); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'updated=' . SQL_AFFECTEDROWS()); if (SQL_HASZEROAFFECTED()) { // First count! SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_refsystem` (`userid`, `level`, `counter`) VALUES (%s,%s,1)", @@ -1164,7 +1181,7 @@ function updateReferalCounter ($userid) { bigintval($userid), $GLOBALS['cache_array']['ref_level'][$userid] ), __FUNCTION__, __LINE__); - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):userid='.$userid); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.$userid); } // END - if // Init referal id @@ -1176,17 +1193,17 @@ function updateReferalCounter ($userid) { $ref = getUserData('refid'); } // END - if - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):userid='.$userid.',ref='.$ref); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.$userid.',ref='.$ref); // When he has a referal... if (($ref > 0) && ($ref != $userid)) { // Move to next referal level and count his counter one up! - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):ref='.$ref.' - ADVANCE!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ref='.$ref.' - ADVANCE!'); $GLOBALS['cache_array']['ref_level'][$userid]++; updateReferalCounter($ref); } elseif ((($ref == $userid) || ($ref == '0')) && (isExtensionInstalledAndNewer('cache', '0.1.2'))) { // Remove cache here - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):ref='.$ref.' - CACHE!'); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ref='.$ref.' - CACHE!'); rebuildCache('refsystem', 'refsystem'); } @@ -1219,7 +1236,7 @@ function sendAdminEmails ($subj, $message) { // Get id number from administrator's login name function getAdminId ($adminLogin) { // By default no admin is found - $data['id'] = '-1'; + $data['id'] = -1; // Check cache if (isset($GLOBALS['cache_array']['admin']['admin_id'][$adminLogin])) { @@ -1274,7 +1291,7 @@ function setCurrentAdminId ($currentAdminId) { // Get password hash from administrator's login name function getAdminHash ($adminId) { // By default an invalid hash is returned - $data['password'] = '-1'; + $data['password'] = -1; if (isAdminHashSet($adminId)) { // Check cache @@ -1373,7 +1390,7 @@ function getAdminEmail ($adminId) { // Get default ACL of admin id function getAdminDefaultAcl ($adminId) { // By default an invalid ACL value is returned - $data['default_acl'] = '***'; + $data['default_acl'] = 'NO-ACL'; // Is sql_patches there and was it found in cache? if (!isExtensionActive('sql_patches')) { @@ -1389,6 +1406,8 @@ function getAdminDefaultAcl ($adminId) { // Load from database $result_admin_id = SQL_QUERY_ESC("SELECT `default_acl` FROM `{?_MYSQL_PREFIX?}_admins` WHERE `id`=%s LIMIT 1", array(bigintval($adminId)), __FUNCTION__, __LINE__); + + // Do we have an entry? if (SQL_NUMROWS($result_admin_id) == 1) { // Fetch data $data = SQL_FETCHARRAY($result_admin_id); @@ -1438,7 +1457,9 @@ function generateOptionList ($table, $id, $name, $default = '', $special = '', $ } else { // Data from database $SPEC = ', `' . $id . '`'; - if (!empty($special)) $SPEC = ', `' . $special . '`'; + if (!empty($special)) { + $SPEC = ', `' . $special . '`'; + } // END - if // Query the database $result = SQL_QUERY_ESC("SELECT `%s`, `%s`".$SPEC." FROM `{?_MYSQL_PREFIX?}_%s` ".$where." ORDER BY `%s` ASC", @@ -1465,7 +1486,9 @@ function generateOptionList ($table, $id, $name, $default = '', $special = '', $ } // Add it, if set - if (!empty($add)) $add = ' ('.$add.')'; + if (!empty($add)) { + $add = ' ('.$add.')'; + } // END - if // Is the call-back function set? if (!empty($callback)) { @@ -1518,6 +1541,7 @@ function deleteUserAccount ($userid, $reason) { // Init points $data['points'] = '0'; + // Search for the points and user data $result = SQL_QUERY_ESC("SELECT (SUM(p.`points`) - d.`used_points`) AS `points` FROM @@ -1537,6 +1561,7 @@ LIMIT 1", $data = SQL_FETCHARRAY($result); // Delete points entries as well + // @TODO Rewrite these lines to a filter SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_points` WHERE `userid`=%s", array(bigintval($userid)), __FUNCTION__, __LINE__); @@ -1547,7 +1572,9 @@ LIMIT 1", } // END - if // Now, when we have all his points adds them do the jackpot! - if (isExtensionActive('jackpot')) addPointsToJackpot($data['points']); + if (isExtensionActive('jackpot')) { + addPointsToJackpot($data['points']); + } // END - if } // END - if // Free the result