/** * @param ActivityList $entity * @param [] $targetEntityData * * @return array */ public function getEntityViewModel(ActivityList $entity, $targetEntityData = []) { $entityProvider = $this->chainProvider->getProviderForEntity($entity->getRelatedActivityClass()); $activity = $this->doctrineHelper->getEntity($entity->getRelatedActivityClass(), $entity->getRelatedActivityId()); $ownerName = ''; $ownerId = ''; $owner = $entity->getOwner(); if ($owner) { $ownerName = $this->entityNameResolver->getName($owner); if ($this->securityFacade->isGranted('VIEW', $owner)) { $ownerId = $owner->getId(); } } $editorName = ''; $editorId = ''; $editor = $entity->getEditor(); if ($editor) { $editorName = $this->entityNameResolver->getName($editor); if ($this->securityFacade->isGranted('VIEW', $editor)) { $editorId = $editor->getId(); } } $isHead = $this->getHeadStatus($entity, $entityProvider); $relatedActivityEntities = $this->getRelatedActivityEntities($entity, $entityProvider); $numberOfComments = $this->commentManager->getCommentCount($entity->getRelatedActivityClass(), $relatedActivityEntities); $data = $entityProvider->getData($entity); if (isset($data['isHead']) && !$data['isHead']) { $isHead = false; } $result = ['id' => $entity->getId(), 'owner' => $ownerName, 'owner_id' => $ownerId, 'editor' => $editorName, 'editor_id' => $editorId, 'verb' => $entity->getVerb(), 'subject' => $entity->getSubject(), 'description' => $entity->getDescription(), 'data' => $data, 'relatedActivityClass' => $entity->getRelatedActivityClass(), 'relatedActivityId' => $entity->getRelatedActivityId(), 'createdAt' => $entity->getCreatedAt()->format('c'), 'updatedAt' => $entity->getUpdatedAt()->format('c'), 'editable' => $this->securityFacade->isGranted('EDIT', $activity), 'removable' => $this->securityFacade->isGranted('DELETE', $activity), 'commentCount' => $numberOfComments, 'commentable' => $this->commentManager->isCommentable(), 'targetEntityData' => $targetEntityData, 'is_head' => $isHead]; return $result; }
/** * @param ActivityList $activityList * @param EntityManager $entityManager * @param bool $update */ protected function setUpdatedProperties(ActivityList $activityList, EntityManager $entityManager, $update = false) { $newUpdatedAt = new \DateTime('now', new \DateTimeZone('UTC')); $newUpdatedBy = $this->getUser($entityManager); $unitOfWork = $entityManager->getUnitOfWork(); if ($update && $newUpdatedBy != $activityList->getEditor()) { $unitOfWork->propertyChanged($activityList, 'updatedAt', $activityList->getUpdatedAt(), $newUpdatedAt); $unitOfWork->propertyChanged($activityList, 'editor', $activityList->getEditor(), $newUpdatedBy); } $activityList->setUpdatedAt($newUpdatedAt); $activityList->setEditor($newUpdatedBy); }