You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							164 lines
						
					
					
						
							5.4 KiB
						
					
					
				
			
		
		
	
	
							164 lines
						
					
					
						
							5.4 KiB
						
					
					
				<?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
 | 
						|
*/
 | 
						|
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;
 | 
						|
	}
 | 
						|
} |