65 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * @package   FOF
 | |
|  * @copyright Copyright (c)2010-2021 Nicholas K. Dionysopoulos / Akeeba Ltd
 | |
|  * @license   GNU General Public License version 2, or later
 | |
|  */
 | |
| 
 | |
| namespace FOF30\Cli\Traits;
 | |
| 
 | |
| defined('_JEXEC') || die;
 | |
| 
 | |
| /**
 | |
|  * Sometimes other extensions will try to enqueue messages to the application. Methods for those tasks only exists in
 | |
|  * web applications, so we have to replicate their behavior in CLI environment or fatal errors will occur
 | |
|  *
 | |
|  * @package FOF30\Cli\Traits
 | |
|  */
 | |
| trait MessageAware
 | |
| {
 | |
| 	/** @var array Queue holding all messages */
 | |
| 	protected $messageQueue = [];
 | |
| 
 | |
| 	/**
 | |
| 	 * @param $msg
 | |
| 	 * @param $type
 | |
| 	 *
 | |
| 	 * @return null
 | |
| 	 */
 | |
| 	public function enqueueMessage($msg, $type)
 | |
| 	{
 | |
| 		// Don't add empty messages.
 | |
| 		if (trim($msg) === '')
 | |
| 		{
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		$message = ['message' => $msg, 'type' => strtolower($type)];
 | |
| 
 | |
| 		if (!in_array($message, $this->messageQueue))
 | |
| 		{
 | |
| 			// Enqueue the message.
 | |
| 			$this->messageQueue[] = $message;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Loosely based on Joomla getMessageQueue
 | |
| 	 *
 | |
| 	 * @param bool $clear
 | |
| 	 *
 | |
| 	 * @return array
 | |
| 	 */
 | |
| 	public function getMessageQueue($clear = false)
 | |
| 	{
 | |
| 		$messageQueue = $this->messageQueue;
 | |
| 
 | |
| 		if ($clear)
 | |
| 		{
 | |
| 			$this->messageQueue = [];
 | |
| 		}
 | |
| 
 | |
| 		return $messageQueue;
 | |
| 	}
 | |
| }
 |