X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fmysql-manager.php;h=58564d9b54a388a48e1a99525f58b717e9c6b93e;hb=19d5bac86427b5f0abe5a88a21b551b941488487;hp=76777e7f007512cb7df91fb3faf5e9eeed9b5de0;hpb=88011a1b5523b5e5ba9bc6495c3e361fc4a3dc8a;p=mailer.git
diff --git a/inc/mysql-manager.php b/inc/mysql-manager.php
index 76777e7f00..58564d9b54 100644
--- a/inc/mysql-manager.php
+++ b/inc/mysql-manager.php
@@ -6,19 +6,17 @@
* -------------------------------------------------------------------- *
* 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:: $ *
* $Tag:: 0.2.1-FINAL $ *
* $Author:: $ *
- * Needs to be in all Files and every File needs "svn propset *
- * svn:keywords Date Revision" (autoprobset!) at least!!!!!! *
* -------------------------------------------------------------------- *
* 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 *
@@ -42,60 +40,12 @@ if (!defined('__SECURITY')) {
die();
} // END - if
-// "Getter" for module title
-function getModuleTitle ($module) {
- // Init variables
- $data['title'] = '';
- $result = false;
-
- // Is the script installed?
- if (isInstalled()) {
- // Check if cache is valid
- if ((isExtensionInstalledAndNewer('cache', '0.1.2')) && (isset($GLOBALS['cache_array']['modules']['module'])) && (in_array($module, $GLOBALS['cache_array']['modules']['module']))) {
- // Load from cache
- $data['title'] = $GLOBALS['cache_array']['modules']['title'][$module];
-
- // Update cache hits
- incrementStatsEntry('cache_hits');
- } elseif (!isExtensionActive('cache')) {
- // Load from database
- $result = SQL_QUERY_ESC("SELECT `title` FROM `{?_MYSQL_PREFIX?}_mod_reg` WHERE `module`='%s' LIMIT 1",
- array($module), __FUNCTION__, __LINE__);
-
- // Is the entry there?
- if (SQL_NUMROWS($result)) {
- // Get the title from database
- $data = SQL_FETCHARRAY($result);
- } // END - if
-
- // Free the result
- SQL_FREERESULT($result);
- }
- } // END - if
-
- // Trim name
- $data['title'] = trim($data['title']);
-
- // Still no luck or empty title?
- if (empty($data['title'])) {
- // No name found
- $data['title'] = getMaskedMessage('UNKNOWN_MODULE_DETECTED', $module);
- if ((is_resource($result)) && (SQL_HASZERONUMS($result))) {
- // Add module to database
- $dummy = checkModulePermissions($module);
- } // END - if
- } // END - if
-
- // Return name
- return $data['title'];
-}
-
// "Getter" for module description
// @TODO Can we cache this?
function getTitleFromMenu ($mode, $what, $column = 'what', $ADD='') {
// Fix empty 'what'
if (empty($what)) {
- $what = getConfig('index_home');
+ $what = getIndexHome();
} // END - if
// Default is not found
@@ -122,179 +72,8 @@ function getTitleFromMenu ($mode, $what, $column = 'what', $ADD='') {
return $data['title'];
}
-// Check validity of a given module name (no file extension)
-function checkModulePermissions ($module = '') {
- // Is it empty (default), then take the current one
- if (empty($module)) $module = getModule();
-
- // Do we have cache?
- if (isset($GLOBALS['module_status'][$module])) {
- // Then use it
- return $GLOBALS['module_status'][$module];
- } // END - if
-
- // Filter module name (names with low chars and underlines are fine!)
- $module = preg_replace('/[^a-z_]/', '', $module);
-
- // Check for prefix is a extension...
- $modSplit = explode('_', $module);
- $extension = ''; $module_chk = $module;
- //* DEBUG: */ debugOutput(__LINE__.'*'.count($modSplit).'/'.$module.'*');
- if (count($modSplit) == 2) {
- // Okay, there is a seperator (_) in the name so is the first part a module?
- //* DEBUG: */ debugOutput(__LINE__.'*'.$modSplit[0].'*');
- if (isExtensionActive($modSplit[0])) {
- // The prefix is an extension's name, so let's set it
- $extension = $modSplit[0]; $module = $modSplit[1];
- } // END - if
- } // END - if
-
- // Major error in module registry is the default
- $ret = 'major';
-
- // Check if script is installed if not return a 'done' to prevent some errors
- if ((isInstallationPhase()) || (!isAdminRegistered())) {
- // Not installed or no admin registered or in installation phase
- return 'done';
- } // END - if
-
- // Init data array
- $data = array(
- 'locked' => 'Y',
- 'hidden' => 'N',
- 'admin_only' => 'N',
- 'mem_only' => 'N'
- );
-
- // By default nothing is found
- $found = false;
-
- // Check if cache is latest version
- if (isExtensionInstalledAndNewer('cache', '0.1.2')) {
- // Is the cache there?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Using cache.');
- if (isset($GLOBALS['cache_array']['modules']['locked'][$module_chk])) {
- // Check cache
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cache found.');
- $data['locked'] = $GLOBALS['cache_array']['modules']['locked'][$module_chk];
- $data['hidden'] = $GLOBALS['cache_array']['modules']['hidden'][$module_chk];
- $data['admin_only'] = $GLOBALS['cache_array']['modules']['admin_only'][$module_chk];
- $data['mem_only'] = $GLOBALS['cache_array']['modules']['mem_only'][$module_chk];
-
- // Update cache hits
- incrementStatsEntry('cache_hits');
- $found = true;
- } else {
- // No, then we have to update it!
- $ret = 'cache_miss';
- }
- } elseif (!isExtensionActive('cache')) {
- // Check for module in database
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Using database.');
- $result = SQL_QUERY_ESC("SELECT `locked`, `hidden`, `admin_only`, `mem_only` FROM `{?_MYSQL_PREFIX?}_mod_reg` WHERE `module`='%s' LIMIT 1",
- array($module_chk), __FUNCTION__, __LINE__);
- if (SQL_NUMROWS($result) == 1) {
- // Read data
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Entry found.');
- $data = SQL_FETCHARRAY($result);
- $found = true;
- } elseif (isDebugModeEnabled()) {
- // Debug message only in debug-mode...
- logDebugMessage(__FUNCTION__, __LINE__, 'Module ' . $module_chk . ' not found!');
- }
-
- // Free result
- SQL_FREERESULT($result);
- }
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ret=' . $ret);
-
- // Is the module found?
- if ($found === true) {
- // Check returned values against current access permissions
- //
- // Admin access ----- Guest access ----- --- Guest or member? ---
- if ((isAdmin()) || (($data['locked'] != 'Y') && ($data['admin_only'] != 'Y') && (($data['mem_only'] != 'Y') || (isMember())))) {
- // If you are admin you are welcome for everything!
- $ret = 'done';
- } elseif ($data['locked'] == 'Y') {
- // Module is locked
- $ret = 'locked';
- } elseif (($data['mem_only'] == 'Y') && (!isMember())) {
- // You have to login first!
- $ret = 'mem_only';
- } elseif (($data['admin_only'] == 'Y') && (!isAdmin())) {
- // Only the Admin is allowed to enter this module!
- $ret = 'admin_only';
- } else {
- // @TODO Nothing helped???
- logDebugMessage(__FUNCTION__, __LINE__, sprintf("ret=%s,locked=%s,admin=%s,mem=%s",
- $ret,
- $data['locked'],
- $data['admin_only'],
- $data['mem_only']
- ));
- }
- } // END - if
-
- // Still no luck or not found?
- if (($found === false) && (!isExtensionActive('cache')) && ($ret != 'done')) {
- // ----- Legacy module ----- ---- Module in base folder ---- --- Module with extension's name ---
- if ((isIncludeReadable(sprintf("inc/modules/%s.php", $module))) || (isIncludeReadable(sprintf("%s.php", $module))) || (isIncludeReadable(sprintf("%s/%s.php", $extension, $module)))) {
- // Data is missing so we add it
- if (isExtensionInstalledAndNewer('sql_patches', '0.3.6')) {
- // Since 0.3.6 we have a has_menu column, this took me a half hour
- // to find a loop here... *sigh*
- SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_mod_reg`
-(`module`, `locked`, `hidden`, `mem_only`, `admin_only`, `has_menu`) VALUES
-('%s','Y','N','N','N','N')", array($module_chk), __FUNCTION__, __LINE__);
- } else {
- // Wrong/missing sql_patches!
- SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_mod_reg`
-(`module`, `locked`, `hidden`, `mem_only`, `admin_only`) VALUES
-('%s','Y','N','N','N')", array($module_chk), __FUNCTION__, __LINE__);
- }
-
- // Everthing is fine?
- if (SQL_AFFECTEDROWS() < 1) {
- // Something bad happend!
- return 'major';
- } // END - if
-
- // Destroy cache here
- // @TODO Rewrite this to a filter
- if ((getOutputMode() == '0') || (getOutputMode() == -1)) rebuildCache('modules', 'modules');
-
- // And reload data
- unset($GLOBALS['module_status'][$module]);
- $ret = checkModulePermissions($module_chk);
- } else {
- // Module not found we don't add it to the database
- $ret = '404';
- }
- } elseif (($ret == 'cache_miss') && (getOutputMode() == '0')) {
- // Rebuild the cache files
- rebuildCache('modules', 'modules');
- } elseif ($found === false) {
- // Problem with module detected
- logDebugMessage(__FUNCTION__, __LINE__, sprintf("Problem in module %s detected. ret=%s, locked=%s, hidden=%s, mem=%s, admin=%s, output_mode=%s",
- $module,
- $ret,
- $data['locked'],
- $data['hidden'],
- $data['mem_only'],
- $data['admin_only'],
- getOutputMode()
- ));
- }
-
- // Return the value
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ret=' . $ret);
- $GLOBALS['module_status'][$module] = $ret;
- return $ret;
-}
-
-// 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);
@@ -319,18 +98,21 @@ function addMenuDescription ($accessLevel, $FQFN, $return = false) {
// This is a 'what file'!
$type = 'what';
$search = substr($file, 5);
- $ADD = " AND `visible`='Y' AND `locked`='N'";
// Get access level from it
$modCheck = getModuleFromFileName($file, $accessLevel);
// Do we have admin? Then display all
- if (isAdmin()) $ADD = '';
+ $ADD = " AND `visible`='Y' AND `locked`='N'";
+ if (isAdmin()) {
+ // Display all!
+ $ADD = '';
+ } // END - if
$dummy = substr($search, 0, -4);
- $ADD .= " AND `action`='".getActionFromModuleWhat($accessLevel, $dummy)."'";
- } elseif (($accessLevel == 'sponsor') || ($accessLevel == 'engine')) {
- // Sponsor / engine menu
+ $ADD .= sprintf(" AND `action`='%s'", getActionFromModuleWhat($accessLevel, $dummy));
+ } elseif ($accessLevel == 'sponsor') {
+ // Sponsor menu
$type = 'what';
$search = $file;
$modCheck = getModule();
@@ -344,7 +126,7 @@ function addMenuDescription ($accessLevel, $FQFN, $return = false) {
}
// Begin the navigation line
- if ((!isset($GLOBALS['nav_depth'])) && ($return === false)) {
+ if (!isset($GLOBALS['nav_depth'])) {
// Init nav_depth
$GLOBALS['nav_depth'] = '0';
@@ -366,7 +148,7 @@ function addMenuDescription ($accessLevel, $FQFN, $return = false) {
if (substr($search, -4, 4) == '.php') {
// Remove the .php
$search = substr($search, 0, -4);
- } // END - i
+ } // END - if
if (((isExtensionInstalledAndNewer('sql_patches', '0.2.3')) && (getConfig('youre_here') == 'Y')) || ((isAdmin()) && ($modCheck == 'admin'))) {
// Output HTML code
@@ -426,8 +208,8 @@ ORDER BY
`sort` ASC",
array($mode), __FUNCTION__, __LINE__);
- //* DEBUG: */ debugOutput(__LINE__.'/'.$main_cnt.':'.getWhat().'*');
- if (SQL_NUMROWS($result_main) > 0) {
+ //* DEBUG: */ debugOutput(__LINE__ . '/' . $main_cnt . ':' . getWhat() . '*');
+ if (!SQL_HASZERONUMS($result_main)) {
// There are menus available, so we simply display them... :)
$GLOBALS['rows'] = '';
while ($content = SQL_FETCHARRAY($result_main)) {
@@ -456,9 +238,9 @@ ORDER BY
array($mode, $content['action']), __FUNCTION__, __LINE__);
// Do we have some entries?
- if (SQL_NUMROWS($result_sub) > 0) {
+ if (!SQL_HASZERONUMS($result_sub)) {
// Init counter
- $cnt = '0';
+ $count = '0';
// Load all sub menus
while ($content2 = SQL_FETCHARRAY($result_sub)) {
@@ -480,12 +262,12 @@ ORDER BY
// Navigation link
$OUT .= '';
} else {
- // Not found! - open
- $OUT .= '';
+ // Not found - open
+ $OUT .= '';
}
// Menu title
- $OUT .= getConfig('menu_blur_spacer') . $content['sub_title'];
+ $OUT .= '{?menu_blur_spacer?}' . $content['sub_title'];
if (isIncludeReadable($inc)) {
$OUT .= '';
@@ -495,12 +277,12 @@ ORDER BY
$OUT .= '';
} // END - if
} else {
- // Not found! - close
+ // Not found - close
$OUT .= '';
}
// Cunt it up
- $cnt++;
+ $count++;
// Rewrite array
$content = array(
@@ -511,7 +293,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);
@@ -526,12 +308,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
@@ -540,7 +322,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);
@@ -575,7 +357,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
}
@@ -587,63 +369,60 @@ 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?
- if (isset($GLOBALS['is_member'])) {
+ // Is the cache entry there?
+ if (isset($GLOBALS[__FUNCTION__])) {
// Then return it
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'CACHED! (' . intval($GLOBALS['is_member']) . ')');
- return $GLOBALS['is_member'];
+ //* 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['is_member'] = $ret;
+ $GLOBALS[__FUNCTION__] = $ret;
// Return status
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ret=' . intval($ret));
@@ -651,39 +430,46 @@ 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 ($userid < 1) {
+ 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;
}
-
// By default none was found
$found = false;
// 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) {
@@ -692,16 +478,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']);
@@ -749,8 +537,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);
@@ -760,9 +548,9 @@ function isAdmin () {
} // END - if
// Do we have cache?
- if (!isset($GLOBALS['is_admin'][$adminId])) {
+ if (!isset($GLOBALS[__FUNCTION__][$adminId])) {
// Init it with failed
- $GLOBALS['is_admin'][$adminId] = false;
+ $GLOBALS[__FUNCTION__][$adminId] = false;
// Search in array for entry
if (isset($GLOBALS['admin_hash'])) {
@@ -788,12 +576,12 @@ function isAdmin () {
if (!empty($valPass)) {
// Check if password is valid
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, '(' . $valPass . '==' . $passCookie . ')='.intval($valPass == $passCookie));
- $GLOBALS['is_admin'][$adminId] = (($GLOBALS['admin_hash'] == $passCookie) || ((strlen($GLOBALS['admin_hash']) == 32) && ($GLOBALS['admin_hash'] == md5($passCookie))) || (($GLOBALS['admin_hash'] == '*FAILED*') && (!isExtensionActive('cache'))));
+ $GLOBALS[__FUNCTION__][$adminId] = (($GLOBALS['admin_hash'] == $passCookie) || ((strlen($GLOBALS['admin_hash']) == 32) && ($GLOBALS['admin_hash'] == md5($passCookie))) || (($GLOBALS['admin_hash'] == '*FAILED*') && (!isExtensionActive('cache'))));
} // END - if
} // END - if
// Return result of comparision
- return $GLOBALS['is_admin'][$adminId];
+ return $GLOBALS[__FUNCTION__][$adminId];
}
// Generates a list of "max receiveable emails per day"
@@ -804,13 +592,13 @@ function addMaxReceiveList ($mode, $default = '', $return = false) {
switch ($mode) {
case 'guest':
// Guests (in the registration form) are not allowed to select 0 mails per day.
- $result = SQL_QUERY("SELECT `value`, `comment` FROM `{?_MYSQL_PREFIX?}_max_receive` WHERE `value` > 0 ORDER BY `value` ASC",
+ $result = SQL_QUERY('SELECT `value`, `comment` FROM `{?_MYSQL_PREFIX?}_max_receive` WHERE `value` > 0 ORDER BY `value` ASC',
__FUNCTION__, __LINE__);
break;
case 'member':
// Members are allowed to set to zero mails per day (we will change this soon!)
- $result = SQL_QUERY("SELECT `value`, `comment` FROM `{?_MYSQL_PREFIX?}_max_receive` ORDER BY `value` ASC",
+ $result = SQL_QUERY('SELECT `value`, `comment` FROM `{?_MYSQL_PREFIX?}_max_receive` ORDER BY `value` ASC',
__FUNCTION__, __LINE__);
break;
@@ -820,7 +608,7 @@ function addMaxReceiveList ($mode, $default = '', $return = false) {
}
// Some entries are found?
- if (SQL_NUMROWS($result) > 0) {
+ if (!SQL_HASZERONUMS($result)) {
$OUT = '';
while ($content = SQL_FETCHARRAY($result)) {
$OUT .= ' ';
} // END - while
} else {
@@ -1656,20 +1520,16 @@ function generateOptionList ($table, $id, $name, $default='', $special='', $wher
// 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
- $totalUsers = countSumTotalData('CONFIRMED', 'user_data', 'userid', 'status', true, ' AND max_mails > 0');
-
- if ($totalUsers >= 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');
@@ -1687,16 +1547,17 @@ 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
+ (SUM(p.`points`) - d.`used_points`) AS `points`
FROM
`{?_MYSQL_PREFIX?}_user_points` AS p
LEFT JOIN
`{?_MYSQL_PREFIX?}_user_data` AS d
ON
- p.userid=d.userid
+ p.`userid`=d.`userid`
WHERE
- p.userid=%s
+ p.`userid`=%s
LIMIT 1",
array(bigintval($userid)), __FUNCTION__, __LINE__);
@@ -1706,6 +1567,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__);
@@ -1716,7 +1578,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
@@ -1735,11 +1599,10 @@ LIMIT 1",
// Add reason and translate points
$data['text'] = $reason;
- $data['points'] = translateComma($data['points']);
// Now a mail to the user and that's all...
- $message = loadEmailTemplate('del-user', $data, $userid);
- sendEmail($userid, '{--ADMIN_DEL_ACCOUNT--}', $message);
+ $message = loadEmailTemplate('member_user_deleted', $data, $userid);
+ sendEmail($userid, '{--ADMIN_DELETE_ACCOUNT--}', $message);
// Ok, delete the account!
SQL_QUERY_ESC("DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `userid`=%s LIMIT 1", array(bigintval($userid)), __FUNCTION__, __LINE__);
@@ -1767,7 +1630,7 @@ function getWhatFromModule ($modCheck) {
// Is ext-sql_patches installed and newer than 0.0.5?
if (isExtensionInstalledAndNewer('sql_patches', '0.0.5')) {
// Use it from config
- $what = getConfig('index_home');
+ $what = getIndexHome();
} else {
// Use default 'welcome'
$what = 'welcome';
@@ -1794,29 +1657,21 @@ 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
-function getTotalReceivers ($mode='normal') {
- // Query database
- $result_all = SQL_QUERY("SELECT
- `userid`
-FROM
- `{?_MYSQL_PREFIX?}_user_data`
-WHERE
- `status`='CONFIRMED' AND `receive_mails` > 0 ".runFilterChain('exclude_users', $mode),
- __FUNCTION__, __LINE__);
-
+function getTotalReceivers ($mode = 'normal') {
// Get num rows
- $numRows = SQL_NUMROWS($result_all);
-
- // Free result
- SQL_FREERESULT($result_all);
+ $numRows = countSumTotalData('CONFIRMED', 'user_data', 'userid', 'status', true, ' AND `receive_mails` > 0' . runFilterChain('exclude_users', $mode));
// Return value
return $numRows;
@@ -1836,11 +1691,11 @@ function generateCategoryOptionsList ($mode) {
);
// Get categories
- $result = SQL_QUERY("SELECT `id`, `cat` FROM `{?_MYSQL_PREFIX?}_cats`".$whereStatement." ORDER BY `sort` ASC",
+ $result = SQL_QUERY('SELECT `id`, `cat` FROM `{?_MYSQL_PREFIX?}_cats`' . $whereStatement . ' ORDER BY `sort` ASC',
__FUNCTION__, __LINE__);
// Do we have entries?
- if (SQL_NUMROWS($result) > 0) {
+ if (!SQL_HASZERONUMS($result)) {
// ... and begin loading stuff
while ($content = SQL_FETCHARRAY($result)) {
// Transfer some data
@@ -1878,7 +1733,7 @@ function generateCategoryOptionsList ($mode) {
} // END - foreach
} else {
// No cateogries are defined yet
- $OUT = '';
+ $OUT = '';
}
// Return HTML code
@@ -1886,7 +1741,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
@@ -1907,24 +1762,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
@@ -1933,15 +1785,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__);
@@ -1949,7 +1801,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 = '';
@@ -1957,8 +1809,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))) {
@@ -1967,10 +1819,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_TABS = "LEFT JOIN `{?_MYSQL_PREFIX?}_user_cats` AS c ON d.`userid`=c.`userid`";
+ $CAT_WHERE = sprintf(" AND c.`cat_id`=%s", $categoryId);
} // END - if
// Exclude users in holiday?
@@ -1981,13 +1833,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__);
@@ -2047,11 +1899,11 @@ ORDER BY
), __FUNCTION__, __LINE__);
// Are there some entries?
- if (SQL_NUMROWS($result) > 0) {
+ if (!SQL_HASZERONUMS($result)) {
// Fetch all entries
while ($row = SQL_FETCHARRAY($result)) {
// Get total points of this user
- $row['points'] = countSumTotalData($row['refid'], 'user_points', 'points') - countSumTotalData($row['refid'], 'user_data', 'used_points');
+ $row['points'] = getTotalPoints($row['refid']);
// Get unconfirmed mails
$row['unconfirmed'] = countSumTotalData($row['refid'], 'user_links', 'id', 'userid', true);
@@ -2069,7 +1921,7 @@ ORDER BY
$row['activity'] = '{--MEMBER_ACTIVITY_ACTIVE--}';
// Is autopurge installed and the user inactive?
- if ((isExtensionActive('autopurge')) && ((time() - getConfig('ap_inactive_since')) >= $row['last_online'])) {
+ if ((isExtensionActive('autopurge')) && ((time() - getApInactiveSince()) >= $row['last_online'])) {
// Inactive user!
$row['activity'] = '{--MEMBER_ACTIVITY_INACTIVE--}';
} // END - if
@@ -2099,7 +1951,7 @@ function reduceRecipientReceivedMails ($column, $id, $count) {
array($column, bigintval($id), $count), __FUNCTION__, __LINE__);
// Are there entries?
- if (SQL_NUMROWS($result) > 0) {
+ if (!SQL_HASZERONUMS($result)) {
// Now load all userids for one big query!
$userids = array();
while ($data = SQL_FETCHARRAY($result)) {
@@ -2126,7 +1978,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
@@ -2162,5 +2014,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]
?>