Skip to content

Instantly share code, notes, and snippets.

@foowie
Created September 26, 2011 19:18
Show Gist options
  • Select an option

  • Save foowie/1243102 to your computer and use it in GitHub Desktop.

Select an option

Save foowie/1243102 to your computer and use it in GitHub Desktop.
ResultMessage
<?php
class ResultMessages extends Object {
const TYPE_INFO = "info";
const TYPE_WARNING = "warning";
const TYPE_ERROR = "error";
/** array(message, type, error-persistent) */
protected $messages = array();
protected $data = null;
public function getData() {
return $this->data;
}
public function setData($data) {
$this->data = $data;
return $this;
}
/**
* Adds message with info character
* @param string $message
* @param bool $errorPersistent
* @return $this
*/
public function addInfo($message, $errorPersistent = false) {
return $this->add($message, self::TYPE_INFO, $errorPersistent);
}
/**
* Adds message with error character
* @param string $message
* @param bool $errorPersistent
* @return $this
*/
public function addError($message, $errorPersistent = true) {
return $this->add($message, self::TYPE_ERROR, $errorPersistent);
}
/**
* Adds message with warning character
* @param string $message
* @param bool $errorPersistent
* @return $this
*/
public function addWarning($message, $errorPersistent = true) {
return $this->add($message, self::TYPE_WARNING, $errorPersistent);
}
/**
* Adds message
* @param string $message
* @param string $type
* @param bool $errorPersistent
* @return $this
*/
protected function add($message, $type, $errorPersistent = true) {
$this->messages[] = array($message, $type, $errorPersistent);
return $this;
}
/**
* Displays messages as flash messages
* @param FormControl $control
* @return $this
*/
public function showAsFlashMessages($control = null) {
$control = $control === null ? Environment::getApplication()->getPresenter() : $control;
foreach ($this->messages as $message) {
$control->flashMessage($message[0], $message[1]);
}
return $this;
}
/**
* Alias for showAsFlashMessages
* @param FormControl $control
* @return $this
*/
public function show($control) {
return $this->showAsFlashMessages($control);
}
/**
* Displays messages in console
* @return ResultMessages
*/
public function showInConsole() {
foreach ($this->messages as $message) {
echo(Strings::upper($message[1]) . ": " . $message[0] . "\n");
}
return $this;
}
/**
* Contains messages errors?
* @return bool
*/
public function hasErrors() {
foreach ($this->messages as $message)
if ($message[1] == self::TYPE_ERROR)
return true;
return false;
}
/**
* Get first error
* @return string|null
*/
public function getError() {
foreach ($this->messages as $message)
if ($message[1] == self::TYPE_ERROR)
return $message[0];
return null;
}
/**
* Transfer all errors to warnings
* @return $this
*/
public function errorsToWarnings() {
foreach ($this->messages as $key => $message) {
if ($message[1] == self::TYPE_ERROR)
$this->messages[$key][1] = self::TYPE_WARNING;
}
return $this;
}
/**
* Clear all messages
* @return $this
*/
public function clear() {
$this->messages = array();
return $return;
}
/**
* Adds all messages from ResultMessages into this
* @param ResultMessages $rm
* @return $this
*/
public function addRM(ResultMessages $rm) {
foreach ($rm->messages as $message)
$this->messages[] = $message;
return $this;
}
/**
* Adds exception
* @param Exception $e
* @return $this
*/
public function addException($e) {
if ($e->getMessage() === "") // nepřidávat prázdné pole
return $this;
return $this->addError($e->getMessage());
}
/**
* Deletes all messages that are not persistent
* @return $this
*/
public function clearUnpersistent() {
foreach ($this->messages as $key => $message) {
if (!$message[2])
unset($this->messages[$key]);
}
return $this;
}
public function __toString() {
$result = "";
$first = true;
foreach ($this->messages as $message) {
list($msg, $type) = $message;
if (!$first)
$result .= "\n";
$result .= Strings::upper($type) . ": " . $msg;
$first = false;
}
return $result;
}
/**
* @return ResultMessages
*/
public static function create() {
return new ResultMessages();
}
/**
* @return ResultMessages
*/
public static function createInfo($message, $errorPersistent = false) {
return self::create()->addInfo($message, $errorPersistent);
}
/**
* @return ResultMessages
*/
public static function createWarning($message, $errorPersistent = true) {
return self::create()->addWarning($message, $errorPersistent);
}
/**
* @return ResultMessages
*/
public static function createError($message, $errorPersistent = true) {
return self::create()->addError($message, $errorPersistent);
}
public function throwOnError($exceptionClass = "ServiceException", $addMessage = true) {
if($this->hasErrors())
throw new $exceptionClass($addMessage ? $this->getError() : null);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment