BxBaseUploaderRecordVideo.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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 UnaBaseView UNA Base Representation Classes
  7. * @{
  8. */
  9. /**
  10. * Upload files using WebRTC webcam capture.
  11. * @see BxDolUploader
  12. */
  13. define('BX_UPLOADER_AUDIO_BITRATE', 128000); //128Kbit for audio
  14. define('BX_UPLOADER_VIDEO_BITRATE', 1000000); //1Mbit for video
  15. class BxBaseUploaderRecordVideo extends BxBaseUploaderSimple
  16. {
  17. protected $_sUploaderFormTemplate = 'uploader_form_record_video.html';
  18. function __construct ($aObject, $sStorageObject, $sUniqId, $oTemplate)
  19. {
  20. parent::__construct($aObject, $sStorageObject, $sUniqId, $oTemplate);
  21. $this->_sButtonTemplate = 'uploader_button_record_video.html';
  22. }
  23. public function getUploaderButton($mixedGhostTemplate, $isMultiple = true, $aParams = array(), $bDynamic = false) {
  24. if (!$aParams) $aParams = [];
  25. $aParams['audio_bitrate'] = BX_UPLOADER_AUDIO_BITRATE;
  26. $aParams['video_bitrate'] = BX_UPLOADER_VIDEO_BITRATE;
  27. return parent::getUploaderButton($mixedGhostTemplate, $isMultiple, $aParams, $bDynamic);
  28. }
  29. public function getUploaderButtonTitle($mixed = false)
  30. {
  31. return _t('_sys_uploader_record_video_button_name');
  32. }
  33. public function addCssJs ($bDynamic = false) {
  34. $sAddon = $this->_oTemplate->addJs('RecordRTC.min.js', $bDynamic);
  35. $sAddon .= $this->_oTemplate->addJsTranslation([
  36. '_sys_uploader_camera_capture_failed',
  37. '_sys_uploader_record_video_mb',
  38. '_sys_uploader_unsupported_browser',
  39. ], $bDynamic);
  40. return parent::addCssJs($bDynamic).($bDynamic ? $sAddon : '');
  41. }
  42. protected function getRestrictionsText ()
  43. {
  44. $sTextRestrictions = '';
  45. $oStorage = BxDolStorage::getObjectInstance($this->_sStorageObject);
  46. if (!$oStorage)
  47. return '';
  48. $sTextRestrictions = $oStorage->getRestrictionsTextFileSize(bx_get_logged_profile_id());
  49. if ($sTextRestrictions)
  50. $sTextRestrictions = '<div class="bx-uploader-msg-info bx-def-font-grayed">' . $sTextRestrictions . '</div>';
  51. return $sTextRestrictions;
  52. }
  53. /**
  54. * Handle uploads here.
  55. * @param $mixedFiles as usual $_FILES['some_name'] array, but maybe some other params depending on the uploader
  56. * @return nothing, but if some files failed to upload, the actual error message can be determined by calling BxDolUploader::getUploadErrorMessages()
  57. */
  58. public function handleUploads ($iProfileId, $mixedFiles, $isMultiple = true, $iContentId = false, $bPrivate = true)
  59. {
  60. //suppress any output here, because we are not posting to an iframe anymore and thus we must avoid a call to a window.parent as in parent::handleUploads
  61. //instead we are posting via AJAX to pass a recorded video as a blob object via a FormData object
  62. ob_start();
  63. parent::handleUploads($iProfileId, $mixedFiles, $isMultiple, $iContentId, $bPrivate);
  64. ob_end_clean();
  65. echo bx_js_string($this->getUploadErrorMessages(), BX_ESCAPE_STR_APOS);
  66. }
  67. }
  68. /** @} */