/** * Constructeur de la classe, créé dynamiquement tous les champs */ function __construct() { foreach (self::$list_constantes as $_constant => $_params) { $this->{$_constant} = null; // Champs "composites" if (isset($_params["formfields"])) { foreach ($_params["formfields"] as $_formfield) { $this->{$_formfield} = null; } } } parent::__construct(); // Conversion des specs if (self::$_specs_converted) { return; } $group = CGroups::loadCurrent(); foreach (self::$list_constantes as $_params) { if (empty($_params["unit_config"])) { continue; } $unit_config = $_params["unit_config"]; $unit = CAppUI::conf("dPpatients CConstantesMedicales {$unit_config}", $group); if ($unit == $_params["orig_unit"]) { continue; } if (isset($_params["formfields"]) && isset($_params["conversion"])) { $conv = $_params["conversion"][$unit]; $func_min = create_function('$matches', "return 'min|'.\$matches[1]*{$conv};"); $func_max = create_function('$matches', "return 'max|'.\$matches[1]*{$conv};"); foreach ($_params["formfields"] as $_formfield) { $spec = $this->_specs[$_formfield]; $spec->prop = preg_replace_callback("/min\\|([0-9]+)/", $func_min, $spec->prop); $spec->prop = preg_replace_callback("/max\\|([0-9]+)/", $func_max, $spec->prop); if (isset($spec->min)) { $spec->min *= $conv; } if (isset($spec->max)) { $spec->max *= $conv; } } } else { trigger_error("Un champ avec conversion d'unité doit avoir au moins un 'formfield'"); } } self::$_specs_converted = true; }