}
// Add link into output stream (or return it) for 'You Are Here' navigation
-function addYouAreHereLink ($accessLevel, $FQFN, $return = false) {
+function addYouAreHereLink ($accessLevel, $FQFN, $return = FALSE) {
// Use only filename of the FQFN...
$file = basename($FQFN);
// Add default content
$prefix .= '<div class="you_are_here">{--YOU_ARE_HERE--} <strong><a class="you_are_here" href="{%url=modules.php?module=' . getModule() . $linkAdd . '%}">Home</a></strong>';
- } elseif ($return === false) {
+ } elseif ($return === FALSE) {
// Count depth
$GLOBALS['nav_depth']++;
}
} // END - if
// Return or output HTML code?
- if ($return === true) {
+ if ($return === TRUE) {
// Return HTML code
return $OUT;
} else {
$main_cnt = '0';
// is the menu action valid?
- if (!isMenuActionValid($mode, $action, $what, true)) {
+ if (!isMenuActionValid($mode, $action, $what, TRUE)) {
return getCode('MENU_NOT_VALID');
} // END - if
while ($content = SQL_FETCHARRAY($result_main)) {
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'main_cnt=' . $main_cnt . ',action=' . $content['action'] . ',getWhat()=' . getWhat());
// Disable the block-mode
- enableBlockMode(false);
+ enableBlockMode(FALSE);
// Load menu header template
- $GLOBALS['rows'] .= loadTemplate($mode . '_menu_title', true, $content);
+ $GLOBALS['rows'] .= loadTemplate($mode . '_menu_title', TRUE, $content);
// Sub menu
$result_sub = SQL_QUERY_ESC("SELECT
// Add regular menu row or bottom row?
if ($count < SQL_NUMROWS($result_sub)) {
- $GLOBALS['rows'] .= loadTemplate($mode . '_menu_row', true, $content);
+ $GLOBALS['rows'] .= loadTemplate($mode . '_menu_row', TRUE, $content);
} else {
- $GLOBALS['rows'] .= loadTemplate($mode . '_menu_bottom', true, $content);
+ $GLOBALS['rows'] .= loadTemplate($mode . '_menu_bottom', TRUE, $content);
}
} // END - while
} else {
$INC = sprintf("inc/modules/%s/action-%s.php", $mode, $content['action']);
if (isFileReadable($INC)) {
// Load include file
- if ((!isExtensionActive($content['action'])) || ($content['action'] == 'online')) $GLOBALS['rows'] .= loadTemplate('menu_what_begin', true, $mode);
+ if ((!isExtensionActive($content['action'])) || ($content['action'] == 'online')) $GLOBALS['rows'] .= loadTemplate('menu_what_begin', TRUE, $mode);
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'main_cnt=' . $main_cnt . ',action=' . $content['action'] . ',getWhat()=' . getWhat());
loadInclude($INC);
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'main_cnt=' . $main_cnt . ',action=' . $content['action'] . ',getWhat()=' . getWhat());
- if ((!isExtensionActive($content['action'])) || ($content['action'] == 'online')) $GLOBALS['rows'] .= loadTemplate('menu_what_end', true, $mode);
+ if ((!isExtensionActive($content['action'])) || ($content['action'] == 'online')) $GLOBALS['rows'] .= loadTemplate('menu_what_end', TRUE, $mode);
}
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'main_cnt=' . $main_cnt . ',action=' . $content['action'] . ',getWhat()=' . getWhat());
}
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'main_cnt=' . $main_cnt . ',getWhat()=' . getWhat());
if (SQL_NUMROWS($result_main) > $main_cnt) {
// Add separator
- $GLOBALS['rows'] .= loadTemplate('menu_separator', true, $mode);
+ $GLOBALS['rows'] .= loadTemplate('menu_separator', TRUE, $mode);
+
+ // Prepare filter data array
+ $filterData = array(
+ 'output' => '',
+ 'exclusive' => FALSE,
+ 'action' => $action,
+ 'mode' => $mode,
+ );
- // Should we display adverts in this menu?
- if ((isExtensionInstalledAndNewer('menu', '0.0.1')) && (getConfig($mode . '_menu_advert_enabled') == 'Y') && ($action != 'admin')) {
- // Display advert template
- $GLOBALS['rows'] .= loadTemplate('menu_' . $mode . '_advert_' . $action, true);
+ // Run filter chain
+ $filterData = runFilterChain($mode . '_menu_advert', $filterData);
- // Add separator again
- $GLOBALS['rows'] .= loadTemplate('menu_separator', true, $mode);
- } // END - if
+ // Add content output
+ $GLOBALS['rows'] .= $filterData['output'];
} // END - if
} // END - while
// Free memory
SQL_FREERESULT($result_main);
- // Should we display adverts in this menu?
- if ((isExtensionInstalledAndNewer('menu', '0.0.1')) && (getConfig($mode . '_menu_advert_enabled') == 'Y')) {
- // Add separator again
- $GLOBALS['rows'] .= loadTemplate('menu_separator', true, $mode);
+ // Prepare filter data array
+ $filterData = array(
+ 'output' => '',
+ 'exclusive' => FALSE,
+ 'action' => $action,
+ 'mode' => $mode,
+ );
- // Display advert template
- $GLOBALS['rows'] .= loadTemplate('menu_' . $mode . '_advert_end', true);
- } // END - if
+ // Run filter chain
+ $filterData = runFilterChain($mode . '_menu_advert_end', $filterData);
+
+ // Add content output
+ $GLOBALS['rows'] .= $filterData['output'];
// Prepare data
$content = array(
// Load main template
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'main_cnt=' . $main_cnt . ',getWhat()=' . getWhat());
- loadTemplate('menu_table', false, $content);
+ loadTemplate('menu_table', FALSE, $content);
} // END - if
}
// Checks whether the current user is a member
function isMember () {
// By default no member
- $ret = false;
+ $ret = FALSE;
// Fix missing 'last_online' array, damn stupid code :(((
// @TODO Try to rewrite this to one or more functions
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'No member set in cookie/session.');
// Abort further processing
- return false;
+ return FALSE;
}
// Get userid secured from session
fixDeletedCookies(array('userid', 'u_hash'));
// Are cookies set and can the member data be loaded?
- if ((isMemberIdSet()) && (isSessionVariableSet('u_hash')) && (fetchUserData(getMemberId()) === true)) {
+ if ((isMemberIdSet()) && (isSessionVariableSet('u_hash')) && (fetchUserData(getMemberId()) === TRUE)) {
// Validate password by created the difference of it and the secret key
$valPass = encodeHashForCookie(getUserData('password'));
$GLOBALS['last_online']['online'] = getUserData('last_online');
// Account is confirmed and all cookie data is valid so he is definely logged in! :-)
- $ret = true;
+ $ret = TRUE;
} // END - if
} // END - if
// Is $ret still false?
- if ($ret === false) {
+ if ($ret === FALSE) {
// Yes, so destroy the session
destroyMemberSession();
} // END - if
// Extension ext-user must be there at any case
if (!isExtensionActive('user')) {
// Absent ext-user is really not good
- return false;
+ return FALSE;
} elseif (is_null($value)) {
// This shall never happen, so please report it
reportBug(__FUNCTION__, __LINE__, 'value=NULL,column=' . $column . ' - value can never be NULL');
} elseif (isUserDataValid()) {
// Use cache, so it is fine
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ' is valid, using cache #1');
- return true;
+ return TRUE;
} // END - if
} elseif (isUserDataValid()) {
// Using cache is fine
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ' is valid, using cache #2');
- return true;
+ return TRUE;
}
// By default none was found
- $found = false;
+ $found = FALSE;
// Extra SQL statements
$ADD = runFilterChain('convert_user_data_columns', ' ');
* login.
*/
function isAdmin () {
+ // Is there cache?
+ if (isset($GLOBALS[__FUNCTION__])) {
+ // Return it
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'isAdmin()=' . intval($GLOBALS[__FUNCTION__]));
+ return $GLOBALS[__FUNCTION__];
+ } // END - if
+
// No admin in installation phase!
if ((isInstallationPhase()) || (!isAdminRegistered())) {
- return false;
+ $GLOBALS[__FUNCTION__] = FALSE;
+ return FALSE;
} // END - if
// Init variables
- $ret = false;
+ $ret = FALSE;
$adminId = '0';
$passwordFromCookie = '';
- $valPass = '';
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, $adminId);
// 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 = getCurrentAdminId();
+ $adminId = getCurrentAdminId();
$passwordFromCookie = getAdminMd5();
} // END - if
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'adminId=' . $adminId . 'passwordFromCookie=' . $passwordFromCookie);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'adminId=' . $adminId . ',passwordFromCookie=' . $passwordFromCookie);
// Abort if admin id is zero
- if ($adminId == '0') {
+ if (($adminId == '0') || (empty($passwordFromCookie))) {
// A very noisy debug message ...
//* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Current adminId is zero. isSessionVariableSet(admin_id)=' . intval(isSessionVariableSet('admin_id')) . ',isSessionVariableSet(admin_md5)=' . intval(isSessionVariableSet('admin_md5')));
// Abort here now
- return false;
+ $GLOBALS[__FUNCTION__] = FALSE;
+ return FALSE;
} // END - if
- // Is there cache?
- if (!isset($GLOBALS[__FUNCTION__][$adminId])) {
- // Init it with failed
- $GLOBALS[__FUNCTION__][$adminId] = false;
-
- // Search in array for entry
- if (isset($GLOBALS['admin_hash'])) {
- // Use cached string
- $valPass = $GLOBALS['admin_hash'];
- } elseif ((!empty($passwordFromCookie)) && (isAdminHashSet($adminId) === true) && (!empty($adminId))) {
- // Login data is valid or not?
- $valPass = encodeHashForCookie(getAdminHash($adminId));
-
- // Cache it away
- $GLOBALS['admin_hash'] = $valPass;
-
- // Count cache hits
- incrementStatsEntry('cache_hits');
- } elseif ((!empty($adminId)) && ((!isExtensionActive('cache')) || (isAdminHashSet($adminId) === false))) {
- // Get admin hash and hash it
- $valPass = encodeHashForCookie(getAdminHash($adminId));
-
- // Cache it away
- $GLOBALS['admin_hash'] = $valPass;
- }
+ // Init it with failed
+ $GLOBALS[__FUNCTION__] = FALSE;
- if (!empty($valPass)) {
- // Check if password is valid
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, '(' . $valPass . '==' . $passwordFromCookie . ')='.intval($valPass == $passwordFromCookie));
- $GLOBALS[__FUNCTION__][$adminId] = ($GLOBALS['admin_hash'] == $passwordFromCookie);
- } // END - if
- } // END - if
+ // Search in array for entry
+ if (isset($GLOBALS['admin_hash'])) {
+ // Use cached string
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Using admin_hash=' . $GLOBALS['admin_hash'] . ' from cache');
+ } elseif ((!empty($adminId)) && (!empty($passwordFromCookie)) && (isAdminHashSet($adminId) === TRUE)) {
+ // Get admin hash and hash it
+ $GLOBALS['admin_hash'] = encodeHashForCookie(getAdminHash($adminId));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'valPass=' . $GLOBALS['admin_hash']);
+
+ // Count cache hits
+ incrementStatsEntry('cache_hits');
+ } elseif ((!empty($adminId)) && ((!isExtensionActive('cache')) || (isAdminHashSet($adminId) === FALSE))) {
+ // Get admin hash and hash it
+ $GLOBALS['admin_hash'] = encodeHashForCookie(getAdminHash($adminId));
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'valPass=' . $GLOBALS['admin_hash']);
+ }
+
+ // Check if password is valid
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, '(' . $GLOBALS['admin_hash'] . '==' . $passwordFromCookie . ')='.intval($GLOBALS['admin_hash'] == $passwordFromCookie));
+ $GLOBALS[__FUNCTION__] = ((!empty($GLOBALS['admin_hash'])) && ($GLOBALS['admin_hash'] == $passwordFromCookie));
// Return result of comparision
- return $GLOBALS[__FUNCTION__][$adminId];
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'isAdmin()=' . intval($GLOBALS[__FUNCTION__]));
+ return $GLOBALS[__FUNCTION__];
}
// Generates a list of "max receiveable emails per day"
function addMaxReceiveList ($mode, $default = '') {
$OUT = '';
- $result = false;
+ $result = 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 'admin':
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;
}
// Load template
- $OUT = loadTemplate(($mode . '_receive_table'), true, $OUT);
+ $OUT = loadTemplate(($mode . '_receive_table'), TRUE, $OUT);
} else {
// Maybe the admin has to setup some maximum values?
reportBug(__FUNCTION__, __LINE__, 'Nothing is being done here?');
}
// Validate the given menu action
-function isMenuActionValid ($mode, $action, $what, $updateEntry = false) {
+function isMenuActionValid ($mode, $action, $what, $updateEntry = FALSE) {
// Is the cache entry there and we shall not update?
- if ((isset($GLOBALS['action_valid'][$mode][$action][$what])) && ($updateEntry === false)) {
+ if ((isset($GLOBALS['action_valid'][$mode][$action][$what])) && ($updateEntry === FALSE)) {
// Count cache hit
incrementStatsEntry('cache_hits');
} // END - if
// By default nothing is valid
- $ret = false;
+ $ret = FALSE;
// Look in all menus or only unlocked
$add = '';
if ((!isAdmin()) && ($mode != 'admin')) $add = " AND `locked`='N'";
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'mode=' . $mode . ',action=' . $action . ',what=' . $what);
- if (($mode != 'admin') && ($updateEntry === true)) {
+ 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",
array(
$mode,
$action,
$what
- ), __FUNCTION__, __LINE__, false);
+ ), __FUNCTION__, __LINE__, FALSE);
} elseif (($what != 'welcome') && (!empty($what))) {
// Other actions
- $sql = SQL_QUERY_ESC("SELECT `id`,`what` FROM `{?_MYSQL_PREFIX?}_%s_menu` WHERE `action`='%s' AND `what`='%s'".$add." ORDER BY `action` DESC LIMIT 1",
+ $sql = SQL_QUERY_ESC("SELECT `id`, `what` FROM `{?_MYSQL_PREFIX?}_%s_menu` WHERE `action`='%s' AND `what`='%s'".$add." ORDER BY `action` DESC LIMIT 1",
array(
$mode,
$action,
$what
- ), __FUNCTION__, __LINE__, false);
+ ), __FUNCTION__, __LINE__, FALSE);
} else {
// Admin login overview
- $sql = SQL_QUERY_ESC("SELECT `id`,`what` FROM `{?_MYSQL_PREFIX?}_%s_menu` WHERE `action`='%s' AND (`what`='' OR `what` IS NULL)".$add." ORDER BY `action` DESC LIMIT 1",
+ $sql = SQL_QUERY_ESC("SELECT `id`, `what` FROM `{?_MYSQL_PREFIX?}_%s_menu` WHERE `action`='%s' AND (`what`='' OR `what` IS NULL)".$add." ORDER BY `action` DESC LIMIT 1",
array(
$mode,
$action
- ), __FUNCTION__, __LINE__, false);
+ ), __FUNCTION__, __LINE__, FALSE);
}
// Run SQL command
$result = SQL_QUERY($sql, __FUNCTION__, __LINE__);
// Should we look for affected rows (only update) or found rows?
- if ($updateEntry === true) {
+ if ($updateEntry === TRUE) {
// Check updated/affected rows
$ret = (!SQL_HASZEROAFFECTED());
} else {
$data['action'] = '';
if (!isExtensionInstalledAndNewer('sql_patches', '0.0.5')) {
- // sql_patches is missing so choose depending on mode
+ // ext-sql_patches is missing so choose depending on mode
$what = determineWhat($module);
} elseif ((empty($what)) && ($module != 'admin')) {
// Use configured 'home'
// Free memory
SQL_FREERESULT($result);
} elseif ((!isExtensionInstalled('sql_patches')) && ($module != 'admin') && ($module != 'unknown')) {
- // No sql_patches installed, but maybe we need to register an admin?
+ // No ext-sql_patches installed, but maybe we need to register an admin?
if (isAdminRegistered()) {
// Redirect to admin area
redirectToUrl('admin.php');
}
// Get a string of "mail title" and price back
-function getPaymentTitlePrice ($paymentsId, $full = false) {
+function getPaymentTitlePrice ($paymentsId, $full = FALSE) {
// Only title or also including price?
- if ($full === false) {
+ if ($full === FALSE) {
$ret = getPaymentData($paymentsId, 'main_title');
} else {
$ret = getPaymentData($paymentsId, 'main_title') . ' / {%pipe,getPaymentData,translateComma=' . $paymentsId . '%} {?POINTS?}';
$data[$lookFor] = NULL;
// Is there cache?
- if (isset($GLOBALS['cache_array']['payments'][$paymentsId]['id'])) {
+ if (isset($GLOBALS['cache_array']['payments'][$lookFor][$paymentsId])) {
// Use it if found to save SQL queries
$data[$lookFor] = $GLOBALS['cache_array']['payments'][$lookFor][$paymentsId];
}
// Remove a receiver's id from $receivers and add a link for him to confirm
-function removeReceiver (&$receivers, $key, $userid, $poolId, $statsId = 0, $isBonusMail = false) {
+function removeReceiver (&$receivers, $key, $userid, $poolId, $statsId = 0, $isBonusMail = FALSE) {
// Default is not removed
$ret = 'failed';
$rowName = 'stats_id';
// Only when we got a real stats id continue searching for the entry
- if ($isBonusMail === true) {
+ if ($isBonusMail === TRUE) {
$type = 'BONUS';
$rowName = 'bonus_id';
} // END - if
// Was it *not* found?
if (SQL_HASZERONUMS($result)) {
// So we add one!
- SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_links` (`%s`,`userid`,`link_type`) VALUES (%s,%s,'%s')",
+ SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_user_links` (`%s`, `userid`, `link_type`) VALUES (%s,%s,'%s')",
array(
$rowName,
bigintval($statsId),
$type
), __FUNCTION__, __LINE__);
- // Update 'mails_sent' if sql_patches is updated
+ // Update 'mails_sent' if ext-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',
}
// Calculate sum (default) or count records of given criteria
-function countSumTotalData ($search, $tableName, $lookFor = 'id', $whereStatement = 'userid', $countRows = false, $add = '', $mode = '=') {
- // Init count/sum
- $data['res'] = '0';
-
+function countSumTotalData ($search, $tableName, $lookFor = 'id', $whereStatement = 'userid', $countRows = FALSE, $add = '', $mode = '=') {
+ // Debug message
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'search=' . $search . ',tableName=' . $tableName . ',lookFor=' . $lookFor . ',whereStatement=' . $whereStatement . ',add=' . $add);
if ((empty($search)) && ($search != '0')) {
// Count or sum whole table?
- if ($countRows === true) {
+ if ($countRows === TRUE) {
// Count whole table
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'COUNT!');
$result = SQL_QUERY_ESC('SELECT COUNT(`%s`) AS `res` FROM `{?_MYSQL_PREFIX?}_%s`' . $add . ' LIMIT 1',
array(
$lookFor,
), __FUNCTION__, __LINE__);
} else {
// Sum whole table
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'SUM!');
$result = SQL_QUERY_ESC('SELECT SUM(`%s`) AS `res` FROM `{?_MYSQL_PREFIX?}_%s`' . $add . ' LIMIT 1',
array(
$lookFor,
$tableName
), __FUNCTION__, __LINE__);
}
- } elseif (($countRows === true) || ($lookFor == 'userid')) {
+ } elseif (($countRows === TRUE) || ($lookFor == 'userid')) {
// Count rows
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'COUNT!');
$result = SQL_QUERY_ESC("SELECT COUNT(`%s`) AS `res` FROM `{?_MYSQL_PREFIX?}_%s` WHERE `%s`%s'%s'" . $add . ' LIMIT 1',
if ((empty($data['res'])) && ($lookFor != 'counter') && ($lookFor != 'id') && ($lookFor != 'userid') && ($lookFor != 'rallye_id')) {
// Float number
$data['res'] = '0.00000';
- } elseif (''.$data['res'].'' == '') {
+ } elseif ('' . $data['res'] . '' == '') {
// Fix empty result
$data['res'] = '0';
}
* Sends out mail to all administrators. This function is no longer obsolete
* because we need it when there is no ext-admins installed
*/
-function sendAdminEmails ($subject, $message, $isBugReport = false) {
+function sendAdminEmails ($subject, $message, $isBugReport = FALSE) {
// Default is no special header
$mailHeader = '';
// Is it a bug report?
- if ($isBugReport === true) {
+ if ($isBugReport === TRUE) {
// Then add a reply-to line back to the author (me)
- $mailHeader = 'Reply-To: webmaster@mxchange.org' . chr(10);
+ $mailHeader = 'Reply-To: webmaster@mxchange.org' . PHP_EOL;
} // END - if
// Load all admin email addresses
// Get password hash from administrator's login name
function getAdminHash ($adminId) {
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'adminId=' . $adminId . ' - ENTERED!');
// By default an invalid hash is returned
$data['password'] = -1;
+ // Is admin hash set?
if (isAdminHashSet($adminId)) {
// Check cache
$data['password'] = $GLOBALS['cache_array']['admin']['password'][$adminId];
}
// Return password hash
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'adminId=' . $adminId . ',data[password]=' . $data['password'] . ' - EXIT!');
return $data['password'];
}
// By default an invalid ACL value is returned
$data['default_acl'] = 'NO-ACL';
- // Is sql_patches there and was it found in cache?
+ // Is ext-sql_patches there and was it found in cache?
if (!isExtensionActive('sql_patches')) {
// Not found, which is bad, so we need to allow all
$data['default_acl'] = 'allow';
// By default an invalid mode
$data['la_mode'] = 'INVALID';
- // Is sql_patches there and was it found in cache?
+ // Is ext-sql_patches there and was it found in cache?
if (!isExtensionActive('sql_patches')) {
// Not found, which is bad, so we need to allow all
$data['la_mode'] = 'global';
} // END - if
// Run SQL query
- $result = SQL_QUERY_ESC("SELECT `%s` AS `key`,`%s` AS `value`" . $extraColumn . " FROM `{?_MYSQL_PREFIX?}_%s` " . $whereStatement . " ORDER BY `%s` ASC",
+ $result = SQL_QUERY_ESC("SELECT `%s` AS `key`, `%s` AS `value`" . $extraColumn . " FROM `{?_MYSQL_PREFIX?}_%s` " . $whereStatement . " ORDER BY `%s` ASC",
array(
$key,
$value,
$result = SQL_QUERY_ESC("SELECT
(SUM(p.`points`) - d.`used_points`) AS `points`
FROM
- `{?_MYSQL_PREFIX?}_user_points` AS p
+ `{?_MYSQL_PREFIX?}_user_points` AS `p`
LEFT JOIN
- `{?_MYSQL_PREFIX?}_user_data` AS d
+ `{?_MYSQL_PREFIX?}_user_data` AS `d`
ON
p.`userid`=d.`userid`
WHERE
} // END - if
// Add reason and translate points
- $data['text'] = $reason;
+ $data['text'] = $reason;
// Now a mail to the user and that's all...
$message = loadEmailTemplate('member_user_deleted', $data, $userid);
);
// 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__);
// Are there entries?
// Start adding all
while ($data = SQL_FETCHARRAY($result_userids)) {
// Add user count
- $userid_cnt += countSumTotalData($data['userid'], 'user_data', 'userid', 'userid', true, runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED' AND `receive_mails` > 0"));
+ $userid_cnt += countSumTotalData($data['userid'], 'user_data', 'userid', 'userid', TRUE, runFilterChain('user_exclusion_sql', " AND `status`='CONFIRMED' AND `receive_mails` > 0"));
} // END - while
// Free memory
// Is admin or bonus extension there?
if (!isAdmin()) {
// Abort here
- return false;
+ return FALSE;
} elseif (!isExtensionActive('bonus')) {
// Abort here
- return false;
+ return FALSE;
}
// Calculcate target sent
// HTML extension active?
if (isExtensionActive('html_mail')) {
- // 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')",
+ 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'
+)",
array(
$subject,
$text,
bigintval($categoryId),
$target,
bigintval($receiver),
- $HTML
+ convertBooleanToYesNo($mode == 'html')
), __FUNCTION__, __LINE__);
} else {
// 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)",
+ 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
+)",
array(
$subject,
$text,
// Init variables
$extraColumns = '';
$receiverList = '';
- $result = false;
+ $result = FALSE;
// Secure data
$categoryId = bigintval($categoryId);
// Now load all userids for one big query!
$userids = array();
while ($data = SQL_FETCHARRAY($result)) {
- // By default we want to reduce and have no mails found
+ // By default reduce and found no emails
$num = 0;
// We must now look if he has already confirmed this mail, so might sound double, but it may resolve problems
// @TODO Rewrite this to a filter
if ((isset($data['stats_id'])) && ($data['stats_id'] > 0)) {
// User email
- $num = countSumTotalData($data['userid'], 'user_stats_data', 'id', 'userid', true, sprintf(" AND `stats_type`='mailid' AND `stats_data`=%s", bigintval($data['stats_id'])));
+ $num = countSumTotalData($data['userid'], 'user_stats_data', 'id', 'userid', TRUE, sprintf(" AND `stats_type`='mailid' AND `stats_data`=%s", bigintval($data['stats_id'])));
} elseif ((isset($data['bonus_id'])) && ($data['bonus_id'] > 0)) {
// Bonus mail
- $num = countSumTotalData($data['userid'], 'user_stats_data', 'id', 'userid', true, sprintf(" AND `stats_type`='bonusid' AND `stats_data`=%s", bigintval($data['bonus_id'])));
+ $num = countSumTotalData($data['userid'], 'user_stats_data', 'id', 'userid', TRUE, sprintf(" AND `stats_type`='bonusid' AND `stats_data`=%s", bigintval($data['bonus_id'])));
}
// Reduce this users total received emails?
if (count($userids) > 0) {
// Now update all user accounts
SQL_QUERY_ESC("UPDATE `{?_MYSQL_PREFIX?}_user_data` SET `emails_received`=`emails_received`-1 WHERE `userid` IN (%s) LIMIT %s",
- array(implode(',', $userids), count($userids)), __FUNCTION__, __LINE__);
+ array(
+ implode(',', $userids),
+ count($userids)
+ ), __FUNCTION__, __LINE__);
} else {
// Nothing deleted
displayMessage('{%message,ADMIN_MAIL_NOTHING_DELETED=' . $id . '%}');
}
// Creates a new task
-function createNewTask ($subject, $notes, $taskType, $userid = NULL, $adminId = NULL, $strip = true) {
+function createNewTask ($subject, $notes, $taskType, $userid = NULL, $adminId = NULL, $strip = TRUE) {
// Insert the task data into the database
- SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_task_system` (`assigned_admin`,`userid`,`status`,`task_type`,`subject`,`text`,`task_created`) VALUES (%s,%s,'NEW','%s','%s','%s', UNIX_TIMESTAMP())",
+ SQL_QUERY_ESC("INSERT INTO `{?_MYSQL_PREFIX?}_task_system` (`assigned_admin`, `userid`, `status`, `task_type`, `subject`, `text`, `task_created`) VALUES (%s, %s, 'NEW', '%s', '%s', '%s', UNIX_TIMESTAMP())",
array(
convertZeroToNull($adminId),
convertZeroToNull($userid),
$taskType,
$subject,
$notes
- ), __FUNCTION__, __LINE__, true, $strip);
+ ), __FUNCTION__, __LINE__, TRUE, $strip);
// Return insert id which is the task id
return SQL_INSERTID();
}
// Updates last module / online time
-function updateLastActivity($userid) {
+function updateLastActivity ($userid) {
// Is 'what' set?
if (isWhatSet()) {
// Run the update query
SQL_QUERY_ESC("UPDATE
`{?_MYSQL_PREFIX?}_user_data`
SET
- `%s`='%s',
+ `{%%pipe,getUserLastWhatName%%}`='{%%pipe,getWhat%%}',
`last_online`=UNIX_TIMESTAMP(),
- `REMOTE_ADDR`='%s'
+ `REMOTE_ADDR`='{%%pipe,detectRemoteAddr%%}'
WHERE
`userid`=%s
LIMIT 1",
array(
- getUserLastWhatName(),
- getWhat(),
- detectRemoteAddr(),
bigintval($userid)
), __FUNCTION__, __LINE__);
} else {
SQL_QUERY_ESC("UPDATE
`{?_MYSQL_PREFIX?}_user_data`
SET
- `%s`=NULL,
+ `{%%pipe,getUserLastWhatName%%}`=NULL,
`last_online`=UNIX_TIMESTAMP(),
- `REMOTE_ADDR`='%s'
+ `REMOTE_ADDR`='{%%pipe,detectRemoteAddr%%}'
WHERE
`userid`=%s
LIMIT 1",
array(
- getUserLastWhatName(),
- detectRemoteAddr(),
bigintval($userid)
), __FUNCTION__, __LINE__);
}
}
// List all given rows (callback function from XML)
-function doGenericListEntries ($tableTemplate, $rowTemplate, $noEntryMessageId, $tableName, $columns, $whereColumns, $orderByColumns, $callbackColumns, $extraParameters = array(), $conditions = array()) {
+function doGenericListEntries ($tableTemplate, $rowTemplate, $noEntryMessageId, $tableName, $columns, $whereColumns, $orderByColumns, $callbackColumns, $extraParameters = array(), $conditions = array(), $content = array()) {
// Verify that tableName and columns are not empty
if ((!is_array($tableName)) || (count($tableName) != 1)) {
// No tableName specified
}
// This is the minimum query, so at least columns and tableName must have entries
- $SQL = 'SELECT ';
+ $sql = 'SELECT ';
// Get the sql part back from given array
- $SQL .= getSqlPartFromXmlArray($columns);
+ $sql .= getSqlPartFromXmlArray($columns);
// Remove last commata and add FROM statement
- $SQL .= ' FROM `{?_MYSQL_PREFIX?}_' . $tableName[0] . '`';
+ $sql .= ' FROM `{?_MYSQL_PREFIX?}_' . $tableName[0] . '`';
// Are there entries from whereColumns to add?
if (count($whereColumns) > 0) {
// Then add these as well
if (count($whereColumns) == 1) {
// One entry found
- $SQL .= ' WHERE ';
+ $sql .= ' WHERE ';
// Table/alias included?
if (!empty($whereColumns[0]['table'])) {
// Add it as well
- $SQL .= $whereColumns[0]['table'] . '.';
+ $sql .= $whereColumns[0]['table'] . '.';
} // END - if
// Add the rest
- $SQL .= '`' . $whereColumns[0]['column'] . '`' . $whereColumns[0]['condition'] . chr(39) . $whereColumns[0]['look_for'] . chr(39);
+ $sql .= '`' . $whereColumns[0]['column'] . '`' . $whereColumns[0]['condition'] . chr(39) . $whereColumns[0]['look_for'] . chr(39);
} elseif ((count($whereColumns > 1)) && (count($conditions) > 0)) {
// More than one "WHERE" + condition found
foreach ($whereColumns as $idx => $columnArray) {
// Default is WHERE
- $condition = 'WHERE';
+ $condition = ' WHERE ';
// Is the condition element there?
if (isset($conditions[$columnArray['column']])) {
// Assume the condition
- $condition = $conditions[$columnArray['column']];
+ $condition = ' ' . $conditions[$columnArray['column']] . ' ';
} // END - if
// Add to SQL query
- $SQL .= ' ' . $condition;
+ $sql .= $condition;
// Table/alias included?
if (!empty($whereColumns[$idx]['table'])) {
// Add it as well
- $SQL .= $whereColumns[$idx]['table'] . '.';
+ $sql .= $whereColumns[$idx]['table'] . '.';
} // END - if
// Add the rest
- $SQL .= '`' . $whereColumns[$idx]['column'] . '`' . $whereColumns[$idx]['condition'] . chr(39) . convertDollarDataToGetElement($whereColumns[$idx]['look_for']) . chr(39);
+ $sql .= '`' . $whereColumns[$idx]['column'] . '`' . $whereColumns[$idx]['condition'] . chr(39) . convertDollarDataToGetElement($whereColumns[$idx]['look_for']) . chr(39);
} // END - foreach
} else {
// Did not set $conditions
// Are there entries from orderByColumns to add?
if (count($orderByColumns) > 0) {
// Add them as well
- $SQL .= ' ORDER BY ';
+ $sql .= ' ORDER BY ';
foreach ($orderByColumns as $orderByColumn => $array) {
// Get keys (table/alias) and values (sorting itself)
$table = trim(implode('', array_keys($array)));
- $sorting = trim(implode('', array_keys($array)));
+ $sorting = trim(implode('', array_values($array)));
// table/alias can be omitted
if (!empty($table)) {
// table/alias is given
- $SQL .= $table . '.';
+ $sql .= $table . '.';
} // END - if
// Add order-by column
- $SQL .= '`' . $orderByColumn . '` ' . $sorting . ',';
+ $sql .= '`' . $orderByColumn . '` ' . $sorting . ',';
} // END - foreach
// Remove last column
- $SQL = substr($SQL, 0, -1);
+ $sql = substr($sql, 0, -1);
} // END - if
// Now handle all over to the inner function which will execute the listing
- doListEntries($SQL, $tableTemplate, $noEntryMessageId, $rowTemplate, $callbackColumns, $extraParameters);
+ doListEntries($sql, $tableTemplate, $noEntryMessageId, $rowTemplate, $callbackColumns, $extraParameters, $content);
}
// Do the listing of entries
-function doListEntries ($SQL, $tableTemplate, $noEntryMessageId, $rowTemplate, $callbackColumns, $extraParameters = array()) {
+function doListEntries ($sql, $tableTemplate, $noEntryMessageId, $rowTemplate, $callbackColumns, $extraParameters = array(), $content = array()) {
// Run the SQL query
- $result = SQL_QUERY($SQL, __FUNCTION__, __LINE__);
+ $result = SQL_QUERY($sql, __FUNCTION__, __LINE__);
// Are there some URLs left?
if (!SQL_HASZERONUMS($result)) {
// List all URLs
$OUT = '';
- while ($content = SQL_FETCHARRAY($result)) {
+ while ($row = SQL_FETCHARRAY($result)) {
// "Translate" content
foreach ($callbackColumns as $columnName => $callbackName) {
// Fill the callback arguments
- $args = array($content[$columnName]);
+ $args = array($row[$columnName]);
// Is there more to add?
if (isset($extraParameters[$columnName])) {
} // END - if
// Call the callback-function
- //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'callbackFunction=' . $callbackName . ',args=<pre>'.print_r($args, true).'</pre>');
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'callbackFunction=' . $callbackName . ',args=<pre>'.print_r($args, TRUE).'</pre>');
// @TODO If we can rewrite the EL sub-system to support more than one parameter, this call_user_func_array() can be avoided
- $content[$columnName] = call_user_func_array($callbackName, $args);
+ $row[$columnName] = call_user_func_array($callbackName, $args);
} // END - foreach
// Load row template
- $OUT .= loadTemplate(trim($rowTemplate[0]), true, $content);
+ $OUT .= loadTemplate(trim($rowTemplate[0]), TRUE, $row);
} // END - while
+ // Is at least one entry set in content?
+ if ((is_array($content)) && (count($content) > 0)) {
+ // Then add generic 'rows' element
+ $content['rows'] = $OUT;
+ } else {
+ // Direct output is content
+ $content = $OUT;
+ }
+
// Load main template
- loadTemplate(trim($tableTemplate[0]), false, $OUT);
+ loadTemplate(trim($tableTemplate[0]), FALSE, $content);
} else {
// No URLs in surfbar
displayMessage('{--' .$noEntryMessageId[0] . '--}');
// Adds a given entry to the database
function doGenericAddEntries ($tableName, $columns = array(), $filterFunctions = array(), $extraValues = array(), $timeColumns = array(), $columnIndex = NULL) {
- //* DEBUG: */ die('columns=<pre>'.print_r($columns,true).'</pre>,filterFunctions=<pre>'.print_r($filterFunctions,true).'</pre>,extraValues=<pre>'.print_r($extraValues,true).'</pre>,POST=<pre>'.print_r($_POST,true).'</pre>');
+ //* DEBUG: */ die(__FUNCTION__.':columns=<pre>'.print_r($columns,TRUE).'</pre>,filterFunctions=<pre>'.print_r($filterFunctions,TRUE).'</pre>,extraValues=<pre>'.print_r($extraValues,TRUE).'</pre>,timeColumns=<pre>'.print_r($timeColumns,TRUE).'</pre>,columnIndex=<pre>'.print_r($columnIndex,TRUE).'</pre>,POST=<pre>'.print_r($_POST,TRUE).'</pre>');
// Verify that tableName and columns are not empty
if ((!is_array($tableName)) || (count($tableName) != 1)) {
// No tableName specified
$sqlValues = array();
// Default is that all went fine
- $GLOBALS['__XML_PARSE_RESULT'] = true;
+ $GLOBALS['__XML_PARSE_RESULT'] = TRUE;
// Is there "time columns"?
if (count($timeColumns) > 0) {
// Is columnIndex set?
if (!is_null($columnIndex)) {
// Check conditions
- //* DEBUG: */ die('columnIndex=<pre>'.print_r($columnIndex,true).'</pre>'.debug_get_printable_backtrace());
+ //* DEBUG: */ die('columnName=<pre>'.print_r($columnName,TRUE).'</pre>columnIndex=<pre>'.print_r($columnIndex,TRUE).'</pre>'.debug_get_printable_backtrace());
assert((is_array($columnName)) && (is_string($columnIndex)) && (isset($columnName[$columnIndex])));
// Then use that index "blindly"
} // END - if
// Debug message
- //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',columnName[' . gettype($columnName) . ']=' . $columnName . ',filterFunctions=' . $filterFunctions[$key] . ',extraValues=' . intval(isset($extraValues[$key])) . ',extraValuesName=' . intval(isset($extraValues[$columnName . '_list'])) . '<br />');
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',columnName[' . gettype($columnName) . ']=' . $columnName . ',filterFunctions=' . $filterFunctions[$key] . ',extraValues=' . intval(isset($extraValues[$key])) . ',extraValuesName=' . intval(isset($extraValues[$columnName . '_list'])));
// Copy entry securely to the final arrays
$sqlColumns[$key] = SQL_ESCAPE($columnName);
$sqlValues[$key] = SQL_ESCAPE(postRequestElement($columnName));
- // Send data through the filter function if found
- if ((isset($filterFunctions[$key])) && (isset($extraValues[$key . '_list']))) {
- // Filter function set!
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sqlValues[' . $key . '][' . gettype($sqlValues[$key]) . ']=' . $sqlValues[$key] . ' - BEFORE!');
- $sqlValues[$key] = call_user_func_array($filterFunctions[$key], merge_array(array($columnName), $extraValues[$key . '_list']));
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sqlValues[' . $key . '][' . gettype($sqlValues[$key]) . ']=' . $sqlValues[$key] . ' - AFTER!');
- } elseif ((isset($filterFunctions[$key])) && (!empty($filterFunctions[$key]))) {
- // Run through an extra filter
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sqlValues[' . $key . '][' . gettype($sqlValues[$key]) . ']=' . $sqlValues[$key] . ' - BEFORE!');
- $sqlValues[$key] = handleExtraValues($filterFunctions[$key], $sqlValues[$key], '');
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sqlValues[' . $key . '][' . gettype($sqlValues[$key]) . ']=' . $sqlValues[$key] . ' - AFTER!');
+ // Search for it
+ $search = key(search_array($columns, 'column', $columnName));
+
+ // Try to handle call-back functions and/or extra values on the list
+ //* DEBUG: */ outputHtml($key . '/' . $columnName . '=<pre>'.print_r($columns,true).'</pre>search_array()=<pre>'.print_r(search_array($columns, 'column', $columnName), true).'</pre>');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sqlValues[' . $key . '(' . gettype($key) . ')][' . gettype($sqlValues[$key]) . ']=' . $sqlValues[$key] . ' - BEFORE!');
+ if (is_string($key)) {
+ // Key is a string
+ $sqlValues[$key] = doHandleExtraValues($filterFunctions, $extraValues, $key . '_list', $sqlValues[$key], array(''), $search);
+ } else {
+ // Is a number
+ $sqlValues[$key] = doHandleExtraValues($filterFunctions, $extraValues, $key, $sqlValues[$key], array(''), $search);
}
// Is the value not a number?
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sqlValues[' . $key . '][' . gettype($sqlValues[$key]) . ']=' . $sqlValues[$key]);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sqlValues[' . $key . '(' . gettype($key) . ')][' . gettype($sqlValues[$key]) . ']=' . $sqlValues[$key] . ' - AFTER!');
if (($sqlValues[$key] != 'NULL') && (is_string($sqlValues[$key]))) {
// Add quotes around it
$sqlValues[$key] = chr(39) . $sqlValues[$key] . chr(39);
} // END - if
// Is the value false?
- if ($sqlValues[$key] === false) {
+ if ($sqlValues[$key] === FALSE) {
// One "parser" didn't like it
- $GLOBALS['__XML_PARSE_RESULT'] = false;
+ $GLOBALS['__XML_PARSE_RESULT'] = FALSE;
break;
} // END - if
} // END - foreach
// If all values are okay, continue
- if ($sqlValues[$key] !== false) {
+ if ($sqlValues[$key] !== FALSE) {
// Build the SQL query
- $SQL = 'INSERT INTO `{?_MYSQL_PREFIX?}_' . $tableName[0] . '` (`' . implode('`,`', $sqlColumns) . "`) VALUES (" . implode(',', $sqlValues) . ')';
+ $sql = 'INSERT INTO `{?_MYSQL_PREFIX?}_' . $tableName[0] . '` (`' . implode('`, `', $sqlColumns) . "`) VALUES (" . implode(',', $sqlValues) . ')';
// Run the SQL query
- SQL_QUERY($SQL, __FUNCTION__, __LINE__);
+ SQL_QUERY($sql, __FUNCTION__, __LINE__);
+
+ // Add id number
+ setPostRequestElement('id', SQL_INSERTID());
+
+ // Prepare filter data array
+ $filterData = array(
+ 'mode' => 'add',
+ 'table_name' => $tableName,
+ 'content' => postRequestArray(),
+ 'id' => SQL_INSERTID(),
+ 'subject' => '',
+ // @TODO Used generic 'userid' here
+ 'userid_column' => array('userid'),
+ 'raw_userid' => array('userid'),
+ 'affected' => SQL_AFFECTEDROWS(),
+ 'sql' => $sql,
+ );
+
+ // Send "build mail" out
+ runFilterChain('send_build_mail', $filterData);
} // END - if
}
// Edit rows by given id numbers
-function doGenericEditEntriesConfirm ($tableName, $columns = array(), $filterFunctions = array(), $extraValues = array(), $timeColumns = array(), $editNow = array(false), $idColumn = array('id'), $userIdColumn = array('userid'), $rawUserId = array('userid'), $cacheFiles = array()) {
+function doGenericEditEntriesConfirm ($tableName, $columns = array(), $filterFunctions = array(), $extraValues = array(), $timeColumns = array(), $editNow = array(FALSE), $idColumn = array('id'), $userIdColumn = array('userid'), $rawUserId = array('userid'), $cacheFiles = array(), $subject = '') {
+ // Is there "time columns"?
+ if (count($timeColumns) > 0) {
+ // Then "walk" through all entries
+ foreach ($timeColumns as $column) {
+ // Convert all (possible) selections
+ convertSelectionsToEpocheTimeInPostData($column . '_ye');
+ } // END - foreach
+ } // END - if
+
// Change them all
$affected = '0';
foreach (postRequestElement($idColumn[0]) as $id => $sel) {
+ // Secure id number
+ $id = bigintval($id);
+
// Prepare content array (new values)
$content = array();
// "Walk" through all entries
foreach (postRequestArray() as $key => $entries) {
// Skip raw userid which is always invalid
- if ($key == $rawUserId[0]) {
+ if (($key == $rawUserId[0]) || ($key == ($rawUserId[0] . '_raw')) || ($key == 'do_edit')) {
// Continue with next field
//* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',idColumn[0]=' . $idColumn[0] . ',rawUserId=' . $rawUserId[0]);
continue;
} // END - if
// Debug message
- //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',idColumn[0]=' . $idColumn[0] . ',entries=<pre>'.print_r($entries,true).'</pre>');
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',id=' . $id . ',idColumn[0]=' . $idColumn[0] . ',entries=<pre>'.print_r($entries,TRUE).'</pre>');
// Is entries an array?
if (($key != $idColumn[0]) && (is_array($entries)) && (isset($entries[$id]))) {
+ // Search for the right array index
+ $search = key(search_array($columns, 'column', $key));
+
// Add this entry to content
$content[$key] = $entries[$id];
- // Send data through the filter function if found
- if ($key == $userIdColumn[0]) {
- // Is the userid, we have to process it with convertZeroToNull()
- $entries[$id] = convertZeroToNull($entries[$id]);
- } elseif ((isset($filterFunctions[$key])) && (isset($extraValues[$key]))) {
- // Filter function set!
- $entries[$id] = handleExtraValues($filterFunctions[$key], $entries[$id], $extraValues[$key]);
- }
+ // Debug message
+ //* BUG: */ die($key.'/'.$id.'/'.$search.'=<pre>'.print_r($columns,TRUE).'</pre><pre>'.print_r($filterFunctions,TRUE).'</pre>');
- // Is the value NULL?
- if ($entries[$id] == 'NULL') {
- // Add it directly
- $sql .= sprintf(' `%s`=NULL,',
- SQL_ESCAPE($key)
- );
- } else {
- // Else add the value covered
- $sql .= sprintf(" `%s`='%s',",
- SQL_ESCAPE($key),
- SQL_ESCAPE($entries[$id])
- );
- }
+ // Handle possible call-back functions and/or extra values
+ $entries[$id] = doHandleExtraValues($filterFunctions, $extraValues, $key, $entries[$id], $userIdColumn, $search);
+
+ // Add key/value pair to SQL string
+ $sql .= addKeyValueSql($key, $entries[$id]);
} elseif (($key != $idColumn[0]) && (!is_array($entries))) {
- // Add normal entries as well!
- $content[$key] = $entries;
+ // Search for it
+ $search = key(search_array($columns, 'column', $key));
+ //* BUG: */ die($key.'/<pre>'.print_r($search, TRUE).'</pre>=<pre>'.print_r($columns, TRUE).'</pre>');
+
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',entries[' . gettype($entries) . ']=' . $entries . ',search=' . $search . ' - BEFORE!');
+
+ // Add normal entries as well
+ $content[$key] = $entries;
+
+ // Handle possible call-back functions and/or extra values
+ $entries = doHandleExtraValues($filterFunctions, $extraValues, $key, $entries, $userIdColumn, $search);
+
+ // Debug message
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',entries[' . gettype($entries) . ']=' . $entries . ',search=' . $search . ' - AFTER!');
+
+ // Add key/value pair to SQL string
+ $sql .= addKeyValueSql($key, $entries);
}
} // END - foreach
// Finish SQL command
- $sql = substr($sql, 0, -1) . " WHERE `" . SQL_ESCAPE($idColumn[0]) . "`=" . bigintval($id) . " LIMIT 1";
+ $sql = substr($sql, 0, -1) . " WHERE `" . SQL_ESCAPE($idColumn[0]) . "`=" . $id;
+ if ((isset($rawUserId[0])) && (isset($userIdColumn[0])) && (isPostRequestElementSet($rawUserId[0])) && (!is_array(postRequestElement($rawUserId[0])))) {
+ // Add user id as well
+ $sql .= ' AND `' . $userIdColumn[0] . '`=' . bigintval(postRequestElement($rawUserId[0]));
+ } // END - if
+ $sql .= " LIMIT 1";
// Run this query
+ //* BUG: */ die($sql.'<pre>'.print_r(postRequestArray(), TRUE).'</pre>');
SQL_QUERY($sql, __FUNCTION__, __LINE__);
// Add affected rows
- $affected += SQL_AFFECTEDROWS();
+ $edited = SQL_AFFECTEDROWS();
+ $affected += $edited;
// Load all data from that id
$result = SQL_QUERY_ESC("SELECT * FROM `{?_MYSQL_PREFIX?}_%s` WHERE `%s`=%s LIMIT 1",
// Fetch the data and merge it into $content
$content = merge_array($content, SQL_FETCHARRAY($result));
- // Free the result
- SQL_FREERESULT($result);
-
// Prepare filter data array
$filterData = array(
'mode' => 'edit',
'table_name' => $tableName,
'content' => $content,
'id' => $id,
- 'subject' => '',
- 'userid_column' => $userIdColumn
+ 'subject' => $subject,
+ 'userid_column' => $userIdColumn,
+ 'raw_userid' => $rawUserId,
+ 'affected' => $edited,
+ 'sql' => $sql,
);
// Send "build mail" out
runFilterChain('send_build_mail', $filterData);
+
+ // Free the result
+ SQL_FREERESULT($result);
} // END - foreach
// Delete cache?
return $affected;
}
+// Delete rows by given id numbers
+function doGenericDeleteEntriesConfirm ($tableName, $columns = array(), $filterFunctions = array(), $extraValues = array(), $deleteNow = array(FALSE), $idColumn = array('id'), $userIdColumn = array('userid'), $rawUserId = array('userid'), $cacheFiles = array()) {
+ // The base SQL command:
+ $sql = "DELETE LOW_PRIORITY FROM `{?_MYSQL_PREFIX?}_%s` WHERE `%s` IN (%s)";
+
+ // Is a user id provided?
+ //* BUG: */ die('<pre>'.print_r($rawUserId,TRUE).'</pre><pre>'.print_r($userIdColumn,TRUE).'</pre>');
+ if ((isset($rawUserId[0])) && (isset($userIdColumn[0])) && (isPostRequestElementSet($rawUserId[0])) && (!is_array(postRequestElement($rawUserId[0])))) {
+ // Add user id as well
+ $sql .= ' AND `' . $userIdColumn[0] . '`=' . bigintval(postRequestElement($rawUserId[0]));
+ } // END - if
+
+ // $idColumn[0] in POST must be an array again
+ if (!is_array(postRequestElement($idColumn[0]))) {
+ // This indicates that you have conflicting form field naming with XML names
+ reportBug(__FUNCTION__, __LINE__, 'You have a wrong form field element, idColumn[0]=' . $idColumn[0]);
+ } // END - if
+
+ // Delete them all
+ //* BUG: */ die($sql.'<pre>'.print_r($tableName,TRUE).'</pre><pre>'.print_r($columns,TRUE).'</pre><pre>'.print_r($filterFunctions,TRUE).'</pre><pre>'.print_r($extraValues,TRUE).'</pre><pre>'.print_r($deleteNow,TRUE).'</pre><pre>'.print_r($idColumn,TRUE).'</pre>');
+ $idList = '';
+ foreach (postRequestElement($idColumn[0]) as $id => $sel) {
+ // Is id zero?
+ if ($id == '0') {
+ // Then skip this
+ continue;
+ } // END - if
+
+ // Is there a userid?
+ if (isPostRequestElementSet($userIdColumn[0])) {
+ // Load all data from that id
+ $result = SQL_QUERY_ESC("SELECT * FROM `{?_MYSQL_PREFIX?}_%s` WHERE `%s`=%s LIMIT 1",
+ array(
+ $tableName[0],
+ $idColumn[0],
+ $id
+ ), __FUNCTION__, __LINE__);
+
+ // Fetch the data
+ $content = SQL_FETCHARRAY($result);
+
+ // Free the result
+ SQL_FREERESULT($result);
+
+ // Send "build mails" out
+ sendGenericBuildMails('delete', $tableName, $content, $id, '', $userIdColumn);
+ } // END - if
+
+ // Add id number
+ $idList .= $id . ',';
+ } // END - foreach
+
+ // Run the query
+ SQL_QUERY_ESC($sql,
+ array(
+ $tableName[0],
+ $idColumn[0],
+ convertNullToZero(substr($idList, 0, -1))
+ ), __FUNCTION__, __LINE__);
+
+ // Return affected rows
+ return SQL_AFFECTEDROWS();
+}
+
// Build a special template list
-function doGenericListBuilder ($prefix, $listType, $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $rawUserId = array('userid')) {
+// @TODO cacheFiles is not yet supported
+function doGenericListBuilder ($prefix, $listType, $tableName, $columns, $filterFunctions, $extraValues, $idColumn, $userIdColumn, $rawUserId = array('userid'), $content = array()) {
// $tableName and $idColumn must bove be arrays!
if ((!is_array($tableName)) || (count($tableName) != 1)) {
// $tableName is no array
$OUT = '';
// "Walk" through all entries
- //* DEBUG: */ reportBug(__FUNCTION__, __LINE__, 'listType=<pre>'.print_r($listType,true).'</pre>,tableName<pre>'.print_r($tableName,true).'</pre>,columns=<pre>'.print_r($columns,true).'</pre>,filterFunctions=<pre>'.print_r($filterFunctions,true).'</pre>,extraValues=<pre>'.print_r($extraValues,true).'</pre>,idColumn=<pre>'.print_r($idColumn,true).'</pre>,userIdColumn=<pre>'.print_r($userIdColumn,true).'</pre>,rawUserId=<pre>'.print_r($rawUserId,true).'</pre>');
+ //* DEBUG: */ reportBug(__FUNCTION__, __LINE__, 'listType=<pre>'.print_r($listType,TRUE).'</pre>,tableName<pre>'.print_r($tableName,TRUE).'</pre>,columns=<pre>'.print_r($columns,TRUE).'</pre>,filterFunctions=<pre>'.print_r($filterFunctions,TRUE).'</pre>,extraValues=<pre>'.print_r($extraValues,TRUE).'</pre>,idColumn=<pre>'.print_r($idColumn,TRUE).'</pre>,userIdColumn=<pre>'.print_r($userIdColumn,TRUE).'</pre>,rawUserId=<pre>'.print_r($rawUserId,TRUE).'</pre>');
foreach (postRequestElement($idColumn[0]) as $id => $selected) {
// Secure id number
$id = bigintval($id);
// Is there one entry?
if (SQL_NUMROWS($result) == 1) {
// Load all data
- $content = SQL_FETCHARRAY($result);
+ $row = SQL_FETCHARRAY($result);
// Filter all data
- foreach ($content as $key => $value) {
+ foreach ($row as $key => $value) {
// Search index
- $idx = searchXmlArray($key, $columns, 'column');
+ $idx = searchXmlArray($key, $columns, 'column');
+
+ // Default name is NULL
+ $name = NULL;
+
+ // Is the name there?
+ if (isset($columns[$idx]['name'])) {
+ // Then use it
+ $name = $columns[$idx]['name'];
+ } // END - if
// Skip any missing entries
- if ($idx === false) {
+ if ($idx === FALSE) {
// Skip this one
//* DEBUG: */ reportBug(__FUNCTION__, __LINE__, 'key=' . $key . ' - SKIPPED!');
continue;
if ($key == $userIdColumn[0]) {
// Add it again as raw id
//* DEBUG: */ reportBug(__FUNCTION__, __LINE__, 'key=' . $key . ',userIdColumn=' . $userIdColumn[0]);
- $content[$userIdColumn[0]] = convertZeroToNull($value);
- $content[$userIdColumn[0] . '_raw'] = $content[$userIdColumn[0]];
+ $row[$userIdColumn[0]] = convertZeroToNull($value);
+ $row[$userIdColumn[0] . '_raw'] = $row[$userIdColumn[0]];
} // END - if
// If the key matches the idColumn variable, we need to temporary remember it
$GLOBALS[$prefix . '_list_builder_id_value'] = bigintval($value);
} // END - if
- // Is there a call-back function and extra-value pair?
- if ((isset($filterFunctions[$idx])) && (isset($extraValues[$idx]))) {
- // Handle the call in external function
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',fucntion=' . $filterFunctions[$idx] . ',value=' . $value);
- $content[$key] = handleExtraValues(
- $filterFunctions[$idx],
- $value,
- $extraValues[$idx]
- );
- } elseif ((isset($columns[$idx]['name'])) && (isset($filterFunctions[$columns[$idx]['name']])) && (isset($extraValues[$columns[$idx]['name']]))) {
- // Handle the call in external function
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'key=' . $key . ',fucntion=' . $filterFunctions[$columns[$idx]['name']] . ',value=' . $value);
- $content[$key] = handleExtraValues(
- $filterFunctions[$columns[$idx]['name']],
- $value,
- $extraValues[$columns[$idx]['name']]
- );
- }
+ // Try to handle call-back functions and/or extra values
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'idx=' . $idx . ',row[' . $key . ']=' . $row[$key]);
+ //if ($key == 'forced_campaign_created') die($idx.'=<pre>'.print_r($columns,true).'</pre><pre>'.print_r($extraValues,true).'</pre>');
+ $row[$key] = doHandleExtraValues($filterFunctions, $extraValues, $idx, $row[$key], $userIdColumn, ((!is_null($name)) ? $name : $key), $id);
} // END - foreach
// Then list it
$prefix,
$listType,
$tableName[0]
- ), true, $content
+ ), TRUE, $row
);
} // END - if
SQL_FREERESULT($result);
} // END - foreach
+ // Is there an entry in $content?
+ if ((is_array($content)) && (count($content) > 0)) {
+ // Use generic 'rows'
+ $content['rows'] = $OUT;
+ } else {
+ // Use direct output
+ $content = $OUT;
+ }
+
// Load master template
loadTemplate(sprintf("%s_%s_%s",
$prefix,
$listType,
$tableName[0]
- ), false, $OUT
+ ), FALSE, $content
);
}
+// Checks whether given URL is blacklisted
+function isUrlBlacklisted ($url) {
+ // Mark it as not listed by default
+ $listed = FALSE;
+
+ // Is black-listing enbaled?
+ if (!isUrlBlacklistEnabled()) {
+ // No, then all URLs are not in this list
+ return FALSE;
+ } elseif (!isset($GLOBALS['blacklist_data'][$url])) {
+ // Check black-list for given URL
+ $result = SQL_QUERY_ESC("SELECT UNIX_TIMESTAMP(`timestamp`) AS `blist_timestamp` FROM `{?_MYSQL_PREFIX?}_url_blacklist` WHERE `url`='%s' LIMIT 1",
+ array($url), __FILE__, __LINE__);
+
+ // Is there an entry?
+ if (SQL_NUMROWS($result) == 1) {
+ // Jupp, we got one listed
+ $GLOBALS['blacklist_data'][$url] = SQL_FETCHARRAY($result);
+
+ // Mark it as listed
+ $listed = TRUE;
+ } // END - if
+
+ // Free result
+ SQL_FREERESULT($result);
+ } else {
+ // Is found in cache -> black-listed
+ $listed = TRUE;
+ }
+
+ // Return result
+ return $listed;
+}
+
+// Adds key/value pair to a working SQL string together
+function addKeyValueSql ($key, $value) {
+ // Init SQL
+ $sql = '';
+
+ // Is it NULL?
+ if (($value == 'NULL') || (is_null($value))) {
+ // Add key with NULL
+ $sql .= sprintf(' `%s`=NULL,',
+ SQL_ESCAPE($key)
+ );
+ } elseif ((is_double($value)) || (is_float($value)) || (is_int($value))) {
+ // Is a number, so addd it directly
+ $sql .= sprintf(" `%s`=%s,",
+ SQL_ESCAPE($key),
+ $value
+ );
+ } else {
+ // Else add the value escape'd
+ $sql .= sprintf(" `%s`='%s',",
+ SQL_ESCAPE($key),
+ SQL_ESCAPE($value)
+ );
+ }
+
+ // Return SQL string
+ return $sql;
+}
+
// [EOF]
?>