public function rotateMedia(array $media, $rotation = 90) { /** @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); $rotated = $image->rotate($rotation); if ($rotated) { $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(); /** @var $watermarkModel XenGallery_Model_Watermark */ $watermarkModel = $this->getModelFromCache('XenGallery_Model_Watermark'); if (!$watermarkModel->canBypassWatermark() || $media['watermark_id']) { $watermarked = $watermarkModel->addWatermarkToImage($media); if ($watermarked) { $imageInfo = $watermarked; $media['file_hash'] = $imageInfo['file_hash']; } } return $imageInfo; } return false; }