diff --git a/application/core/APIv1_Controller.php b/application/core/APIv1_Controller.php
index 6432c87db..b0c98c6e5 100644
--- a/application/core/APIv1_Controller.php
+++ b/application/core/APIv1_Controller.php
@@ -1,9 +1,11 @@
load->library('LogLib', array(
+ 'classIndex' => 5,
+ 'functionIndex' => 5,
+ 'lineIndex' => 4,
+ 'dbLogType' => 'job', // required
+ 'dbExecuteUser' => 'Cronjob system'
+ ));
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ // Protected methods
+
+ /**
+ * Writes a cronjob info log
+ */
+ protected function logInfo($response, $parameters = null)
+ {
+ $this->_log(LogLib::INFO, 'Cronjob info', $response, $parameters);
+ }
+
+ /**
+ * Writes a cronjob debug log
+ */
+ protected function logDebug($response, $parameters = null)
+ {
+ $this->_log(LogLib::DEBUG, 'Cronjob debug', $response, $parameters);
+ }
+
+ /**
+ * Writes a cronjob warning log
+ */
+ protected function logWarning($response, $parameters = null)
+ {
+ $this->_log(LogLib::WARNING, 'Cronjob warning', $response, $parameters);
+ }
+
+ /**
+ * Writes a cronjob error log
+ */
+ protected function logError($response, $parameters = null)
+ {
+ $this->_log(LogLib::ERROR, 'Cronjob error', $response, $parameters);
+ }
+
+ //------------------------------------------------------------------------------------------------------------------
+ // Private methods
+
+ /**
+ * Writes a log to database
+ */
+ private function _log($level, $requestId, $response, $parameters)
+ {
+ $data = new stdClass();
+
+ $data->response = $response;
+ if ($parameters != null) $data->parameters = $parameters;
+
+ switch($level)
+ {
+ case LogLib::INFO:
+ $this->loglib->logInfoDB($requestId, json_encode(success($data, LogLib::INFO)));
+ break;
+ case LogLib::DEBUG:
+ $this->loglib->logDebugDB($requestId, json_encode(success($data, LogLib::DEBUG)));
+ break;
+ case LogLib::WARNING:
+ $this->loglib->logWarningDB($requestId, json_encode(error($data, LogLib::WARNING)));
+ break;
+ case LogLib::ERROR:
+ $this->loglib->logErrorDB($requestId, json_encode(error($data, LogLib::ERROR)));
+ break;
+ }
+ }
+}
diff --git a/application/libraries/LogLib.php b/application/libraries/LogLib.php
index cb0541003..b98575150 100644
--- a/application/libraries/LogLib.php
+++ b/application/libraries/LogLib.php
@@ -1,102 +1,252 @@
';
const LINE_SEPARATOR = ':';
- // --------------------------------------------------------------------------------------------------------------
- // Public methods
+ // CodeIgniter configuration log entry name and log debug value
+ const CI_LOG_THRESHOLD_NAME = 'log_threshold';
+ const CI_LOG_THRESHOLD_DEBUG = 2;
+
+ // LogLib parameters names
+ const P_NAME_CLASS_INDEX = 'classIndex';
+ const P_NAME_FUNCTION_INDEX = 'functionIndex';
+ const P_NAME_LINE_INDEX = 'lineIndex';
+ const P_NAME_DB_LOG_TYPE = 'dbLogType';
+ const P_NAME_DB_EXECUTE_USER = 'dbExecuteUser';
+
+ // Properties used to retrieve caller data
+ private $_classIndex;
+ private $_functionIndex;
+ private $_lineIndex;
+
+ // Properties used when logging to database
+ private $_dbLogType;
+ private $_dbExecuteUser;
/**
- * logDebug
+ * Set properties to a default value or overwrites them with the given parameters
+ */
+ public function __construct($params = null)
+ {
+ // Properties default values
+ $this->_classIndex = self::CLASS_INDEX;
+ $this->_functionIndex = self::FUNCTION_INDEX;
+ $this->_lineIndex = self::LINE_INDEX;
+ $this->_dbLogType = null;
+ $this->_dbExecuteUser = self::DB_EXECUTE_USER;
+
+ // If parameters are given then overwrite the default values
+ if (!isEmptyArray($params))
+ {
+ if (isset($params[self::P_NAME_CLASS_INDEX])) $this->_classIndex = $params[self::P_NAME_CLASS_INDEX];
+ if (isset($params[self::P_NAME_FUNCTION_INDEX])) $this->_functionIndex = $params[self::P_NAME_FUNCTION_INDEX];
+ if (isset($params[self::P_NAME_LINE_INDEX])) $this->_lineIndex = $params[self::P_NAME_LINE_INDEX];
+ if (isset($params[self::P_NAME_DB_LOG_TYPE])) $this->_dbLogType = $params[self::P_NAME_DB_LOG_TYPE];
+ if (isset($params[self::P_NAME_DB_EXECUTE_USER])) $this->_dbExecuteUser = $params[self::P_NAME_DB_EXECUTE_USER];
+ }
+ }
+
+ // --------------------------------------------------------------------------------------------------------------
+ // Public methods based on CodeIgniter log system
+
+ /**
+ * Writes a debug log to CodeIgniter log
*/
public function logDebug($message)
{
- $this->_log(LogLib::DEBUG, $message);
+ $this->_log(self::DEBUG, $message);
}
/**
- * logInfo
+ * Writes an info log to CodeIgniter log
*/
public function logInfo($message)
{
- $this->_log(LogLib::INFO, $message);
+ $this->_log(self::INFO, $message);
}
/**
- * logError
+ * Writes an error log to CodeIgniter log
*/
public function logError($message)
{
- $this->_log(LogLib::ERROR, $message);
+ $this->_log(self::ERROR, $message);
+ }
+
+ // --------------------------------------------------------------------------------------------------------------
+ // Public methods based on database
+
+ /**
+ * Writes an info log to database
+ */
+ public function logInfoDB($requestId, $data)
+ {
+ $this->_logDB(self::INFO, $requestId, $data);
+ }
+
+ /**
+ * Writes a debug log to database
+ */
+ public function logDebugDB($requestId, $data)
+ {
+ $this->_logDB(self::DEBUG, $requestId, $data);
+ }
+
+ /**
+ * Writes an warning log to database
+ */
+ public function logWarningDB($requestId, $data)
+ {
+ $this->_logDB(self::WARNING, $requestId, $data);
+ }
+
+ /**
+ * Writes an error log to database
+ */
+ public function logErrorDB($requestId, $data)
+ {
+ $this->_logDB(self::ERROR, $requestId, $data);
}
// --------------------------------------------------------------------------------------------------------------
// Private methods
/**
- * log
+ * Writes using CodeIgniter log system (file system)
*/
private function _log($level, $message)
{
- log_message($level, $this->_getCaller().$message);
+ log_message($level, $this->_getPrefix($this->_getCaller()).$message);
}
/**
- * _getCaller
+ * Writes logs to database
+ */
+ private function _logDB($level, $requestId, $data)
+ {
+ // If the _dbLogType parameter was not given when this library was loaded
+ // NOTE: this message will be displayed only to the developer AND stops the execution
+ if ($this->_dbLogType == null)
+ {
+ show_error('To log to database you need to specify the "'.self::P_NAME_DB_LOG_TYPE.'" parameter when the LogLib is loaded');
+ }
+
+ $ci =& get_instance(); // get code igniter instance
+
+ // If only debug log is enabed then is possible to write a debug log, otherwise...
+ if ($level == self::DEBUG && $ci->config->item(self::CI_LOG_THRESHOLD_NAME) != self::CI_LOG_THRESHOLD_DEBUG)
+ {
+ // ...do nothing
+ }
+ else
+ {
+ // Loads WebservicelogModel
+ $ci->load->model('system/Webservicelog_model', 'WebservicelogModel');
+
+ // Get caller data
+ $callerData = $this->_getCaller();
+
+ // Writes a log to database
+ $ci->WebservicelogModel->insert(array(
+ 'webservicetyp_kurzbz' => $this->_dbLogType,
+ 'request_id' => $requestId,
+ 'beschreibung' => $this->_getDatabaseDescription($callerData),
+ 'request_data' => $data,
+ 'execute_user' => $this->_dbExecuteUser,
+ 'execute_time' => 'NOW()' // current time
+ ));
+ }
+ }
+
+ /**
+ * Retrieves caller's data
*/
private function _getCaller()
{
- $classIndex = 3;
- $functionIndex = 3;
- $lineIndex = 2;
$class = '';
$function = '';
$line = '';
$backtrace_arr = debug_backtrace();
- if (isset($backtrace_arr[$classIndex]['class']) && $backtrace_arr[$classIndex]['class'] != '')
+
+ if (isset($backtrace_arr[$this->_classIndex]['class']) && $backtrace_arr[$this->_classIndex]['class'] != '')
{
- $class = $backtrace_arr[$classIndex]['class'];
+ $class = $backtrace_arr[$this->_classIndex]['class'];
}
- if (isset($backtrace_arr[$functionIndex]['function']) && $backtrace_arr[$functionIndex]['function'] != '')
+ if (isset($backtrace_arr[$this->_functionIndex]['function']) && $backtrace_arr[$this->_functionIndex]['function'] != '')
{
- $function = $backtrace_arr[$functionIndex]['function'];
+ $function = $backtrace_arr[$this->_functionIndex]['function'];
}
- if (isset($backtrace_arr[$lineIndex]['line']) && $backtrace_arr[$lineIndex]['line'] != '')
+ if (isset($backtrace_arr[$this->_lineIndex]['line']) && $backtrace_arr[$this->_lineIndex]['line'] != '')
{
- $line = $backtrace_arr[$lineIndex]['line'];
+ $line = $backtrace_arr[$this->_lineIndex]['line'];
}
- return $this->_format($class, $function, $line);
+ return array(
+ self::CLASS_NAME => $class,
+ self::FUNCTION_NAME => $function,
+ self::CODE_LINE => $line
+ );
}
/**
- * format
+ * Formats the log message prefix (file system based)
*/
- private function _format($class, $function, $line)
+ private function _getPrefix($callerData)
{
- $formatted = LogLib::CALLER_PREFIX;
+ $formatted = self::CALLER_PREFIX;
- if (!is_null($class) && $class != '')
+ if (!isEmptyString($callerData[self::CLASS_NAME]))
{
- $formatted .= $class.LogLib::CLASS_POSTFIX;
+ $formatted .= $callerData[self::CLASS_NAME].self::CLASS_POSTFIX;
}
- $formatted .= $function.LogLib::LINE_SEPARATOR.$line.LogLib::CALLER_POSTFIX.' ';
+ $formatted .= $callerData[self::FUNCTION_NAME].self::LINE_SEPARATOR.$callerData[self::CODE_LINE].self::CALLER_POSTFIX.' ';
+
+ return $formatted;
+ }
+
+ /**
+ * Formats the database description for a log
+ */
+ private function _getDatabaseDescription($callerData)
+ {
+ $formatted = $callerData[self::FUNCTION_NAME].self::LINE_SEPARATOR.$callerData[self::CODE_LINE];
+
+ if (!isEmptyString($callerData[self::CLASS_NAME]))
+ {
+ $formatted = $callerData[self::CLASS_NAME].self::CLASS_POSTFIX.$formatted;
+ }
return $formatted;
}
diff --git a/application/models/system/Webservicelog_model.php b/application/models/system/Webservicelog_model.php
index dc45b13a7..a5b23a396 100644
--- a/application/models/system/Webservicelog_model.php
+++ b/application/models/system/Webservicelog_model.php
@@ -1,13 +1,14 @@
dbTable = 'system.tbl_webservicelog';
$this->pk = 'webservicelog_id';
}
diff --git a/public/css/FilterWidget.css b/public/css/FilterWidget.css
index 295dff8ec..5254268c7 100644
--- a/public/css/FilterWidget.css
+++ b/public/css/FilterWidget.css
@@ -113,3 +113,19 @@
#applyFilter, #saveCustomFilterButton {
width: 100px;
}
+
+.text-red {
+ color: red;
+}
+
+.text-orange {
+ color: orange;
+}
+
+.text-blue {
+ color: blue;
+}
+
+.text-green {
+ color: green;
+}
diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php
index 4e720daef..1947debdb 100644
--- a/system/dbupdate_3.3.php
+++ b/system/dbupdate_3.3.php
@@ -3030,6 +3030,20 @@ if(!$result = @$db->db_query("SELECT stufe FROM public.tbl_dokumentstudiengang L
echo '
public.tbl_dokumentstudiengang: Spalte stufe hinzugefuegt';
}
+// Add new webservice type in system.tbl_webservicetyp
+if ($result = @$db->db_query("SELECT 1 FROM system.tbl_webservicetyp WHERE webservicetyp_kurzbz = 'job';"))
+{
+ if ($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO system.tbl_webservicetyp(webservicetyp_kurzbz, beschreibung) VALUES('job', 'Cronjob');";
+
+ if (!$db->db_query($qry))
+ echo 'system.tbl_webservicetyp '.$db->db_last_error().'
';
+ else
+ echo ' system.tbl_webservicetyp: Added webservice type "job"
';
+ }
+}
+
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '