Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
 /**
  * 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);
     }
 }