/** * Compare history revisions of object. * * @param int|string|null $id * @param int|string|null $base_revision * @param int|string|null $compare_revision * * @return Response * * @throws AccessDeniedException If access is not granted * @throws NotFoundHttpException If the object or revision does not exist or the audit reader is not available */ public function historyCompareRevisionsAction($id = null, $base_revision = null, $compare_revision = null) { if (false === $this->admin->isGranted('EDIT')) { throw new AccessDeniedException(); } $id = $this->get('request')->get($this->admin->getIdParameter()); $object = $this->admin->getObject($id); if (!$object) { throw new NotFoundHttpException(sprintf('unable to find the object with id : %s', $id)); } $manager = $this->get('sonata.admin.audit.manager'); if (!$manager->hasReader($this->admin->getClass())) { throw new NotFoundHttpException(sprintf('unable to find the audit reader for class : %s', $this->admin->getClass())); } $reader = $manager->getReader($this->admin->getClass()); // retrieve the base revision $base_object = $reader->find($this->admin->getClass(), $id, $base_revision); if (!$base_object) { throw new NotFoundHttpException(sprintf('unable to find the targeted object `%s` from the revision `%s` with classname : `%s`', $id, $base_revision, $this->admin->getClass())); } // retrieve the compare revision $compare_object = $reader->find($this->admin->getClass(), $id, $compare_revision); if (!$compare_object) { throw new NotFoundHttpException(sprintf('unable to find the targeted object `%s` from the revision `%s` with classname : `%s`', $id, $compare_revision, $this->admin->getClass())); } $this->admin->setSubject($base_object); return $this->render($this->admin->getTemplate('show_compare'), array('action' => 'show', 'object' => $base_object, 'object_compare' => $compare_object, 'elements' => $this->admin->getShow())); }
/** * return the Response object associated to the view action * * @return \Symfony\Component\HttpFoundation\Response */ public function showAction($id) { if (false === $this->admin->isGranted('SHOW')) { throw new AccessDeniedException(); } $object = $this->admin->getObject($this->get('request')->get($this->admin->getIdParameter())); if (!$object) { throw new NotFoundHttpException(sprintf('unable to find the object with id : %s', $id)); } $this->admin->setSubject($object); // build the show list $elements = $this->admin->getShow(); return $this->render($this->admin->getShowTemplate(), array( 'action' => 'show', 'object' => $object, 'elements' => $this->admin->getShow(), 'admin' => $this->admin, 'base_template' => $this->getBaseTemplate(), )); }