X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Fmysql-manager.php;h=4b9ee0e0138ad015586eaf8baec4091bb696f930;hp=885b670ce1f68ded7d59f5e24be56f7ee4a0ee77;hb=0851db137e420b90617f47b77de2302e770f5f02;hpb=c8d76610eb94093d4eed4fcd8a6cb72e74c8f6d8 diff --git a/inc/mysql-manager.php b/inc/mysql-manager.php index 885b670ce1..4b9ee0e013 100644 --- a/inc/mysql-manager.php +++ b/inc/mysql-manager.php @@ -6,9 +6,9 @@ * -------------------------------------------------------------------- * * File : mysql-manager.php * * -------------------------------------------------------------------- * - * Short description : All MySQL-related functions * + * Short description : All database-related functions * * -------------------------------------------------------------------- * - * Kurzbeschreibung : Alle MySQL-Relevanten Funktionen * + * Kurzbeschreibung : Alle datenbank-relevanten Funktionen * * -------------------------------------------------------------------- * * $Revision:: $ * * $Date:: $ * @@ -16,7 +16,7 @@ * $Author:: $ * * -------------------------------------------------------------------- * * Copyright (c) 2003 - 2009 by Roland Haeder * - * Copyright (c) 2009, 2010 by Mailer Developer Team * + * Copyright (c) 2009 - 2011 by Mailer Developer Team * * For more information visit: http://www.mxchange.org * * * * This program is free software; you can redistribute it and/or modify * @@ -72,8 +72,8 @@ function getTitleFromMenu ($mode, $what, $column = 'what', $ADD='') { return $data['title']; } -// Add menu description pending on given file name (without path!) -function addMenuDescription ($accessLevel, $FQFN, $return = false) { +// Add link into output stream (or return it) for 'You Are Here' navigation +function addYouAreHereLink ($accessLevel, $FQFN, $return = false) { // Use only filename of the FQFN... $file = basename($FQFN); @@ -108,8 +108,8 @@ function addMenuDescription ($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(); @@ -205,7 +205,7 @@ ORDER BY `sort` ASC", array($mode), __FUNCTION__, __LINE__); - //* DEBUG: */ debugOutput(__LINE__.'/'.$main_cnt.':'.getWhat().'*'); + //* DEBUG: */ debugOutput(__LINE__ . '/' . $main_cnt . ':' . getWhat() . '*'); if (!SQL_HASZERONUMS($result_main)) { // There are menus available, so we simply display them... :) $GLOBALS['rows'] = ''; @@ -237,7 +237,7 @@ ORDER BY // Do we have some entries? if (!SQL_HASZERONUMS($result_sub)) { // Init counter - $cnt = '0'; + $count = '0'; // Load all sub menus while ($content2 = SQL_FETCHARRAY($result_sub)) { @@ -259,8 +259,8 @@ ORDER BY // Navigation link $OUT .= ''; } else { - // Not found! - open - $OUT .= ''; + // Not found - open + $OUT .= ''; } // Menu title @@ -274,12 +274,12 @@ ORDER BY $OUT .= ''; } // END - if } else { - // Not found! - close + // Not found - close $OUT .= ''; } // Cunt it up - $cnt++; + $count++; // Rewrite array $content = array( @@ -290,7 +290,7 @@ ORDER BY ); // Add regular menu row or bottom row? - if ($cnt < SQL_NUMROWS($result_sub)) { + if ($count < SQL_NUMROWS($result_sub)) { $GLOBALS['rows'] .= loadTemplate($mode . '_menu_row', true, $content); } else { $GLOBALS['rows'] .= loadTemplate($mode . '_menu_bottom', true, $content); @@ -305,12 +305,12 @@ ORDER BY if (isFileReadable($INC)) { // Load include file if ((!isExtensionActive($content['action'])) || ($content['action'] == 'online')) $GLOBALS['rows'] .= loadTemplate('menu_what_begin', true, $mode); - //* DEBUG: */ debugOutput(__LINE__.'/'.$main_cnt.'/'.$content['action'].'/'.getWhat().'*'); + //* DEBUG: */ debugOutput(__LINE__ . '/' . $main_cnt . '/' . $content['action'] . '/' . getWhat().'*'); loadInclude($INC); - //* DEBUG: */ debugOutput(__LINE__.'/'.$main_cnt.'/'.$content['action'].'/'.getWhat().'*'); + //* DEBUG: */ debugOutput(__LINE__ . '/' . $main_cnt . '/' . $content['action'] . '/' . getWhat() . '*'); if ((!isExtensionActive($content['action'])) || ($content['action'] == 'online')) $GLOBALS['rows'] .= loadTemplate('menu_what_end', true, $mode); } - //* DEBUG: */ debugOutput(__LINE__.'/'.$main_cnt.'/'.$content['action'].'/'.$content['sub_what'].':'.getWhat().'*'); + //* DEBUG: */ debugOutput(__LINE__ . '/' . $main_cnt . '/' . $content['action'] . '/' . $content['sub_what'] . ':' . getWhat() . '*'); } // Free result @@ -319,7 +319,7 @@ ORDER BY // Count one up $main_cnt++; - //* DEBUG: */ debugOutput(__LINE__.'/'.$main_cnt.':'.getWhat().'*'); + //* DEBUG: */ debugOutput(__LINE__ . '/' . $main_cnt . ':' . getWhat() . '*'); if (SQL_NUMROWS($result_main) > $main_cnt) { // Add seperator $GLOBALS['rows'] .= loadTemplate('menu_seperator', true, $mode); @@ -354,7 +354,7 @@ ORDER BY ); // Load main template - //* DEBUG: */ debugOutput(__LINE__.'/'.$main_cnt.'/'.$content['action'].'/'.$content['sub_what'].':'.getWhat().'*'); + //* DEBUG: */ debugOutput(__LINE__ . '/' . $main_cnt . '/' . $content['action'] . '/' . $content['sub_what'] . ':' . getWhat() . '*'); loadTemplate('menu_table', false, $content); } // END - if } @@ -366,60 +366,57 @@ function isMember () { // Fix missing 'last_online' array, damn stupid code :((( // @TODO Try to rewrite this to one or more functions - if ((!isset($GLOBALS['last_online'])) || (!is_array($GLOBALS['last_online']))) $GLOBALS['last_online'] = array(); + if ((!isset($GLOBALS['last_online'])) || (!is_array($GLOBALS['last_online']))) { + $GLOBALS['last_online'] = array(); + } // END - if - // is the cache entry there? + // Is the cache entry there? if (isset($GLOBALS[__FUNCTION__])) { // Then return it //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'CACHED! (' . intval($GLOBALS[__FUNCTION__]) . ')'); return $GLOBALS[__FUNCTION__]; } elseif ((!isSessionVariableSet('userid')) || (!isSessionVariableSet('u_hash'))) { - // No member + // Destroy any existing user session data + destroyMemberSession(); //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'No member set in cookie/session.'); + + // Abort further processing return false; - } else { - // Get it secured from session - setMemberId(getSession('userid')); - setCurrentUserId(getMemberId()); - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . getSession('userid') . ' used from cookie/session.'); } + // Get userid secured from session + setMemberId(getSession('userid')); + + // ... and set it as currently handled user id + setCurrentUserId(getMemberId()); + // Init user data array initUserData(); // Fix "deleted" cookies first fixDeletedCookies(array('userid', 'u_hash')); - // Are cookies set? - if ((isMemberIdSet()) && (isSessionVariableSet('u_hash'))) { - // Cookies are set with values, but are they valid? - if (fetchUserData(getMemberId()) === true) { - // Validate password by created the difference of it and the secret key - $valPass = encodeHashForCookie(getUserData('password')); + // Are cookies set and can the member data be loaded? + if ((isMemberIdSet()) && (isSessionVariableSet('u_hash')) && (fetchUserData(getMemberId()) === true)) { + // Validate password by created the difference of it and the secret key + $valPass = encodeHashForCookie(getUserData('password')); + // So did we now have valid data and an unlocked user? + if ((getUserData('status') == 'CONFIRMED') && ($valPass == getSession('u_hash'))) { // Transfer last module and online time $GLOBALS['last_online']['module'] = getUserData('last_module'); $GLOBALS['last_online']['online'] = getUserData('last_online'); - // So did we now have valid data and an unlocked user? - if ((getUserData('status') == 'CONFIRMED') && ($valPass == getSession('u_hash'))) { - // Account is confirmed and all cookie data is valid so he is definely logged in! :-) - $ret = true; - } else { - // Maybe got locked etc. - //* DEBUG */ logDebugMessage(__FUNCTION__, __LINE__, 'status=' . getUserData('status') . ',' . $valPass . '(' . strlen($valPass) . ')/' . getSession('u_hash') . '(' . strlen(getSession('u_hash')) . ')/' . getUserData('password') . '(' . strlen(getUserData('password')) . ')'); - destroyMemberSession(); - } - } else { - // Cookie data is invalid! - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cookie data invalid or user not found.'); - destroyMemberSession(); - } - } else { - // Cookie data is invalid! - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cookie data not complete.'); + // Account is confirmed and all cookie data is valid so he is definely logged in! :-) + $ret = true; + } // END - if + } // END - if + + // Is $ret still false? + if ($ret === false) { + // Yes, so destroy the session destroyMemberSession(); - } + } // END - if // Cache status $GLOBALS[__FUNCTION__] = $ret; @@ -430,25 +427,31 @@ function isMember () { } // Fetch user data for given user id -function fetchUserData ($userid, $column = 'userid') { +function fetchUserData ($value, $column = 'userid') { + // Extension ext-user must be there at any case + if (!isExtensionActive('user')) { + // Absent ext-user is really not good + return false; + } // END - if + // 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 (isUserDataValid()) { + // Using cache is fine return true; } @@ -457,11 +460,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) { @@ -470,16 +475,18 @@ 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 - if (isset($GLOBALS['user_data'][getCurrentUserId()]['last_failure'])) { + // Rewrite 'last_failure' if found and ext-user has version >= 0.3.7 + if ((isExtensionInstalledAndNewer('user', '0.3.7')) && (isset($GLOBALS['user_data'][getCurrentUserId()]['last_failure']))) { // Backup the raw one and zero it $GLOBALS['user_data'][getCurrentUserId()]['last_failure_raw'] = $GLOBALS['user_data'][getCurrentUserId()]['last_failure']; - $GLOBALS['user_data'][getCurrentUserId()]['last_failure'] = '0'; + $GLOBALS['user_data'][getCurrentUserId()]['last_failure'] = null; // Is it not zero? - if ($GLOBALS['user_data'][getCurrentUserId()]['last_failure_raw'] != '0000-00-00 00:00:00') { + if (!is_null($GLOBALS['user_data'][getCurrentUserId()]['last_failure_raw'])) { // Seperate data/time $array = explode(' ', $GLOBALS['user_data'][getCurrentUserId()]['last_failure_raw']); @@ -527,8 +534,8 @@ function isAdmin () { // If admin login is not given take current from cookies... if ((isSessionVariableSet('admin_id')) && (isSessionVariableSet('admin_md5'))) { // Get admin login and password from session/cookies - $adminId = getSession('admin_id'); - $passCookie = getSession('admin_md5'); + $adminId = getCurrentAdminId(); + $passCookie = getAdminMd5(); } // END - if //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $adminId.'/'.$passCookie); @@ -629,18 +636,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,10 +671,10 @@ function isMenuActionValid ($mode, $action, $what, $updateEntry=false) { $add = ''; if ((!isAdmin()) && ($mode != 'admin')) $add = " AND `locked`='N'"; - //* DEBUG: */ debugOutput(__LINE__.':'.$mode.'/'.$action.'/'.$what.'*'); + //* 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, @@ -693,10 +703,10 @@ function isMenuActionValid ($mode, $action, $what, $updateEntry=false) { // Should we look for affected rows (only update) or found rows? if ($updateEntry === true) { // Check updated/affected rows - $ret = (SQL_AFFECTEDROWS() == 1); + $ret = (!SQL_HASZEROAFFECTED()); } else { // Check found rows - $ret = (SQL_NUMROWS($result) == 1); + $ret = (!SQL_HASZERONUMS($result)); } // Free memory @@ -748,7 +758,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)) { @@ -814,6 +824,8 @@ function getPaymentTitlePrice ($pid, $full=false) { // Load payment data $result = SQL_QUERY_ESC("SELECT `mail_title`, `price` FROM `{?_MYSQL_PREFIX?}_payments` WHERE `id`=%s LIMIT 1", array(bigintval($pid)), __FUNCTION__, __LINE__); + + // Do we have an entry? if (SQL_NUMROWS($result) == 1) { // Payment type found... :-) $data = SQL_FETCHARRAY($result); @@ -822,9 +834,9 @@ function getPaymentTitlePrice ($pid, $full=false) { if ($full === false) { $ret = $data['mail_title']; } else { - $ret = $data['mail_title'] . ' / ' . translateComma($data['price']) . ' {?POINTS?}'; + $ret = $data['mail_title'] . ' / {%pipe,translateComma=' . $data['price'] . '%} {?POINTS?}'; } - } + } // END - if // Free result SQL_FREERESULT($result); @@ -836,7 +848,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", @@ -856,7 +868,7 @@ function getPaymentPoints ($pid, $lookFor = 'price') { } // Remove a receiver's id from $receivers and add a link for him to confirm -function removeReceiver (&$receivers, $key, $userid, $pool_id, $stats_id = '', $bonus = false) { +function removeReceiver (&$receivers, $key, $userid, $pool_id, $stats_id = 0, $isBonusMail = false) { // Default is not removed $ret = 'failed'; @@ -867,9 +879,12 @@ function removeReceiver (&$receivers, $key, $userid, $pool_id, $stats_id = '', $ // Is there already a line for this user available? if ($stats_id > 0) { + // Default is 'normal' mail + $type = 'NORMAL'; + $rowName = 'stats_id'; + // Only when we got a real stats id continue searching for the entry - $type = 'NORMAL'; $rowName = 'stats_id'; - if ($bonus) { + if ($isBonusMail === true) { $type = 'BONUS'; $rowName = 'bonus_id'; } // END - if @@ -883,6 +898,13 @@ function removeReceiver (&$receivers, $key, $userid, $pool_id, $stats_id = '', $ // So we add one! SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_links` (`%s`, `userid`, `link_type`) VALUES ('%s','%s','%s')", array($rowName, $stats_id, bigintval($userid), $type), __FUNCTION__, __LINE__); + + // Update 'mails_sent' if sql_patches is updated + if (isExtensionInstalledAndNewer('sql_patches', '0.7.4')) { + // Update the pool + SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_pool` SET `mails_sent`=`mails_sent`+1 WHERE `id`=%s LIMIT 1", + array(bigintval($pool_id)), __FUNCTION__, __LINE__); + } // END - if $ret = 'done'; } else { // Already found @@ -956,7 +978,7 @@ function getReferalLevelPercents ($level) { // First look for level $key = array_search($level, $GLOBALS['cache_array']['refdepths']['level']); if ($key !== false) { - // Entry found! + // Entry found $data['percents'] = $GLOBALS['cache_array']['refdepths']['percents'][$key]; // Count cache hit @@ -983,7 +1005,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... @@ -991,93 +1013,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 ----------------------------------------------- '.__FUNCTION__.' - EXIT ------------------------
'); + //* DEBUG: */ debugOutput('----------------------- '.__FUNCTION__.': added=' . intval($added) . ' - EXIT ------------------------
'); + return $added; } // Updates the referal counter 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()); - if (SQL_AFFECTEDROWS() < 1) { + //* 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)", - array(bigintval($userid), $GLOBALS['cache_array']['ref_level'][$userid]), __FUNCTION__, __LINE__); - //* DEBUG: */ debugOutput(__FUNCTION__ . '(' . __LINE__ . '):userid='.$userid); + array( + bigintval($userid), + $GLOBALS['cache_array']['ref_level'][$userid] + ), __FUNCTION__, __LINE__); + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid='.$userid); } // END - if // Init referal id @@ -1151,17 +1196,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'); } @@ -1194,7 +1239,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])) { @@ -1224,6 +1269,9 @@ function getAdminId ($adminLogin) { // "Getter" for current admin id function getCurrentAdminId () { + // Log debug message + //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'called!'); + // Do we have cache? if (!isset($GLOBALS['current_admin_id'])) { // Get the admin login from session @@ -1246,7 +1294,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 @@ -1345,7 +1393,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')) { @@ -1361,6 +1409,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); @@ -1410,7 +1460,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", @@ -1437,7 +1489,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)) { @@ -1463,18 +1517,16 @@ function generateOptionList ($table, $id, $name, $default = '', $special = '', $ // Activate exchange function FILTER_ACTIVATE_EXCHANGE () { // Is the extension 'user' there? - if ((!isExtensionActive('user')) || (getConfig('activate_xchange') == '0')) { + if ((!isExtensionActive('user')) || (getActivateXchange() == '0')) { // Silently abort here return false; } // END - if // Check total amount of users - if (getTotalConfirmedUser() >= getConfig('activate_xchange')) { + if (getTotalConfirmedUser() >= getActivateXchange()) { // Activate System - setSqlsArray(array( - "UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N', `hidden`='N', `mem_only`='Y' WHERE `module`='order' LIMIT 1", - "UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y', `locked`='N' WHERE `what`='order' OR `what`='unconfirmed' LIMIT 2", - )); + addSql("UPDATE `{?_MYSQL_PREFIX?}_mod_reg` SET `locked`='N', `hidden`='N', `mem_only`='Y' WHERE `module`='order' LIMIT 1"); + addSql("UPDATE `{?_MYSQL_PREFIX?}_member_menu` SET `visible`='Y', `locked`='N' WHERE `what`='order' OR `what`='unconfirmed' LIMIT 2"); // Run SQLs runFilterChain('run_sqls'); @@ -1492,6 +1544,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 @@ -1511,6 +1564,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__); @@ -1521,7 +1575,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 @@ -1542,7 +1598,7 @@ LIMIT 1", $data['text'] = $reason; // Now a mail to the user and that's all... - $message = loadEmailTemplate('del-user', $data, $userid); + $message = loadEmailTemplate('member_user_deleted', $data, $userid); sendEmail($userid, '{--ADMIN_DELETE_ACCOUNT--}', $message); // Ok, delete the account! @@ -1598,11 +1654,15 @@ function subtractPoints ($subject, $userid, $points) { 'subject' => $subject, 'userid' => $userid, 'points' => $points, - 'mode' => 'sub' + 'mode' => 'sub', + 'added' => (!SQL_HASZEROAFFECTED()) ); // Insert booking record - runFilterChain('sub_points', $filterData); + $filterData = runFilterChain('sub_points', $filterData); + + // Return result + return $filterData['added']; } // "Getter" for total available receivers @@ -1678,7 +1738,7 @@ function generateCategoryOptionsList ($mode) { } // Add bonus mail to queue -function addBonusMailToQueue ($subject, $text, $receiverList, $points, $seconds, $url, $cat, $mode='normal', $receiver=0) { +function addBonusMailToQueue ($subject, $text, $receiverList, $points, $seconds, $url, $categoryId, $mode='normal', $receiver=0) { // Is admin or bonus extension there? if (!isAdmin()) { // Abort here @@ -1699,24 +1759,21 @@ function addBonusMailToQueue ($subject, $text, $receiverList, $points, $seconds, // HTML extension active? if (isExtensionActive('html_mail')) { - // No HTML by default - $HTML = 'N'; - - // HTML mode? - if ($mode == 'html') $HTML = 'Y'; + // Determine if we have HTML mode active + $HTML = convertBooleanToYesNo($mode == 'html'); // Add HTML mail SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_bonus` (`subject`, `text`, `receivers`, `points`, `time`, `data_type`, `timestamp`, `url`, `cat_id`, `target_send`, `mails_sent`, `html_msg`) -VALUES ('%s','%s','%s','%s','%s','NEW', UNIX_TIMESTAMP(),'%s','%s','%s','%s','%s')", +VALUES ('%s','%s','%s',%s,%s,'NEW', UNIX_TIMESTAMP(),'%s',%s,%s,%s,'%s')", array( $subject, $text, $receiverList, $points, - $seconds, + bigintval($seconds), $url, - $cat, + bigintval($categoryId), $target, bigintval($receiver), $HTML @@ -1725,15 +1782,15 @@ VALUES ('%s','%s','%s','%s','%s','NEW', UNIX_TIMESTAMP(),'%s','%s','%s','%s','%s // Add regular mail SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_bonus` (`subject`, `text`, `receivers`, `points`, `time`, `data_type`, `timestamp`, `url`, `cat_id`, `target_send`, `mails_sent`) -VALUES ('%s','%s','%s','%s','%s','NEW', UNIX_TIMESTAMP(),'%s','%s','%s','%s')", +VALUES ('%s','%s','%s',%s,%s,'NEW', UNIX_TIMESTAMP(),'%s',%s,%s,%s)", array( $subject, $text, $receiverList, $points, - $seconds, + bigintval($seconds), $url, - $cat, + bigintval($categoryId), $target, bigintval($receiver), ), __FUNCTION__, __LINE__); @@ -1741,7 +1798,7 @@ VALUES ('%s','%s','%s','%s','%s','NEW', UNIX_TIMESTAMP(),'%s','%s','%s','%s')", } // Generate a receiver list for given category and maximum receivers -function generateReceiverList ($cat, $receiver, $mode = '') { +function generateReceiverList ($categoryId, $receiver, $mode = '') { // Init variables $CAT_TABS = ''; $CAT_WHERE = ''; @@ -1749,8 +1806,8 @@ function generateReceiverList ($cat, $receiver, $mode = '') { $result = false; // Secure data - $cat = bigintval($cat); - $receiver = bigintval($receiver); + $categoryId = bigintval($categoryId); + $receiver = bigintval($receiver); // Is the receiver zero and mode set? if (($receiver == '0') && (!empty($mode))) { @@ -1759,10 +1816,10 @@ function generateReceiverList ($cat, $receiver, $mode = '') { } // END - if // Category given? - if ($cat > 0) { + if ($categoryId > 0) { // Select category $CAT_TABS = "LEFT JOIN `{?_MYSQL_PREFIX?}_user_cats` AS c ON d.`userid`=c.`userid`"; - $CAT_WHERE = sprintf(" AND c.`cat_id`=%s", $cat); + $CAT_WHERE = sprintf(" AND c.`cat_id`=%s", $categoryId); } // END - if // Exclude users in holiday? @@ -1773,13 +1830,13 @@ function generateReceiverList ($cat, $receiver, $mode = '') { if ((isExtensionActive('html_mail')) && ($mode == 'html')) { // Only include HTML receivers - $result = SQL_QUERY_ESC("SELECT d.userid FROM `{?_MYSQL_PREFIX?}_user_data` AS d ".$CAT_TABS." WHERE d.`status`='CONFIRMED' AND d.`html`='Y'".$CAT_WHERE." ORDER BY d.{?order_select?} {?order_mode?} LIMIT %s", + $result = SQL_QUERY_ESC("SELECT d.`userid` FROM `{?_MYSQL_PREFIX?}_user_data` AS d ".$CAT_TABS." WHERE d.`status`='CONFIRMED' AND d.`html`='Y'".$CAT_WHERE." ORDER BY d.`{?order_select?}` {?order_mode?} LIMIT %s", array( $receiver ), __FUNCTION__, __LINE__); } else { // Include all - $result = SQL_QUERY_ESC("SELECT d.userid FROM `{?_MYSQL_PREFIX?}_user_data` AS d ".$CAT_TABS." WHERE d.`status`='CONFIRMED'".$CAT_WHERE." ORDER BY d.{?order_select?} {?order_mode?} LIMIT %s", + $result = SQL_QUERY_ESC("SELECT d.`userid` FROM `{?_MYSQL_PREFIX?}_user_data` AS d ".$CAT_TABS." WHERE d.`status`='CONFIRMED'".$CAT_WHERE." ORDER BY d.`{?order_select?}` {?order_mode?} LIMIT %s", array( $receiver ), __FUNCTION__, __LINE__); @@ -1918,7 +1975,7 @@ function reduceRecipientReceivedMails ($column, $id, $count) { array(implode(',', $userids), count($userids)), __FUNCTION__, __LINE__); } else { // Nothing deleted - loadTemplate('admin_settings_saved', false, getMaskedMessage('ADMIN_MAIL_NOTHING_DELETED', $id)); + displayMessage(getMaskedMessage('ADMIN_MAIL_NOTHING_DELETED', $id)); } } // END - if @@ -1954,5 +2011,83 @@ function updateLastActivity($userid) { ), __FUNCTION__, __LINE__); } +// Get points data for given extension's name +function getPointsDataArrayFromExtensionName ($ext_name) { + // If we have cache, shortcut it here + if (isset($GLOBALS['cache_array']['points_data'][$ext_name])) { + // Return it + return $GLOBALS['cache_array']['points_data'][$ext_name]; + } // END - if + + // Now checkout the entry in database table + $result = SQL_QUERY_ESC("SELECT `id`, `ext_name`, `column_name`, `locked_mode`, `payment_method` FROM `{?_MYSQL_PREFIX?}_points_data` WHERE `ext_name`='%s' LIMIT 1", + array($ext_name), __FUNCTION__, __LINE__); + + // Do we have an entry? + if (SQL_NUMROWS($result) == 1) { + // Then load it + $pointsData = SQL_FETCHARRAY($result); + + // Add all remaining entries + foreach ($pointsData as $key=>$value) { + $GLOBALS['cache_array']['points_data'][$ext_name][$key] = $value; + } // END - foreach + } else { + /* + * Having no entry is not bad but it means that all points will go to + * the general account which the user can let payout. + */ + logDebugMessage(__FUNCTION__, __LINE__, 'ext_name=' . $ext_name . ' - No entry found, switching to general points account.'); + } + + // Free result + SQL_FREERESULT($result); + + // Return it + return $GLOBALS['cache_array']['points_data'][$ext_name]; +} + +// Determines the right points column name for given extension and 'locked' +function getPointsColumnNameFromExtensionNameLocked ($ext_name, $isLocked) { + // Extension sql_patches must be up-to-date + if (isExtensionInstalledAndOlder('sql_patches', '0.8.0')) { + // Please update ext-sql_patches + debug_report_bug(__FUNCTION__, __LINE__, 'sql_patches is out-dated. Please update to at least 0.8.0 to continue. ext_name=' . $ext_name . ',isLocked=' . intval($isLocked)); + } // END - if + + // Get the points_data entry + $pointsData = getPointsDataArrayFromExtensionName($ext_name); + + // Regular points by default + $columnName = $pointsData['column_name']; + + // Are the points locked? + if (($isLocked === true) && ($pointsData['locked_mode'] == 'LOCKED')) { + // Locked points, so prefix it + $columnName = 'locked_' . $pointsData['column_name']; + } // END - if + + // Return the result + return $columnName; +} + +// Determines the payment method for given extension and 'locked' +function getPaymentMethodFromExtensionName ($ext_name) { + // Extension sql_patches must be up-to-date + if (isExtensionInstalledAndOlder('sql_patches', '0.8.0')) { + // Please update ext-sql_patches + debug_report_bug(__FUNCTION__, __LINE__, 'sql_patches is out-dated. Please update to at least 0.8.0 to continue. ext_name=' . $ext_name . ',isLocked=' . intval($isLocked)); + } // END - if + + // Get the points_data entry + $pointsData = getPointsDataArrayFromExtensionName($ext_name); + + // Regular points by default + $paymentMethod = $pointsData['payment_method']; + + // Return the result + return $paymentMethod; +} + // [EOF] ?>