Ejemplo n.º 1
0
 public function getClassContentClassnamesByCategory($name)
 {
     $category = $this->getCategory($name);
     if (null === $category) {
         throw new \InvalidArgumentException("`{$name}` is not a valid classcontent category.");
     }
     $classnames = [];
     foreach ($category->getBlocks() as $block) {
         $classnames[] = AbstractClassContent::getClassnameByContentType($block->type);
     }
     return $classnames;
 }
Ejemplo n.º 2
0
 /**
  * Returns every pages that contains provided classcontent.
  *
  * @param string $contentType
  * @param string $contentUid
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 private function doGetCollectionByContent($contentType, $contentUid)
 {
     $content = null;
     $classname = AbstractClassContent::getClassnameByContentType($contentType);
     $em = $this->getApplication()->getEntityManager();
     try {
         $content = $em->find($classname, $contentUid);
     } catch (ClassNotFoundException $e) {
         throw new NotFoundHttpException("No classcontent found with provided type (:{$contentType})");
     }
     if (null === $content) {
         throw new NotFoundHttpException("No `{$classname}` exists with uid `{$contentUid}`");
     }
     $pages = $em->getRepository("BackBee\\ClassContent\\AbstractClassContent")->findPagesByContent($content);
     $response = $this->createResponse($this->formatCollection($pages));
     if (0 < count($pages)) {
         $response->headers->set('Content-Range', '0-' . (count($pages) - 1) . '/' . count($pages));
     }
     return $response;
 }
Ejemplo n.º 3
0
 /**
  * Returns classcontent if couple (type;uid) is valid.
  *
  * @param string $type short namespace of a classcontent
  *                     (full: BackBee\ClassContent\Block\paragraph => short: Block/paragraph)
  * @param string $uid
  *
  * @return AbstractClassContent
  */
 public function findOneByTypeAndUid($type, $uid)
 {
     $content = null;
     $classname = AbstractClassContent::getClassnameByContentType($type);
     if (null === ($content = $this->findOneBy(['_uid' => $uid]))) {
         throw new \InvalidArgumentException(sprintf('No `%s` exists with uid `%s`.', $classname, $uid));
     }
     return $content;
 }
Ejemplo n.º 4
0
 public static function onPostCall(Event $event)
 {
     $response = $event->getResponse();
     if ($response->headers->get('content-type') === 'text/html') {
         return;
     }
     $application = $event->getApplication();
     $renderer = $application->getRenderer();
     $content = json_decode($response->getContent());
     $result = false;
     if ($content instanceof \StdClass) {
         if (isset($content->type) && isset($content->parameters)) {
             if (isset($content->parameters->rendermode)) {
                 $result = true;
             }
         }
     }
     if (!$result) {
         return;
     }
     $rendermodeParam = $content->parameters->rendermode;
     $classname = AbstractClassContent::getClassnameByContentType($content->type);
     $modes = ['default' => 'Default mode'];
     foreach ($renderer->getAvailableRenderMode(new $classname()) as $mode) {
         $modes[$mode] = ucfirst(str_replace('_', ' ', $mode));
     }
     $rendermodeParam->options = $modes;
     $response->setContent(json_encode($content));
 }
 /**
  * Creates classcontent according to provided type.
  *
  * @param string  $type
  * @param Request $request
  *
  * @return Symfony\Component\HttpFoundation\Response
  *
  * @Rest\Security("is_fully_authenticated() & has_role('ROLE_API_USER')")
  */
 public function postAction($type, Request $request)
 {
     $classname = AbstractClassContent::getClassnameByContentType($type);
     $content = new $classname();
     $this->granted('CREATE', $content);
     $this->getEntityManager()->persist($content);
     $content->setDraft($this->getClassContentManager()->getDraft($content, true));
     $this->getEntityManager()->flush();
     $data = $request->request->all();
     if (0 < count($data)) {
         $data = array_merge($data, ['type' => $type, 'uid' => $content->getUid()]);
         $this->updateClassContent($type, $data['uid'], $data);
         $this->getEntityManager()->flush();
     }
     return $this->createJsonResponse(null, 201, ['BB-RESOURCE-UID' => $content->getUid(), 'Location' => $this->getApplication()->getRouting()->getUrlByRouteName('bb.rest.classcontent.get', ['version' => $request->attributes->get('version'), 'type' => $type, 'uid' => $content->getUid()], '', false)]);
 }
 /**
  * Runs revert post action on content and its draft.
  *
  * @param  AbstractClassContent $content
  * @param  Revision             $draft
  *
  * @return ClassContentManager
  */
 private function revertPostProcess(AbstractClassContent $content, Revision $draft)
 {
     $data = $draft->jsonSerialize();
     if (0 === count($data['parameters']) && (0 === count($data['elements']) || $content instanceof ContentSet && $data['elements']['current'] === $data['elements']['draft'])) {
         if ($content instanceof ContentSet) {
             $draft->clear();
         }
         if (AbstractClassContent::STATE_NEW === $content->getState()) {
             $classname = AbstractClassContent::getClassnameByContentType($content->getContentType());
             $this->entityManager->getRepository($classname)->deleteContent($content);
         } else {
             $this->entityManager->remove($draft);
         }
     }
     return $this;
 }
Ejemplo n.º 7
0
 /**
  * Alias to ClassContentRepository::findOneByTypeAndUid. In addition, it can also manage content's revision.
  *
  * @see BackBee\ClassContent\Repository\ClassContentRepository
  * @param  string  $type
  * @param  string  $uid
  * @param  boolean $hydrateDraft      if true and BBUserToken is setted, will try to get and set draft to content
  * @param  boolean $checkoutOnMissing this parameter is used only if hydrateDraft is true
  * @return AbstractClassContent
  */
 public function findOneByTypeAndUid($type, $uid, $hydrateDraft = false, $checkoutOnMissing = false)
 {
     $classname = AbstractClassContent::getClassnameByContentType($type);
     $content = $this->em->getRepository($classname)->findOneBy(['_uid' => $uid]);
     if (null !== $content && true === $hydrateDraft && null !== $this->token) {
         $content->setDraft($this->getDraft($content, $checkoutOnMissing));
     }
     return $content;
 }
Ejemplo n.º 8
0
 /**
  * Saves a new entry in media library
  *
  * @param Image $imageElement
  *
  * @return boolean $response
  *
  */
 protected function saveAndNew($imageElement, $elementParent = null)
 {
     $title = '';
     try {
         if (null !== $elementParent) {
             // clone the parent
             $newMediaImage = $elementParent->createClone();
             $newMediaImageData = $newMediaImage->getData();
             // get cloned image data
             $clonedImage = $newMediaImageData['image'];
             $title = $newMediaImageData['title']->getData('value');
         } else {
             $clonedImage = $imageElement->createClone();
             // create a new media image element and set the cloned image to it
             $mediaImageClass = AbstractClassContent::getClassnameByContentType('Media/Image');
             $newMediaImage = new $mediaImageClass();
             $newMediaImage->__set('image', $clonedImage);
         }
         $this->doActualCrop($clonedImage, false, $imageElement);
         // create the new media element
         $this->createNewMedia($newMediaImage, $title);
         return $newMediaImage;
     } catch (\Exception $e) {
         throw $e;
     }
 }
Ejemplo n.º 9
0
 private function getClassicCollection(Request $request, $mediafolder, $start, $count)
 {
     $params = $request->query->all();
     $contentType = $request->get('contentType', null);
     if (null !== $contentType) {
         try {
             $params['contentType'] = AbstractClassContent::getClassnameByContentType($contentType);
         } catch (InvalidContentTypeException $e) {
             throw new NotFoundHttpException(sprintf('Provided content type (:%s) is invalid.', $params['contentType']));
         }
     }
     return $this->getMediaRepository()->getMedias($mediafolder, $params, '_modified', 'desc', ['start' => $start, 'limit' => $count]);
 }