/** * 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; }
/** * 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; }