X-Git-Url: https://git.mxchange.org/?p=mailer.git;a=blobdiff_plain;f=inc%2Frevision-functions.php;h=f551ef47b7591c74e7b59193e56a1fa6505a87ab;hp=fe3ae41153494ca6dbe725f9b58fb0eb96f956a3;hb=fe61a2c2fd93b04ba21d3fb2705e73a428378c08;hpb=ca256746fe0757a23df4064824c8fe2087ad5634 diff --git a/inc/revision-functions.php b/inc/revision-functions.php index fe3ae41153..f551ef47b7 100644 --- a/inc/revision-functions.php +++ b/inc/revision-functions.php @@ -1,264 +1,3 @@ 'quix0r', - // No default value for current file name - 'File' => 11, - // No default value for revision number - 'Revision' => 10, - // No default value for date - 'Date' => 9, - // Default branch - 'Tag' => 8 - ); - - // Add Revision, Date, Tag and Author - $GLOBALS['repository_search_for'] = array( - 'File', - 'Revision', - 'Date', - 'Tag', - 'Author' - ); -} - -// "Getter" for revision/version data -function getRepositoryData ($type = 'Revision') { - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ret[' . $type . '] - ENTERED!'); - // Default is an invalid value to find bugs... :-) - $ret = 'INVALID'; - - // By default nothing is new... ;-) - $new = FALSE; - - // Is the cache entry there? - if (isset($GLOBALS['cache_array']['revision'][$type][0])) { - // Found so increase cache hit - incrementStatsEntry('cache_hits'); - - // Return it - $ret = $GLOBALS['cache_array']['revision'][$type][0]; - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ret[' . $type . ']=' . $ret); - } else { - // FQFN of revision file - $FQFN = sprintf("%s/.revision", getCachePath()); - - // Check if 'check_revision_data' is setted (switch for manually rewrite the .revision-File) - if ((isGetRequestElementSet('check_revision_data')) && (getRequestElement('check_revision_data') == 'yes')) { - // Forced rebuild of .revision file - $new = TRUE; - } else { - // Check for revision file - if (!isFileReadable($FQFN)) { - // Not found, so we need to create it - $new = TRUE; - } else { - // Revision file found - $ins_vers = explode(PHP_EOL, readFromFile($FQFN)); - - // Get array for mapping information - $mapper = array_flip($GLOBALS['repository_search_for']); - //* DEBUG: */ debugOutput('
mapper='.print_r($mapper, TRUE).'
ins_vers=
'.print_r($ins_vers, TRUE).'
'); - - // Is the content valid? - if ((!is_array($ins_vers)) || (count($ins_vers) <= 0) || (!isset($ins_vers[$mapper[$type]])) || (trim($ins_vers[$mapper[$type]]) == '') || ($ins_vers[0]) == 'new') { - // File needs update! - $new = TRUE; - } else { - // Generate fake cache entry - foreach ($mapper as $map => $idx) { - $GLOBALS['cache_array']['revision'][$map][0] = $ins_vers[$idx]; - } // END - foreach - - // Return found value - $ret = getRepositoryData($type); - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ret[' . $type . ']=' . $ret); - } - } - } - - // Has it been updated? - if ($new === TRUE) { - // Write it - writeToFile($FQFN, implode(PHP_EOL, getArrayFromRepositoryData())); - - // ... and call recursive - $ret = getRepositoryData($type); - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ret[' . $type . ']=' . $ret); - } // END - if - } - - // Return the value - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'ret[' . $type . ']=' . $ret . ' - EXIT!'); - return $ret; -} - -// Extracts requested revision info from given file data -function extractRevisionInfoFromData ($fileData, $search) { - // Default is to return empty string - $ret = ''; - - // Searches for "$search-tag:VALUE$" or "$search-tag::VALUE$"(the stylish keywordversion ;-)) in the lates modified file - $GLOBALS['revision_res'] += preg_match('@\$' . $search . '(:|::) (.*) \$@U', $fileData, $t); - - // Make sure only valid and trimmed entries are used - if (isset($t[2])) { - $ret = trim($t[2]); - } // END - if - - // Return the result - return $ret; -} - -// Extracts requested revison info for given file name by reading it's content -// and parsing it with extractRevisionInfoFromData(). -function extractRevisionInfoFromFile ($FQFN, $search) { - // Read the file - $fileData = readFromFile($FQFN); - - // Call the extract function and return the result - return extractRevisionInfoFromData($fileData, $search); -} - -// Gets an array back for current repository data. -// @TODO This function does also set and get in 'cache_array' -function getArrayFromRepositoryData () { - // Init array - $GLOBALS['cache_array']['revision'] = array(); - - // Init variables - $next_dir = ''; - - // Directory to start with search - $last_changed = array( - 'path_name' => '', - 'time' => 0 - ); - - // Init return array - $akt_vers = array(); - - // Init value for counting the founded keywords - $GLOBALS['revision_res'] = '0'; - - // Searches all Files and there date of the last modifikation and puts the newest File in $last_changed. - searchDirsRecursive($next_dir, $last_changed, 'Revision'); - - // Get file - $last_file = readFromFile($last_changed['path_name']); - - // Save the last-changed filename for debugging - $GLOBALS['cache_array']['revision']['File'][0] = $last_changed['path_name']; - - // This foreach loops the $searchFor-Tags (array('Revision', 'Date', 'Tag', 'Author') --> could easaly extended in the future) - foreach ($GLOBALS['repository_search_for'] as $search) { - // This extracts the requested data $search from file data $last_file - if ($search != 'File') { - // Skip 'File' because we have set it some lines above - $GLOBALS['cache_array']['revision'][$search][0] = extractRevisionInfoFromData($last_file, $search); - //* DEBUG: */ logDebugMessage(__FUNCTION__, __LINE__, 'search=' . $search . ',data=' . $GLOBALS['cache_array']['revision'][$search][0]); - } // END - if - } // END - foreach - - // at least 3 keyword-Tags are needed for propper values - if ($GLOBALS['revision_res'] && $GLOBALS['revision_res'] >= 3 - && isset($GLOBALS['cache_array']['revision']['Revision'][0]) && !empty($GLOBALS['cache_array']['revision']['Revision'][0]) - && isset($GLOBALS['cache_array']['revision']['Date'][0]) && !empty($GLOBALS['cache_array']['revision']['Date'][0]) - && isset($GLOBALS['cache_array']['revision']['Tag'][0]) && !empty($GLOBALS['cache_array']['revision']['Tag'][0])) { - // Prepare content witch need special treadment - - // Prepare timestamp for date - preg_match('@(....)-(..)-(..) (..):(..):(..)@', $GLOBALS['cache_array']['revision']['Date'][0], $match_d); - $GLOBALS['cache_array']['revision']['Date'][0] = mktime($match_d[4], $match_d[5], $match_d[6], $match_d[2], $match_d[3], $match_d[1]); - - // Add author to the Tag if the author is set and is not quix0r (lead coder) - if ((isset($GLOBALS['cache_array']['revision']['Author'][0])) && ($GLOBALS['cache_array']['revision']['Author'][0] != 'quix0r')) { - $GLOBALS['cache_array']['revision']['Tag'][0] .= '-' . strtoupper($GLOBALS['cache_array']['revision']['Author'][0]); - } // END - if - - } else { - // No valid Data from the last modificated file so read the Revision from the Server. Fallback-solution!! Should not be removed I think. - $version = sendHttpGetRequest('check-updates3.php'); - - // Invalid request reply? - if (!isset($version[11])) { - // Cannot continue here - reportBug(__FUNCTION__, __LINE__, 'Invalid response from check-updates3.php, count should be at least 11, is ' . count($version)); - } // END - if - - // Prepare content - // Only sets not setted or not proper values to the Online-Server-Fallback-Solution - foreach ($GLOBALS['repository_search_for'] as $entry) { - // Is it not set or empty? - if ((!isset($GLOBALS['cache_array']['revision'][$entry][0])) || (empty($GLOBALS['cache_array']['revision']['File'][0]))) { - // Is default data entry nummerical? - if (is_numeric($GLOBALS['default_repository_data'][$entry])) { - // Use entry from $version - $GLOBALS['cache_array']['revision'][$entry][0] = trim($version[$GLOBALS['default_repository_data'][$entry]]); - } else { - // Non-numeric -> use it directly - $GLOBALS['cache_array']['revision'][$entry][0] = $GLOBALS['default_repository_data'][$entry]; - } - } // END - if - } // END - if - } - - // Temporary remove [0] from array - $array = $GLOBALS['cache_array']['revision']; - foreach ($array as $key => $value) { - if ((is_array($value)) && (isset($value[0]))) { - unset($array[$key][0]); - $array[$key] = $value[0]; - } // END - if - } // END - if - - // Return prepared array - return $array; -} - -// [EOF] +// @DEPRECATED ?>