public function __construct(Step $step, $userIds = []) { $this->step = $step; $this->userIds = $userIds; $this->details = ['unlock' => ['path' => $step->getPath()->getId(), 'step' => $step->getId(), 'stepname' => $step->getName()]]; parent::__construct($step->getPath()->getResourceNode(), $this->details); }
/** * @param \Innova\PathBundle\Entity\Step $step * @param \stdClass $stepStructure * @return \Innova\PathBundle\Manager\PublishingManager * @throws \LogicException */ public function updateActivity(Step $step, \stdClass $stepStructure) { $newActivity = false; $activity = $step->getActivity(); if (empty($activity)) { if (!empty($stepStructure->activityId)) { // Load activity from DB $activity = $this->om->getRepository('ClarolineCoreBundle:Resource\\Activity')->findOneById($stepStructure->activityId); if (empty($activity)) { // Can't find Activity => create a new one $newActivity = true; $activity = new Activity(); } } else { // Create new activity $newActivity = true; $activity = new Activity(); } } // Update activity properties if (!empty($stepStructure->name)) { $name = $stepStructure->name; } else { // Create a default name $name = $step->getPath()->getName() . ' - ' . Step::DEFAULT_NAME . ' ' . $step->getOrder(); } $activity->setName($name); $activity->setTitle($name); $description = !empty($stepStructure->description) ? $stepStructure->description : ' '; $activity->setDescription($description); // Link resource if needed if (!empty($stepStructure->primaryResource) && !empty($stepStructure->primaryResource[0]) && !empty($stepStructure->primaryResource[0]->resourceId)) { $resource = $this->om->getRepository('ClarolineCoreBundle:Resource\\ResourceNode')->findOneById($stepStructure->primaryResource[0]->resourceId); if (!empty($resource)) { $activity->setPrimaryResource($resource); } else { $warning = $this->translator->trans('warning_primary_resource_deleted', array('resourceId' => $stepStructure->primaryResource[0]->resourceId, 'resourceName' => $stepStructure->primaryResource[0]->name), "innova_tools"); $this->session->getFlashBag()->add('warning', $warning); $stepStructure->primaryResource = array(); } } elseif ($activity->getPrimaryResource()) { // Step had a resource which has been deleted $activity->setPrimaryResource(null); } // Generate Claroline resource node and rights if ($newActivity) { // It's a new Activity, so use Step parameters $activity->setParameters($step->getParameters()); $activityType = $this->om->getRepository('ClarolineCoreBundle:Resource\\ResourceType')->findOneByName('activity'); $creator = $step->getPath()->getCreator(); $workspace = $step->getWorkspace(); // Store Activity in same directory than parent Path $parent = $step->getPath()->getResourceNode()->getParent(); if (empty($parent)) { $parent = $this->resourceManager->getWorkspaceRoot($workspace); } $activity = $this->resourceManager->create($activity, $activityType, $creator, $workspace, $parent); } else { // Activity already exists => update ResourceNode $activity->getResourceNode()->setName($activity->getTitle()); } // Update JSON structure $stepStructure->activityId = $activity->getId(); // Store Activity in Step $step->setActivity($activity); return $this; }
/** * @param Step $step * * @return \Symfony\Component\HttpFoundation\JsonResponse * @Route( * "/stepunlock/{step}", * name = "innova_path_step_callforunlock", * options = { "expose" = true } * ) * @Method("GET") */ public function callForUnlock(Step $step) { //array of user id to send the notification to = users who will receive the call : the path creator $creator = $step->getPath()->getCreator()->getId(); $userIds = [$creator]; //create an event, and pass parameters $event = new LogStepUnlockEvent($step, $userIds); //send the event to the event dispatcher $this->eventDispatcher->dispatch('log', $event); //update lockedcall value : set to true = called $user = $this->securityToken->getToken()->getUser(); $progression = $this->userProgressionManager->updateLockedState($user, $step, true, null, null, ''); //return response return new JsonResponse($progression); }