public function testJsonEncodeActivityNotice() { $this->params = ['activityNotice' => ['TestModel02' => ['notifyActions' => '*', 'serializeAttributes' => 'jsonData,model1.field1,model1.field3,workCalendar,resources,projectTasks']]]; $helper = new ActivityNoticeSerializer($this->params); $model = new TestModel02(); $model->model1 = new TestModel01(); $model->model1->field1 = "ABC"; $model->model1->field2 = "XYZ"; $model->model1->field3 = "GHI"; $model->projectTasks = ['abc', 'def']; $config = $helper->getActivityNoticeConfig('TestModel02', 'update', null); $data = $helper->getSerializeData($model, $config); $json = JsonHelper::encode($data); $obj = json_decode($json); $this->assertNull($obj->jsonData); $this->assertNull($obj->workCalendar); $this->assertNull($obj->resources); $this->assertTrue(is_array($obj->projectTasks)); $this->assertEquals("abc", $obj->projectTasks[0]); $this->assertEquals("def", $obj->projectTasks[1]); $this->assertNotNull($obj->model1); $this->assertEquals("ABC", $obj->model1->field1); $this->assertObjectNotHasAttribute("field2", $obj->model1); $this->assertEquals("GHI", $obj->model1->field3); }
/** * Send an activity notice using AMQP * @param ActivityNotice $notice * @return bool */ public function sendActivityNotice($notice) { if (!isset($notice)) { return false; } /** @var array $setting */ $setting = $this->params['amqpSetting']; try { if ($this->amqpClientLibrary == "PhpAmqpLib") { $connection = new AMQPStreamConnection($setting['host'], $setting['port'], $setting['user'], $setting['password']); $channel = $connection->channel(); $msg = new AMQPMessage(JsonHelper::encode($notice)); $channel->basic_publish($msg, $setting['exchangeName'], $setting['routingKey']); $channel->close(); $connection->close(); } elseif ($this->amqpClientLibrary == "PECL") { $connection = new \AMQPConnection(['host' => $setting['host'], 'port' => $setting['port'], 'login' => $setting['user'], 'password' => $setting['password']]); $connection->connect(); if ($connection->isConnected()) { $channel = new \AMQPChannel($connection); $exchange = new \AMQPExchange($channel); $exchange->setName($setting['exchangeName']); $exchange->publish(JsonHelper::encode($notice), $setting['routingKey']); $connection->disconnect(); } } else { return false; } } catch (\Exception $e) { return false; } return true; }