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; }