/** * Updating the image. Inspired by FileController::updateFileAction(). * * @param DiaporamaImage $file Diaporama Image ID. * @param string $eventName the event type. * * @return DiaporamaImage */ protected function updateImageFile(DiaporamaImage $file) { $fileUpdateForm = $this->createForm($file->getUpdateFormId()); try { if (null === $file) { throw new \InvalidArgumentException(sprintf('%d image id does not exist', $file->getId())); } $event = new FileCreateOrUpdateEvent(null); $event->setModel($file); $event->setOldModel($file); $fileForm = $this->getRequest()->files->get($fileUpdateForm->getName()); if (isset($fileForm['file'])) { $event->setUploadedFile($fileForm['file']); } $this->dispatch(TheliaEvents::IMAGE_SAVE, $event); $fileUpdated = $event->getModel(); $this->adminLogAppend(AdminResources::MODULE, AccessManager::UPDATE, sprintf('Image with Ref %s (ID %d) modified', $fileUpdated->getTitle(), $fileUpdated->getId())); if ($this->getRequest()->get('save_mode') == 'close') { return $this->generateRedirect(URL::getInstance()->absoluteUrl($file->getRedirectionUrl(), ['current_tab' => 'images'])); } else { return $this->generateSuccessRedirect($fileUpdateForm); } } catch (PropelException $e) { $message = $e->getMessage(); } catch (\Exception $e) { $message = sprintf('Sorry, an error occurred: %s', $e->getMessage() . ' ' . $e->getFile()); } if (isset($message)) { Tlog::getInstance()->error(sprintf('Error during image editing : %s.', $message)); $fileUpdateForm->setErrorMessage($message); $this->getParserContext()->addForm($fileUpdateForm)->setGeneralError($message); } return $file; }
/** * Set old model value * * @param FileModelInterface $oldModelDocument * @deprecated deprecated since version 2.0.3. Use FileCreateOrUpdateEvent instead */ public function setOldModelDocument($oldModelDocument) { parent::setOldModel($oldModelDocument); }
/** * Manage how a file is updated * * @param int $fileId File identifier * @param string $parentType Parent Type owning file being saved * @param string $objectType the type of the file, image or document * @param string $eventName the event type. * * @return FileModelInterface */ protected function updateFileAction($fileId, $parentType, $objectType, $eventName) { $message = false; $fileManager = $this->getFileManager(); $fileModelInstance = $fileManager->getModelInstance($objectType, $parentType); $fileUpdateForm = $fileModelInstance->getUpdateFormInstance($this->getRequest()); /** @var FileModelInterface $file */ $file = $fileModelInstance->getQueryInstance()->findPk($fileId); try { $oldFile = clone $file; if (null === $file) { throw new \InvalidArgumentException(sprintf('%d %s id does not exist', $fileId, $objectType)); } $data = $this->validateForm($fileUpdateForm)->getData(); $event = new FileCreateOrUpdateEvent(null); if (array_key_exists('visible', $data)) { $file->setVisible($data['visible'] ? 1 : 0); } $file->setLocale($data['locale']); if (array_key_exists('title', $data)) { $file->setTitle($data['title']); } if (array_key_exists('chapo', $data)) { $file->setChapo($data['chapo']); } if (array_key_exists('description', $data)) { $file->setDescription($data['description']); } if (array_key_exists('postscriptum', $data)) { $file->setPostscriptum($data['postscriptum']); } if (isset($data['file'])) { $file->setFile($data['file']); } $event->setModel($file); $event->setOldModel($oldFile); $files = $this->getRequest()->files; $fileForm = $files->get($fileUpdateForm->getName()); if (isset($fileForm['file'])) { $event->setUploadedFile($fileForm['file']); } $this->dispatch($eventName, $event); $fileUpdated = $event->getModel(); $this->adminLogAppend(AdminResources::retrieve($parentType), AccessManager::UPDATE, sprintf('%s with Ref %s (ID %d) modified', ucfirst($objectType), $fileUpdated->getTitle(), $fileUpdated->getId())); if ($this->getRequest()->get('save_mode') == 'close') { if ($objectType == 'document') { $tab = 'documents'; } else { $tab = 'images'; } return $this->generateRedirect(URL::getInstance()->absoluteUrl($file->getRedirectionUrl(), ['current_tab' => $tab])); } else { return $this->generateSuccessRedirect($fileUpdateForm); } } catch (FormValidationException $e) { $message = sprintf('Please check your input: %s', $e->getMessage()); } catch (PropelException $e) { $message = $e->getMessage(); } catch (\Exception $e) { $message = sprintf('Sorry, an error occurred: %s', $e->getMessage() . ' ' . $e->getFile()); } if ($message !== false) { Tlog::getInstance()->error(sprintf('Error during %s editing : %s.', $objectType, $message)); $fileUpdateForm->setErrorMessage($message); $this->getParserContext()->addForm($fileUpdateForm)->setGeneralError($message); } return $file; }
/** * Set old model value * * @param FileModelInterface $oldModelImage * @deprecated deprecated since version 2.0.3. Use FileCreateOrUpdateEvent instead */ public function setOldModelImage($oldModelImage) { parent::setOldModel($oldModelImage); }