';
$GLOBALS['nav_depth'] = '0';
// Run the post-filter chain
- $ret = runFilterChain('post_youhere_line', array('access_level' => $accessLevel, 'type' => $type, 'content' => ''));
+ $ret = runFilterChain('post_youhere_line', array('access_level' => $accessLevel, 'type' => $type, 'search' => $search, 'prefix' => $prefix, 'link_add' => $LINK_ADD, 'content' => $OUT, 'add' => $ADD));
- // Add additional content
- $OUT .= $ret['content'];
+ // Get content from filter back
+ $OUT = $ret['content'];
+
+ // Close div-tag, so not the filters have to do it
+ $OUT .= '';
} // END - if
} // END - if
@@ -183,7 +193,6 @@ function addMenuDescription ($accessLevel, $FQFN, $return = false) {
function addMenu ($mode, $action, $what) {
// Init some variables
$main_cnt = '0';
- $ADD = '';
// is the menu action valid?
if (!isMenuActionValid($mode, $action, $what, true)) {
@@ -191,13 +200,15 @@ function addMenu ($mode, $action, $what) {
} // END - if
// Non-admin shall not see all menus
- if (!isAdmin()) {
- $ADD = " AND `visible`='Y' AND `locked`='N'";
+ $ADD = " AND `visible`='Y' AND `locked`='N'";
+ if (isAdmin()) {
+ // Is admin, so make all visible
+ $ADD = '';
} // END - if
// Load SQL data and add the menu to the output stream...
$result_main = SQL_QUERY_ESC("SELECT
- `title`, `what`, `action`, `visible`, `locked`
+ `title`,`what`,`action`,`visible`,`locked`
FROM
`{?_MYSQL_PREFIX?}_%s_menu`
WHERE
@@ -207,12 +218,12 @@ ORDER BY
`sort` ASC",
array($mode), __FUNCTION__, __LINE__);
- //* DEBUG: */ debugOutput(__LINE__.'/'.$main_cnt.':'.getWhat().'*');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'main_cnt=' . $main_cnt . ',getWhat()=' . getWhat());
if (!SQL_HASZERONUMS($result_main)) {
// There are menus available, so we simply display them... :)
$GLOBALS['rows'] = '';
while ($content = SQL_FETCHARRAY($result_main)) {
- //* DEBUG: */ debugOutput(__LINE__ . '/' . $main_cnt . '/' . $content['action'] . ':' . getWhat() . '*');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'main_cnt=' . $main_cnt . ',action=' . $content['action'] . ',getWhat()=' . getWhat());
// Disable the block-mode
enableBlockMode(false);
@@ -239,7 +250,7 @@ ORDER BY
// Do we have some entries?
if (!SQL_HASZERONUMS($result_sub)) {
// Init counter
- $cnt = '0';
+ $count = '0';
// Load all sub menus
while ($content2 = SQL_FETCHARRAY($result_sub)) {
@@ -250,7 +261,7 @@ ORDER BY
$OUT = '';
// Full file name for checking menu
- //* DEBUG: */ debugOutput(__LINE__ . ':!!!!' . $content['sub_what'] . '!!!');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'sub_what=' . $content['sub_what']);
$inc = sprintf("inc/modules/%s/what-%s.php", $mode, $content['sub_what']);
if (isIncludeReadable($inc)) {
// Mark currently selected menu - open
@@ -258,11 +269,17 @@ ORDER BY
$OUT = '';
} // END - if
- // Navigation link
- $OUT .= '';
+ // Is ext-sql_patches up-to-date, and display_home_in_index is Y?
+ if ((isExtensionInstalledAndNewer('sql_patches', '0.8.3')) && (isDisplayHomeInIndexEnabled()) && ($content['sub_what'] == getIndexHome())) {
+ // Use index.php as link
+ $OUT .= '';
+ } else {
+ // Regular navigation link
+ $OUT .= '';
+ }
} else {
- // Not found! - open
- $OUT .= '';
+ // Not found - open
+ $OUT .= '';
}
// Menu title
@@ -276,12 +293,12 @@ ORDER BY
$OUT .= '';
} // END - if
} else {
- // Not found! - close
+ // Not found - close
$OUT .= '';
}
// Cunt it up
- $cnt++;
+ $count++;
// Rewrite array
$content = array(
@@ -292,7 +309,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);
@@ -307,12 +324,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: */ logDebugMessage(__FUNCTION__, __LINE__, 'main_cnt=' . $main_cnt . ',action=' . $content['action'] . ',getWhat()=' . getWhat());
loadInclude($INC);
- //* DEBUG: */ debugOutput(__LINE__.'/'.$main_cnt.'/'.$content['action'].'/'.getWhat().'*');
+ //* 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);
}
- //* DEBUG: */ debugOutput(__LINE__.'/'.$main_cnt.'/'.$content['action'].'/'.$content['sub_what'].':'.getWhat().'*');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'main_cnt=' . $main_cnt . ',action=' . $content['action'] . ',getWhat()=' . getWhat());
}
// Free result
@@ -321,7 +338,7 @@ ORDER BY
// Count one up
$main_cnt++;
- //* DEBUG: */ debugOutput(__LINE__.'/'.$main_cnt.':'.getWhat().'*');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'main_cnt=' . $main_cnt . ',getWhat()=' . getWhat());
if (SQL_NUMROWS($result_main) > $main_cnt) {
// Add seperator
$GLOBALS['rows'] .= loadTemplate('menu_seperator', true, $mode);
@@ -356,7 +373,7 @@ ORDER BY
);
// Load main template
- //* DEBUG: */ debugOutput(__LINE__.'/'.$main_cnt.'/'.$content['action'].'/'.$content['sub_what'].':'.getWhat().'*');
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'main_cnt=' . $main_cnt . ',getWhat()=' . getWhat());
loadTemplate('menu_table', false, $content);
} // END - if
}
@@ -368,60 +385,57 @@ function isMember () {
// Fix missing 'last_online' array, damn stupid code :(((
// @TODO Try to rewrite this to one or more functions
- if ((!isset($GLOBALS['last_online'])) || (!is_array($GLOBALS['last_online']))) $GLOBALS['last_online'] = array();
+ if ((!isset($GLOBALS['last_online'])) || (!is_array($GLOBALS['last_online']))) {
+ $GLOBALS['last_online'] = array();
+ } // END - if
- // is the cache entry there?
+ // Is the cache entry there?
if (isset($GLOBALS[__FUNCTION__])) {
// Then return it
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'CACHED! (' . intval($GLOBALS[__FUNCTION__]) . ')');
return $GLOBALS[__FUNCTION__];
} elseif ((!isSessionVariableSet('userid')) || (!isSessionVariableSet('u_hash'))) {
- // No member
+ // Destroy any existing user session data
+ destroyMemberSession();
//* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'No member set in cookie/session.');
+
+ // Abort further processing
return false;
- } else {
- // Get it secured from session
- setMemberId(getSession('userid'));
- setCurrentUserId(getMemberId());
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'userid=' . getSession('userid') . ' used from cookie/session.');
}
+ // Get userid secured from session
+ setMemberId(getSession('userid'));
+
+ // ... and set it as currently handled user id
+ setCurrentUserId(getMemberId());
+
// Init user data array
initUserData();
// Fix "deleted" cookies first
fixDeletedCookies(array('userid', 'u_hash'));
- // Are cookies set?
- if ((isMemberIdSet()) && (isSessionVariableSet('u_hash'))) {
- // Cookies are set with values, but are they valid?
- if (fetchUserData(getMemberId()) === true) {
- // Validate password by created the difference of it and the secret key
- $valPass = encodeHashForCookie(getUserData('password'));
+ // Are cookies set and can the member data be loaded?
+ if ((isMemberIdSet()) && (isSessionVariableSet('u_hash')) && (fetchUserData(getMemberId()) === true)) {
+ // Validate password by created the difference of it and the secret key
+ $valPass = encodeHashForCookie(getUserData('password'));
+ // So did we now have valid data and an unlocked user?
+ if ((getUserData('status') == 'CONFIRMED') && ($valPass == getSession('u_hash'))) {
// Transfer last module and online time
$GLOBALS['last_online']['module'] = getUserData('last_module');
$GLOBALS['last_online']['online'] = getUserData('last_online');
- // So did we now have valid data and an unlocked user?
- if ((getUserData('status') == 'CONFIRMED') && ($valPass == getSession('u_hash'))) {
- // Account is confirmed and all cookie data is valid so he is definely logged in! :-)
- $ret = true;
- } else {
- // Maybe got locked etc.
- //* DEBUG */ logDebugMessage(__FUNCTION__, __LINE__, 'status=' . getUserData('status') . ',' . $valPass . '(' . strlen($valPass) . ')/' . getSession('u_hash') . '(' . strlen(getSession('u_hash')) . ')/' . getUserData('password') . '(' . strlen(getUserData('password')) . ')');
- destroyMemberSession();
- }
- } else {
- // Cookie data is invalid!
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cookie data invalid or user not found.');
- destroyMemberSession();
- }
- } else {
- // Cookie data is invalid!
- //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'Cookie data not complete.');
+ // Account is confirmed and all cookie data is valid so he is definely logged in! :-)
+ $ret = true;
+ } // END - if
+ } // END - if
+
+ // Is $ret still false?
+ if ($ret === false) {
+ // Yes, so destroy the session
destroyMemberSession();
- }
+ } // END - if
// Cache status
$GLOBALS[__FUNCTION__] = $ret;
@@ -432,25 +446,36 @@ 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;
+ } elseif (is_null($value)) {
+ // This shall never happen, so please report it
+ debug_report_bug(__FUNCTION__, __LINE__, 'value=NULL,column=' . $column . ' - value can never be NULL');
+ }
+
// If we should look for userid secure&set it here
if (substr($column, -2, 2) == 'id') {
// Secure userid
- $userid = bigintval($userid);
+ $value = bigintval($value);
// Set it here
- setCurrentUserId($userid);
+ setCurrentUserId($value);
// Don't look for invalid userids...
- if (!isValidUserId($userid)) {
+ if (!isValidUserId($value)) {
// Invalid, so abort here
- debug_report_bug(__FUNCTION__, __LINE__, 'User id ' . $userid . ' is invalid.');
+ debug_report_bug(__FUNCTION__, __LINE__, 'User id ' . $value . ' is invalid.');
} elseif (isUserDataValid()) {
// Use cache, so it is fine
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ' is valid, using cache #1');
return true;
}
- } elseif (isUserDataValid()) {
- // Use cache, so it is fine
+ } elseif (isUserDataValid()) {
+ // Using cache is fine
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'value=' . $value . ' is valid, using cache #2');
return true;
}
@@ -459,11 +484,13 @@ function fetchUserData ($userid, $column = 'userid') {
// Extra statements
$ADD = '';
- if (isExtensionInstalledAndNewer('user', '0.3.5')) $ADD = ', UNIX_TIMESTAMP(`lock_timestamp`) AS `lock_timestamp`';
+ if (isExtensionInstalledAndNewer('user', '0.3.5')) {
+ $ADD = ', UNIX_TIMESTAMP(`lock_timestamp`) AS `lock_timestamp`';
+ } // END - if
// Query for the user
$result = SQL_QUERY_ESC("SELECT *".$ADD." FROM `{?_MYSQL_PREFIX?}_user_data` WHERE `%s`='%s' LIMIT 1",
- array($column, $userid), __FUNCTION__, __LINE__);
+ array($column, $value), __FUNCTION__, __LINE__);
// Do we have a record?
if (SQL_NUMROWS($result) == 1) {
@@ -472,16 +499,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']);
@@ -529,10 +558,10 @@ 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);
+ //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'mainId=' . $adminId . 'passCookie=' . $passCookie);
// Abort if admin id is zero
if ($adminId == '0') {
@@ -584,13 +613,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;
@@ -604,7 +633,7 @@ function addMaxReceiveList ($mode, $default = '', $return = false) {
$OUT = '';
while ($content = SQL_FETCHARRAY($result)) {
$OUT .= '