/**
  * @param StatusableInterface $document
  *
  * @return \OpenOrchestra\ApiBundle\Facade\StatusCollectionFacade
  */
 protected function listStatuses(StatusableInterface $document)
 {
     $transitions = $document->getStatus()->getFromRoles();
     $possibleStatuses = array();
     foreach ($transitions as $transition) {
         $possibleStatuses[] = $transition->getToStatus();
     }
     return $this->get('open_orchestra_api.transformer_manager')->get('status_collection')->transform($possibleStatuses, $document);
 }
 /**
  * @param StatusableInterface $document
  * @param StatusInterface     $toStatus
  *
  * @return bool
  */
 public function isGranted(StatusableInterface $document, StatusInterface $toStatus)
 {
     $fromStatus = $document->getStatus();
     if ($fromStatus->getId() != $toStatus->getId()) {
         $role = $this->roleRepository->findOneByFromStatusAndToStatus($fromStatus, $toStatus);
         $workflowFunctions = $this->workflowFunctionRepository->findByRole($role);
         foreach ($workflowFunctions as $workflowFunction) {
             if ($this->authorizationChecker->isGranted($workflowFunction->getId(), $document)) {
                 return true;
             }
         }
         return false;
     }
     return true;
 }
 /**
  * @param StatusableInterface $document
  * @param StatusInterface     $toStatus
  *
  * @return bool
  */
 public function isGranted(StatusableInterface $document, StatusInterface $toStatus)
 {
     $fromStatus = $document->getStatus();
     $role = $this->roleRepository->findOneByFromStatusAndToStatus($fromStatus, $toStatus);
     return !($role && !$this->authorizationChecker->isGranted(array($role->getName())));
 }
 /**
  * @param NodeInterface $element
  *
  * @return array
  */
 public function findAllCurrentlyPublishedByElementId(StatusableInterface $element)
 {
     return $this->findBy(array('nodeId' => $element->getNodeId(), 'language' => $element->getLanguage(), 'siteId' => $element->getSiteId(), 'currentlyPublished' => true));
 }