public function updateSecondaryResources(ActivityParameters $parameters, \stdClass $stepStructure) { // Store current resources to clean removed $existingResources = $parameters->getSecondaryResources(); $existingResources = $existingResources->toArray(); // Publish new resources $publishedResources = array(); if (!empty($stepStructure->resources)) { $i = 0; foreach ($stepStructure->resources as $resource) { $resourceNode = $this->om->getRepository('ClarolineCoreBundle:Resource\\ResourceNode')->findOneById($resource->resourceId); if (!empty($resourceNode)) { $parameters->addSecondaryResource($resourceNode); $publishedResources[] = $resourceNode; } else { $warning = $this->translator->trans('warning_compl_resource_deleted', array('resourceId' => $resource->resourceId, 'resourceName' => $resource->name), "innova_tools"); $this->session->getFlashBag()->add('warning', $warning); unset($stepStructure->resources[$i]); } $i++; } } // Clean removed resources foreach ($existingResources as $existingResource) { if (!in_array($existingResource, $publishedResources)) { $parameters->removeSecondaryResource($existingResource); } } return $this; }
/** * Copy parameters. * * @todo copy properties */ public function copyParameters(Activity $resource) { $parameters = new ActivityParameters(); foreach ($resource->getParameters()->getSecondaryResources() as $resource) { $parameters->getSecondaryResources()->add($resource); } return $parameters; }