+
+ // Load template
+ displayMessage($content['message']);
+}
+
+// Does resend the user's confirmation link for given email address
+function doResendUserConfirmationLink ($email) {
+ // Email address not registered is default message
+ $message = '{--EMAIL_404--}';
+
+ // Confirmation link requested
+ if (fetchUserData($email, 'email')) {
+ // Email address found
+ $content = getUserDataArray();
+
+ // Is the account unconfirmed?
+ if ($content['status'] == 'UNCONFIRMED') {
+ // Load email template
+ $message = loadEmailTemplate('guest_request_confirm', array(), $content['userid']);
+
+ // Send email
+ sendEmail($content['userid'], '{--GUEST_REQUEST_CONFIRM_LINK_SUBJECT--}', $message);
+ } // END - if
+
+ // Create message based on the status
+ $message = getConfirmationMessageFromUserStatus($content['status']);
+ } // END - if
+
+ // Output message
+ displayMessage($message);
+}
+
+// Get a message (somewhat translation) from user status for confirmation link.
+// This is different to translateUserStatus() in text messages.
+function getConfirmationMessageFromUserStatus ($status) {
+ // Default is 'UNKNOWN'
+ $message = '{%message,GUEST_LOGIN_ID_UNKNOWN_STATUS=' . $status . '%}';
+
+ // Which status is it?
+ switch ($status) {
+ case 'UNCONFIRMED': // Account is unconfirmed
+ // And set message
+ $message = '{--GUEST_CONFIRM_LINK_SENT--}';
+ break;
+
+ case 'CONFIRMED': // Account already confirmed
+ $message = '{--GUEST_LOGIN_ID_CONFIRMED--}';
+ break;
+
+ case 'LOCKED': // Account is locked
+ $message = '{--GUEST_LOGIN_ID_LOCKED--}';
+ break;
+
+ default: // This should not happen
+ debug_report_bug(__FUNCTION__, __LINE__, 'Unknown user status ' . $status . ' detected.');
+ break;
+ } // END - switch
+
+ // Return message
+ return $message;
+}
+
+// Expression call-back function for fetching user data
+function doExpressionUser ($data) {
+ // Use current userid by default
+ $functionName = 'getMemberId()';
+
+ // User-related data, so is there a userid?
+ if (!empty($data['matches'][4][$data['key']])) {
+ // Do we have a userid or $userid?
+ if (substr($data['matches'][4][$data['key']], 0, 1) == '$') {
+ // Use dynamic call
+ $functionName = "getFetchedUserData('userid', " . $data['matches'][4][$data['key']] . ", '" . $data['callback'] . "')";
+ } elseif (!empty($data['matches'][4][$data['key']])) {
+ // Do we have a number or a dollar sign in front of it?
+ if (preg_replace('/[^0123456789]/', '', $data['matches'][4][$data['key']]) != $data['matches'][4][$data['key']]) {
+ // Possible database column, so get it again
+ $data['matches'][4][$data['key']] = "getFetchedUserData('userid', getMemberId(), '" . $data['matches'][4][$data['key']] . "')";
+ } // END - if
+
+ // Fix all together
+ $functionName = "getFetchedUserData('userid', " . $data['matches'][4][$data['key']] . ", '" . $data['callback'] . "')";
+ }
+ } elseif ((!empty($data['callback'])) && (isUserDataValid())) {
+ // "Call-back" alias column for current logged in user's data
+ $functionName = "getUserData('" . $data['callback'] . "')";
+ }
+
+ // Do we have another function to run (e.g. translations)
+ if (!empty($data['extra_func'])) {
+ // Surround the original function call with it
+ $functionName = $data['extra_func'] . '(' . $functionName . ')';
+ } // END - if
+ //* NOISY-DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'functionName=' . $functionName);
+
+ // Generate replacer
+ $replacer = '{DQUOTE} . ' . $functionName . ' . {DQUOTE}';
+
+ // Now replace the code
+ $code = replaceExpressionCode($data, $replacer);
+
+ // Return replaced code
+ return $code;
+}
+
+// Template call-back function for list_user admin function
+function doTemplateAdminListUserTitle ($template, $clear = false) {
+ // Init title with "all accounts"
+ $code = '{--ADMIN_LIST_ALL_ACCOUNTS--}';
+
+ // Do we have a 'status' or 'mode' set?
+ if (isGetRequestElementSet('status')) {
+ // Set title according to the 'status'
+ $code = sprintf("{--ADMIN_LIST_STATUS_%s_ACCOUNTS--}", strtoupper(getRequestElement('status')));
+ } elseif (isGetRequestElementSet('mode')) {
+ // Set title according to the "mode"
+ $code = sprintf("{--ADMIN_LIST_MODE_%s_ACCOUNTS--}", strtoupper(getRequestElement('mode')));
+ }
+
+ // Return the code
+ return $code;
+}
+
+// Template call-back function for displaying "username"
+function doTemplateDisplayUsername ($template, $clear = false, $userid = NULL) {
+ // Is a userid set?
+ if (!isValidUserId($userid)) {
+ // Please don't call this without a valid userid
+ debug_report_bug(__FUNCTION__, __LINE__, 'template=' . $template . ',clear=' . intval($clear) . ',userid[' . gettype($userid) . ']=' . intval($userid) . ' - Invalid userid provided.');
+ } // END - if
+
+ // Do we have cache?
+ if (!isset($GLOBALS[__FUNCTION__][$userid])) {
+ // Generate code
+ $GLOBALS[__FUNCTION__][$userid] = $userid . ' ({%user,nickname,fixEmptyContentToDashes=' . $userid . '%})';
+ } // END - if
+
+ // Return cache
+ return $GLOBALS[__FUNCTION__][$userid];