X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FSystem.php;h=1c4d8633065178aa0037112f70c99df0405a4ced;hb=d279cb03272bd701903f60420d18f28c6b1e8ac7;hp=c64739a427054fc178dde546b2b93813144856d2;hpb=5adfeb0bd5fed2f793332056c03bb7c043d5fc69;p=friendica.git diff --git a/src/Core/System.php b/src/Core/System.php index c64739a427..1c4d863306 100644 --- a/src/Core/System.php +++ b/src/Core/System.php @@ -1,4 +1,7 @@ get_baseurl($ssl); } @@ -42,15 +48,72 @@ class System { /** * @brief Removes the baseurl from an url. This avoids some mixed content problems. * - * @param string $orig_url + * @param string $orig_url The url to be cleaned * * @return string The cleaned url */ - function removedBaseUrl($orig_url) { + public static function removedBaseUrl($orig_url) + { self::init(); return self::$a->remove_baseurl($orig_url); } + /** + * @brief Returns a string with a callstack. Can be used for logging. + * @param integer $depth optional, default 4 + * @return string + */ + public static function callstack($depth = 4) + { + $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); + + // We remove the first two items from the list since they contain data that we don't need. + array_shift($trace); + array_shift($trace); + + $callstack = array(); + $counter = 0; + $previous = array('class' => '', 'function' => ''); + + // The ignore list contains all functions that are only wrapper functions + $ignore = array('get_config', 'get_pconfig', 'set_config', 'set_pconfig', 'fetch_url', 'probe_url'); + + while ($func = array_pop($trace)) { + if (!empty($func['class'])) { + // Don't show multiple calls from the same function (mostly used for "dba" class) + if (($previous['class'] != $func['class']) && ($previous['function'] != 'q')) { + $classparts = explode("\\", $func['class']); + $callstack[] = array_pop($classparts).'::'.$func['function']; + $previous = $func; + } + } elseif (!in_array($func['function'], $ignore)) { + $callstack[] = $func['function']; + $previous = $func; + } + } + + $callstack2 = array(); + while ((count($callstack2) < $depth) && (count($callstack) > 0)) { + $callstack2[] = array_pop($callstack); + } + + return implode(', ', $callstack2); + } + + /** + * @brief Called from db initialisation when db is dead. + */ + static public function unavailable() { +echo <<< EOT + + System Unavailable + Apologies but this site is unavailable at the moment. Please try again later. + +EOT; + + killme(); + } + /// @todo Move the following functions from boot.php /* function get_guid($size = 16, $prefix = "")