new generic message object
This commit is contained in:
@@ -6,11 +6,16 @@
|
||||
* @version $Id$
|
||||
*/
|
||||
|
||||
/**
|
||||
* base class
|
||||
*/
|
||||
require_once './libraries/Message.class.php';
|
||||
|
||||
/**
|
||||
* a single error
|
||||
*
|
||||
*/
|
||||
class PMA_Error
|
||||
class PMA_Error extends PMA_Message
|
||||
{
|
||||
/**
|
||||
* Error types
|
||||
@@ -54,20 +59,6 @@ class PMA_Error
|
||||
E_RECOVERABLE_ERROR => 'error',
|
||||
);
|
||||
|
||||
/**
|
||||
* The error number
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_number = 0;
|
||||
|
||||
/**
|
||||
* The error message/string
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_string = '';
|
||||
|
||||
/**
|
||||
* The file in which the error occured
|
||||
*
|
||||
@@ -97,13 +88,6 @@ class PMA_Error
|
||||
*/
|
||||
protected $_backtrace = array();
|
||||
|
||||
/**
|
||||
* Whether the error was already displayed
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $_is_displayed = false;
|
||||
|
||||
/**
|
||||
* Unique id
|
||||
*
|
||||
@@ -130,7 +114,7 @@ class PMA_Error
|
||||
public function __construct($errno, $errstr, $errfile, $errline, $errcontext)
|
||||
{
|
||||
$this->setNumber($errno);
|
||||
$this->setMessage($errstr);
|
||||
$this->setMessage($errstr, false);
|
||||
$this->setFile($errfile);
|
||||
$this->setLine($errline);
|
||||
$this->setContext($errcontext);
|
||||
@@ -176,28 +160,6 @@ class PMA_Error
|
||||
$this->_line = $line;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets PMA_Error::$_string
|
||||
*
|
||||
* @uses PMA_Error::$_string to set it
|
||||
* @param string $message
|
||||
*/
|
||||
public function setMessage($message)
|
||||
{
|
||||
$this->_string = $message;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets PMA_Error::$_number
|
||||
*
|
||||
* @uses PMA_Error::$_number to set it
|
||||
* @param integer $number
|
||||
*/
|
||||
public function setNumber($number)
|
||||
{
|
||||
$this->_number = $number;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets PMA_Error::$_file
|
||||
*
|
||||
@@ -272,28 +234,6 @@ class PMA_Error
|
||||
return $this->_line;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns PMA_Error::$_string
|
||||
*
|
||||
* @uses PMA_Error::$_string as return value
|
||||
* @return string PMA_Error::$_string
|
||||
*/
|
||||
public function getMessage()
|
||||
{
|
||||
return $this->_string;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns PMA_Error::$_number
|
||||
*
|
||||
* @uses PMA_Error::$_number as return value
|
||||
* @return integer PMA_Error::$_number
|
||||
*/
|
||||
public function getNumber()
|
||||
{
|
||||
return $this->_number;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns type of error
|
||||
*
|
||||
@@ -430,22 +370,6 @@ class PMA_Error
|
||||
$this->isDisplayed(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* sets and returns PMA_Error::$_is_displayed
|
||||
*
|
||||
* @uses PMA_Error::$_is_displayed
|
||||
* @param boolean $is_displayed
|
||||
* @return boolean PMA_Error::$_is_displayed
|
||||
*/
|
||||
public function isDisplayed($is_displayed = false)
|
||||
{
|
||||
if ($is_displayed){
|
||||
$this->_is_displayed = $is_displayed;
|
||||
}
|
||||
|
||||
return $this->_is_displayed;
|
||||
}
|
||||
|
||||
/**
|
||||
* whether this error is a user error
|
||||
*
|
||||
|
429
libraries/Message.class.php
Normal file
429
libraries/Message.class.php
Normal file
@@ -0,0 +1,429 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* Holds class PMA_Message
|
||||
*
|
||||
* @version $Id: Error.class.php 10738 2007-10-08 16:02:58Z cybot_tm $
|
||||
*/
|
||||
|
||||
/**
|
||||
* a single message
|
||||
*
|
||||
* Constructor:
|
||||
* @param string $string
|
||||
* @param integer $number
|
||||
* @param boolean $sanitize
|
||||
* @param scalare $parameters,...
|
||||
*/
|
||||
class PMA_Message
|
||||
{
|
||||
const SUCCESS = 1; // 0001
|
||||
const NOTICE = 2; // 0010
|
||||
const WARNING = 4; // 0100
|
||||
const ERROR = 8; // 1000
|
||||
|
||||
const SANITIZE_NONE = 0; // 0000 0000
|
||||
const SANITIZE_STRING = 16; // 0001 0000
|
||||
const SANITIZE_PARAMS = 32; // 0010 0000
|
||||
const SANITIZE_BOOTH = 48; // 0011 0000
|
||||
|
||||
/**
|
||||
* message levels
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
static public $level = array (
|
||||
PMA_Message::SUCCESS => 'success',
|
||||
PMA_Message::NOTICE => 'notice',
|
||||
PMA_Message::WARNING => 'warning',
|
||||
PMA_Message::ERROR => 'error',
|
||||
);
|
||||
|
||||
/**
|
||||
* The message number
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
protected $_number = PMA_Message::NOTICE;
|
||||
|
||||
/**
|
||||
* The locale string identifier
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_string = '';
|
||||
|
||||
/**
|
||||
* The formated message
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_message = '';
|
||||
|
||||
/**
|
||||
* Whether the message was already displayed
|
||||
*
|
||||
* @var boolean
|
||||
*/
|
||||
protected $_is_displayed = false;
|
||||
|
||||
/**
|
||||
* Unique id
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $_hash = null;
|
||||
|
||||
protected $_params = array();
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @uses debug_backtrace()
|
||||
* @uses PMA_Message::setNumber()
|
||||
* @uses PMA_Message::setMessage()
|
||||
* @param string $string
|
||||
* @param integer $number
|
||||
* @param boolean $sanitize
|
||||
* @param scalare $parameters,...
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$args = func_get_args();
|
||||
|
||||
if (isset($args[0])) {
|
||||
$this->setString(array_shift($args));
|
||||
}
|
||||
if (isset($args[0])) {
|
||||
$this->setNumber(array_shift($args));
|
||||
}
|
||||
|
||||
/*
|
||||
$sanitize = true;
|
||||
if (isset($args[0])) {
|
||||
$sanitize = array_shift($args);
|
||||
}
|
||||
|
||||
if (isset($args[0])) {
|
||||
$this->setParams($args);
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
public function __toString()
|
||||
{
|
||||
return $this->getMessage();
|
||||
}
|
||||
|
||||
public function append($message)
|
||||
{
|
||||
$this->setMessage($this->getMessage() . $message);
|
||||
}
|
||||
|
||||
public function isSuccess($set = false)
|
||||
{
|
||||
if ($set) {
|
||||
$this->setNumber(PMA_Message::SUCCESS);
|
||||
}
|
||||
|
||||
return $this->getNumber() & PMA_Message::SUCCESS;
|
||||
}
|
||||
|
||||
public function isNotice($set = false)
|
||||
{
|
||||
if ($set) {
|
||||
$this->setNumber(PMA_Message::NOTICE);
|
||||
}
|
||||
|
||||
return $this->getNumber() & PMA_Message::NOTICE;
|
||||
}
|
||||
|
||||
public function isWarning($set = false)
|
||||
{
|
||||
if ($set) {
|
||||
$this->setNumber(PMA_Message::WARNING);
|
||||
}
|
||||
|
||||
return $this->getNumber() & PMA_Message::WARNING;
|
||||
}
|
||||
|
||||
public function isError($set = false)
|
||||
{
|
||||
if ($set) {
|
||||
$this->setNumber(PMA_Message::ERROR);
|
||||
}
|
||||
|
||||
return $this->getNumber() & PMA_Message::ERROR;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets PMA_Message::$_message
|
||||
*
|
||||
* @uses PMA_Message::$_message to set it
|
||||
* @param string $message
|
||||
* @param boolean $sanitize
|
||||
*/
|
||||
public function setMessage($message, $sanitize = false)
|
||||
{
|
||||
if ($sanitize) {
|
||||
$message = PMA_Message::sanitize($message);
|
||||
}
|
||||
$this->_message = $message;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets PMA_Message::$_string
|
||||
*
|
||||
* @uses PMA_Message::$_string to set it
|
||||
* @param string $_string
|
||||
*/
|
||||
public function setString($_string, $sanitize = true)
|
||||
{
|
||||
if ($sanitize) {
|
||||
$_string = PMA_Message::sanitize($_string);
|
||||
}
|
||||
$this->_string = $_string;
|
||||
}
|
||||
|
||||
/**
|
||||
* sets PMA_Message::$_number
|
||||
*
|
||||
* @uses PMA_Message::$_number to set it
|
||||
* @param integer $number
|
||||
*/
|
||||
public function setNumber($number)
|
||||
{
|
||||
$this->_number = $number;
|
||||
}
|
||||
|
||||
public function addParam($param)
|
||||
{
|
||||
$this->_params[] = $param;
|
||||
}
|
||||
|
||||
public function setParams($params)
|
||||
{
|
||||
$this->_params = $params;
|
||||
}
|
||||
|
||||
public function getParams()
|
||||
{
|
||||
return $this->_params;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sanitizes $message, taking into account our special codes
|
||||
* for formatting
|
||||
*
|
||||
* @uses PREG_SET_ORDER
|
||||
* @uses in_array()
|
||||
* @uses preg_match_all()
|
||||
* @uses preg_match()
|
||||
* @uses preg_replace()
|
||||
* @uses substr()
|
||||
* @uses strtr()
|
||||
* @param string the message
|
||||
* @return string the sanitized message
|
||||
* @access public
|
||||
*/
|
||||
static public function sanitize($message)
|
||||
{
|
||||
$replace_pairs = array(
|
||||
'<' => '<',
|
||||
'>' => '>',
|
||||
'[i]' => '<em>', // deprecated by em
|
||||
'[/i]' => '</em>', // deprecated by em
|
||||
'[em]' => '<em>',
|
||||
'[/em]' => '</em>',
|
||||
'[b]' => '<strong>', // deprecated by strong
|
||||
'[/b]' => '</strong>', // deprecated by strong
|
||||
'[strong]' => '<strong>',
|
||||
'[/strong]' => '</strong>',
|
||||
'[tt]' => '<code>', // deprecated by CODE or KBD
|
||||
'[/tt]' => '</code>', // deprecated by CODE or KBD
|
||||
'[code]' => '<code>',
|
||||
'[/code]' => '</code>',
|
||||
'[kbd]' => '<kbd>',
|
||||
'[/kbd]' => '</kbd>',
|
||||
'[br]' => '<br />',
|
||||
'[/a]' => '</a>',
|
||||
'[sup]' => '<sup>',
|
||||
'[/sup]' => '</sup>',
|
||||
);
|
||||
$message = strtr($message, $replace_pairs);
|
||||
|
||||
$pattern = '/\[a@([^"@]*)@([^]"]*)\]/';
|
||||
|
||||
if (preg_match_all($pattern, $message, $founds, PREG_SET_ORDER)) {
|
||||
$valid_links = array(
|
||||
'http', // default http:// links (and https://)
|
||||
'./Do', // ./Documentation
|
||||
);
|
||||
|
||||
foreach ($founds as $found) {
|
||||
// only http... and ./Do... allowed
|
||||
if (! in_array(substr($found[1], 0, 4), $valid_links)) {
|
||||
return $message;
|
||||
}
|
||||
// a-z and _ allowed in target
|
||||
if (! empty($found[2]) && preg_match('/[^a-z_]+/i', $found[2])) {
|
||||
return $message;
|
||||
}
|
||||
}
|
||||
|
||||
$message = preg_replace($pattern, '<a href="\1" target="\2">', $message);
|
||||
}
|
||||
|
||||
return $message;
|
||||
}
|
||||
|
||||
static public function format()
|
||||
{
|
||||
$params = func_get_args();
|
||||
if (is_array($params[1])) {
|
||||
array_unshift($params[1], $params[0]);
|
||||
$params = $params[1];
|
||||
}
|
||||
|
||||
return call_user_func_array('sprintf', $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* returns unique PMA_Message::$_hash, if not exists it will be created
|
||||
*
|
||||
* @uses PMA_Message::$_hash as return value and to set it if required
|
||||
* @uses PMA_Message::getNumber()
|
||||
* @uses PMA_Message::getMessage()
|
||||
* @uses md5()
|
||||
* @param string $file
|
||||
* @return string PMA_Message::$_hash
|
||||
*/
|
||||
public function getHash()
|
||||
{
|
||||
if (null === $this->_hash) {
|
||||
$this->_hash = md5(
|
||||
$this->getNumber() .
|
||||
$this->getMessage()
|
||||
);
|
||||
}
|
||||
|
||||
return $this->_hash;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns PMA_Message::$_message
|
||||
*
|
||||
* @uses PMA_Message::$_message as return value
|
||||
* @return string PMA_Message::$_message
|
||||
*/
|
||||
public function getMessage()
|
||||
{
|
||||
$message = $this->_message;
|
||||
|
||||
if (0 === strlen($message)) {
|
||||
$message = $GLOBALS[$this->getString()];
|
||||
}
|
||||
|
||||
if (count($this->getParams()) > 0) {
|
||||
$message = PMA_Message::format($message, $this->getParams());
|
||||
}
|
||||
|
||||
return $message;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns PMA_Message::$_string
|
||||
*
|
||||
* @uses PMA_Message::$_string as return value
|
||||
* @return string PMA_Message::$_string
|
||||
*/
|
||||
public function getString()
|
||||
{
|
||||
return $this->_string;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns PMA_Message::$_number
|
||||
*
|
||||
* @uses PMA_Message::$_number as return value
|
||||
* @return integer PMA_Message::$_number
|
||||
*/
|
||||
public function getNumber()
|
||||
{
|
||||
return $this->_number;
|
||||
}
|
||||
|
||||
/**
|
||||
* returns level of message
|
||||
*
|
||||
* @uses PMA_Message::$level
|
||||
* @uses PMA_Message::getNumber()
|
||||
* @return string level of message
|
||||
*/
|
||||
public function getLevel()
|
||||
{
|
||||
return PMA_Message::$level[$this->getNumber()];
|
||||
}
|
||||
|
||||
/**
|
||||
* Displays the message in HTML
|
||||
*
|
||||
* @uses PMA_Message::getLevel()
|
||||
* @uses PMA_Message::getMessage()
|
||||
* @uses PMA_Message::isDisplayed()
|
||||
*/
|
||||
public function display()
|
||||
{
|
||||
echo '<div class="' . $this->getLevel() . '">';
|
||||
echo $this->getMessage();
|
||||
echo '</div>';
|
||||
$this->isDisplayed(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* displays a message
|
||||
*
|
||||
* @param string $string
|
||||
* @param integer $number
|
||||
* @param boolean $sanitize
|
||||
* @param scalare $parameter, ...
|
||||
*/
|
||||
static function sDisplay()
|
||||
{
|
||||
$args = func_get_args();
|
||||
$defaults = array(
|
||||
'',
|
||||
PMA_Message::NOTICE,
|
||||
true,
|
||||
);
|
||||
|
||||
if (! isset($args[0])) {
|
||||
trigger_error(__METHOD__ . ' called without arguments.', E_WARNING);
|
||||
return false;
|
||||
} else {
|
||||
foreach ($args as $key => $val) {
|
||||
$defaults[$key] = $val;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$message = new PMA_Message();
|
||||
}
|
||||
|
||||
/**
|
||||
* sets and returns PMA_Message::$_is_displayed
|
||||
*
|
||||
* @uses PMA_Message::$_is_displayed
|
||||
* @param boolean $is_displayed
|
||||
* @return boolean PMA_Message::$_is_displayed
|
||||
*/
|
||||
public function isDisplayed($is_displayed = false)
|
||||
{
|
||||
if ($is_displayed){
|
||||
$this->_is_displayed = $is_displayed;
|
||||
}
|
||||
|
||||
return $this->_is_displayed;
|
||||
}
|
||||
}
|
||||
?>
|
Reference in New Issue
Block a user