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; }
public function import(array &$array, $name, $created) { $ds = DIRECTORY_SEPARATOR; foreach ($array['data'] as $item) { $description = file_get_contents($this->getRootPath() . $ds . $item['activity']['description']); $activity = new Activity(); $activity->setTitle($item['activity']['title']); $primaryResource = !empty($item['activity']['primary_resource']) && isset($created[$item['activity']['primary_resource']]) && $created[$item['activity']['primary_resource']] ? $created[$item['activity']['primary_resource']]->getResourceNode() : null; $activity->setPrimaryResource($primaryResource); $activity->setDescription($description); $parameters = new ActivityParameters(); $parameters->setMaxDuration($item['activity']['max_duration']); $parameters->setWho($item['activity']['who']); $parameters->setWhere($item['activity']['where']); $parameters->setEvaluationType($item['activity']['evaluation_type']); foreach ($item['activity']['secondary_resources'] as $secondaryResource) { //in a perfect world, this shouldn't happend if ($created[$secondaryResource['uid']]) { $parameters->addSecondaryResource($created[$secondaryResource['uid']]->getResourceNode()); } } $activity->setParameters($parameters); $this->om->persist($activity); $this->om->persist($parameters); return $activity; } }