123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- <?php
- /* For licensing terms, see /license.txt */
- /**
- * This is the debug library for Chamilo.
- * Include/require it in your code to use its functionality.
- * @package chamilo.debug
- */
- /**
- * This is the debug library for Chamilo.
- * Include/require it in your code to use its functionality.
- * @package chamilo.debug
- */
- class Debug {
- /**
- * This function displays the contend of a variable, array or object in a nicely formatted way.
- * @param Mixed A variable, array or object
- * @return void Prints \<pre\> HTML block to output
- * @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
- * @version November 2006
- */
- public function printr($variable) {
- echo '<pre>';
- print_r($variable);
- echo '</pre>';
- }
-
- /**
- * This function displays all the information of the dokeos $_course array
- * This array stores all the information of the current course if the user is in a course.
- * This is why this array is used to check weither the user is currently is in the course.
- * @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
- * @version November 2006
- */
- public function course() {
- global $_course;
- self::printr($_course);
- }
-
- /**
- * This function displays all the information of the dokeos $_user array
- * This array stores all the information of the current user.
- * @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
- * @version November 2006
- */
- public function user() {
- global $_user;
- self::printr($_user);
- }
-
- /**
- * This function displays an overview of the different path constants that can be used with the api_get_path function
- * @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
- * @version November 2006
- * @return void
- */
- public function debug_paths() {
- echo 'WEB_PATH :'.api_get_path(WEB_PATH).'<br />';
- echo 'SYS_PATH :'.api_get_path(SYS_PATH).'<br />';
- echo 'REL_PATH :'.api_get_path(REL_PATH).'<br />';
- echo 'WEB_COURSE_PATH :'.api_get_path(WEB_COURSE_PATH).'<br />';
- echo 'SYS_COURSE_PATH :'.api_get_path(SYS_COURSE_PATH).'<br />';
- echo 'REL_COURSE_PATH :'.api_get_path(REL_COURSE_PATH).'<br />';
- echo 'REL_CLARO_PATH :'.api_get_path(REL_CODE_PATH).'<br />';
- echo 'WEB_CODE_PATH :'.api_get_path(WEB_CODE_PATH).'<br />';
- echo 'SYS_CODE_PATH :'.api_get_path(SYS_CODE_PATH).'<br />';
- echo 'SYS_LANG_PATH :'.api_get_path(SYS_LANG_PATH).'<br />';
- echo 'WEB_IMG_PATH :'.api_get_path(WEB_IMG_PATH).'<br />';
- echo 'PLUGIN_PATH :'.api_get_path(PLUGIN_PATH).'<br />';
- echo 'SYS_ARCHIVE_PATH :'.api_get_path(SYS_ARCHIVE_PATH).'<br />';
- echo 'INCLUDE_PATH :'.api_get_path(INCLUDE_PATH).'<br />';
- echo 'LIBRARY_PATH :'.api_get_path(LIBRARY_PATH).'<br />';
- echo 'CONFIGURATION_PATH :'.api_get_path(CONFIGURATION_PATH).'<br />';
-
- }
-
- /**
- * Dump variable contents on screen in a nice format
- * @param mixed Variable to dump
- * @param string Variable name to print
- * @return void
- */
- public function print_var($var, $varName = "@") {
- GLOBAL $DEBUG;
- if ($DEBUG)
- {
- echo "<blockquote>\n";
- echo "<b>[$varName]</b>";
- echo "<hr noshade size=\"1\" style=\"color:blue\">";
- echo "<pre style=\"color:red\">\n";
- var_dump($var);
- echo "</pre>\n";
- echo "<hr noshade size=\"1\" style=\"color:blue\">";
- echo "</blockquote>\n";
- }
- else
- {
- echo "<!-- DEBUG is OFF -->";
- echo "DEBUG is OFF";
- }
- }
-
- /**
- * Log the given string into the default log if mode confirms it
- * @param string String to be logged
- * @param bool Whether to force the log even in production mode or not
- * @return bool True on success, false on failure
- */
- public function log_s($msg, $force_log = false) {
- $server_type = api_get_setting('server_type');
- if ($server_type == 'production' && !$force_log) {
- //not logging in production mode
- return false;
- }
- $backtrace = debug_backtrace(); // Retrieving information about the caller statement.
- $backtrace_string = self::_get_backtrace_raw_string($backtrace);
- return error_log($msg.$backtrace_string);
- }
- /**
- * Log the given variables' dump into the default log if mode confirms it
- * @param string String to be logged
- * @param bool Whether to force the log even in production mode or not
- * @return bool True on success, false on failure
- */
- public function log_v($variable, $force_log = false) {
- $server_type = api_get_setting('server_type');
- if ($server_type == 'production' && !$force_log) {
- //not logging in production mode
- return null;
- }
- $backtrace = debug_backtrace(); // Retrieving information about the caller statement.
- $backtrace_string = self::_get_backtrace_raw_string($backtrace);
- return error_log(print_r($variable,1).$backtrace_string);
- }
- /**
- * Get a string formatted with all backtrace info
- * @param array Backtrace data
- * @return string Backtrace formatted string
- */
- private function _get_backtrace_raw_string($backtrace=array()) {
- $file = $line = $type = $function = $class = '';
- if (isset($backtrace[0])) {
- $caller = & $backtrace[0];
- } else {
- $caller = array();
- }
- if (isset($backtrace[1])) {
- $owner = & $backtrace[1];
- } else {
- $owner = array();
- }
- $file = $caller['file'];
- $line = $caller['line'];
- $type = $owner['type'];
- $function = $owner['function'];
- $class = $owner['class'];
- $info = ' CHAMILO LOG INFO :: FILE: ' . (empty($file) ? ' unknown ' : $file) . ' LINE: ' . (empty($line) ? ' unknown ' : $line).' ' ;
- if (empty($type)) {
- if (!empty($function)) {
- $info .= 'FUNCTION: ' . $function;
- }
- } else {
- if (!empty($class) && !empty($function)) {
- $info .= 'CLASS: ' . $class;
- $info .= 'METHOD: ' . $function;
- }
- }
- return $info;
- }
- }
|