diff --git a/src/conf/LSaddons/config.LSaddons.supann.php b/src/conf/LSaddons/config.LSaddons.supann.php index a6872d8e..bd3270db 100644 --- a/src/conf/LSaddons/config.LSaddons.supann.php +++ b/src/conf/LSaddons/config.LSaddons.supann.php @@ -125,6 +125,29 @@ $GLOBALS['supannNomenclatures'] = array ( 'FIXEPRO' => ___('Professional landline'), 'SECOURS' => ___('Backup'), ), + 'ressource' => array ( + 'COMPTE' => ___('User account'), + 'MAIL' => ___('Mailbox'), + ), + 'ressourceEtat' => array ( + 'A' => ___('Active'), + 'I' => ___('Inactive'), + 'S' => ___('Suspended'), + ), + 'ressourceSousEtat' => array ( + 'SupannPrecree' => ___('Account created in advance, but not yet operational'), + 'SupannCree' => ___('Account operational, but of which the user has not yet taken possession'), + 'SupannAnticipe' => ___('Account operational and accessed by the user, in anticipation of their start date of activity'), + 'SupannActif' => ___('Account operational and accessed by the user in regular activity'), + 'SupannSursis' => ___('Account operational and accessed by the user, suspended after the date of end of activity'), + 'SupannExpire' => ___('Account which is no longer operational, the date of end of activity and possible suspension having passed, but whose cancellation deadlines have not yet been reached'), + 'SupannInactif' => ___('Non-operational account (without specifying the reason) whose deletion deadlines have not yet been reached'), + 'SupannSupprDonnees' => ___('Expired account that has reached the data deletion deadline'), + 'SupannSupprCompte' => ___('Expired account pending permanent deletion'), + 'SupannVerrouille' => ___('Account locked (without specifying the reason)'), + 'SupannVerrouAdministratif' => ___('Account locked for administrative reasons (account suspension, charter abuse, etc.)'), + 'SupannVerrouTechnique' => ___("Account locked for a technical reason (detection of a namesake, suspicion of a hacked account, etc.)"), + ), ), 'eduPerson' => array( 'affiliation' => array ( diff --git a/src/includes/addons/LSaddons.supann.php b/src/includes/addons/LSaddons.supann.php index 39dffb26..7d4b99d9 100644 --- a/src/includes/addons/LSaddons.supann.php +++ b/src/includes/addons/LSaddons.supann.php @@ -681,6 +681,60 @@ function supannGetAffiliationPossibleValues($options=null, $name=null, $ldapObje return supannGetNomenclaturePossibleValues('affiliation', false); } +/** + * Retourne les valeurs possibles des ressources. + * + * Cette fonction est prévue pour pouvoir être utilisé comme paramètre + * get_possible_values de la configuration du composant ressource de l'attribut + * supannRessourceEtat (entre autre) avec un type de composant select. + * + * @param[in] $options La configuration HTML de l'attribut + * @param[in] $name Le nom de l'attribut + * @param[in] &$ldapObject Une référence à l'object LSldapObject + * + * @retval array Tableau contenant les valeurs possibles de l'attribut + * (avec les labels traduits). + **/ +function supannGetRessourcePossibleValues($options=null, $name=null, $ldapObject=null) { + return supannGetNomenclaturePossibleValues('ressource', false); +} + +/** + * Retourne les valeurs possibles des états des ressources. + * + * Cette fonction est prévue pour pouvoir être utilisé comme paramètre + * get_possible_values de la configuration du composant etat de l'attribut + * supannRessourceEtat (entre autre) avec un type de composant select. + * + * @param[in] $options La configuration HTML de l'attribut + * @param[in] $name Le nom de l'attribut + * @param[in] &$ldapObject Une référence à l'object LSldapObject + * + * @retval array Tableau contenant les valeurs possibles de l'attribut + * (avec les labels traduits). + **/ +function supannGetRessourceEtatPossibleValues($options=null, $name=null, $ldapObject=null) { + return supannGetNomenclaturePossibleValues('ressourceEtat', false); +} + +/** + * Retourne les valeurs possibles des sous-états des ressources. + * + * Cette fonction est prévue pour pouvoir être utilisé comme paramètre + * get_possible_values de la configuration du composant sous_etat de l'attribut + * supannRessourceEtat (entre autre) avec un type de composant select. + * + * @param[in] $options La configuration HTML de l'attribut + * @param[in] $name Le nom de l'attribut + * @param[in] &$ldapObject Une référence à l'object LSldapObject + * + * @retval array Tableau contenant les valeurs possibles de l'attribut + * (avec les labels traduits). + **/ +function supannGetRessourceSousEtatPossibleValues($options=null, $name=null, $ldapObject=null) { + return supannGetNomenclaturePossibleValues('ressourceSousEtat', false); +} + /** * Vérifie les valeurs de l'attribut eduPersonAffiliation * diff --git a/src/includes/class/class.LSattr_html_supannRessourceEtat.php b/src/includes/class/class.LSattr_html_supannRessourceEtat.php new file mode 100644 index 00000000..6e0a24bb --- /dev/null +++ b/src/includes/class/class.LSattr_html_supannRessourceEtat.php @@ -0,0 +1,32 @@ + + */ +class LSattr_html_supannRessourceEtat extends LSattr_html { + + var $LSformElement_type = 'supannRessourceEtat'; + +} diff --git a/src/includes/class/class.LSattr_html_supannRessourceEtatDate.php b/src/includes/class/class.LSattr_html_supannRessourceEtatDate.php new file mode 100644 index 00000000..66550a8c --- /dev/null +++ b/src/includes/class/class.LSattr_html_supannRessourceEtatDate.php @@ -0,0 +1,32 @@ + + */ +class LSattr_html_supannRessourceEtatDate extends LSattr_html { + + var $LSformElement_type = 'supannRessourceEtatDate'; + +} diff --git a/src/includes/class/class.LSformElement_supannRessourceEtat.php b/src/includes/class/class.LSformElement_supannRessourceEtat.php new file mode 100644 index 00000000..795d2857 --- /dev/null +++ b/src/includes/class/class.LSformElement_supannRessourceEtat.php @@ -0,0 +1,98 @@ + + */ + +class LSformElement_supannRessourceEtat extends LSformElement_supannCompositeAttribute { + + public function __construct(&$form, $name, $label, $params, &$attr_html){ + $this -> components = array ( + 'ressource' => array ( + 'label' => _('Resource'), + 'type' => 'select', + 'get_possible_values' => 'supannGetRessourcePossibleValues', + 'required' => true, + ), + 'etat' => array ( + 'label' => _('State'), + 'type' => 'select', + '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('/\{(?[^\}]+)\}(?[AIS])(:(?.*))?/', $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; + } + +} diff --git a/src/includes/class/class.LSformElement_supannRessourceEtatDate.php b/src/includes/class/class.LSformElement_supannRessourceEtatDate.php new file mode 100644 index 00000000..5862beb0 --- /dev/null +++ b/src/includes/class/class.LSformElement_supannRessourceEtatDate.php @@ -0,0 +1,113 @@ + + */ + +class LSformElement_supannRessourceEtatDate extends LSformElement_supannCompositeAttribute { + + public function __construct(&$form, $name, $label, $params, &$attr_html){ + $this -> components = array ( + 'ressource' => array ( + 'label' => _('Resource'), + 'type' => 'select', + 'get_possible_values' => 'supannGetRessourcePossibleValues', + 'required' => true, + ), + 'etat' => array ( + 'label' => _('State'), + 'type' => 'select', + 'get_possible_values' => 'supannGetRessourceEtatPossibleValues', + 'required' => true, + ), + 'sous_etat' => array ( + 'label' => _('Sub-state'), + 'type' => 'select', + 'possible_values' => array('' => '-'), + 'get_possible_values' => 'supannGetRessourceSousEtatPossibleValues', + 'required' => false, + ), + 'date_debut' => array ( + 'label' => _('Start date'), + 'type' => 'date', + 'format' => 'Ymd', + 'required' => false, + ), + 'date_fin' => array ( + 'label' => _('End date'), + 'type' => 'date', + 'format' => 'Ymd', + '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('/\{(?[^\}]+)\}(?[AIS]):(?[^\:]*):(?[0-9]{8})?:(?[0-9]{8})?/', $value, $matches)) { + $parseValue = array( + 'ressource' => $matches['ressource'], + 'etat' => $matches['etat'], + 'sous_etat' => (isset($matches['sous_etat'])?$matches['sous_etat']:null), + 'date_debut' => (isset($matches['date_debut'])?$matches['date_debut']:null), + 'date_fin' => (isset($matches['date_fin'])?$matches['date_fin']: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']; + $ret .= ":".($value['sous_etat']?$value['sous_etat']:''); + $ret .= ":".($value['date_debut']?$value['date_debut']:''); + $ret .= ":".($value['date_fin']?$value['date_fin']:''); + return $ret; + } + return False; + } + +}