/**
  * @param ActivityListProviderInterface $provider
  * @param $mapFields
  *
  * @return Criteria
  */
 protected function getCriteriaByProvider(ActivityListProviderInterface $provider, $mapFields)
 {
     $activityClass = $provider->getActivityClass();
     $aclClass = $provider->getAclClass();
     $criteria = new Criteria();
     $appliedCriteria = $this->aclHelper->applyAclToCriteria($aclClass, $criteria, 'VIEW', $mapFields);
     $isGranted = $this->securityContextLink->getService()->isGranted('VIEW', 'entity:' . $aclClass);
     if ($isGranted) {
         $appliedCriteria->andWhere(Criteria::expr()->eq('relatedActivityClass', $activityClass));
     }
     return $appliedCriteria;
 }
 /**
  * @param object                        $entity
  * @param ActivityListProviderInterface $provider
  * @param string                        $verb
  * @param ActivityList|null             $list
  *
  * @return ActivityList
  */
 protected function getActivityListEntityForEntity($entity, ActivityListProviderInterface $provider, $verb = ActivityList::VERB_CREATE, $list = null)
 {
     if ($provider->isApplicable($entity)) {
         if (!$list) {
             $list = new ActivityList();
         }
         $list->setSubject($provider->getSubject($entity));
         $list->setDescription($this->htmlTagHelper->stripTags($this->htmlTagHelper->purify($provider->getDescription($entity))));
         $this->setDate($entity, $provider, $list);
         if ($this->hasGrouping($provider)) {
             $list->setHead($provider->isHead($entity));
         }
         $list->setVerb($verb);
         if ($verb === ActivityList::VERB_UPDATE) {
             $activityListTargets = $list->getActivityListTargetEntities();
             foreach ($activityListTargets as $target) {
                 $list->removeActivityListTarget($target);
             }
         } else {
             $className = $this->doctrineHelper->getEntityClass($entity);
             $list->setRelatedActivityClass($className);
             $list->setRelatedActivityId($this->doctrineHelper->getSingleEntityIdentifier($entity));
             $list->setOrganization($provider->getOrganization($entity));
         }
         $targets = $provider->getTargetEntities($entity);
         foreach ($targets as $target) {
             if ($list->supportActivityListTarget($this->doctrineHelper->getEntityClass($target))) {
                 $list->addActivityListTarget($target);
             }
         }
         return $list;
     }
     return null;
 }
 /**
  * Set Create and Update fields
  *
  * @param $entity
  * @param ActivityListProviderInterface $provider
  * @param ActivityList $list
  */
 protected function setDate($entity, ActivityListProviderInterface $provider, $list)
 {
     if ($provider instanceof ActivityListDateProviderInterface) {
         if ($provider->getCreatedAt($entity)) {
             $list->setCreatedAt($provider->getCreatedAt($entity));
         }
         if ($provider->getUpdatedAt($entity)) {
             $list->setUpdatedAt($provider->getUpdatedAt($entity));
         }
     }
 }
示例#4
0
 /**
  * @param ActivityListProviderInterface $provider
  * @param object $entity
  * @param ActivityList $activityList
  */
 protected function fillOwners(ActivityListProviderInterface $provider, $entity, ActivityList $activityList)
 {
     $oldActivityOwners = $activityList->getActivityOwners();
     $newActivityOwners = $provider->getActivityOwners($entity, $activityList);
     $newActivityOwners = new ArrayCollection($newActivityOwners);
     foreach ($oldActivityOwners as $oldOwner) {
         if (!$oldOwner->isOwnerInCollection($newActivityOwners)) {
             $activityList->removeActivityOwner($oldOwner);
         }
     }
     if ($newActivityOwners) {
         foreach ($newActivityOwners as $newOwner) {
             if (!$newOwner->isOwnerInCollection($oldActivityOwners)) {
                 $activityList->addActivityOwner($newOwner);
             }
         }
     }
 }