value pairs for airtime.conf protected static $_properties; // Constant form field names for passing errors back to the front-end const RMQ_USER = "rmqUser", RMQ_PASS = "rmqPass", RMQ_PORT = "rmqPort", RMQ_HOST = "rmqHost", RMQ_VHOST = "rmqVHost"; // Message and error fields to return to the front-end static $message = null; static $errors = array(); function __construct($settings) { static::$_properties = array( "host" => $settings[self::RMQ_HOST], "port" => $settings[self::RMQ_PORT], "user" => $settings[self::RMQ_USER], "password" => $settings[self::RMQ_PASS], "vhost" => $settings[self::RMQ_VHOST], ); } /** * @return array associative array containing a display message and fields with errors */ function runSetup() { try { if ($this->checkRMQConnection()) { self::$message = "Connection successful!"; } else { $this->identifyRMQConnectionError(); } } catch(Exception $e) { $this->identifyRMQConnectionError(); } return array( "message" => self::$message, "errors" => self::$errors ); } function checkRMQConnection() { $conn = new \PhpAmqpLib\Connection\AMQPConnection(self::$_properties["host"], self::$_properties["port"], self::$_properties["user"], self::$_properties["password"], self::$_properties["vhost"]); $this->writeToTemp(); return isset($conn); } function identifyRMQConnectionError() { // It's impossible to identify errors coming out of amqp.inc without a major // rewrite, so for now just tell the user ALL THE THINGS went wrong self::$message = _("Couldn't connect to RabbitMQ server! Please check if the server " . "is running and your credentials are correct."); self::$errors[] = self::RMQ_USER; self::$errors[] = self::RMQ_PASS; self::$errors[] = self::RMQ_HOST; self::$errors[] = self::RMQ_PORT; self::$errors[] = self::RMQ_VHOST; } }