*/ class LSformElement_supannRessourceEtat extends LSformElement_supannCompositeAttribute { public function __construct(&$form, $name, $label, $params, &$attr_html){ $this -> components = array ( 'ressource' => array ( 'label' => _('Resource'), 'type' => 'select', 'possible_values' => array('' => '-'), 'get_possible_values' => 'supannGetRessourcePossibleValues', 'required' => true, ), 'etat' => array ( 'label' => _('State'), 'type' => 'select', 'possible_values' => array('' => '-'), 'get_possible_values' => 'supannGetRessourceEtatPossibleValues', 'required' => true, ), 'sous_etat' => array ( 'label' => _('Sub-state'), 'type' => 'select', 'possible_values' => array('' => '-'), 'get_possible_values' => 'supannGetRessourceSousEtatPossibleValues', 'required' => false, ), ); return parent :: __construct($form, $name, $label, $params, $attr_html); } /** * Parse une valeur composite gérer par ce type d'attribut * * @param $value string La valeur à parser * @return array|null La valeur parsée, ou NULL en cas de problème */ public function parseCompositeValue($value) { if (preg_match('/\{(?[^\}]+)\}(?[^:]+)(:(?.*))?/', $value, $matches)) { $parseValue = array( 'ressource' => $matches['ressource'], 'etat' => $matches['etat'], 'sous_etat' => (isset($matches['sous_etat'])?$matches['sous_etat']:null), ); return $parseValue; } return; } /** * Format une valeur composite gérer par ce type d'attribut * * @param $value string La valeur à parser * @return array|null|false La valeur formatée, NULL en cas de valeur vide, ou False en cas de problème */ public function formatCompositeValue($value) { if (is_array($value)) { if (!$value['ressource'] || !$value['etat']) return null; $ret = "{".$value['ressource']."}".$value['etat']; if ($value['sous_etat']) $ret .= ":".$value['sous_etat']; return $ret; } return False; } }