require($INC);
}
-// Check if our config file is writeable or not
-function IS_INC_WRITEABLE ($inc) {
- // Generate FQFN
- $FQFN = sprintf("%sinc/%s.php", constant('PATH'), $inc);
-
- // Abort by simple test
- if ((FILE_READABLE($FQFN)) && (!is_writeable($FQFN))) {
- return false;
- } // END - if
-
- // Test write-access on directory
- return is_writeable(dirname($FQFN));
-}
-
// Output HTML code directly or "render" it. You addionally switch the new-line character off
function OUTPUT_HTML ($HTML, $newLine = true) {
// Some global variables
default:
// Huh, something goes wrong or maybe you have edited config.php ???
DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Invalid renderer %s detected.", constant('OUTPUT_MODE')));
- mxchange_die("<strong>{--FATAL_ERROR--}:</strong> {--LANG_NO_RENDER_DIRECT--}");
+ app_die(__FUNCTION__, __LINE__, "<strong>{--FATAL_ERROR--}:</strong> {--LANG_NO_RENDER_DIRECT--}");
break;
}
} elseif ((constant('_OB_CACHING') == "on") && (isset($GLOBALS['footer_sent'])) && ($GLOBALS['footer_sent'] == 1)) {
// Was that eval okay?
if (empty($newContent)) {
// Something went wrong!
- mxchange_die("Evaluation error:<pre>".htmlentities($eval)."</pre>");
+ app_die(__FUNCTION__, __LINE__, "Evaluation error:<pre>".htmlentities($eval)."</pre>");
} // END - if
$OUTPUT = $newContent;
} // END - while
}
// Send mail out to an email address
-function SEND_EMAIL($TO, $SUBJECT, $MSG, $HTML = "N", $FROM = "") {
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):TO={$TO},SUBJECT={$SUBJECT}<br />\n";
+function SEND_EMAIL($toEmail, $subject, $message, $HTML = "N", $mailHeader = "") {
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):TO={$toEmail},SUBJECT={$subject}<br />\n";
// Compile subject line (for POINTS constant etc.)
- $eval = "\$SUBJECT = decodeEntities(\"".COMPILE_CODE(smartAddSlashes($SUBJECT))."\");";
+ $eval = "\$subject = decodeEntities(\"".COMPILE_CODE(smartAddSlashes($subject))."\");";
eval($eval);
// Set from header
- if ((!eregi("@", $TO)) && ($TO > 0)) {
+ if ((!eregi("@", $toEmail)) && ($toEmail > 0)) {
// Value detected, is the message extension installed?
if (EXT_IS_ACTIVE("msg")) {
- ADD_MESSAGE_TO_BOX($TO, $SUBJECT, $MSG, $HTML);
+ ADD_MESSAGE_TO_BOX($toEmail, $subject, $message, $HTML);
return;
} else {
// Load email address
- $result_email = SQL_QUERY_ESC("SELECT email FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1", array(bigintval($TO)), __FUNCTION__, __LINE__);
+ $result_email = SQL_QUERY_ESC("SELECT email FROM `{!_MYSQL_PREFIX!}_user_data` WHERE userid=%s LIMIT 1", array(bigintval($toEmail)), __FUNCTION__, __LINE__);
//* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):numRows=".SQL_NUMROWS($result_email)."<br />\n";
// Does the user exist?
if (SQL_NUMROWS($result_email)) {
// Load email address
- list($TO) = SQL_FETCHROW($result_email);
+ list($toEmail) = SQL_FETCHROW($result_email);
} else {
// Set webmaster
- $TO = constant('WEBMASTER');
+ $toEmail = constant('WEBMASTER');
}
// Free result
SQL_FREERESULT($result_email);
}
- } elseif ("$TO" == "0") {
+ } elseif ("$toEmail" == "0") {
// Is the webmaster!
- $TO = constant('WEBMASTER');
+ $toEmail = constant('WEBMASTER');
}
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):TO={$TO}<br />\n";
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):TO={$toEmail}<br />\n";
// Check for PHPMailer or debug-mode
if (!CHECK_PHPMAILER_USAGE()) {
// Not in PHPMailer-Mode
- if (empty($FROM)) {
+ if (empty($mailHeader)) {
// Load email header template
- $FROM = LOAD_EMAIL_TEMPLATE("header");
+ $mailHeader = LOAD_EMAIL_TEMPLATE("header");
} else {
// Append header
- $FROM .= LOAD_EMAIL_TEMPLATE("header");
+ $mailHeader .= LOAD_EMAIL_TEMPLATE("header");
}
} elseif (isDebugModeEnabled()) {
- if (empty($FROM)) {
+ if (empty($mailHeader)) {
// Load email header template
- $FROM = LOAD_EMAIL_TEMPLATE("header");
+ $mailHeader = LOAD_EMAIL_TEMPLATE("header");
} else {
// Append header
- $FROM .= LOAD_EMAIL_TEMPLATE("header");
+ $mailHeader .= LOAD_EMAIL_TEMPLATE("header");
}
}
// Compile "TO"
- $eval = "\$TO = \"".COMPILE_CODE(smartAddSlashes($TO))."\";";
+ $eval = "\$toEmail = \"".COMPILE_CODE(smartAddSlashes($toEmail))."\";";
eval($eval);
// Compile "MSG"
- $eval = "\$MSG = \"".COMPILE_CODE(smartAddSlashes($MSG))."\";";
+ $eval = "\$message = \"".COMPILE_CODE(smartAddSlashes($message))."\";";
eval($eval);
// Fix HTML parameter (default is no!)
if (isDebugModeEnabled()) {
// In debug mode we want to display the mail instead of sending it away so we can debug this part
print("<pre>
-".htmlentities(trim($FROM))."
-To : ".$TO."
-Subject : ".$SUBJECT."
-Message : ".$MSG."
+".htmlentities(trim($mailHeader))."
+To : ".$toEmail."
+Subject : ".$subject."
+Message : ".$message."
</pre>\n");
} elseif (($HTML == "Y") && (EXT_IS_ACTIVE("html_mail"))) {
// Send mail as HTML away
- SEND_HTML_EMAIL($TO, $SUBJECT, $MSG, $FROM);
- } elseif (!empty($TO)) {
+ SEND_HTML_EMAIL($toEmail, $subject, $message, $mailHeader);
+ } elseif (!empty($toEmail)) {
// Send Mail away
- SEND_RAW_EMAIL($TO, $SUBJECT, $MSG, $FROM);
+ SEND_RAW_EMAIL($toEmail, $subject, $message, $mailHeader);
} elseif ($HTML == "N") {
// Problem found!
- SEND_RAW_EMAIL(constant('WEBMASTER'), "[PROBLEM:]".$SUBJECT, $MSG, $FROM);
+ SEND_RAW_EMAIL(constant('WEBMASTER'), "[PROBLEM:]".$subject, $message, $mailHeader);
}
}
/*
* Send out a raw email with PHPMailer class or legacy mail() command
*/
-function SEND_RAW_EMAIL ($to, $subject, $msg, $from) {
+function SEND_RAW_EMAIL ($toEmail, $subject, $msg, $from) {
// Shall we use PHPMailer class or legacy mode?
if (CHECK_PHPMAILER_USAGE()) {
// Use PHPMailer class with SMTP enabled
} else {
$mail->Body = decodeEntities($msg);
}
- $mail->AddAddress($to, "");
+ $mail->AddAddress($toEmail, "");
$mail->AddReplyTo(constant('WEBMASTER'), constant('MAIN_TITLE'));
$mail->AddCustomHeader("Errors-To:".constant('WEBMASTER'));
$mail->AddCustomHeader("X-Loop:".constant('WEBMASTER'));
$mail->Send();
} else {
// Use legacy mail() command
- @mail($to, $subject, decodeEntities($msg), $from);
+ @mail($toEmail, $subject, decodeEntities($msg), $from);
}
}
//
return $code;
} // END - if
- $ARRAY = $GLOBALS['security_chars'];
+ // Init replacement-array with full security characters
+ $secChars = $GLOBALS['security_chars'];
// Select smaller set of chars to replace when we e.g. want to compile URLs
- if (!$full) $ARRAY = $GLOBALS['url_chars'];
+ if (!$full) $secChars = $GLOBALS['url_chars'];
// Compile constants
- if ($constants) {
+ if ($constants === true) {
// BEFORE 0.2.1 : Language and data constants
// WITH 0.2.1+ : Only language constants
$code = str_replace('{--','".', str_replace('--}','."', $code));
} // END - if
// Compile QUOT and other non-HTML codes
- foreach ($ARRAY['to'] as $k => $to) {
+ foreach ($secChars['to'] as $k => $to) {
// Do the reversed thing as in inc/libs/security_functions.php
- $code = str_replace($to, $ARRAY['from'][$k], $code);
+ $code = str_replace($to, $secChars['from'][$k], $code);
} // END - foreach
// But shall I keep simple quotes for later use?
if ($simple) $code = str_replace("'", '{QUOT}', $code);
// Find $content[bla][blub] entries
- @preg_match_all('/\$(content|DATA)((\[([a-zA-Z0-9-_]+)\])*)/', $code, $matches);
+ preg_match_all('/\$(content|DATA)((\[([a-zA-Z0-9-_]+)\])*)/', $code, $matches);
// Are some matches found?
if ((count($matches) > 0) && (count($matches[0]) > 0)) {
// normally be stored in cookies
function ADD_URL_DATA ($URL) {
// Init add
- $ADD = "";
+ $add = "";
// Determine URL binder
$BIND = "?";
// Cookies are not accepted
if ((REQUEST_ISSET_GET(('refid'))) && (strpos($URL, "refid=") == 0)) {
// Cookie found in URL
- $ADD .= $BIND."refid=".bigintval(REQUEST_GET('refid'));
+ $add .= $BIND."refid=".bigintval(REQUEST_GET('refid'));
} elseif ((GET_EXT_VERSION("sql_patches") != '') && (getConfig('def_refid') > 0)) {
// Not found! So let's set default here
- $ADD .= $BIND."refid=".getConfig('def_refid');
+ $add .= $BIND."refid=".getConfig('def_refid');
}
} // END - if
// Add all together and return it
- return $URL . $ADD;
+ return $URL . $add;
}
// Generate an PGP-like encrypted hash of given hash for e.g. cookies
}
// Output error messages in a fasioned way and die...
-function mxchange_die ($msg) {
+function app_die ($F, $L, $msg) {
// Load header
LOAD_INC_ONCE("inc/header.php");
+ // Prepare message for output
+ $msg = sprintf(getMessage('MXCHANGE_HAS_DIED'), basename($F), $L, $msg);
+
// Load the message template
LOAD_TEMPLATE("admin_settings_saved", false, $msg);
$return = file_put_contents($FQFN, $content);
} else {
// Write it with fopen
- $fp = fopen($FQFN, 'w') or mxchange_die("Cannot write file ".basename($FQFN)."!");
+ $fp = fopen($FQFN, 'w') or app_die(__FUNCTION__, __LINE__, "Cannot write file ".basename($FQFN)."!");
fwrite($fp, $content);
fclose($fp);
function searchDirsRecursive ($dir, &$last_changed) {
// Get dir as array
//* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):dir=".$dir."<br />\n";
- $ds = GET_DIR_AS_ARRAY($dir, "", true, false);
+ // Does it match what we are looking for? (We skip a lot files already!)
+ // RegexPattern to exclude ., .., .revision, .svn, debug.log or .cache in the filenames
+ $excludePattern = '@(\.|\.\.|\.revision|\.svn|debug\.log|\.cache|config\.php)$@';
+ $ds = GET_DIR_AS_ARRAY($dir, "", true, false, $excludePattern);
//* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):ds[]=".count($ds)."<br />\n";
// Walk through all entries
// Generate proper FQFN
$FQFN = str_replace("//", "/", constant('PATH') . $dir. "/". $d);
- // Does it match what we are looking for? (We skip a lot files already!)
- if (!preg_match('@(\.|\.\.|\.revision|\.svn|debug\.log|\.cache)$@', $d)) { // no . or .. or .revision or .svn in the filename
- // Is it a file and readable?
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):FQFN={$FQFN}<br />\n";
- if (isDirectory($FQFN)) {
- // $FQFN is a directory so also crawl into this directory
- $newDir = $d;
- if (!empty($dir)) $newDir = $dir . "/". $d;
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):DESCENT: ".$newDir."<br />\n";
- searchDirsRecursive($newDir, $last_changed);
- } elseif (FILE_READABLE($FQFN)) {
- // $FQFN is a filename and no directory
- $time = filemtime($FQFN);
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):File: ".$d." found. (".($last_changed['time'] - $time).")<br />\n";
- if ($last_changed['time'] < $time) {
- // This file is newer as the file before
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>) - NEWER!<br />\n";
- $last_changed['path_name'] = $FQFN;
- $last_changed['time'] = $time;
- } // END - if
- }
- } // END - if
+ // Is it a file and readable?
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):FQFN={$FQFN}<br />\n";
+ if (isDirectory($FQFN)) {
+ // $FQFN is a directory so also crawl into this directory
+ $newDir = $d;
+ if (!empty($dir)) $newDir = $dir . "/". $d;
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):DESCENT: ".$newDir."<br />\n";
+ searchDirsRecursive($newDir, $last_changed);
+ } elseif (FILE_READABLE($FQFN)) {
+ // $FQFN is a filename and no directory
+ $time = filemtime($FQFN);
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):File: ".$d." found. (".($last_changed['time'] - $time).")<br />\n";
+ if ($last_changed['time'] < $time) {
+ // This file is newer as the file before
+ //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>) - NEWER!<br />\n";
+ $last_changed['path_name'] = $FQFN;
+ $last_changed['time'] = $time;
+ } // END - if
+ }
} // END - foreach
}
}
// Repares an array we are looking for
+// The returned Array is needed twice (in getAkt_vers() and in getActualVersion() in the old .revision-fallback) so I puted it in an extra function to not polute the global namespace
function getSearchFor () {
// Add Revision, Date, Tag and Author
$searchFor = array('Revision', 'Date', 'Tag', 'Author');
function getAkt_vers () {
// Init variables
- $next_dir = "";
+ $next_dir = ""; // Directory to start with search
$last_changed = array(
'path_name' => "",
'time' => 0
);
- $akt_vers = array();
- $res = 0;
+ $akt_vers = array(); // Init return array
+ $res = 0; // Init value for counting the founded keywords
// Searches all Files and there date of the last modifikation and puts the newest File in $last_changed.
- searchDirsRecursive($next_dir, $last_changed);
+ searchDirsRecursive($next_dir, $last_changed); // @TODO small change to API to $last_changed = searchDirsRecursive($next_dir, $time);
// Get file
$last_file = READ_FILE($last_changed['path_name']);
+
+ // Get all the keywords to search for
$searchFor = getSearchFor();
- // @TODO What does this loop/regex do? Document it, please.
+ // This foreach loops the $searchFor-Tags (array('Revision', 'Date', 'Tag', 'Author') --> could easaly extended in the future)
foreach ($searchFor as $search) {
+ //Searches for "$search-tag:VALUE$" or "$search-tag::VALUE$"(the stylish keywordversion ;-)) in the lates modified file
$res += preg_match('@\$'.$search.'(:|::) (.*) \$@U', $last_file, $t);
+ // This trimms the search-result and puts it in the $akt_vers-return array
if (isset($t[2])) $akt_vers[$search] = trim($t[2]);
} // END - foreach
- if ($res && $res >= 3) {
- // Prepare content
- preg_match('@(....)-(..)-(..) (..):(..):(..)@', $akt_vers['Date'], $match_d);
+ // Save the last-changed filename for debugging
+ $akt_vers['File'] = $last_changed['path_name'];
+
+ // at least 3 keyword-Tags are needed for propper values
+ if ($res && $res >= 3
+ && isset($akt_vers['Revision']) && $akt_vers['Revision'] != ''
+ && isset($akt_vers['Date']) && $akt_vers['Date'] != ''
+ && isset($akt_vers['Tag']) && $akt_vers['Tag'] != '') {
+ // Prepare content witch need special treadment
// Prepare timestamp for date
+ preg_match('@(....)-(..)-(..) (..):(..):(..)@', $akt_vers['Date'], $match_d);
$akt_vers['Date'] = mktime($match_d[4], $match_d[5], $match_d[6], $match_d[2], $match_d[3], $match_d[1]);
- // Add Tag if the author is set and is not quix0r (lead coder)
+ // Add author to the Tag if the author is set and is not quix0r (lead coder)
if ((isset($akt_vers['Author'])) && ($akt_vers['Author'] != "quix0r")) {
$akt_vers['Tag'] .= '-'.strtoupper($akt_vers['Author']);
} // END - if
+
} else {
- // No valid Data from the last modificated file so read the Revision from the Server. Fallback-solution!! Could be removed I think.
+ // No valid Data from the last modificated file so read the Revision from the Server. Fallback-solution!! Should not be removed I think.
$version = GET_URL("check-updates3.php");
// Prepare content
- $akt_vers['Revision'] = trim($version[10]);
- $akt_vers['Date'] = trim($version[9]);
- $akt_vers['Tag'] = trim($version[8]);
- $akt_vers['Author'] = "quix0r";
+ // Only sets not setted or not proper values to the Online-Server-Fallback-Solution
+ if (!isset($akt_vers['Revision']) || $akt_vers['Revision'] == '') $akt_vers['Revision'] = trim($version[10]);
+ if (!isset($akt_vers['Date']) || $akt_vers['Date'] == '') $akt_vers['Date'] = trim($version[9]);
+ if (!isset($akt_vers['Tag']) || $akt_vers['Tag'] == '') $akt_vers['Tag'] = trim($version[8]);
+ if (!isset($akt_vers['Author']) || $akt_vers['Author'] == '') $akt_vers['Author'] = "quix0r";
}
// Return prepared array
$FQFN = constant('PATH') . $INC;
// Is the include file there?
- if (!FILE_READABLE($FQFN)) {
+ if (!INCLUDE_READABLE($INC)) {
// Not there so log it
debug_report_bug(sprintf("Include file %s not found.", $INC));
return false;
} // END - if
// Add output
- $debug .= "Please report this error at <a href=\"http://bugs.mxchange.org\" rel=\"external\" target=\"_blank\">bugs.mxchange.org</a>:<pre>";
+ $debug .= "Please report this bug at <a href=\"http://bugs.mxchange.org\" rel=\"external\" target=\"_blank\">bugs.mxchange.org</a>:<pre>";
$debug .= debug_get_printable_backtrace();
- $debug .= "</pre>Thank you for finding bugs.";
+ $debug .= "</pre>Request-URI: ".$_SERVER['REQUEST_URI']."<br />\n";
+ $debug .= "Thank you for finding bugs.";
// And abort here
- // @TODO This cannot be rewritten to mxchange_die(), try to find a solution for this.
+ // @TODO This cannot be rewritten to app_die(), try to find a solution for this.
die($debug);
}
$message = str_replace("\r", "", str_replace("\n", "", $message));
// Log this message away
- $fp = fopen(constant('PATH')."inc/cache/debug.log", 'a') or mxchange_die("Cannot write logfile debug.log!");
+ $fp = fopen(constant('PATH')."inc/cache/debug.log", 'a') or app_die(__FUNCTION__, __LINE__, "Cannot write logfile debug.log!");
fwrite($fp, date("d.m.Y|H:i:s", time())."|".basename($funcFile)."|".$line."|".strip_tags($message)."\n");
fclose($fp);
} // END - if
}
-// Reads a directory with PHP files in and gets only files back
-function GET_DIR_AS_ARRAY ($baseDir, $prefix, $includeDirs = false, $addBaseDir = true) {
- // Init includes
- $INCs = array();
-
- // Open directory
- $dirPointer = opendir(constant('PATH') . $baseDir) or mxchange_die("Cannot read ".basename($baseDir)." path!");
-
- // Read all entries
- while ($baseFile = readdir($dirPointer)) {
- // Construct include filename and FQFN
- $INC = $baseDir . "/" . $baseFile;
- $FQFN = constant('PATH') . $INC;
-
- // Is this a valid reset file?
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):baseDir={$baseDir},prefix={$prefix},baseFile={$baseFile}<br />\n";
- if (((FILE_READABLE($FQFN)) && (substr($baseFile, 0, strlen($prefix)) == $prefix) && (substr($baseFile, -4, 4) == ".php")) || (($includeDirs) && (isDirectory($FQFN)))) {
- // Remove both for extension name
- $extName = substr($baseFile, strlen($prefix), -4);
-
- // Try to find it
- $extId = GET_EXT_ID($extName);
-
- // Is the extension valid and active?
- if (($extId > 0) && (EXT_IS_ACTIVE($extName))) {
- // Then add this file
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): Extension entry ".$baseFile." added.<br />\n";
- $INCs[] = $INC;
- } elseif ($extId == 0) {
- // Add non-extension files as well
- //* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>): Regular entry ".$baseFile." added.<br />\n";
- if ($addBaseDir) {
- $INCs[] = $INC;
- } else {
- $INCs[] = $baseFile;
- }
- }
- } // END - if
- } // END - while
-
- // Close directory
- closedir($dirPointer);
-
- // Sort array
- asort($INCs);
-
- // Return array with include files
- return $INCs;
-}
-
// Load more reset scripts
function runResetIncludes () {
// Is the reset set or old sql_patches?
// Translates the "pool type" into human-readable
function TRANSLATE_POOL_TYPE ($type) {
- // Default type is unknown
+ // Default?type is unknown
$translated = sprintf(getMessage('POOL_TYPE_UNKNOWN'), $type);
// Generate constant
return $translated;
}
+// Determines the real remote address
+function determineRealRemoteAddress () {
+ // Is a proxy in use?
+ if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
+ // Proxy was used
+ $address = $_SERVER['HTTP_X_FORWARDED_FOR'];
+ } elseif (isset($_SERVER['HTTP_CLIENT_IP'])){
+ // Yet, another proxy
+ $address = $_SERVER['HTTP_CLIENT_IP'];
+ } else {
+ // The regular address when no proxy was used
+ $address = $_SERVER['REMOTE_ADDR'];
+ }
+
+ // This strips out the real address from proxy output
+ if (strstr($address, ",")){
+ $addressArray = explode(",", $address);
+ $address = $addressArray[0];
+ } // END - if
+
+ // Return the result
+ return $address;
+}
+
// "Getter" for remote IP number
function GET_REMOTE_ADDR () {
// Get remote ip from environment
- $remoteAddr = getenv('REMOTE_ADDR');
+ $remoteAddr = determineRealRemoteAddress();
// Is removeip installed?
if (EXT_IS_ACTIVE("removeip")) {
return $isDirectory;
}
-// Init INC_POOL
-function INIT_INC_POOL () {
- $GLOBALS['inc_pool'] = array();
-}
-
-// Setter for INC_POOL
-function SET_INC_POOL ($includePool) {
- $GLOBALS['inc_pool'] = (array) $includePool;
-}
-
-// Getter for INC_POOL
-function GET_INC_POOL () {
- return $GLOBALS['inc_pool'];
-}
-
-// Count INC_POOL
-function COUNT_INC_POOL () {
- return count($GLOBALS['inc_pool']);
-}
-
-// Merge INC_POOL into given
-function MERGE_INC_POOL ($includePool) {
- SET_INC_POOL(merge_array(GET_INC_POOL(), $includePool));
-}
-
-// Add single include file to INC_POOL
-function ADD_INC_TO_POOL ($INC) {
- $GLOBALS['inc_pool'][] = (string) $INC;
-}
-
-// Remove an include file from INC_POOL
-function REMOVE_INC_FROM_POOL ($INC) {
- // First look it up
- $key = array_search($INC, GET_INC_POOL());
-
- // Is it valid?
- if ($key !== false) {
- // Then remove it
- unset($GLOBALS['inc_pool'][$key]);
-
- // And sort the list
- asort($GLOBALS['inc_pool']);
- } // END - if
-}
-
// Handle message codes from URL
function handleCodeMessage () {
if (REQUEST_ISSET_GET(('msg'))) {