* -------------------------------------------------------------------- *
* Kurzbeschreibung : Viele Nicht-MySQL-Funktionen (auch Dateizugriff) *
* -------------------------------------------------------------------- *
- * *
+ * $Revision:: 856 $ *
+ * $Date:: 2009-03-06 20:24:32 +0100 (Fr, 06. Mär 2009) $ *
+ * $Tag:: 0.2.1-FINAL $ *
+ * $Author:: stelzi $ *
+ * Needs to be in all Files and every File needs "svn propset *
+ * svn:keywords Date Revision" (autoprobset!) at least!!!!!! *
* -------------------------------------------------------------------- *
* Copyright (c) 2003 - 2008 by Roland Haeder *
* For more information visit: http://www.mxchange.org *
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, *
* MA 02110-1301 USA *
************************************************************************/
-
// Some security stuff...
if (!defined('__SECURITY')) {
$INC = substr(dirname(__FILE__), 0, strpos(dirname(__FILE__), "/inc") + 4)."/security.php";
}
// Check if our config file is writeable or not
-function IS_INC_WRITEABLE($inc) {
+function IS_INC_WRITEABLE ($inc) {
// Generate FQFN
- $fqfn = sprintf("%sinc/%s.php", constant('PATH'), $inc);
+ $FQFN = sprintf("%sinc/%s.php", constant('PATH'), $inc);
// Abort by simple test
- if ((FILE_READABLE($fqfn)) && (!is_writeable($fqfn))) {
+ if ((FILE_READABLE($FQFN)) && (!is_writeable($FQFN))) {
return false;
} // END - if
- // Test if we can append data
- $fp = fopen($fqfn, 'a');
- if ($inc == "dummy") {
- // Remove dummy file
- fclose($fp);
- return unlink($fqfn);
- } else {
- // Close all other files
- return fclose($fp);
- }
+ // 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
mxchange_die("<strong>{--FATAL_ERROR--}:</strong> {--LANG_NO_RENDER_DIRECT--}");
break;
}
- } elseif ((constant('_OB_CACHING') == "on") && ($GLOBALS['footer_sent'] == 1)) {
+ } elseif ((constant('_OB_CACHING') == "on") && (isset($GLOBALS['footer_sent'])) && ($GLOBALS['footer_sent'] == 1)) {
// Headers already sent?
if (headers_sent()) {
// Log this error
// Do we have some content to output or return?
if (!empty($ret)) {
// Not empty so let's put it out! ;)
- if ($return) {
+ if ($return === true) {
// Return the HTML code
return $ret;
} else {
// Output direct
OUTPUT_HTML($ret);
}
- } elseif (isBooleanConstantAndTrue('DEBUG_MODE')) {
+ } elseif (isDebugModeEnabled()) {
// Warning, empty output!
return "E:".$template."<br />\n";
}
// Append header
$FROM .= LOAD_EMAIL_TEMPLATE("header");
}
- } elseif (isBooleanConstantAndTrue('DEBUG_MODE')) {
+ } elseif (isDebugModeEnabled()) {
if (empty($FROM)) {
// Load email header template
$FROM = LOAD_EMAIL_TEMPLATE("header");
// Fix HTML parameter (default is no!)
if (empty($HTML)) $HTML = "N";
- if (isBooleanConstantAndTrue('DEBUG_MODE')) {
+ 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))."
}
// Check if legacy or PHPMailer command
+// @TODO Rewrite this to an extension 'smtp'
// @private
function CHECK_PHPMAILER_USAGE() {
- return ((defined('SMTP_HOSTNAME')) && (defined('SMTP_USER')) && (defined('SMTP_PASSWORD')) && (SMTP_HOSTNAME != "") && (SMTP_USER != ""));
+ return ((defined('SMTP_HOSTNAME')) && (defined('SMTP_USER')) && (defined('SMTP_PASSWORD')) && (constant('SMTP_HOSTNAME') != "") && (constant('SMTP_USER') != ""));
}
/*
// Start creating password
$PASS = "";
for ($i = 0; $i < $LEN; $i++) {
- $PASS .= $ABC[mt_rand(0, sizeof($ABC) -1)];
+ $PASS .= $ABC[mt_rand(0, count($ABC) -1)];
} // END - for
// When the size is below 40 we can also add additional security by scrambling it
function SELECTION_COUNT ($array) {
$ret = 0;
if (is_array($array)) {
- foreach ($array as $key => $sel) {
- if (!empty($sel)) $ret++;
+ foreach ($array as $key => $selected) {
+ if (!empty($selected)) $ret++;
}
}
return $ret;
<br /><br />";
// Debug mode not active? Then remove the HTML tags
- if (!isBooleanConstantAndTrue('DEBUG_MODE')) $newContent = strip_tags($newContent);
+ if (!isDebugModeEnabled()) $newContent = strip_tags($newContent);
} else {
// No template name supplied!
$newContent = getMessage('NO_TEMPLATE_SUPPLIED');
LOAD_TEMPLATE("redirect_url", false, str_replace("&", "&", $URL));
LOAD_INC("inc/footer.php");
}
- exit();
+ shutdown();
}
// Wrapper for LOAD_URL but URL comes from a configuration entry
//
function ADD_SELECTION ($type, $DEFAULT, $prefix="", $id="0") {
- global $MONTH_DESCR;
$OUT = "";
if ($type == "yn") {
break;
case "month": // Month
- foreach ($MONTH_DESCR as $month => $descr) {
+ foreach ($GLOBALS['month_descr'] as $month => $descr) {
$OUT .= "<option value=\"".$month."\"";
if ($DEFAULT == $month) $OUT .= " selected=\"selected\"";
$OUT .= ">".$descr."</option>\n";
// Deprecated : $length
// Optional : $DATA
//
-function GEN_RANDOM_CODE ($length, $code, $uid, $DATA="") {
+function generateRandomCodde ($length, $code, $uid, $DATA="") {
// Fix missing _MAX constant
+ // @TODO Rewrite this unnice code
if (!defined('_MAX')) define('_MAX', 15235);
// Build server string
$keys = constant('SITE_KEY').":".constant('DATE_KEY');
if (isConfigEntrySet('secret_key')) $keys .= ":".getConfig('secret_key');
if (isConfigEntrySet('file_hash')) $keys .= ":".getConfig('file_hash');
- $keys .= ":".date("d-m-Y (l-F-T)", bigintval(getConfig('patch_ctime')));
+ $keys .= ":".date("d-m-Y (l-F-T)", getConfig(('patch_ctime')));
if (isConfigEntrySet('master_salt')) $keys .= ":".getConfig('master_salt');
// Build string from misc data
// Add more additional data
if (isSessionVariableSet('u_hash')) $data .= ":".get_session('u_hash');
if (isset($GLOBALS['userid'])) $data .= ":".$GLOBALS['userid'];
- if (isSessionVariableSet('mxchange_theme')) $data .= ":".get_session('mxchange_theme');
- if (isSessionVariableSet('mx_lang')) $data .= ":".GET_LANGUAGE();
- if (isset($GLOBALS['refid'])) $data .= ":".$GLOBALS['refid'];
+ if (isSessionVariableSet('mxchange_theme')) $data .= ":".get_session('mxchange_theme');
+ if (isSessionVariableSet('mx_lang')) $data .= ":".GET_LANGUAGE();
+ if (isset($GLOBALS['refid'])) $data .= ":".$GLOBALS['refid'];
// Calculate number for generating the code
$a = $code + constant('_ADD') - 1;
$rcode = hexdec(substr($saltedHash, strlen(getConfig('master_salt')), 9)) / abs(constant('_MAX') - $a + sqrt(constant('_ADD'))) / pi();
} else {
// Generate hash with "hash of site key" from modula of number with the prime number and other data
- $saltedHash = generateHash(($a % constant('_PRIME')).":".$server.":".$keys.":".$data.":".date("d-m-Y (l-F-T)", time()).":".$a, substr(sha1(SITE_KEY), 0, 8));
+ $saltedHash = generateHash(($a % constant('_PRIME')).":".$server.":".$keys.":".$data.":".date("d-m-Y (l-F-T)", time()).":".$a, substr(sha1(constant('SITE_KEY')), 0, 8));
// Create number from hash
$rcode = hexdec(substr($saltedHash, 8, 9)) / abs(constant('_MAX') - $a + sqrt(constant('_ADD'))) / pi();
// Load email template
$msg = LOAD_EMAIL_TEMPLATE($template, $content, $UID);
- if (EXT_VERSION_IS_OLDER("admins", "0.4.0")) {
- // Older version detected!
- return SEND_ADMIN_EMAILS($subj, $msg);
- } // END - if
-
// Check which admin shall receive this mail
$result = SQL_QUERY_ESC("SELECT DISTINCT admin_id FROM `{!_MYSQL_PREFIX!}_admins_mails` WHERE mail_template='%s' ORDER BY admin_id",
array($template), __FUNCTION__, __LINE__);
array($template), __FUNCTION__, __LINE__);
} else {
// Load admin IDs...
- $aids = array();
- while (list($aid) = SQL_FETCHROW($result)) {
- $aids[] = $aid;
+ // @TODO This can be, somehow, rewritten
+ $adminIds = array();
+ while ($content = SQL_FETCHARRAY($result)) {
+ $adminIds[] = $content['admin_id'];
} // END - while
// Free memory
$result = false;
// "implode" IDs and query string
- $aid = implode(",", $aids);
+ $aid = implode(",", $adminIds);
if ($aid == "-1") {
if (EXT_IS_ACTIVE("events")) {
// Add line to user events
}
} elseif ($aid == "0") {
// Select all email adresses
- $result = SQL_QUERY("SELECT email FROM `{!_MYSQL_PREFIX!}_admins` ORDER BY `id`", __FUNCTION__, __LINE__);
+ $result = SQL_QUERY("SELECT email FROM `{!_MYSQL_PREFIX!}_admins` ORDER BY `id`",
+ __FUNCTION__, __LINE__);
} else {
// If Admin-ID is not "to-all" select
- $result = SQL_QUERY_ESC("SELECT email FROM `{!_MYSQL_PREFIX!}_admins` WHERE id IN (%s) ORDER BY `id`", array($aid), __FUNCTION__, __LINE__);
+ $result = SQL_QUERY_ESC("SELECT email FROM `{!_MYSQL_PREFIX!}_admins` WHERE id IN (%s) ORDER BY `id`",
+ array($aid), __FUNCTION__, __LINE__);
}
}
// Load email addresses and send away
- while (list($email) = SQL_FETCHROW($result)) {
- SEND_EMAIL($email, $subj, $msg);
+ while ($content = SQL_FETCHARRAY($result)) {
+ SEND_EMAIL($content['email'], $subj, $msg);
} // END - while
// Free memory
// Load navigation template
$OUT = LOAD_TEMPLATE("admin_email_nav_row", true);
- if ($return) {
+ if ($return === true) {
// Return generated HTML-Code
return $OUT;
} else {
$request = "GET /" . trim($script) . " HTTP/1.1\r\n";
$request .= "Host: " . $host . "\r\n";
$request .= "Referer: " . constant('URL') . "/admin.php\r\n";
- $request .= "User-Agent: " . constant('TITLE') . "/" . constant('FULL_VERSION') . "\r\n";
+ if (defined('FULL_VERSION')) {
+ $request .= "User-Agent: " . constant('TITLE') . "/" . constant('FULL_VERSION') . "\r\n";
+ } else {
+ $request .= "User-Agent: " . constant('TITLE') . "/?.?.?\r\n";
+ }
$request .= "Content-Type: text/plain\r\n";
$request .= "Cache-Control: no-cache\r\n";
$request .= "Connection: Close\r\n\r\n";
fputs($fp, $request);
// Read response
- while(!feof($fp)) {
+ while (!feof($fp)) {
$response[] = trim(fgets($fp, 1024));
} // END - while
}
// Taken from www.php.net eregi() user comments
-function VALIDATE_EMAIL($email) {
+function VALIDATE_EMAIL ($email) {
// Compile email
$email = COMPILE_CODE($email);
return isUrlValid($URL);
}
-//
+// Generate a list of administrative links to a given userid
function MEMBER_ACTION_LINKS ($uid, $status = "") {
// Define all main targets
$TARGETS = array("del_user", "edit_user", "lock_user", "add_points", "sub_points");
return $OUT;
}
-// Function for backward-compatiblity
-// @TODO Can this function be deprecated?
-function ADD_CATEGORY_TABLE ($MODE, $return=false) {
- // Load it from the register extension
- return REGISTER_ADD_CATEGORY_TABLE ($MODE, $return);
-}
-
// Generate an email link
function CREATE_EMAIL_LINK ($email, $table = "admins") {
// Default email link (INSECURE! Spammer can read this by harvester programs)
// Return email link
return $EMAIL;
}
+
// Generate a hash for extra-security for all passwords
function generateHash ($plainText, $salt = "") {
global $_SERVER;
$server = $_SERVER['PHP_SELF'].":".GET_USER_AGENT().":".getenv('SERVER_SOFTWARE').":".GET_REMOTE_ADDR().":".":".filemtime(constant('PATH')."inc/databases.php");
// Build key string
- $keys = constant('SITE_KEY').":".constant('DATE_KEY').":".getConfig('secret_key').":".getConfig('file_hash').":".date("d-m-Y (l-F-T)", bigintval(getConfig('patch_ctime'))).":".getConfig('master_salt');
+ $keys = constant('SITE_KEY').":".constant('DATE_KEY').":".getConfig('secret_key').":".getConfig('file_hash').":".date("d-m-Y (l-F-T)", getConfig(('patch_ctime'))).":".getConfig('master_salt');
// Additional data
$data = $plainText.":".uniqid(mt_rand(), true).":".time();
// Return hash
return $salt.sha1($salt.$plainText);
}
-//
+
+// Scramble a string
function scrambleString($str) {
// Init
$scrambled = "";
//* DEBUG: */ echo "***Scrambled=".$scrambled."***<br />";
return $scrambled;
}
-//
+
+// De-scramble a string scrambled by scrambleString()
function descrambleString($str) {
// Scramble only 40 chars long strings
if (strlen($str) != 40) return $str;
//* DEBUG: */ echo "+++Original=".$orig."+++<br />";
return $orig;
}
-//
+
+// Generated a "string" for scrambling
function genScrambleString ($len) {
// Prepare array for the numbers
$scrambleNumbers = array();
LOAD_INC_ONCE("inc/footer.php");
// Exit explicitly
- exit;
+ shutdown();
}
// Display parsing time and number of SQL queries in footer
} // END - if
}
+// Function to search for the last modifikated file
+function searchDirsRecoursive ($dir, &$last_changed) {
+ $ds = scandir($dir); // Needs adjustment for PHP < 5.0.0!!
+ foreach ($ds as $d) {
+ $f_name = $dir.'/'.$d; // makes a proper Filename
+ if (!preg_match('@(\.|\.\.|\.revision|\.svn|debug\.log|\.cache)$@',$d)) { // no . or .. or .revision or .svn in the filename
+ $is_dir = is_dir($f_name);
+ if (!$is_dir) { // $f_name is a filename and no directory
+ $time = filemtime($f_name);
+ if ($last_changed['time'] < $time) { // This file is newer as the file before
+ $last_changed['path_name'] = $f_name;
+ $last_changed['time'] = $time;
+ }
+ } elseif ($is_dir) { // $f_name is a directory so also crawl into this directory
+ searchDirsRecoursive($f_name, $last_changed);
+ }
+ }
+ }
+}
+
+
// "Getter" for revision/version data
-function getActualVersion ($type = 0) {
+function getActualVersion ($type = 'Revision') {
// By default nothing is new... ;-)
$new = false;
- // FQFN of revision file
- $FQFN = sprintf("%sinc/cache/.revision", constant('PATH'));
+ if (EXT_IS_ACTIVE("cache")) {
+ // Check if $_GET['check_revision_data'] is setted (switch for manually rewrite the .revision-File)
+ if (isset($_GET['check_revision_data']) && $_GET['check_revision_data'] == 'yes') $new = true;
+ if (!isset($GLOBALS['cache_array']['revision'][$type])
+ || count($GLOBALS['cache_array']['revision']) < 3
+ || !$GLOBALS['cache_instance']->loadCacheFile("revision")) $new = true;
+
+ if ($new){
+
+ $GLOBALS['cache_instance']->destroyCacheFile(); // @TODO isn't it better to do $GLOBALS['cache_instance']->destroyCacheFile('revision')?
+
+ // @TODO shouldn't do the unset and the reloading $GLOBALS['cache_instance']->destroyCacheFile() Or a new methode like forceCacheReload('revision')?
+ unset($GLOBALS['cache_array']['revision']);
+ // Reload load_cach-revison.php
+ LOAD_INC('inc/loader/load_cache-revision.php');
+ }
+
+ return $GLOBALS['cache_array']['revision'][$type][0];
- // Check for revision file
- if (!FILE_READABLE($FQFN)) {
- // Not found, so we need to create it
- $new = true;
} else {
- // Revision file found
- $ins_vers = explode("\n", READ_FILE($FQFN));
+ // old Version without ext-cache aktive (depricated ?)
+
+ // FQFN of revision file
+ $FQFN = sprintf("%sinc/cache/.revision", constant('PATH'));
- // Is the content valid?
- if ((!is_array($ins_vers)) || (count($ins_vers) <= 0) || (!isset($ins_vers[$type])) || ($ins_vers[0]) == "new") {
- // File needs update!
+ // Check if $_GET['check_revision_data'] is setted (switch for manually rewrite the .revision-File)
+ if (isset($_GET['check_revision_data']) && $_GET['check_revision_data'] == 'yes') {
$new = true;
+
} else {
- // Revision-File has valid Data and isn't 'new' so return the Rev-Number
- return trim($ins_vers[$type]);
+ // Check for revision file
+ if (!FILE_READABLE($FQFN)) {
+ // Not found, so we need to create it
+ $new = true;
+ } else {
+ // Revision file found
+ $ins_vers = explode("\n", READ_FILE($FQFN));
+
+ // Is the content valid?
+ if ((!is_array($ins_vers)) || (count($ins_vers) <= 0) || (!isset($ins_vers[$type])) || (trim($ins_vers[$type]) == '') || ($ins_vers[0]) == "new") {
+ // File needs update!
+ $new = true;
+ } else {
+ // Revision-File has valid Data and isn't 'new' so return the Rev-Number
+ $ttype = array_search ($type,array_keys(getSearchFor()));
+ if ($ttype || $ttype != null) return trim($ins_vers[$ttype]);
+ else return false;
+ }
+ }
+ }
+ // Has it been updated?
+ if ($new === true) {
+ WRITE_FILE($FQFN, implode("\n", getAkt_vers()));
}
}
+}
- // Has it been updated?
- if ($new === true) {
- // No Revision-File or has no valid Data so read the Revision from the Server.
- $version = GET_URL("check-updates3.php");
+function getSearchFor () {
+ $searchFor[] = 'Revision';
+ $searchFor[] = 'Date';
+ $searchFor[] = 'Tag';
+ $searchFor[] = 'Author';
- // Prepare content
- $akt_vers[] = trim($version[10]);
- $akt_vers[] = trim($version[9]);
- $akt_vers[] = trim($version[8]);
+ return $searchFor;
+}
- // Write file
- WRITE_FILE($FQFN, implode("\n", $akt_vers));
+function getAkt_vers () {
+ $next_dir = '.';
+ $last_changed['path_name'] = '';
+ $last_changed['time'] = 0;
+ $akt_vers = array();
+ searchDirsRecoursive($next_dir, $last_changed); //Searches all Files and there date of the last modifikation and puts the newest File in $last_changed.
+ $last_file = READ_FILE($last_changed['path_name']);
+ $ergeb = 0;
+ $searchFor = getSearchFor();
- // Return requested content
- return trim($akt_vers[$type]);
+ foreach ($searchFor as $search) {
+ $ergeb += preg_match('@\$'.$search.'(:|::) (.*) \$@U', $last_file, $t);
+ if (isset($t[2])) $akt_vers[$search] = trim($t[2]);
}
+
+ if ($ergeb && $ergeb >= 3) {
+ // Prepare content
+ 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]);
+ if (isset($akt_vers['Author']) && $akt_vers['Author'] != 'quix0r') $akt_vers['Tag'] .= '-'.strtoupper($akt_vers['Author']);
+ } else {
+ // no valid Data from the last modificated file so read the Revision from the Server. FallbackSolution!! Could 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]);
+ }
+ return $akt_vers;
}
+
// Loads an include file and logs any missing files for debug purposes
function LOAD_INC ($INC) {
// Add the path. This is why we need a trailing slash in config.php
// Is the include file there?
if (!FILE_READABLE($FQFN)) {
// Not there so log it
- DEBUG_LOG(__FUNCTION__, __LINE__, sprintf("Include file %s not found.", basename($INC)));
+ debug_report_bug(sprintf("Include file %s not found.", $INC));
return false;
} // END - if
$admin = "<span class=\"admin_note\">{--ADMIN_NO_ADMIN_ASSIGNED--}</span>";
// Zero? = Not assigned
- if ($aid == "0") {
+ if ($aid > 0) {
// Load admin's login
$login = GET_ADMIN_LOGIN($aid);
if ($login != "***") {
return false;
}
// Send notification to admin
-function SEND_ADMIN_NOTIFICATION($subject, $templateName, $content=array(), $uid="0") {
+function SEND_ADMIN_NOTIFICATION ($subject, $templateName, $content=array(), $uid="0") {
if (GET_EXT_VERSION("admins") >= "0.4.1") {
// Send new way
SEND_ADMIN_EMAILS_PRO($subject, $templateName, $content, $uid);
} else {
- // Send outdated way
+ // Send out out-dated way
$msg = LOAD_EMAIL_TEMPLATE($templateName, $content, $uid);
SEND_ADMIN_EMAILS($subject, $msg);
}
// Debug message logger
function DEBUG_LOG ($funcFile, $line, $message, $force=true) {
// Is debug mode enabled?
- if ((isBooleanConstantAndTrue('DEBUG_MODE')) || ($force === true)) {
+ if ((isDebugModeEnabled()) || ($force === true)) {
// Log this message away
$fp = fopen(constant('PATH')."inc/cache/debug.log", 'a') or mxchange_die("Cannot write logfile debug.log!");
fwrite($fp, date("d.m.Y|H:i:s", time())."|".basename($funcFile)."|".$line."|".strip_tags($message)."\n");
}
// Load more reset scripts
-function RESET_ADD_INCLUDES () {
+function runResetIncludes () {
// Is the reset set or old sql_patches?
- if ((!defined('__DAILY_RESET')) || (EXT_VERSION_IS_OLDER("sql_patches", "0.4.5"))) {
+ if ((!isResetModeEnabled()) || (EXT_VERSION_IS_OLDER("sql_patches", "0.4.5"))) {
// Then abort here
- return array();
+ DEBUG_LOG(__FUNCTION__, __LINE__, "Cannot run reset! Please report this bug. Thanks");
} // END - if
// Get more daily reset scripts
// Update database
if (!defined('DEBUG_RESET')) UPDATE_CONFIG("last_update", time());
- // Create current week mark
- $currWeek = date("W", time());
+ // Is the config entry set?
+ if (GET_EXT_VERSION("sql_patches") >= "0.4.2") {
+ // Create current week mark
+ $currWeek = date("W", time());
- // Has it changed?
- if (getConfig('last_week') != $currWeek) {
- // Include weekly reset scripts
- $INC_POOL = merge_array($INC_POOL, GET_DIR_AS_ARRAY("inc/weekly/", "weekly_"));
+ // Has it changed?
+ if (getConfig('last_week') != $currWeek) {
+ // Include weekly reset scripts
+ $INC_POOL = merge_array($INC_POOL, GET_DIR_AS_ARRAY("inc/weekly/", "weekly_"));
- // Update config
- if (!defined('DEBUG_WEEKLY')) UPDATE_CONFIG("last_week", $currWeek);
- } // END - if
+ // Update config
+ if (!defined('DEBUG_WEEKLY')) UPDATE_CONFIG("last_week", $currWeek);
+ } // END - if
- // Create current month mark
- $currMonth = date("m", time());
+ // Create current month mark
+ $currMonth = date("m", time());
- // Has it changed?
- if (getConfig('last_month') != $currMonth) {
- // Include monthly reset scripts
- $INC_POOL = merge_array($INC_POOL, GET_DIR_AS_ARRAY("inc/monthly/", "monthly_"));
+ // Has it changed?
+ if (getConfig('last_month') != $currMonth) {
+ // Include monthly reset scripts
+ $INC_POOL = merge_array($INC_POOL, GET_DIR_AS_ARRAY("inc/monthly/", "monthly_"));
- // Update config
- if (!defined('DEBUG_MONTHLY')) UPDATE_CONFIG("last_month", $currMonth);
+ // Update config
+ if (!defined('DEBUG_MONTHLY')) UPDATE_CONFIG("last_month", $currMonth);
+ } // END - if
} // END - if
- // Return array
- return $INC_POOL;
+ // Run the filter
+ runFilterChain('load_includes', $INC_POOL);
}
// Handle extra values
}
// Check if given FQFN is a readable file
-function FILE_READABLE($fqfn) {
+function FILE_READABLE ($FQFN) {
// Check all...
- return ((file_exists($fqfn)) && (is_file($fqfn)) && (is_readable($fqfn)));
+ return ((file_exists($FQFN)) && (is_file($FQFN)) && (is_readable($FQFN)));
}
// Converts timestamp selections into a timestamp
-function CONVERT_SELECTIONS_TO_TIMESTAMP(&$POST, &$DATA, &$id, &$skip) {
+function CONVERT_SELECTIONS_TO_TIMESTAMP (&$POST, &$DATA, &$id, &$skip) {
// Init test variable
$test2 = "";
} // END - if
} else {
// Process this entry
- $skip = false; $test2 = "";
+ $skip = false;
+ $test2 = "";
}
}
}
// Rebuild cache
-function REBUILD_CACHE ($cache, $inc="") {
+function rebuildCacheFiles ($cache, $inc="") {
// Shall I remove the cache file?
- if ((EXT_IS_ACTIVE("cache")) && (is_object($GLOBALS['cache_instance']))) {
+ if ((EXT_IS_ACTIVE("cache")) && (isCacheInstanceValid())) {
// Rebuild cache
if ($GLOBALS['cache_instance']->loadCacheFile($cache)) {
// Destroy it
if (!EXT_IS_ACTIVE("cache")) {
// Cache extension not active
return false;
- } elseif (!is_object($GLOBALS['cache_instance'])) {
+ } elseif (!isCacheInstanceValid()) {
// No cache instance!
DEBUG_LOG(__FUNCTION__, __LINE__, " No cache instance found.");
return false;
$GLOBALS['refid'] = bigintval(get_session('refid'));
} elseif ((GET_EXT_VERSION("sql_patches") != "") && (getConfig('def_refid') > 0)) {
// Set default refid as refid in URL
- $GLOBALS['refid'] = bigintval(getConfig('def_refid'));
+ $GLOBALS['refid'] = getConfig(('def_refid'));
} elseif ((GET_EXT_VERSION("user") >= "0.3.4") && (getConfig('select_user_zero_refid')) == "Y") {
// Select a random user which has confirmed enougth mails
$GLOBALS['refid'] = SELECT_RANDOM_REFID();
// Check wether we are installing
function isInstalling () {
- return (isset($GLOBALS['mxchange_installing']));
+ $installing = ((isset($GLOBALS['mxchange_installing'])) || (REQUEST_ISSET_GET('installing')));
+ //* DEBUG: */ var_dump($installing);
+ return $installing;
}
// Check wether this script is installed
return isBooleanConstantAndTrue('admin_registered');
}
+// Enables the reset mode. Only call this function if you really want the
+// reset to be run!
+function enableResetMode () {
+ // Enable the reset mode
+ $GLOBALS['reset_enabled'] = true;
+
+ // Run filters
+ runFilterChain('reset_enabled');
+}
+
+// Checks wether the reset mode is active
+function isResetModeEnabled () {
+ // Now simply check it
+ return ((isset($GLOBALS['reset_enabled'])) && ($GLOBALS['reset_enabled'] === true));
+}
+
+// Checks wether the debug mode is enabled
+function isDebugModeEnabled () {
+ // Simply check it
+ return isBooleanConstantAndTrue('DEBUG_MODE');
+}
+
+// Checks wether the cache instance is valid
+function isCacheInstanceValid () {
+ return ((isset($GLOBALS['cache_instance'])) && (is_object($GLOBALS['cache_instance'])));
+}
+
+// Our shutdown-function
+function shutdown () {
+ // Call the filter chain 'shutdown'
+ runFilterChain('shutdown', null, false);
+
+ if (SQL_IS_LINK_UP()) {
+ // Close link
+ SQL_CLOSE(__FILE__, __LINE__);
+ } elseif (!isInstalling()) {
+ // No database link
+ addFatalMessage(__FILE__, __LINE__, getMessage('NO_DB_LINK_SHUTDOWN'));
+ }
+
+ // Stop executing here
+ exit;
+}
+
//////////////////////////////////////////////////
// AUTOMATICALLY RE-GENERATED MISSING FUNCTIONS //
//////////////////////////////////////////////////