Add simpleid-1.0.5
diff --git a/simpleid/www/log.inc.php b/simpleid/www/log.inc.php
new file mode 100644
index 0000000..9e1caf0
--- /dev/null
+++ b/simpleid/www/log.inc.php
@@ -0,0 +1,210 @@
+<?php
+/*
+ * SimpleID
+ *
+ * Copyright (C) Kelvin Mo 2007-9
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * $Id$
+ */
+
+/**
+ * Functions for logging.
+ *
+ * @package simpleid
+ * @filesource
+ */
+
+/** Log level */
+define('SIMPLEID_LOG_DEBUG', 5);
+/** Log level */
+define('SIMPLEID_LOG_INFO', 4);
+/** Log level */
+define('SIMPLEID_LOG_NOTICE', 3);
+/** Log level */
+define('SIMPLEID_LOG_WARN', 2);
+/** Log level */
+define('SIMPLEID_LOG_ERROR', 1);
+/** Log level */
+define('SIMPLEID_LOG_FATAL', 0);
+
+/**
+ * This variable holds the pointer to the currently opened log file. If the
+ * log file is not open, this variable is NULL.
+ *
+ * @global resource $log
+ */
+$log = NULL;
+
+
+/**
+ * Opens the log file.
+ *
+ * This function opens a pointed to the log file for later usage.
+ *
+ * @return bool true if the log file is opened successfully.
+ */
+function log_open() {
+ global $log;
+ if (!defined('SIMPLEID_LOGFILE') || (SIMPLEID_LOGFILE == '')) return;
+ $log = fopen(SIMPLEID_LOGFILE, 'a');
+
+ if ($log === false) {
+ $log = NULL;
+ return false;
+ } else {
+ return true;
+ }
+}
+
+/**
+ * Closes the log file, if it is open.
+ */
+function log_close() {
+ if ($log != NULL) {
+ fflush($log);
+ fclose($log);
+ $log = NULL;
+ }
+}
+
+/**
+ * Logs a DEBUG message.
+ *
+ * @param string $message the message to log
+ * @see _log_write()
+ */
+function log_debug($message) {
+ _log_write($message, SIMPLEID_LOG_DEBUG);
+}
+
+/**
+ * Logs an INFO message.
+ *
+ * @param string $message the message to log
+ * @see _log_write()
+ */
+function log_info($message) {
+ _log_write($message, SIMPLEID_LOG_INFO);
+}
+
+/**
+ * Logs a NOTICE message.
+ *
+ * @param string $message the message to log
+ * @see _log_write()
+ */
+function log_notice($message) {
+ _log_write($message, SIMPLEID_LOG_NOTICE);
+}
+
+/**
+ * Logs a WARN message.
+ *
+ * @param string $message the message to log
+ * @see _log_write()
+ */
+function log_warn($message) {
+ _log_write($message, SIMPLEID_LOG_WARN);
+}
+
+/**
+ * Logs a ERROR message.
+ *
+ * @param string $message the message to log
+ * @see _log_write()
+ */
+function log_error($message) {
+ _log_write($message, SIMPLEID_LOG_ERROR);
+}
+
+/**
+ * Logs a FATAL message.
+ *
+ * @param string $message the message to log
+ * @see _log_write()
+ */
+function log_fatal($message) {
+ _log_write($message, SIMPLEID_LOG_FATAL);
+}
+
+/**
+ * Converts an array into a string for logging purposes.
+ *
+ * @param array $array the array the convert
+ * @param array $keys an array of keys to include in the converted string. Set
+ * to false if all the keys in the array should be included
+ * @return string the converted string.
+ */
+function log_array($array, $keys = false) {
+ $output = array();
+
+ if ($keys == false) $keys = array_keys($array);
+
+ foreach ($keys as $key) {
+ $output[] = $key . ": " . $array[$key];
+ }
+
+ return implode('; ', $output);
+}
+
+/**
+ * Logs a message
+ *
+ * @param string $message the message to log
+ * @param int $level the log level
+ * @return bool true if the log has been written successfully
+ */
+function _log_write($message, $level = false) {
+ global $log;
+ static $levels;
+
+ if (!$levels) {
+ $levels = array(
+ SIMPLEID_LOG_DEBUG => 'DEBUG',
+ SIMPLEID_LOG_INFO => 'INFO',
+ SIMPLEID_LOG_NOTICE => 'NOTICE',
+ SIMPLEID_LOG_WARN => 'WARN',
+ SIMPLEID_LOG_ERROR => 'ERROR',
+ SIMPLEID_LOG_FATAL => 'FATAL'
+ );
+ }
+
+ /* If a priority hasn't been specified, use the default value. */
+ if ($level === false) {
+ $level = SIMPLEID_LOG_INFO;
+ }
+
+ /* Abort early if the priority is above the maximum logging level. */
+ if ($level > SIMPLEID_LOGLEVEL) {
+ return false;
+ }
+
+ /* If the log file isn't already open, open it now. */
+ if (($log == NULL) && !log_open()) {
+ return false;
+ }
+
+ /* Build the string containing the complete log line. */
+ $line = sprintf('%1$s %2$s [%3$s] %4$s', strftime(SIMPLEID_DATE_TIME_FORMAT), session_id(), $levels[$level], $message) . "\n";
+
+ /* Write the log line to the log file. */
+ $success = (fwrite($log, $line) !== false);
+
+ return $success;
+}
+
+?>