/** * Get the new and old image data * * @param Image $image * @param string $imagePath * @param boolean $generatePathFromClone * * @return array */ protected function getImageData(Image $image, $imagePath, $generatePathFromClone) { $imageData = []; if ($generatePathFromClone) { $clonedImage = $image->createClone(); $imageData['newImagePathFromContent'] = Media::getPathFromContent($clonedImage); unset($clonedImage); } else { $imageData['newImagePathFromContent'] = Media::getPathFromContent($image); } $imageData['oldImagePath'] = $this->application->getMediaDir() . DIRECTORY_SEPARATOR . $imagePath; $imageData['newImagePath'] = $this->application->getMediaDir() . DIRECTORY_SEPARATOR . $imageData['newImagePathFromContent']; // in some case Media:getPathFromContent does not return the file extension if (!pathinfo($imageData['newImagePath'], PATHINFO_EXTENSION)) { $oldExtension = '.' . pathinfo($imageData['oldImagePath'], PATHINFO_EXTENSION); $imageData['newImagePath'] .= $oldExtension; $imageData['newImagePathFromContent'] .= $oldExtension; } return $imageData; }
/** * Move an uploaded file to the temporary directory and update file content. * * @param \BackBee\CoreDomain\ClassContent\AbstractClassContent $file * @param string $newfilename * @param string $originalname * * @return boolean|string * @throws \BackBee\ClassContent\Exception\ClassContentException Occures on invalid content type provided */ public function updateFile(AbstractClassContent $file, $newfilename, $originalname = null, $src = null) { if (false === $file instanceof ElementFile) { throw new ClassContentException('Invalid content type'); } if (null === $originalname) { $originalname = $file->originalname; } $base_dir = $this->_temporarydir; $file->originalname = $originalname; $file->path = Media::getPathFromContent($file); if (null === $file->getDraft()) { $base_dir = $this->isInMediaLibrary($file) ? $this->_mediadir : $this->_storagedir; } $moveto = $file->path; File::resolveFilepath($moveto, null, array('base_dir' => $base_dir)); try { if ($src === null) { File::resolveFilepath($newfilename, null, array('base_dir' => $this->_temporarydir)); File::move($newfilename, $moveto); } else { $dir = dirname($moveto); if (!is_dir($dir)) { File::mkdir($dir); } file_put_contents($moveto, base64_decode($src)); } $this->dispatchPostUploadEvent($moveto, $file->path); } catch (\BackBee\Exception\BBException $e) { return false; } return $moveto; }