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
$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
+ if (!preg_match('@(\.|\.\.|\.revision|\.svn|debug\.log|\.cache|config\.php)$@', $d)) { // no ., .., .revision, .svn, debug.log or .cache in the filename
+
// Is it a file and readable?
//* DEBUG: */ print __FUNCTION__."(<font color=\"#0000aa\">".__LINE__."</font>):FQFN={$FQFN}<br />\n";
if (isDirectory($FQFN)) {
}
// 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
}
-// 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?
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'))) {