This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
Incam_SGD/thirdparty/ZendFramework/library/Zend/Log/Adapter/Db.php

154 lines
3.9 KiB
PHP
Raw Normal View History

<?php
/**
* Zend Framework
*
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://framework.zend.com/license/new-bsd
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@zend.com so we can send you a copy immediately.
*
* @category Zend
* @package Zend_Log
* @subpackage Adapter
* @copyright Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
/** Zend_Log_Adapter_Interface */
require_once 'Zend/Log/Adapter/Interface.php';
/** Zend_Log_Adapter_Exception */
require_once 'Zend/Log/Adapter/Exception.php';
/** Zend_Db_Adapter_Abstract */
require_once 'Zend/Db/Adapter/Abstract.php';
/**
* @category Zend
* @package Zend_Log
* @subpackage Adapter
* @copyright Copyright (c) 2005-2007 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/
class Zend_Log_Adapter_Db implements Zend_Log_Adapter_Interface
{
/**
* Database adapter instance.
*
* @var Zend_Db_Adapter
*/
protected $_dbAdapter = null;
/**
* Name of the log table in the database.
*
* @var string
*/
protected $_tableName = null;
/**
* Options to be set by setOption(). Sets the field names in the database table.
*
* @var array
*/
protected $_options = array('fieldMessage' => 'message',
'fieldLevel' => 'level');
/**
* Class constructor. Pass it a database adapter and the table name of the log table.
*
* @param Zend_Db_Adapter $dbAdapter
* @param string $tableName
*/
public function __construct(Zend_Db_Adapter_Abstract $dbAdapter, $tableName=null)
{
// Get the object handle to the database adapter
if (is_null($tableName)) {
throw new Zend_Log_Adapter_Exception('Database table name must be specified.');
}
$this->_dbAdapter = $dbAdapter;
$this->_tableName = $tableName;
}
/**
* Sets either 'fieldMessage' to change the field name where messages are logged,
* or 'fieldLevel' to change the field name where the log levels are logged.
*
* @param string $optionKey
* @param string $optionValue
*/
public function setOption($optionKey, $optionValue)
{
if (!array_key_exists($optionKey, $this->_options)) {
throw new Zend_Log_Adapter_Exception("Unknown option \"$optionKey\".");
}
$this->_options[$optionKey] = $optionValue;
}
/**
* Does nothing.
*
* @return bool
*/
public function open()
{
return true;
}
/**
* Does nothing.
*
* @return bool
*/
public function close()
{
return true;
}
/**
* Writes an array of key/value pairs to the database, where the keys are the
* database field names and values are what to put in those fields.
*
* @param array $fields
* @return bool
*/
public function write($fields)
{
/**
* If the field defaults for 'message' and 'level' have been changed
* in the options, replace the keys in the $field array.
*/
if ($this->_options['fieldMessage'] != 'message') {
$fields[$this->_options['fieldMessage']] = $fields['message'];
unset($fields['message']);
}
if ($this->_options['fieldLevel'] != 'level') {
$fields[$this->_options['fieldLevel']] = $fields['level'];
unset($fields['level']);
}
/**
* INSERT the log line into the database
*/
$this->_dbAdapter->insert($this->_tableName, $fields);
return true;
}
}