diff --git a/conlite/classes/log/class.log.php b/conlite/classes/log/class.log.php deleted file mode 100644 index f723ffe..0000000 --- a/conlite/classes/log/class.log.php +++ /dev/null @@ -1,393 +0,0 @@ - - * @license http://www.contenido.org/license/LIZENZ.txt - * @link http://www.4fb.de - * @link http://www.contenido.org - */ - -defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.'); - -/** - * This class contains the main functionalities for the logging in CONTENIDO. - * - * Examples: - * - * $writer = cLogWriter::factory("File", array('destination' => 'contenido.log')); - * $log = new cLog($writer); - * - * $log->addPriority("CONTENIDO", 10); - * $log->log("Contenido Log Message.", "CONTENIDO"); - * $log->contenido("Same log entry in short notation."); - * $log->removePriority("CONTENIDO"); - * - * $log->emerg("System down."); - * - * $log->log('Notice Log Message', cLog::NOTICE); - * - * $log->buffer('Buffered Log Message', cLog::WARN); - * $log->commit(); - * - * @package Core - * @subpackage Log - */ -class cLog { - - /** - * @var int logging level - */ - const EMERG = 0; - - /** - * @var int logging level - */ - const ALERT = 1; - - /** - * @var int logging level - */ - const CRIT = 2; - - /** - * @var int logging level - */ - const ERR = 3; - - /** - * @var int logging level - */ - const WARN = 4; - - /** - * @var int logging level - */ - const NOTICE = 5; - - /** - * @var int logging level - */ - const INFO = 6; - - /** - * @var int logging level - */ - const DEBUG = 7; - - /** - * @var cLogWriter Contains the local log writer instance. - */ - protected $_writer; - - /** - * @var array Contains all shortcut handlers - */ - protected $_shortcutHandlers = array(); - - /** - * @var array Contains all available priorities - */ - protected $_priorities = array(); - - /** - * @var array Contains all default priorities - */ - protected $_defaultPriorities = array(); - - /** - * @var array Contains all buffered messages - */ - protected $_buffer = array(); - - /** - * Creates a new instance of the CONTENIDO Log mechanism. - * - * The log format interface of cLog is capable of being extended by subclasses. See the note about - * the log shortcuts below. - * - * - * About Log Shortcuts - * ------------------- - * Log shortcuts are placeholders which are replaced when a log entry is created. Placeholders start with a - * percentage sign (%) and contain one or more characters. Each placeholder is handled by an own function which - * decides what to do. - * - * @param mixed $writer Writer object (any subclass of cLogWriter), or false if cLog should handle the writer creation - */ - public function __construct($writer = false) { - $cfg = cRegistry::getConfig(); - - $createWriter = false; - - if ($writer == false) { - $createWriter = true; - } else if (!is_object($writer) || ($writer instanceof cLogWriter) == false) { - cWarning(__FILE__, __LINE__, "The passed class is not a subclass of cLogWriter. Creating new one."); - $createWriter = true; - } - - if ($createWriter == true) { - $options = array( - 'destination' => cRegistry::getConfigValue('path', 'contenido') - .cRegistry::getConfigValue('path', 'logs') - .'contenido.log'); - $writer = cLogWriter::factory("File", $options); - } - - $this->setWriter($writer); - $this->setShortcutHandler("%date", array($this, "shDate")); - $this->setShortcutHandler("%level", array($this, "shLevel")); - $this->setShortcutHandler("%message", array($this, "shMessage")); - - $this->getWriter()->setOption('log_format', '[%date] [%level] %message', false); - - $reflection = new ReflectionClass($this); - $this->_priorities = $this->_defaultPriorities = array_flip($reflection->getConstants()); - } - - /** - * Returns the local writer instance. - * @return cLogWriter - */ - public function getWriter() { - return $this->_writer; - } - - /** - * Sets the local writer instance. - * - * @param cLogWriter $writer Writer instacne - */ - public function setWriter(cLogWriter $writer) { - $this->_writer = $writer; - } - - /** - * Defines a custom shortcut handler. - * - * Each shortcut handler receives an array with the - * message and the priority of the entry. - * - * @param string $shortcut Shortcut name - * @param string $handler Name of the function to call - * @throws cInvalidArgumentException if the given shortcut is empty or - * already in use or if the handler is not callable - * @return bool True if setting was successful - */ - public function setShortcutHandler($shortcut, $handler) { - if ($shortcut == '') { - throw new Exception('The shortcut name must not be empty.'); - } - - if (substr($shortcut, 0, 1) == "%") { - $shortcut = substr($shortcut, 1); - } - - if (is_callable($handler) == false) { - throw new Exception('The specified shortcut handler does not exist.'); - } - - if (array_key_exists($shortcut, $this->_shortcutHandlers)) { - throw new Exception('The shortcut ' . $shortcut . ' is already in use!'); - } - - $this->_shortcutHandlers[$shortcut] = $handler; - - return true; - } - - /** - * Unsets a specific shortcut handler. - * - * @param string $shortcut Name of the shortcut - * @throws cInvalidArgumentException if the given shortcut handler does not - * exist - * @return boolean - */ - public function unsetShortcutHandler($shortcut) { - if (!in_array($shortcut, $this->_shortcutHandlers)) { - throw new Exception('The specified shortcut handler does not exist.'); - } - - unset($this->_shortcutHandlers[$shortcut]); - return true; - } - - /** - * Buffers a log message for committing them on a later moment. - * - * @param string $message Message to buffer - * @param mixed $priority Priority of the log entry (optional) - */ - public function buffer($message, $priority = NULL) { - $this->_buffer[] = array($message, $priority); - } - - /** - * Commits all buffered messages and empties the message buffer if parameter is not false. - * - * @param boolean $revoke Flag, whether the buffer is cleared or not (optional, default: true) - */ - public function commit($revoke = true) { - if (count($this->_buffer) == 0) { - cWarning(__FILE__, __LINE__, "There are no buffered messages to commit."); - return false; - } - - foreach ($this->_buffer as $bufferInfo) { - $this->log($bufferInfo[0], $bufferInfo[1]); - } - - if ($revoke == true) { - $this->revoke(); - } - } - - /** - * Empties the message buffer. - */ - public function revoke() { - $this->_buffer = array(); - } - - /** - * Logs a message using the local writer instance - * - * @param string $message Message to log - * @param mixed $priority Priority of the log entry (optional) - */ - public function log($message, $priority = NULL) { - if ($priority && is_int($priority) == false && in_array($priority, $this->_priorities)) { - $priority = array_search($priority, $this->_priorities); - } - - if ($priority === NULL || array_key_exists($priority, $this->_priorities) == false) { - $priority = $this->getWriter()->getOption('default_priority'); - } - - $logMessage = $this->getWriter()->getOption('log_format'); - $lineEnding = $this->getWriter()->getOption('line_ending'); - - foreach ($this->_shortcutHandlers as $shortcut => $handler) { - if (substr($shortcut, 0, 1) != "%") { - $shortcut = "%" . $shortcut; - } - - $info = array( - 'message' => $message, - 'priority' => $priority - ); - - $value = call_user_func($handler, $info); - - $logMessage = str_replace($shortcut, $value, $logMessage); - } - - $this->getWriter()->write($logMessage . $lineEnding, $priority); - } - - /** - * Adds a new priority to the log. - * - * @param string $name Name of the log priority - * @param int $value Index value of the log priority - * @throws cInvalidArgumentException if the given name is empty, already - * exists or the value already exists - */ - public function addPriority($name, $value) { - if ($name == '') { - throw new Exception('Priority name must not be empty.'); - } - - if (in_array($name, $this->_priorities)) { - throw new Exception('The given priority name already exists.'); - } - - if (array_key_exists($value, $this->_priorities)) { - throw new Exception('The priority value already exists.'); - } - - $this->_priorities[$value] = $name; - } - - /** - * Removes a priority from log. - * Default properties can not be removed. - * - * @param string $name Name of the log priority to remove - * @throws cInvalidArgumentException if the given name is empty, does not - * exist or is a default priority - */ - public function removePriority($name) { - if ($name == '') { - throw new Exception('Priority name must not be empty.'); - } - - if (in_array($name, $this->_priorities) == false) { - throw new Exception('Priority name does not exist.'); - } - - if (in_array($name, $this->_defaultPriorities) == true) { - throw new Exception('Removing default priorities is not allowed.'); - } - - $priorityIndex = array_search($name, $this->_priorities); - - unset($this->_priorities[$priorityIndex]); - } - - /** - * Magic call method for direct priority named calls. - * - * @param string $method Name of the method - * @param array $arguments Array with the method arguments - * @throws cInvalidArgumentException if the given priority is not supported - */ - public function __call($method, $arguments) { - $priorityName = strtoupper($method); - - if (in_array($priorityName, $this->_priorities) == false) { - throw new Exception('The given priority ' . $priorityName . ' is not supported.'); - } - - $priorityIndex = array_search($priorityName, $this->_priorities); - - return $this->log($arguments[0], $priorityIndex); - } - - /** - * Shortcut Handler Date. - * Returns the current date - * @return string The current date - */ - public function shDate() { - return date("Y-m-d H:i:s"); - } - - /** - * Shortcut Handler Level. - * Returns the canonical name of the priority. - * The canonical name is padded to 10 characters to achieve a better formatting. - * @return string The canonical log level - */ - public function shLevel($info) { - $logLevel = $info['priority']; - return str_pad($this->_priorities[$logLevel], 10, " ", STR_PAD_BOTH); - } - - /** - * Shortcut Handler Message. - * Returns the log message. - * @return string The log message - */ - public function shMessage($info) { - return $info['message']; - } -} -?> \ No newline at end of file diff --git a/conlite/classes/log/class.log.writer.file.php b/conlite/classes/log/class.log.writer.file.php deleted file mode 100644 index 9173c67..0000000 --- a/conlite/classes/log/class.log.writer.file.php +++ /dev/null @@ -1,67 +0,0 @@ - - * @license http://www.contenido.org/license/LIZENZ.txt - * @link http://www.4fb.de - * @link http://www.contenido.org - */ - -defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.'); - -/** - * This class contains the file writer class for the logging mechanism. - * - * @package Core - * @subpackage Log - */ -class cLogWriterFile extends cLogWriter { - /** - * @var resource Destination handle - */ - protected $_handle = NULL; - - /** - * Constructor of the writer instance. - * @param array $options Array with options for the writer instance (optional) - */ - public function __construct($options = array()) { - parent::__construct($options); - - $this->_createHandle(); - } - - /** - * Checks destination and creates the handle for the write process. - * - * @throws cException if not destination is specified - * @throws cFileNotFoundException if the destination file could not be read - */ - protected function _createHandle() { - $destination = $this->getOption('destination'); - if ($destination == '') { - throw new Exception('No destination was specified.'); - } - - if (($this->_handle = fopen($destination, 'a')) === false) { - throw new Exception('Destination handle could not be created.'); - } - } - - /** - * Writes the content to file handle. - * - * @param string $message Message to write - * @param int $priority Priority of the log entry - * @return boolean State of the write process - */ - public function write($message, $priority) { - return (fwrite($this->_handle, $message) != false); - } -} diff --git a/conlite/classes/log/class.log.writer.php b/conlite/classes/log/class.log.writer.php deleted file mode 100644 index 354e51a..0000000 --- a/conlite/classes/log/class.log.writer.php +++ /dev/null @@ -1,127 +0,0 @@ - - * @license http://www.contenido.org/license/LIZENZ.txt - * @link http://www.4fb.de - * @link http://www.contenido.org - */ - -defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.'); - -/** - * This class contains the main functionalities for the logging writer in CONTENIDO. - * - * @package Core - * @subpackage Log - */ -abstract class cLogWriter { - /** - * @var array Contains all options of the current writer instance. - */ - protected $_options = array(); - - /** - * Constructor of the writer instance. - * @param array $options Array with options for the writer instance (optional) - */ - public function __construct($options = array()) { - $this->setOptions($options); - - // Set all default options if they were not set already - $this->setOption('default_priority', cLog::INFO, false); - $this->setOption('line_ending', PHP_EOL, false); - } - - /** - * Factory method for a new writer instance. - * - * @param string $writerName Name of the writer - * @param array $writerOptions Options array for the writer instance - * @throws cInvalidArgumentException if the writer class with the given name - * does not exist or is not an instance of clogWriter - * @return cLogWriter Log writer instance - */ - public static function factory($writerName, array $writerOptions) { - $logWriterClassName = 'cLogWriter' . ucfirst($writerName); - if (!class_exists($logWriterClassName)) { - throw new Exception('Unknown writer class: ' . $writerName); - } - - $writer = new $logWriterClassName($writerOptions); - if (($writer instanceof cLogWriter) == false) { - throw new Exception('Provided class is not an instance of cLogWriter'); - } - - return $writer; - } - - /** - * Sets the whole options array. - * - * @param array $options Array with options - */ - public function setOptions(array $options) { - $this->_options = $options; - } - - /** - * Returns an array with all options. - * @return array Array with all options - */ - public function getOptions() { - return $this->_options; - } - - /** - * Sets a option. If option was set previously, it must be forced to overwrite the value. - * - * @param string $option Name of the option - * @param mixed $value Value of the option - * @param boolean $force Flag to force setting the option value (optional, default: false) - */ - public function setOption($option, $value, $force = false) { - if ($force == false && isset($this->_options[$option]) == true) { - return; - } - - $this->_options[$option] = $value; - } - - /** - * Returns the value of an option entry. - * - * @param string $option Name of the option - * - * @return mixed Value of the option entry - */ - public function getOption($option) { - return $this->_options[$option]; - } - - /** - * Removes an option entry. - * - * @param string $option Name of the option - */ - public function removeOption($option) { - unset($this->_options[$option]); - } - - /** - * Abstract function for the write process. - * This method must be implemented in the specific writer. - * - * @param string $message Message to write - * @param int $priority Priority of the log entry - * - * @return boolean State of the write process - */ - abstract function write($message, $priority); -} \ No newline at end of file diff --git a/conlite/classes/log/class.modulelog.php b/conlite/classes/log/class.modulelog.php deleted file mode 100644 index 5350ec8..0000000 --- a/conlite/classes/log/class.modulelog.php +++ /dev/null @@ -1,90 +0,0 @@ - - * @license http://www.contenido.org/license/LIZENZ.txt - * @link http://www.4fb.de - * @link http://www.contenido.org - */ - -defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.'); - -/** - * This class contains the main functionalities for the module logging in - * CONTENIDO. - * The funcationality is almost the same like normal logging with the exception, - * that log entries contains an additional information about the used module. - * - * Example: - * $writer = cLogWriter::factory("File", array('destination' => - * 'contenido.log')); - * - * $log = new cModuleLog($writer); - * $log->setModule(1); - * $log->log("Anything you want to log."); - * - * @package Core - * @subpackage Log - */ -class cModuleLog extends cLog { - - /** - * @var cApiModule instance of module model - */ - private $_module; - - /** - * Constructor of the module log. - * - * @param mixed $writer Writer object (any subclass of cLogWriter), or false - * if cLog should handle the writer creation - * - */ - public function __construct($writer = false) { - parent::__construct($writer); - - $this->setShortcutHandler('module', array( - $this, - 'shModule' - )); - $this->getWriter()->setOption("log_format", "[%date] [%level] [%module] %message", true); - } - - /** - * Sets the module to use. - * - * setModule automatically buffers basic module information to the log to - * assist the developer in debugging his modules. - * - * @param int $idmod The module ID to use - * @throws cException if the module with the given idmod could not be loaded - */ - public function setModule($idmod) { - $this->_module = new cApiModule($idmod); - if ($this->_module->isLoaded() == false) { - throw new Exception('Could not load module information.'); - } - } - - /** - * Shortcut Handler Module. - * Returns the ID and the name of the module. - * - * @return string ID and name of the module - */ - public function shModule() { - if ($this->_module->isLoaded() == false) { - return ''; - } - - return $this->_module->get("idmod") . ": " . $this->_module->get("name"); - } -} - -?> \ No newline at end of file