/** * @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)); } } }
/** * @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); } } } }