Exemplo n.º 1
0
 /**
  * Publish path
  * Create all needed Entities from JSON structure created by the Editor
  * @param  \Innova\PathBundle\Entity\Path\Path $path
  * @throws \Exception
  * @return boolean
  */
 public function publish(Path $path)
 {
     // We need to publish all linked resources to have a full working Path
     // Start Publishing
     $this->start($path);
     // Store existing steps to remove steps which no longer exist
     $existingSteps = $path->getSteps()->toArray();
     // Publish steps for this path
     $toProcess = !empty($this->pathStructure->steps) ? $this->pathStructure->steps : array();
     /*//echo "JSON steps : <br>\n";var_dump($this->pathStructure->steps);*/
     $publishedSteps = $this->publishSteps(0, null, $toProcess);
     // Clean steps to remove
     $this->cleanSteps($publishedSteps, $existingSteps);
     // flush all steps
     $this->om->flush();
     // replace ids
     $json = $this->replaceStepIds();
     $json = $this->replaceStepConditionId($json);
     $json = $this->replaceCriteriagroupId($json);
     $json = $this->replaceCriteriaId($json);
     //echo "json final :".$json;
     // Re encode updated structure and update Path
     $this->path->setStructure($json);
     // Manage rights
     $this->manageRights();
     // Mark Path as published
     $this->path->setPublished(true);
     $this->path->setModified(false);
     // Persist data
     $this->om->persist($this->path);
     $this->om->flush();
     // End Publishing
     $this->end();
     return true;
 }
Exemplo n.º 2
0
 /**
  * Publish path
  * Create all needed Entities from JSON structure created by the Editor.
  *
  * @param \Innova\PathBundle\Entity\Path\Path $path
  *
  * @throws \Exception
  *
  * @return bool
  */
 public function publish(Path $path)
 {
     // We need to publish all linked resources to have a full working Path
     // Start Publishing
     $this->start($path);
     // Store existing steps to remove steps which no longer exist
     $existingSteps = $path->getSteps()->toArray();
     // Publish steps for this path
     $toProcess = !empty($this->pathStructure->steps) ? $this->pathStructure->steps : [];
     $publishedSteps = $this->publishSteps(0, null, $toProcess);
     // Clean steps to remove
     $this->cleanSteps($publishedSteps, $existingSteps);
     // Flush all created Entities in order to generate their IDs (needed to update the JSON structure of the Path)
     $this->om->flush();
     // Mark Path as published and not modified
     $this->path->setPublished(true);
     $this->path->setModified(false);
     // Re encode updated structure and update Path
     // When the Path is published, the structure is built from generated Entities
     // So we want to do this now to inject Entities IDs into the JSON structure
     $updatedStructure = $this->path->getStructure();
     $this->path->setStructure($updatedStructure);
     // Manage rights
     $this->manageRights();
     // Persist data
     $this->om->persist($this->path);
     $this->om->flush();
     // End Publishing
     $this->end();
     return true;
 }
Exemplo n.º 3
0
 /**
  * Import a Path into the Platform.
  *
  * @param string $structure
  * @param array  $data
  * @param array  $resourcesCreated
  *
  * @return Path
  */
 public function import($structure, array $data, array $resourcesCreated = [])
 {
     // Create a new Path object which will be populated with exported data
     $path = new Path();
     $pathData = $data['data']['path'];
     // Populate Path properties
     $path->setBreadcrumbs(!empty($pathData['breadcrumbs']) ? $pathData['breadcrumbs'] : false);
     $path->setDescription($pathData['description']);
     $path->setModified($pathData['modified']);
     $path->setSummaryDisplayed($pathData['summaryDisplayed']);
     $path->setCompleteBlockingCondition($pathData['completeBlockingCondition']);
     $path->setManualProgressionAllowed($pathData['manualProgressionAllowed']);
     // Create steps
     $stepData = $data['data']['steps'];
     if (!empty($stepData)) {
         $createdSteps = [];
         foreach ($stepData as $step) {
             $createdSteps = $this->stepManager->import($path, $step, $resourcesCreated, $createdSteps);
         }
     }
     // Inject empty structure into path (will be replaced by a version with updated IDs later in the import process)
     $path->setStructure($structure);
     return $path;
 }
Exemplo n.º 4
0
 /**
  * Edit existing path
  * @param  \Innova\PathBundle\Entity\Path\Path $path
  * @return \Innova\PathBundle\Entity\Path\Path
  */
 public function edit(Path $path)
 {
     // Check if JSON structure is built
     $structure = $path->getStructure();
     if (empty($structure)) {
         // Initialize path structure
         $path->initializeStructure();
     }
     // Set path as modified (= need publishing to be able to play path with new modifs)
     $path->setModified(true);
     $this->om->persist($path);
     // Update resource node if needed
     $resourceNode = $path->getResourceNode();
     if ($path->getName() !== $resourceNode->getName()) {
         // Path name as changed => rename linked resource node
         $resourceNode->setName($path->getName());
         $this->om->persist($resourceNode);
     }
     $this->om->flush();
     return $path;
 }