| 
									
										
										
										
											2019-08-31 20:22:08 +01:00
										 |  |  | <?php | 
					
						
							|  |  |  | // This file is part of GNU social - https://www.gnu.org/software/social
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // GNU social is free software: you can redistribute it and/or modify
 | 
					
						
							|  |  |  | // it under the terms of the GNU Affero General Public License as published by
 | 
					
						
							|  |  |  | // the Free Software Foundation, either version 3 of the License, or
 | 
					
						
							|  |  |  | // (at your option) any later version.
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // GNU social is distributed in the hope that it will be useful,
 | 
					
						
							|  |  |  | // but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					
						
							|  |  |  | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					
						
							|  |  |  | // GNU Affero General Public License for more details.
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // You should have received a copy of the GNU Affero General Public License
 | 
					
						
							|  |  |  | // along with GNU social.  If not, see <http://www.gnu.org/licenses/>.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * STOMP interface for GNU social queues | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @package   GNUsocial | 
					
						
							|  |  |  |  * @author    Miguel Dantas <biodantasgs@gmail.com> | 
					
						
							|  |  |  |  * @copyright 2019 Free Software Foundation, Inc http://www.fsf.org | 
					
						
							|  |  |  |  * @license   https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | defined('GNUSOCIAL') || die(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class StompQueuePlugin extends Plugin | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2019-12-11 02:20:54 +00:00
										 |  |  |     const PLUGIN_VERSION = '0.1.0'; | 
					
						
							| 
									
										
										
										
											2019-08-31 20:22:08 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     // settings which can be set in config.php with addPlugin('StompQueue', ['param'=>'value', ...]);
 | 
					
						
							|  |  |  |     public $servers = null; | 
					
						
							|  |  |  |     public $vhost = ''; | 
					
						
							|  |  |  |     public $username = 'guest'; | 
					
						
							|  |  |  |     public $password = 'guest'; | 
					
						
							|  |  |  |     public $basename = ''; | 
					
						
							|  |  |  |     public $control = 'gnusocial:control'; | 
					
						
							| 
									
										
										
										
											2019-09-02 21:13:26 +01:00
										 |  |  |     public $breakout = []; | 
					
						
							| 
									
										
										
										
											2019-08-31 20:22:08 +01:00
										 |  |  |     public $useTransactions = false; | 
					
						
							|  |  |  |     public $useAcks = false; | 
					
						
							|  |  |  |     public $manualFailover = false; | 
					
						
							|  |  |  |     public $defaultIdx = 0; | 
					
						
							|  |  |  |     public $persistent = []; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function onStartNewQueueManager(?QueueManager &$qm) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         if (empty($this->servers)) { | 
					
						
							|  |  |  |             throw new ServerException('Invalid STOMP server address'); | 
					
						
							|  |  |  |         } elseif (!is_array($this->servers)) { | 
					
						
							|  |  |  |             $this->servers = [$this->servers]; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if (empty($this->basename)) { | 
					
						
							|  |  |  |             $this->basename = 'queue:gnusocial-' . common_config('site', 'name') . ':'; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $qm = new StompQueueManager($this); | 
					
						
							|  |  |  |         return false; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public function onPluginVersion(array &$versions): bool | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2019-12-11 02:20:54 +00:00
										 |  |  |         $versions[] = [ | 
					
						
							|  |  |  |             'name' => 'StompQueue', | 
					
						
							|  |  |  |             'version' => self::PLUGIN_VERSION, | 
					
						
							|  |  |  |             'author' => 'Miguel Dantas', | 
					
						
							|  |  |  |             'homepage'    => GNUSOCIAL_ENGINE_URL, | 
					
						
							|  |  |  |             'description' => | 
					
						
							|  |  |  |             // TRANS: Plugin description.
 | 
					
						
							|  |  |  |             _m('Plugin implementing STOMP as a backend for GNU social queues') | 
					
						
							|  |  |  |         ]; | 
					
						
							| 
									
										
										
										
											2019-08-31 20:22:08 +01:00
										 |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | }; |