Created
September 26, 2011 19:18
-
-
Save foowie/1243102 to your computer and use it in GitHub Desktop.
ResultMessage
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?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