2 /* vim: set expandtab sw=4 ts=4 sts=4: */
4 * Holds class PMA_Message
12 * simple usage examples:
14 * // display simple error message 'Error'
15 * PMA_Message::error()->display();
17 * // get simple success message 'Success'
18 * $message = PMA_Message::success();
20 * // get special notice 'Some locale notice'
21 * $message = PMA_Message::notice('strSomeLocaleNotice');
24 * more advanced usage example:
26 * // create a localized success message
27 * $message = PMA_Message::success('strSomeLocaleMessage');
29 * // create another message, a hint, with a localized string which expects
30 * // two parameters: $strSomeFootnote = 'Read the %smanual%s'
31 * $hint = PMA_Message::notice('strSomeFootnote');
32 * // replace %d with the following params
33 * $hint->addParam('[a@./Documentation.html#cfg_Example@_blank]');
34 * $hint->addParam('[/a]');
35 * // add this hint as a footnote
36 * $hint = PMA_showHint($hint);
38 * // add the retrieved footnote reference to the original message
39 * $message->addMessage($hint);
41 * // create another message ...
42 * $more = PMA_Message::notice('strSomeMoreLocale');
43 * $more->addString('strSomeEvenMoreLocale', '<br />');
44 * $more->addParam('parameter for strSomeMoreLocale');
45 * $more->addParam('more parameter for strSomeMoreLocale');
47 * // and add it also to the original message
48 * $message->addMessage($more);
49 * // finally add another raw message
50 * $message->addMessage('some final words', ' - ');
52 * // display() will now print all messages in the same order as they are added
53 * $message->display();
54 * // strSomeLocaleMessage <sup>1</sup> strSomeMoreLocale<br />
55 * // strSomeEvenMoreLocale - some final words
61 const SUCCESS
= 1; // 0001
62 const NOTICE
= 2; // 0010
63 const ERROR
= 8; // 1000
65 const SANITIZE_NONE
= 0; // 0000 0000
66 const SANITIZE_STRING
= 16; // 0001 0000
67 const SANITIZE_PARAMS
= 32; // 0010 0000
68 const SANITIZE_BOOTH
= 48; // 0011 0000
75 static public $level = array (
76 PMA_Message
::SUCCESS
=> 'success',
77 PMA_Message
::NOTICE
=> 'notice',
78 PMA_Message
::ERROR
=> 'error',
87 protected $_number = PMA_Message
::NOTICE
;
90 * The locale string identifier
95 protected $_string = '';
98 * The formatted message
103 protected $_message = '';
106 * Whether the message was already displayed
111 protected $_is_displayed = false;
119 protected $_hash = null;
127 protected $_params = array();
130 * holds additional messages
135 protected $_added_messages = array();
140 * @uses PMA_Message::setNumber()
141 * @uses PMA_Message::setString()
142 * @uses PMA_Message::setParams()
143 * @uses PMA_Message::NOTICE
144 * @uses PMA_Message::SANITIZE_NONE
145 * @uses PMA_Message::SANITIZE_STRING
146 * @uses PMA_Message::SANITIZE_PARAMS
147 * @param string $string
148 * @param integer $number
149 * @param array $params
150 * @param integer $sanitize
152 public function __construct($string = '', $number = PMA_Message
::NOTICE
,
153 $params = array(), $sanitize = PMA_Message
::SANITIZE_NONE
)
155 $this->setString($string, $sanitize & PMA_Message
::SANITIZE_STRING
);
156 $this->setNumber($number);
157 $this->setParams($params, $sanitize & PMA_Message
::SANITIZE_PARAMS
);
161 * magic method: return string representation for this object
163 * @uses PMA_Message::getMessage()
166 public function __toString()
168 return $this->getMessage();
172 * get PMA_Message of type success
174 * shorthand for getting a simple success message
177 * @uses PMA_Message as returned object
178 * @uses PMA_Message::SUCCESS
179 * @param string $string a localized string e.g. __('Your SQL query has been executed successfully')
180 * @return PMA_Message
182 static public function success($string = '')
184 if (empty($string)) {
185 $string = __('Your SQL query has been executed successfully');
188 return new PMA_Message($string, PMA_Message
::SUCCESS
);
192 * get PMA_Message of type error
194 * shorthand for getting a simple error message
197 * @uses PMA_Message as returned object
198 * @uses PMA_Message::ERROR
199 * @param string $string a localized string e.g. __('Error')
200 * @return PMA_Message
202 static public function error($string = '')
204 if (empty($string)) {
205 $string = __('Error');
208 return new PMA_Message($string, PMA_Message
::ERROR
);
212 * get PMA_Message of type notice
214 * shorthand for getting a simple notice message
217 * @uses PMA_Message as returned object
218 * @uses PMA_Message::NOTICE
219 * @param string $string a localized string e.g. __('The additional features for working with linked tables have been deactivated. To find out why click %shere%s.')
220 * @return PMA_Message
222 static public function notice($string)
224 return new PMA_Message($string, PMA_Message
::NOTICE
);
228 * get PMA_Message with customized content
230 * shorthand for getting a customized message
233 * @uses PMA_Message as returned object
234 * @uses PMA_Message::setMessage()
235 * @param string $message
236 * @param integer $type
237 * @return PMA_Message
239 static public function raw($message, $type = PMA_Message
::NOTICE
)
241 $r = new PMA_Message('', $type);
242 $r->setMessage($message);
247 * get PMA_Message for number of affected rows
249 * shorthand for getting a customized message
252 * @uses PMA_Message as returned object
253 * @uses PMA_Message::success()
254 * @uses PMA_Message::addParam()
255 * @param integer $rows Number of rows
256 * @return PMA_Message
258 static public function affected_rows($rows)
260 $message = PMA_Message
::success(_ngettext('%1$d row affected.', '%1$d rows affected.', $rows));
261 $message->addParam($rows);
266 * get PMA_Message for number of deleted rows
268 * shorthand for getting a customized message
271 * @uses PMA_Message as returned object
272 * @uses PMA_Message::success()
273 * @uses PMA_Message::addParam()
274 * @param integer $rows Number of rows
275 * @return PMA_Message
277 static public function deleted_rows($rows)
279 $message = PMA_Message
::success(_ngettext('%1$d row deleted.', '%1$d rows deleted.', $rows));
280 $message->addParam($rows);
285 * get PMA_Message for number of inserted rows
287 * shorthand for getting a customized message
290 * @uses PMA_Message as returned object
291 * @uses PMA_Message::success()
292 * @uses PMA_Message::addParam()
293 * @param integer $rows Number of rows
294 * @return PMA_Message
296 static public function inserted_rows($rows)
298 $message = PMA_Message
::success(_ngettext('%1$d row inserted.', '%1$d rows inserted.', $rows));
299 $message->addParam($rows);
304 * get PMA_Message of type error with custom content
306 * shorthand for getting a customized error message
309 * @uses PMA_Message::raw()
310 * @uses PMA_Message::ERROR
311 * @param string $message
312 * @return PMA_Message
314 static public function rawError($message)
316 return PMA_Message
::raw($message, PMA_Message
::ERROR
);
320 * get PMA_Message of type notice with custom content
322 * shorthand for getting a customized notice message
325 * @uses PMA_Message::raw()
326 * @uses PMA_Message::NOTICE
327 * @param string $message
328 * @return PMA_Message
330 static public function rawNotice($message)
332 return PMA_Message
::raw($message, PMA_Message
::NOTICE
);
336 * get PMA_Message of type success with custom content
338 * shorthand for getting a customized success message
341 * @uses PMA_Message::raw()
342 * @uses PMA_Message::SUCCESS
343 * @param string $message
344 * @return PMA_Message
346 static public function rawSuccess($message)
348 return PMA_Message
::raw($message, PMA_Message
::SUCCESS
);
352 * returns whether this message is a success message or not
353 * and optionaly makes this message a success message
355 * @uses PMA_Message::SUCCESS
356 * @uses PMA_Message::setNumber()
357 * @uses PMA_Message::getNumber()
358 * @param boolean $set
359 * @return boolean whether this is a success message or not
361 public function isSuccess($set = false)
364 $this->setNumber(PMA_Message
::SUCCESS
);
367 return $this->getNumber() === PMA_Message
::SUCCESS
;
371 * returns whether this message is a notice message or not
372 * and optionally makes this message a notice message
374 * @uses PMA_Message::NOTICE
375 * @uses PMA_Message::setNumber()
376 * @uses PMA_Message::getNumber()
377 * @param boolean $set
378 * @return boolean whether this is a notice message or not
380 public function isNotice($set = false)
383 $this->setNumber(PMA_Message
::NOTICE
);
386 return $this->getNumber() === PMA_Message
::NOTICE
;
390 * returns whether this message is an error message or not
391 * and optionally makes this message an error message
393 * @uses PMA_Message::ERROR
394 * @uses PMA_Message::setNumber()
395 * @uses PMA_Message::getNumber()
396 * @param boolean $set
397 * @return boolean whether this is an error message or not
399 public function isError($set = false)
402 $this->setNumber(PMA_Message
::ERROR
);
405 return $this->getNumber() === PMA_Message
::ERROR
;
409 * set raw message (overrides string)
411 * @uses PMA_Message::$_message to set it
412 * @uses PMA_Message::sanitize()
413 * @param string $message
414 * @param boolean $sanitize whether to sanitize $message or not
416 public function setMessage($message, $sanitize = false)
419 $message = PMA_Message
::sanitize($message);
421 $this->_message
= $message;
425 * set string (does not take effect if raw message is set)
427 * @uses PMA_Message::$_string to set it
428 * @uses PMA_Message::sanitize()
429 * @param string $_string
430 * @param boolean $sanitize whether to sanitize $string or not
432 public function setString($_string, $sanitize = true)
435 $_string = PMA_Message
::sanitize($_string);
437 $this->_string
= $_string;
441 * set message type number
443 * @uses PMA_Message::$_number to set it
444 * @param integer $number
446 public function setNumber($number)
448 $this->_number
= $number;
452 * add parameter, usually in conjunction with strings
456 * $message->addParam('strLocale', false);
457 * $message->addParam('[em]some string[/em]');
458 * $message->addParam('<img src="img" />', false);
461 * @uses htmlspecialchars()
462 * @uses PMA_Message::$_params to fill
463 * @uses PMA_Message::notice()
464 * @param mixed $param
465 * @param boolean $raw
467 public function addParam($param, $raw = true)
469 if ($param instanceof PMA_Message
) {
470 $this->_params
[] = $param;
472 $this->_params
[] = htmlspecialchars($param);
474 $this->_params
[] = PMA_Message
::notice($param);
479 * add another string to be concatenated on displaying
481 * @uses PMA_Message::$_added_messages to fill
482 * @uses PMA_Message::notice()
483 * @param string $string to be added
484 * @param string $separator to use between this and previous string/message
486 public function addString($string, $separator = ' ')
488 $this->_added_messages
[] = $separator;
489 $this->_added_messages
[] = PMA_Message
::notice($string);
493 * add a bunch of messages at once
495 * @uses PMA_Message::addMessage()
496 * @param array $messages to be added
497 * @param string $separator to use between this and previous string/message
499 public function addMessages($messages, $separator = ' ')
501 foreach ($messages as $message) {
502 $this->addMessage($message, $separator);
507 * add another raw message to be concatenated on displaying
509 * @uses PMA_Message::$_added_messages to fill
510 * @uses PMA_Message::rawNotice()
511 * @param mixed $message to be added
512 * @param string $separator to use between this and previous string/message
514 public function addMessage($message, $separator = ' ')
516 if (strlen($separator)) {
517 $this->_added_messages
[] = $separator;
520 if ($message instanceof PMA_Message
) {
521 $this->_added_messages
[] = $message;
523 $this->_added_messages
[] = PMA_Message
::rawNotice($message);
528 * set all params at once, usually used in conjunction with string
530 * @uses PMA_Message::sanitize()
531 * @uses PMA_Message::$_params to set
532 * @param array $params
533 * @param boolean $sanitize
535 public function setParams($params, $sanitize = false)
538 $params = PMA_Message
::sanitize($params);
540 $this->_params
= $params;
544 * return all parameters
546 * @uses PMA_Message::$_params as return value
549 public function getParams()
551 return $this->_params
;
555 * return all added messages
557 * @uses PMA_Message::$_added_messages as return value
560 public function getAddedMessages()
562 return $this->_added_messages
;
570 * @uses htmlspecialchars()
571 * @uses PMA_Message::sanitize() recursive
572 * @param mixed $message the message(s)
573 * @return mixed the sanitized message(s)
576 static public function sanitize($message)
578 if (is_array($message)) {
579 foreach ($message as $key => $val) {
580 $message[$key] = PMA_Message
::sanitize($val);
586 return htmlspecialchars($message);
590 * decode $message, taking into account our special codes
595 * @param string $message the message
596 * @return string the decoded message
599 static public function decodeBB($message)
601 return PMA_sanitize($message, false, true);
605 * wrapper for sprintf()
608 * @uses func_get_args()
610 * @uses array_unshift()
611 * @uses call_user_func_array()
612 * @return string formatted
614 static public function format()
616 $params = func_get_args();
617 if (isset($params[1]) && is_array($params[1])) {
618 array_unshift($params[1], $params[0]);
619 $params = $params[1];
622 return call_user_func_array('sprintf', $params);
626 * returns unique PMA_Message::$_hash, if not exists it will be created
628 * @uses PMA_Message::$_hash as return value and to set it if required
629 * @uses PMA_Message::getNumber()
630 * @uses PMA_Message::$_string
631 * @uses PMA_Message::$_message
633 * @return string PMA_Message::$_hash
635 public function getHash()
637 if (null === $this->_hash
) {
649 * returns compiled message
651 * @uses PMA_Message::$_message as return value
652 * @uses PMA_Message::getString()
653 * @uses PMA_Message::getParams()
654 * @uses PMA_Message::format()
655 * @uses PMA_Message::decodeBB()
656 * @uses PMA_Message::getAddedMessages()
658 * @return string complete message
660 public function getMessage()
662 $message = $this->_message
;
664 if (0 === strlen($message)) {
665 $string = $this->getString();
666 if (isset($GLOBALS[$string])) {
667 $message = $GLOBALS[$string];
668 } elseif (0 === strlen($string)) {
675 if (count($this->getParams()) > 0) {
676 $message = PMA_Message
::format($message, $this->getParams());
679 $message = PMA_Message
::decodeBB($message);
681 foreach ($this->getAddedMessages() as $add_message) {
682 $message .= $add_message;
689 * returns PMA_Message::$_string
691 * @uses PMA_Message::$_string as return value
692 * @return string PMA_Message::$_string
694 public function getString()
696 return $this->_string
;
700 * returns PMA_Message::$_number
702 * @uses PMA_Message::$_number as return value
703 * @return integer PMA_Message::$_number
705 public function getNumber()
707 return $this->_number
;
711 * returns level of message
713 * @uses PMA_Message::$level
714 * @uses PMA_Message::getNumber()
715 * @return string level of message
717 public function getLevel()
719 return PMA_Message
::$level[$this->getNumber()];
723 * Displays the message in HTML
725 * @uses PMA_Message::getDisplay()
726 * @uses PMA_Message::isDisplayed()
728 public function display()
730 echo $this->getDisplay();
731 $this->isDisplayed(true);
735 * returns HTML code for displaying this message
737 * @uses PMA_Message::getLevel()
738 * @uses PMA_Message::getMessage()
740 * @return string whole message box
742 public function getDisplay()
744 return '<div class="' . $this->getLevel() . '">'
745 . $this->getMessage() . '</div>';
749 * sets and returns whether the message was displayed or not
751 * @uses PMA_Message::$_is_displayed to set it and/or return it
752 * @param boolean $is_displayed
753 * @return boolean PMA_Message::$_is_displayed
755 public function isDisplayed($is_displayed = false)
758 $this->_is_displayed
= true;
761 return $this->_is_displayed
;