public function testOnDelete() { /** @var CM_Model_StreamChannel_Media $streamChannel */ $streamChannel = CMTest_TH::createStreamChannel(); $archive = CMTest_TH::createStreamChannelVideoArchive($streamChannel, null, 'tempFileName.mp4'); CM_StreamChannel_Thumbnail::create($archive->getId(), 1); CM_StreamChannel_Thumbnail::create($archive->getId(), 1); CM_StreamChannel_Thumbnail::create($archive->getId(), 1); $this->_createArchiveFiles($archive); /** @var CM_File_UserContent[] $thumbnailFiles */ $thumbnailFiles = \Functional\map($archive->getThumbnails(), function (CM_StreamChannel_Thumbnail $thumbnail) { return $thumbnail->getFile(); }); $thumbnailDir = $thumbnailFiles[0]->getParentDirectory(); $mediaFile = $archive->getFile(); $this->assertCount(3, $archive->getThumbnails()); foreach ($thumbnailFiles as $file) { $this->assertTrue($file->exists()); } $this->assertTrue($thumbnailDir->exists()); $this->assertTrue($mediaFile->exists()); $archive->delete(); foreach ($thumbnailFiles as $file) { $this->assertFalse($file->exists()); } $this->assertFalse($thumbnailDir->exists()); $this->assertFalse($mediaFile->exists()); $this->assertCount(0, $archive->getThumbnails()); $exception = $this->catchException(function () use($archive) { CMTest_TH::reinstantiateModel($archive); }); $this->assertInstanceOf('CM_Exception_Nonexistent', $exception); }
public function testDelete() { $thumbnail = CM_StreamChannel_Thumbnail::create(1, 123); $file = $thumbnail->getFile(); $file->ensureParentDirectory(); $file->write('foo'); $thumbnail->delete(); $this->assertTrue($file->exists()); // file only deleted by batch-delete on archive-delete }
public function testPaging() { /** @var CM_Model_StreamChannel_Media $streamChannel */ $streamChannel = CMTest_TH::createStreamChannel(); $archive = CMTest_TH::createStreamChannelVideoArchive($streamChannel); $this->assertEquals([], $archive->getThumbnails()); $thumbnail1 = CM_StreamChannel_Thumbnail::create($archive->getId(), 2); $thumbnail2 = CM_StreamChannel_Thumbnail::create($archive->getId(), 1); $this->assertEquals([$thumbnail2, $thumbnail1], $archive->getThumbnails()); $this->assertEquals([$thumbnail2, $thumbnail1], $streamChannel->getThumbnails()); $thumbnail2->delete(); $this->assertEquals([$thumbnail1], $archive->getThumbnails()); $this->assertEquals([$thumbnail1], $streamChannel->getThumbnails()); $thumbnail1->delete(); $this->assertEquals([], $archive->getThumbnails()); $this->assertEquals([], $streamChannel->getThumbnails()); }
/** * @param string $streamChannelMediaId * @param CM_File $thumbnailSource * @param int $createStamp * @throws CM_Exception * @throws CM_Exception_Invalid */ public function importVideoThumbnail($streamChannelMediaId, CM_File $thumbnailSource, $createStamp) { $streamChannelMediaId = (string) $streamChannelMediaId; $createStamp = (int) $createStamp; if ($streamChannel = CM_Model_StreamChannel_Media::findByMediaId($streamChannelMediaId)) { $channelId = $streamChannel->getId(); } elseif ($streamChannelArchive = CM_Model_StreamChannelArchive_Media::findByMediaId($streamChannelMediaId)) { $channelId = $streamChannelArchive->getId(); } else { throw new CM_Exception_Invalid('No streamchannel or archive found', null, ['streamChannelMediaId' => $streamChannelMediaId]); } $thumbnail = CM_StreamChannel_Thumbnail::create($channelId, $createStamp); $thumbnailDestination = $thumbnail->getFile(); try { $thumbnailDestination->ensureParentDirectory(); $thumbnailSource->copyToFile($thumbnailDestination); } catch (CM_Exception $ex) { $thumbnail->delete(); throw $ex; } }