コード例 #1
0
 public static function saveAjaxElement($element_ajax)
 {
     if (isset($element_ajax['id']) && $element_ajax['id'] != '') {
         $element_db = scenarioElement::byId($element_ajax['id']);
     } else {
         $element_db = new scenarioElement();
     }
     if (!isset($element_db) || !is_object($element_db)) {
         throw new Exception(__('Elément inconnu - Vérifiez l\'id : ', __FILE__) . $element_ajax['id']);
     }
     utils::a2o($element_db, $element_ajax);
     $element_db->save();
     $subElement_order = 0;
     $subElement_list = $element_db->getSubElement();
     $enable_subElement = array();
     foreach ($element_ajax['subElements'] as $subElement_ajax) {
         if (isset($subElement_ajax['id']) && $subElement_ajax['id'] != '') {
             $subElement_db = scenarioSubElement::byId($subElement_ajax['id']);
         } else {
             $subElement_db = new scenarioSubElement();
         }
         if (!isset($subElement_db) || !is_object($subElement_db)) {
             throw new Exception(__('Elément inconnu vérifier l\'id : ', __FILE__) . $subElement_ajax['id']);
         }
         utils::a2o($subElement_db, $subElement_ajax);
         $subElement_db->setScenarioElement_id($element_db->getId());
         $subElement_db->setOrder($subElement_order);
         $subElement_db->save();
         $subElement_order++;
         $enable_subElement[$subElement_db->getId()] = true;
         $expression_list = $subElement_db->getExpression();
         $expression_order = 0;
         $enable_expression = array();
         foreach ($subElement_ajax['expressions'] as &$expression_ajax) {
             if (isset($expression_ajax['scenarioSubElement_id']) && $expression_ajax['scenarioSubElement_id'] != $subElement_db->getId() && isset($expression_ajax['id']) && $expression_ajax['id'] != '') {
                 $expression_ajax['id'] = '';
             }
             if (isset($expression_ajax['id']) && $expression_ajax['id'] != '') {
                 $expression_db = scenarioExpression::byId($expression_ajax['id']);
             } else {
                 $expression_db = new scenarioExpression();
             }
             if (!isset($expression_db) || !is_object($expression_db)) {
                 throw new Exception(__('Expression inconnue vérifié l\'id : ', __FILE__) . $expression_ajax['id']);
             }
             $expression_db->emptyOptions();
             utils::a2o($expression_db, $expression_ajax);
             $expression_db->setScenarioSubElement_id($subElement_db->getId());
             if ($expression_db->getType() == 'element') {
                 $expression_db->setExpression(self::saveAjaxElement($expression_ajax['element']));
             }
             $expression_db->setOrder($expression_order);
             $expression_db->save();
             $expression_order++;
             $enable_expression[$expression_db->getId()] = true;
         }
         foreach ($expression_list as $expresssion) {
             if (!isset($enable_expression[$expresssion->getId()])) {
                 $expresssion->remove();
             }
         }
     }
     foreach ($subElement_list as $subElement) {
         if (!isset($enable_subElement[$subElement->getId()])) {
             $subElement->remove();
         }
     }
     return $element_db->getId();
 }