private function startDvrs() { $liveStreamModel = $this->liveStream; if (is_null($liveStreamModel)) { // could be null if just external stream on external site return; } // there shouldn't already be one in progress but clear anyway to be sure $this->dvrLiveStreamUris()->delete(); foreach ($liveStreamModel->liveStreamUris as $uriModel) { $enabled = (bool) $uriModel->enabled; $uriForDvrBridgeService = (bool) $uriModel->dvr_bridge_service_uri; if ($enabled && $uriForDvrBridgeService) { $dvrLiveStreamUriModel = new DvrLiveStreamUri(); $dvrLiveStreamUriModel->liveStreamUri()->associate($uriModel); $dvrLiveStreamUriModel->mediaItemLiveStream()->associate($this); $this->dvrLiveStreamUris()->save($dvrLiveStreamUriModel); $responseInfo = self::makeDvrBridgeServiceRequest($uriModel->uri, "START", $dvrLiveStreamUriModel->id); if ($responseInfo["statusCode"] === 200 && !is_null($responseInfo['data']) && !is_null($responseInfo['data']['url'])) { // success. dvr has started // add url to dvr_live_stream_uris entry $dvrLiveStreamUriModel->uri = $responseInfo['data']['url']; $dvrLiveStreamUriModel->save(); } else { $dvrLiveStreamUriModel->delete(); } } } // there may be new domains now from the urls retrieved from the dvr bridge services Cache::forget("liveStreamDomains"); }