From e29b5078ab55e64a6f49b3e57160c2e66a2810e8 Mon Sep 17 00:00:00 2001 From: Michel Meyer Date: Thu, 7 Jul 2016 10:33:32 +0200 Subject: [PATCH 1/3] Remove unreliable hasStreamPublish method from StreamChannel_Media --- library/CM/MediaStreams/Service.php | 4 +--- library/CM/Model/StreamChannel/Media.php | 23 ++++++++++++----------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/library/CM/MediaStreams/Service.php b/library/CM/MediaStreams/Service.php index 7b99e13c5..ca846e0ac 100644 --- a/library/CM/MediaStreams/Service.php +++ b/library/CM/MediaStreams/Service.php @@ -27,9 +27,7 @@ public function checkStreams() { if ($streamChannel instanceof CM_StreamChannel_DisallowInterface) { /** @var CM_Model_StreamChannel_Media|CM_StreamChannel_DisallowInterface $streamChannel */ $streamChannelIsValid = $streamChannel->isValid(); - if ($streamChannel->hasStreamPublish()) { - /** @var CM_Model_Stream_Publish $streamPublish */ - $streamPublish = $streamChannel->getStreamPublish(); + if ($streamPublish = $streamChannel->findStreamPublish()) { if (!$streamChannelIsValid || !$this->_isPublishAllowed($streamPublish)) { $this->_stopStream($streamPublish); } diff --git a/library/CM/Model/StreamChannel/Media.php b/library/CM/Model/StreamChannel/Media.php index 2bd4c9f1d..c4a032d4a 100644 --- a/library/CM/Model/StreamChannel/Media.php +++ b/library/CM/Model/StreamChannel/Media.php @@ -31,21 +31,22 @@ public function getMediaId() { } /** - * @return CM_Model_Stream_Publish - * @throws CM_Exception_Invalid + * @return CM_Model_Stream_Publish|null */ - public function getStreamPublish() { - if (!$this->hasStreamPublish()) { - throw new CM_Exception_Invalid('StreamChannel `' . $this->getId() . '` has no StreamPublish.'); - } + public function findStreamPublish() { return $this->getStreamPublishs()->getItem(0); } /** - * @return boolean + * @return CM_Model_Stream_Publish + * @throws CM_Exception_Invalid */ - public function hasStreamPublish() { - return (boolean) $this->getStreamPublishs()->getCount(); + public function getStreamPublish() { + $publish = $this->findStreamPublish(); + if (null === $publish) { + throw new CM_Exception_Invalid('StreamChannel `' . $this->getId() . '` has no StreamPublish.'); + } + return $publish; } /** @@ -57,8 +58,8 @@ public function getServerId() { public function jsonSerialize() { $array = parent::jsonSerialize(); - if ($this->hasStreamPublish()) { - $array['user'] = $this->getStreamPublish()->getUser(); + if ($publish = $this->findStreamPublish()) { + $array['user'] = $publish->getUser(); } return $array; } From 9217766a8a5bc9a13a6ee2ca859e497208c75959 Mon Sep 17 00:00:00 2001 From: Michel Meyer Date: Thu, 7 Jul 2016 10:45:21 +0200 Subject: [PATCH 2/3] Re-add hasStreamPublish, but not based on CM_Paging_Abstract::getCount --- library/CM/Model/StreamChannel/Media.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/library/CM/Model/StreamChannel/Media.php b/library/CM/Model/StreamChannel/Media.php index c4a032d4a..2b1c23d85 100644 --- a/library/CM/Model/StreamChannel/Media.php +++ b/library/CM/Model/StreamChannel/Media.php @@ -49,6 +49,13 @@ public function getStreamPublish() { return $publish; } + /** + * @return bool + */ + public function hasStreamPublish() { + return null !== $this->findStreamPublish(); + } + /** * @return int */ From 91b15d28b33a5d1513996c8ffd2e2891f2cab51e Mon Sep 17 00:00:00 2001 From: Michel Meyer Date: Thu, 7 Jul 2016 11:22:41 +0200 Subject: [PATCH 3/3] Fix CM_MediaStreams_ServiceTest --- tests/library/CM/MediaStreams/ServiceTest.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/tests/library/CM/MediaStreams/ServiceTest.php b/tests/library/CM/MediaStreams/ServiceTest.php index 9d02c4617..b8b98146d 100644 --- a/tests/library/CM/MediaStreams/ServiceTest.php +++ b/tests/library/CM/MediaStreams/ServiceTest.php @@ -8,8 +8,7 @@ public function testCheckStreamsInvalidStreamChannel() { $streamChannel = $this->mockClass('CM_Model_StreamChannel_Media', ['CM_StreamChannel_DisallowInterface'])->newInstanceWithoutConstructor(); $streamChannel->mockMethod('isValid')->set(false); - $streamChannel->mockMethod('hasStreamPublish')->set(true); - $streamChannel->mockMethod('getStreamPublish')->set($streamPublish); + $streamChannel->mockMethod('findStreamPublish')->set($streamPublish); $streamChannel->mockMethod('getStreamSubscribes')->set([$streamSubscribe]); $streamRepository = $this->mockClass('CM_MediaStreams_StreamRepository')->newInstanceWithoutConstructor(); @@ -37,8 +36,7 @@ public function testCheckStreamsValidStreamChannel() { $streamChannel = $this->mockClass('CM_Model_StreamChannel_Media', ['CM_StreamChannel_DisallowInterface'])->newInstanceWithoutConstructor(); $streamChannel->mockMethod('isValid')->set(true); - $streamChannel->mockMethod('hasStreamPublish')->set(true); - $streamChannel->mockMethod('getStreamPublish')->set($streamPublish); + $streamChannel->mockMethod('findStreamPublish')->set($streamPublish); $streamChannel->mockMethod('getStreamSubscribes')->set([$streamSubscribe]); $streamRepository = $this->mockClass('CM_MediaStreams_StreamRepository')->newInstanceWithoutConstructor(); @@ -75,8 +73,7 @@ public function testCheckStreamsNoConnectionsDisallowed() { $streamChannel = $this->mockClass('CM_Model_StreamChannel_Media')->newInstanceWithoutConstructor(); $isValidMethod = $streamChannel->mockMethod('isValid'); - $streamChannel->mockMethod('hasStreamPublish')->set(true); - $streamChannel->mockMethod('getStreamPublish')->set($streamPublish); + $streamChannel->mockMethod('findStreamPublish')->set($streamPublish); $streamChannel->mockMethod('getStreamSubscribes')->set([$streamSubscribe]); $streamRepository = $this->mockClass('CM_MediaStreams_StreamRepository')->newInstanceWithoutConstructor();