예제 #1
0
 /**
  * @return array
  */
 public function get_limits()
 {
     if ($this->parameter_version_id) {
         $limit_id = $this->parameter_version->get_parameter_limit_id();
         return ParameterFieldLimit_Access::list_limits_by_limit_id($limit_id);
     } else {
         return null;
     }
 }
예제 #2
0
 public function edit($name, $field_array, $limit_array)
 {
     global $transaction;
     if ($this->parameter_template_id and $name and is_array($field_array) and count($field_array) and is_array($limit_array)) {
         $transaction_id = $transaction->begin();
         if ($this->parameter_template->set_name($name) == false) {
             if ($transaction_id != null) {
                 $transaction->rollback($transaction_id);
             }
             return false;
         }
         $limit_counter = count($limit_array);
         $parameter_limit_id_array = array();
         $current_limit_array = array();
         for ($i = 0; $i <= $limit_counter - 1; $i++) {
             if ($limit_array[$i] !== null) {
                 if (isset($limit_array[$i]['pk']) and is_numeric($limit_array[$i]['pk'])) {
                     array_push($current_limit_array, $limit_array[$i]['pk']);
                     /**
                      * @todo MINOR-IMPORTANT: insert a security check
                      */
                     $parameter_limit_id_array[$i] = $limit_array[$i]['pk'];
                     $parameter_limit = new ParameterLimit_Access($limit_array[$i]['pk']);
                     if ($parameter_limit->set_name($limit_array[$i]['name']) == false) {
                         if ($transaction_id != null) {
                             $transaction->rollback($transaction_id);
                         }
                         return false;
                     }
                 } else {
                     $parameter_limit = new ParameterLimit_Access(null);
                     if (($parameter_limit_id_array[$i] = $parameter_limit->create($limit_array[$i]['name'])) == null) {
                         if ($transaction_id != null) {
                             $transaction->rollback($transaction_id);
                         }
                         return false;
                     }
                 }
             }
         }
         $current_field_array = array();
         $new_field_array = array();
         foreach ($field_array as $key => $value) {
             foreach ($value as $field_key => $field_value) {
                 switch ($field_key) {
                     case "name":
                         $name = $field_value;
                         break;
                     case "unit":
                         $unit_array = explode("-", $field_value, 2);
                         if (is_array($unit_array) and count($unit_array) === 2) {
                             if (is_numeric($unit_array[1])) {
                                 $measuring_unit_id = $unit_array[0];
                                 $measuring_unit_exponent = $unit_array[1];
                             } else {
                                 $measuring_unit_ratio_id = $unit_array[0];
                             }
                         } elseif (is_array($unit_array) and count($unit_array) === 1) {
                             $measuring_unit_ratio_id = $unit_array[0];
                         }
                         break;
                     case "min":
                         $min_value = $field_value;
                         break;
                     case "max":
                         $max_value = $field_value;
                         break;
                     default:
                         break;
                 }
             }
             if (isset($value['pk']) and is_numeric($value['pk'])) {
                 $parameter_field_id = $value['pk'];
                 array_push($current_field_array, $value['pk']);
                 // Edit Field
                 if (ParameterTemplateHasField_Access::field_exists_in_template($this->parameter_template_id, $value['pk']) == true) {
                     $parameter_field = new ParameterField_Access($value['pk']);
                     if ($parameter_field->set_name($name) == false) {
                         if ($transaction_id != null) {
                             $transaction->rollback($transaction_id);
                         }
                         return false;
                     }
                     if (is_numeric($measuring_unit_id) and is_numeric($measuring_unit_exponent)) {
                         if ($parameter_field->set_measuring_unit_id($measuring_unit_id) == false) {
                             if ($transaction_id != null) {
                                 $transaction->rollback($transaction_id);
                             }
                             return false;
                         }
                         if ($parameter_field->set_measuring_unit_exponent($measuring_unit_exponent) == false) {
                             if ($transaction_id != null) {
                                 $transaction->rollback($transaction_id);
                             }
                             return false;
                         }
                         if ($parameter_field->set_measuring_unit_ratio_id(null) == false) {
                             if ($transaction_id != null) {
                                 $transaction->rollback($transaction_id);
                             }
                             return false;
                         }
                     } elseif (is_numeric($measuring_unit_ratio_id)) {
                         if ($parameter_field->set_measuring_unit_id(null) == false) {
                             if ($transaction_id != null) {
                                 $transaction->rollback($transaction_id);
                             }
                             return false;
                         }
                         if ($parameter_field->set_measuring_unit_exponent(null) == false) {
                             if ($transaction_id != null) {
                                 $transaction->rollback($transaction_id);
                             }
                             return false;
                         }
                         if ($parameter_field->set_measuring_unit_ratio_id($measuring_unit_ratio_id) == false) {
                             if ($transaction_id != null) {
                                 $transaction->rollback($transaction_id);
                             }
                             return false;
                         }
                     }
                     if (is_numeric($min_value)) {
                         if ($parameter_field->set_min_value($min_value) == false) {
                             if ($transaction_id != null) {
                                 $transaction->rollback($transaction_id);
                             }
                             return false;
                         }
                     }
                     if (is_numeric($max_value)) {
                         if ($parameter_field->set_max_value($max_value) == false) {
                             if ($transaction_id != null) {
                                 $transaction->rollback($transaction_id);
                             }
                             return false;
                         }
                     }
                 } else {
                     // Exception: Security
                     if ($transaction_id != null) {
                         $transaction->rollback($transaction_id);
                     }
                     return false;
                 }
             } else {
                 // New Field
                 $parameter_field = new ParameterField_Access(null);
                 if (($parameter_field_id = $parameter_field->create($name, $min_value, $max_value, $measuring_unit_id, $measuring_unit_exponent, $measuring_unit_ratio_id)) === null) {
                     if ($transaction_id != null) {
                         $transaction->rollback($transaction_id);
                     }
                     return false;
                 }
                 $parameter_template_has_field = new ParameterTemplateHasField_Access(null, null);
                 if ($parameter_template_has_field->create($this->parameter_template_id, $parameter_field_id) === false) {
                     if ($transaction_id != null) {
                         $transaction->rollback($transaction_id);
                     }
                     return false;
                 }
                 array_push($new_field_array, $parameter_field_id);
                 array_push($current_field_array, $parameter_field_id);
             }
             for ($i = 0; $i <= $limit_counter - 1; $i++) {
                 if (ParameterFieldLimit_Access::exist_field_limit($parameter_limit_id_array[$i], $parameter_field_id)) {
                     $parameter_field_limit = new ParameterFieldLimit_Access($parameter_limit_id_array[$i], $parameter_field_id);
                     if (is_numeric($limit_array[$i]['lsl'][$key])) {
                         if ($parameter_field_limit->set_lower_specification_limit($limit_array[$i]['lsl'][$key]) == false) {
                             if ($transaction_id != null) {
                                 $transaction->rollback($transaction_id);
                             }
                             return false;
                         }
                     }
                     if (is_numeric($limit_array[$i]['usl'][$key])) {
                         if ($parameter_field_limit->set_upper_specification_limit($limit_array[$i]['usl'][$key]) == false) {
                             if ($transaction_id != null) {
                                 $transaction->rollback($transaction_id);
                             }
                             return false;
                         }
                     }
                 } else {
                     if (is_numeric($limit_array[$i]['usl'][$key]) or $limit_array[$i]['lsl'][$key]) {
                         $parameter_field_limit = new ParameterFieldLimit_Access(null, null);
                         if ($parameter_field_limit->create($parameter_limit_id_array[$i], $parameter_field_id, $limit_array[$i]['usl'][$key], $limit_array[$i]['lsl'][$key]) == false) {
                             if ($transaction_id != null) {
                                 $transaction->rollback($transaction_id);
                             }
                             return false;
                         }
                         array_push($current_limit_array, $parameter_limit_id_array[$i]);
                     }
                 }
             }
             unset($parameter_field_id);
             unset($name);
             unset($min_value);
             unset($max_value);
             unset($measuring_unit_id);
             unset($measuring_unit_exponent);
             unset($measuring_unit_ratio_id);
         }
         if (is_array($current_field_array) and count($current_field_array) >= 1) {
             $template_field_array = ParameterTemplateHasField_Access::list_fields_by_template_id($this->parameter_template_id);
             $field_delete_array = array_diff($template_field_array, $current_field_array);
             if (is_array($field_delete_array) and count($field_delete_array) >= 1) {
                 foreach ($field_delete_array as $key => $value) {
                     if (ParameterFieldLimit_Access::delete_limits_by_parameter_field_id($value) === false) {
                         if ($transaction_id != null) {
                             $transaction->rollback($transaction_id);
                         }
                         return false;
                     }
                     $parameter_template_field = new ParameterTemplateHasField_Access($this->parameter_template_id, $value);
                     if ($parameter_template_field->delete() === false) {
                         if ($transaction_id != null) {
                             $transaction->rollback($transaction_id);
                         }
                         return false;
                     }
                     $parameter_field = new ParameterField_Access($value);
                     if ($parameter_field->delete() === false) {
                         if ($transaction_id != null) {
                             $transaction->rollback($transaction_id);
                         }
                         return false;
                     }
                 }
             }
         }
         if (is_array($current_limit_array) and count($current_limit_array) >= 1) {
             $full_field_array = array_merge($new_field_array, $current_field_array);
             $template_limit_array = ParameterFieldLimit_Access::list_parameter_limits_by_parameter_field_array($full_field_array);
             $limit_delete_array = array_diff($template_limit_array, $current_limit_array);
             if (is_array($limit_delete_array) and count($limit_delete_array) >= 1) {
                 foreach ($limit_delete_array as $key => $value) {
                     if (ParameterFieldLimit_Access::delete_limits_by_parameter_limit_id($value) === false) {
                         if ($transaction_id != null) {
                             $transaction->rollback($transaction_id);
                         }
                         return false;
                     }
                     $parameter_limit = new ParameterLimit_Access($value);
                     if ($parameter_limit->delete() === false) {
                         if ($transaction_id != null) {
                             $transaction->rollback($transaction_id);
                         }
                         return false;
                     }
                 }
             }
         }
         if ($transaction_id != null) {
             $transaction->commit($transaction_id);
         }
         return true;
     } else {
         return false;
     }
 }