BxAlbumsFormEntry.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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 Albums Albums
  7. * @ingroup UnaModules
  8. *
  9. * @{
  10. */
  11. /**
  12. * Create/Edit entry form
  13. */
  14. class BxAlbumsFormEntry extends BxBaseModTextFormEntry
  15. {
  16. public function __construct($aInfo, $oTemplate = false)
  17. {
  18. $this->MODULE = 'bx_albums';
  19. parent::__construct($aInfo, $oTemplate);
  20. }
  21. protected function _associalFileWithContent($oStorage, $iFileId, $iProfileId, $iContentId, $sPictureField = '')
  22. {
  23. parent::_associalFileWithContent($oStorage, $iFileId, $iProfileId, $iContentId, $sPictureField);
  24. $CNF = &$this->_oModule->_oConfig->CNF;
  25. $oTranscoder = BxDolTranscoderImage::getObjectInstance($CNF['OBJECT_IMAGES_TRANSCODER_BIG']);
  26. $sData = '';
  27. $sExif = '';
  28. $aExif = false;
  29. $aFile = $oStorage->getFile($iFileId);
  30. if ($oTranscoder->isMimeTypeSupported($aFile['mime_type'])) {
  31. $oImageReize = BxDolImageResize::getInstance();
  32. $a = $oImageReize->getImageSize($oTranscoder->getFileUrl($iFileId));
  33. $sData = isset($a['w']) && isset($a['h']) ? $a['w'] . 'x' . $a['h'] : '';
  34. if ($aExif = $oImageReize->getExifInfo($oStorage->getFileUrlById($iFileId))) {
  35. $a = array('Make', 'Model', 'FocalLength', 'ShutterSpeedValue', 'ExposureTime', 'ISOSpeedRatings', 'Orientation', 'Artist', 'Copyright', 'Flash', 'WhiteBalance', 'DateTimeOriginal', 'DateTimeDigitized', 'ExifVersion', 'COMPUTED', 'GPSLatitudeRef', 'GPSLatitude', 'GPSLongitudeRef', 'GPSLongitude', 'GPSAltitudeRef', 'GPSAltitude', 'GPSTimeStamp', 'GPSImgDirectionRef', 'GPSImgDirection', 'GPSDateStamp');
  36. $aExifFiltered = array();
  37. foreach ($a as $sIndex)
  38. if (isset($aExif[$sIndex]))
  39. $aExifFiltered[$sIndex] = $aExif[$sIndex];
  40. $sExif = serialize($aExifFiltered);
  41. }
  42. }
  43. if (false === $this->_oModule->_oDb->associateFileWithContent ($iContentId, $iFileId, $iProfileId, $this->getCleanValue('title-' . $iFileId), $sData, $sExif))
  44. return;
  45. $aMediaInfo = $this->_oModule->_oDb->getMediaInfoSimpleByFileId($iFileId);
  46. if ($aMediaInfo && !empty($CNF['OBJECT_METATAGS_MEDIA'])) {
  47. $oMetatags = BxDolMetatags::getObjectInstance($CNF['OBJECT_METATAGS_MEDIA']);
  48. if ($oMetatags->keywordsIsEnabled())
  49. $oMetatags->keywordsAdd($aMediaInfo['id'], $aMediaInfo['title']);
  50. }
  51. if ($aMediaInfo && isset($aExif['Make']) && !empty($CNF['OBJECT_METATAGS_MEDIA_CAMERA'])) {
  52. $oMetatags = BxDolMetatags::getObjectInstance($CNF['OBJECT_METATAGS_MEDIA_CAMERA']);
  53. if ($oMetatags->keywordsIsEnabled())
  54. $oMetatags->keywordsAddOne($aMediaInfo['id'], $oMetatags->keywordsCameraModel($aExif));
  55. }
  56. bx_alert($this->_oModule->getName(), 'media_added', $aMediaInfo['id'], $iProfileId, array('media_info' => $aMediaInfo));
  57. }
  58. function _deleteFile ($iFileId, $sStorage = '')
  59. {
  60. if (!($bRet = parent::_deleteFile ($iFileId)))
  61. return false;
  62. $aMediaInfo = $this->_oModule->_oDb->getMediaInfoSimpleByFileId($iFileId);
  63. $this->_oModule->serviceDeleteFileAssociations ($iFileId);
  64. if ($aMediaInfo)
  65. bx_alert($this->_oModule->getName(), 'media_deleted', $aMediaInfo['id'], $aMediaInfo['author'], array('media_info' => $aMediaInfo));
  66. return true;
  67. }
  68. function delete ($iContentId, $aContentInfo = array())
  69. {
  70. if (!($bRet = parent::delete ($iContentId, $aContentInfo)))
  71. return $bRet;
  72. if (!($aMediaList = $this->_oModule->_oDb->getMediaListByContentId($iContentId)))
  73. return $bRet;
  74. foreach ($aMediaList as $aMediaInfo) {
  75. $this->_oModule->serviceDeleteFileAssociations($aMediaInfo['file_id']);
  76. bx_alert($this->_oModule->getName(), 'media_deleted', $aMediaInfo['id'], $aMediaInfo['author'], array('media_info' => $aMediaInfo));
  77. }
  78. return $bRet;
  79. }
  80. }
  81. /** @} */