/** * Add or update stepconditions * * @param Step $stepDB * @param \stdClass $stepJS * @return array */ protected function publishStepConditions(Step $stepDB, \stdClass $stepJS = null) { //retrieve condition from DB $existingCondition = $stepDB->getCondition(); $processedCondition = array(); if (isset($stepJS->condition)) { //retrieve the condition $conditionJS = $stepJS->condition; // Current condition has never been published or condition entity has been deleted => create it if (empty($conditionJS->scid) || $existingCondition->getId() != $conditionJS->scid) { //echo "create condition <br>\n"; $publishedCondition = $this->stepConditionsManager->createStepCondition($stepDB); $uniqId = "_COND" . uniqid(); $this->uniqId2sc[$uniqId] = $publishedCondition; // Update json structure with new resource ID $conditionJS->scid = $uniqId; } else { //echo "update condition <br>\n"; $publishedCondition = $this->getStepCondition($conditionJS->scid); $publishedCondition = $this->stepConditionsManager->editStepCondition($stepDB, $publishedCondition); } $processedCondition[] = $publishedCondition; //echo "manage criteriagroups <br>\n"; //manage criteriagroups $existingCriteriagroups = $publishedCondition->getCriteriagroups()->toArray(); $publishedCriteriagroup = $this->publishCriteriagroups($publishedCondition, 0, null, $conditionJS->criteriagroups); //echo "Clean criteriagroup to remove <br>\n"; // Clean criteriagroup to remove $this->cleanCriteriagroup($publishedCriteriagroup, $existingCriteriagroups, $publishedCondition); //echo "Clean Condition to remove <br>\n"; // Clean Condition to remove if (is_object($existingCondition)) { $this->cleanCondition($publishedCondition, $existingCondition, $stepDB); } } return $processedCondition; }
/** * Update or create Access condition. * * @param Step $step * @param \stdClass $stepStructure */ public function updateCondition(Step $step, \stdClass $stepStructure) { $condition = null; $oldCondition = $step->getCondition(); if (!empty($stepStructure->condition)) { // Create or Update the Condition if (empty($stepStructure->condition->scid) || !empty($oldCondition) && $stepStructure->condition->scid !== $oldCondition->getId()) { // Condition has never been published or has been replaced by a new one $condition = $this->stepConditionManager->create($step, $stepStructure->condition); } elseif ($oldCondition) { // Update existing condition $condition = $this->stepConditionManager->edit($step, $oldCondition, $stepStructure->condition); } } // Remove the old condition if needed if (!empty($oldCondition) && (empty($condition) || $condition->getId() !== $oldCondition->getId())) { $oldCondition->setStep(null); $this->om->remove($oldCondition); } }