Esempio n. 1
0
 public function cropMedia(array $media, array $cropInfo)
 {
     /** @var $watermarkModel XenGallery_Model_Watermark */
     $watermarkModel = $this->getModelFromCache('XenGallery_Model_Watermark');
     if ($media['watermark_id']) {
         $watermarkModel->removeWatermarkFromImage($media);
     }
     $originalPath = $this->getOriginalDataFilePath($media, true);
     $tempFile = tempnam(XenForo_Helper_File::getTempDir(), 'xfmg');
     $image = new XenGallery_Helper_Image($originalPath);
     $cropped = $image->cropExact($cropInfo['crop_x1'], $cropInfo['crop_y1'], $cropInfo['crop_width'], $cropInfo['crop_height']);
     if ($cropped) {
         $this->deleteTagsByMediaId($media['media_id']);
         $image->saveToPath($tempFile);
         $imageInfo = $image->getImageInfo();
         $imageInfo['file_hash'] = $image->getFileHash();
         $media['file_hash'] = $imageInfo['file_hash'];
         $dw = XenForo_DataWriter::create('XenForo_DataWriter_AttachmentData');
         $dw->setExistingData($media['data_id']);
         $dw->setExtraData(XenForo_DataWriter_AttachmentData::DATA_TEMP_FILE, $tempFile);
         $dw->save();
         if (!$watermarkModel->canBypassWatermark() || $media['watermark_id']) {
             $imageInfo = $watermarkModel->addWatermarkToImage($media);
             $media['file_hash'] = $imageInfo['file_hash'];
         }
         return $imageInfo;
     }
     return false;
 }