BxDolTranscoderProxy.php 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) UNA, Inc - https://una.io
  4. * MIT License - https://opensource.org/licenses/MIT
  5. *
  6. * @defgroup UnaCore UNA Core
  7. * @{
  8. */
  9. /**
  10. * This transcoder can be used as universal transcoder for videos and images.
  11. * Depending on original file MIME type it calls the appropriate transcoder.
  12. * Proxied transcoders names are specified in 'source_params' array:
  13. * - object: original file storage object
  14. * - image: image transcoder name
  15. * - video_poster: video transcoder name for video poster image
  16. * - video: video transcoders array to force conversion for
  17. */
  18. class BxDolTranscoderProxy extends BxDolTranscoder implements iBxDolFactoryObject
  19. {
  20. protected function __construct($aObject, $oStorage)
  21. {
  22. parent::__construct($aObject, $oStorage);
  23. $this->_oDb = new BxDolTranscoderImageQuery($aObject, false);
  24. $this->_sQueueTable = $this->_oDb->getQueueTable();
  25. }
  26. /**
  27. * Depending on original file mime type call appropriate transcoder
  28. */
  29. public function getFileUrl($mixedHandler)
  30. {
  31. $oStorageOriginal = BxDolStorage::getObjectInstance($this->_aObject['source_params']['object']);
  32. if (!$oStorageOriginal)
  33. return false;
  34. $aFile = $oStorageOriginal->getFile($mixedHandler);
  35. if (!$aFile)
  36. return false;
  37. $sTranscoder = '';
  38. if (0 === strncmp($aFile['mime_type'], 'image/', 6) && !empty($this->_aObject['source_params']['image'])) {
  39. $sTranscoder = $this->_aObject['source_params']['image'];
  40. }
  41. elseif (0 === strncmp($aFile['mime_type'], 'video/', 6) && !empty($this->_aObject['source_params']['video_poster'])) {
  42. $sTranscoder = $this->_aObject['source_params']['video_poster'];
  43. // if additional video transcoders provided call it to force video conversion
  44. if (!empty($this->_aObject['source_params']['video']))
  45. foreach ($this->_aObject['source_params']['video'] as $sVideoTranscoder) {
  46. if (!($oTranscoder = BxDolTranscoderVideo::getObjectInstance($sVideoTranscoder)))
  47. continue;
  48. $oTranscoder->getFileUrl($mixedHandler);
  49. }
  50. }
  51. if (!$sTranscoder)
  52. return false;
  53. if (!($oTranscoder = BxDolTranscoderImage::getObjectInstance($sTranscoder)))
  54. return false;
  55. return $oTranscoder->getFileUrl($mixedHandler);
  56. }
  57. }
  58. /** @} */