From b59fcddb772b7d5d7788a4932cdbad4112dcf063 Mon Sep 17 00:00:00 2001 From: Benjamin Renard Date: Fri, 10 Aug 2012 12:31:06 +0200 Subject: [PATCH] SUPANN : Ajout du support de l'attribut supannRoleEntite --- .../conf/LSaddons/config.LSaddons.supann.php | 216 ++++++++++++++++++ ...mElement_supannRoleEntite_label_SUPANN.png | Bin 0 -> 851 bytes .../includes/addons/LSaddons.supann.php | 159 ++++++++++++- .../class.LSattr_html_supannRoleEntite.php | 34 +++ .../class.LSformElement_supannRoleEntite.php | 77 +++++++ .../LSformElement_supannRoleEntite.tpl | 23 ++ .../LSformElement_supannRoleEntite_field.tpl | 13 ++ 7 files changed, 521 insertions(+), 1 deletion(-) create mode 100644 public_html/images/default/LSformElement_supannRoleEntite_label_SUPANN.png create mode 100644 public_html/includes/class/class.LSattr_html_supannRoleEntite.php create mode 100644 public_html/includes/class/class.LSformElement_supannRoleEntite.php create mode 100644 public_html/templates/default/LSformElement_supannRoleEntite.tpl create mode 100644 public_html/templates/default/LSformElement_supannRoleEntite_field.tpl diff --git a/public_html/conf/LSaddons/config.LSaddons.supann.php b/public_html/conf/LSaddons/config.LSaddons.supann.php index 03d19ee0..990ed449 100644 --- a/public_html/conf/LSaddons/config.LSaddons.supann.php +++ b/public_html/conf/LSaddons/config.LSaddons.supann.php @@ -35,6 +35,9 @@ define('LS_SUPANN_FIRSTNAME_ATTR','givenName'); // Type de LSobject correspondant aux entites SUPANN define('LS_SUPANN_LSOBJECT_ENTITE_TYPE','LSsupannEntite'); +// Format d'affichage du nom courts d'une entites SUPANN +define('LS_SUPANN_LSOBJECT_ENTITE_FORMAT_SHORTNAME','%{ou}'); + // DN de l'entite SUPANN correspondant à l'etablissement define('LS_SUPANN_ETABLISSEMENT_DN','supannCodeEntite=XXX,ou=structures,dc=univ,dc=fr'); @@ -42,4 +45,217 @@ define('LS_SUPANN_ETABLISSEMENT_DN','supannCodeEntite=XXX,ou=structures,dc=univ, // Exemple : 0753742K define('LS_SUPANN_ETABLISSEMENT_UAI','0753742K'); +// Table de données des roles generiques +$GLOBALS['supannRoleGenerique'] = array ( + "D00" => "MINISTRE", + "D01" => "DIRECTEUR DU CABINET", + "D02" => "DIRECTEUR ADJOINT DU CABINET", + "D10" => "DIRECTEUR AC", + "D11" => "DELEGUE AC", + "D12" => "DELEGUE REGIONAL A LA RECH. ET TECHN.", + "D21" => "DIRECTEUR DE RECHERCHE", + "D22" => "DIRECTEUR SCIENTIFIQUE", + "D23" => "DIRECTEUR DE PROJET", + "D30" => "Directeur", + "D32" => "Directeur des études", + "D34" => "Directeur de la Recherche", + "D35" => "Doyen", + "D40" => "SOUS-DIRECTEUR", + "D60" => "DIRECTEUR DE DEPARTEMENT", + "D70" => "DOYEN DE L'IGEN", + "D71" => "DOYEN DE L'IGB", + "D80" => "DIRECTEUR GENERAL AC", + "D81" => "DIR GEN AC, SECRETAIRE GENERAL ADJOINT", + "D90" => "HAUT FONCTIONNAIRE DE DEFENSE", + "F01" => "CHEF DU CABINET", + "F02" => "CHEF ADJOINT DU CABINET", + "F10" => "CHEF DE SERVICE", + "F11" => "CHEF DE SERVICE ADJOINT AU DIRECTEUR", + "F12" => "CHEF DU SERVICE DE l'IGAENR", + "F20" => "CHEF DE MISSION", + "F21" => "CHEF DE LA MISSION", + "F22" => "CHEF DE SERVICE ADJOINT AU DIR GEN", + "F30" => "CHEF DE DIVISION", + "F40" => "CHEF DE DEPARTEMENT", + "F42" => "chef des services administratifs", + "F50" => "CHEF DE CENTRE", + "F60" => "CHEF DE BUREAU", + "F61" => "CHEF DE CELLULE", + "F62" => "CHEF DU CABINET DU SECRETAIRE GENERAL", + "F70" => "CHEF D'EXPLOITATION", + "F71" => "CHEF D'EQUIPE", + "F73" => "CHEF DU SERVICE INTERIEUR", + "F74" => "CHEF DE SECTION", + "F75" => "CHEF DE SITE", + "F76" => "CHEF DE CUISINE", + "H10" => "CHARGE DU SERVICE", + "H11" => "CHARGE DE SOUS-DIRECTION", + "H20" => "CHARGE DE MISSION AUPRES DU MINISTRE", + "H30" => "CHARGE DE MISSION AUPRES DU DIR CAB", + "H40" => "CHARGE DE MISSION", + "H70" => "CHARGE DU SECRETARIAT DU DIRECTEUR", + "H75" => "CHARGE DU SECRETERIAT DU DRRT", + "H80" => "CHARGE DE GESTION ADMINIS. ET COMPTABLE", + "J01" => "ADJOINT AU CHEF DE CABINET", + "J04" => "ADJOINT AU DIRECTEUR GENERAL AC", + "J05" => "ADJOINT AU DIRECTEUR", + "J06" => "ADJOINT AU DELEGUE AC", + "J07" => "ADJOINT AU DRRT", + "J10" => "ADJOINT AU CHEF DE SERVICE", + "J11" => "ADJOINT AU CHARGE DU SERVICE", + "J12" => "ADJOINT AU SOUS-DIRECTEUR", + "J13" => "ADJOINT AU CHARGE DE SOUS-DIRECTION", + "J20" => "ADJOINT AU CHEF DE MISSION", + "J21" => "ADJOINT AU CHEF DE LA MISSION", + "J30" => "ADJOINT AU CHEF DE DIVISION", + "J31" => "ADJOINT AU CHEF DE DEPARTEMENT", + "J32" => "ADJOINT AU DIRECTEUR DE DEPARTEMENT", + "J33" => "ADJOINT AU CHEF DE CENTRE", + "J34" => "ADJOINT AU CHEF DE BUREAU", + "J35" => "A CHEF AU CHEF DE SECTION", + "J36" => "ADJOINT AU CHEF DE CELLULE", + "J40" => "ADJOINT AU RESPONSABLE DE CELLULE", + "J41" => "ADJOINT AU RESPONSABLE DE L'UNITE", + "J42" => "ADJOINT AU RESPONSABLE DE POLE", + "J50" => "ADJOINT AU RESPONSABLE D'ATELIER", + "J60" => "Directeur adjoint", + "J61" => "Chef de service adjoint", + "J62" => "Directeur des études adjoint", + "J63" => "Directeur de la Recherche adjoint", + "J63" => "Directeur scientifique adjoint", + "M01" => "COLLABORATEUR EXTERIEUR", + "N00" => "CONSEILLER AUPRES DU MINISTRE", + "N01" => "CONSEILLER", + "N02" => "CONSEILLER DU CABINET", + "N03" => "CONSEILLER TECHNIQUE DU CABINET", + "N10" => "CONSEILLER D'ETABLISSEMENTS", + "N11" => "CONSEILLER PEDAGOGIQUE", + "N20" => "CONSEILLER TECHNIQUE", + "N50" => "COORDONNATEUR", + "P00" => "PRESIDENT", + "P01" => "PRESIDENT D'ASSOCIATION", + "P10" => "VICE-PRESIDENT", + "P50" => "SECRETAIRE GENERAL", + "P51" => "Secrétaire Général adjoint", + "P60" => "SECRETAIRE GENERAL AC", + "P70" => "Administrateur", + "P71" => "Administrateur provisoire", + "R00" => "RESPONSABLE", + "R01" => "RESPONSABLE DE CELLULE", + "R02" => "RESPONSABLE DE DEPARTEMENT", + "R10" => "RESPONSABLE DE MISSION", + "R20" => "RESPONSABLE DE POLE", + "R21" => "RESPONSABLE DE SECTEUR", + "R22" => "RESPONSABLE D'UNITE", + "R30" => "RESPONSABLE DE SERVICES TECHNIQUES", + "R31" => "RESPONSABLE EPI", + "R33" => "RESPONSABLE D'ATELIER", + "R40" => "Responsable admnistratif", + "R41" => "Responsable de diplôme", + "R42" => "Responsable pédagogique", + "R43" => "Responsable de programme", + "R80" => "RESPONSABLE UGARH", + "R81" => "ADJOINT(E) RESP UGARH", + "S01" => "Encadrant Tuteur", + "S10" => "Membre titulaire, Membre", + "S11" => "Membre suppléant", + "S12" => "Membre consultatif", + "S13" => "Participant", + "S14" => "Représentant / Représentant étudiant", + "S15" => "Délégué", + "S16" => "Correspondant", + "S17" => "Coordonnateur scientifique", + "S20" => "Partenaire", + "S21" => "Personnalité extérieure", + "T01" => "ASSISTANT DE SERVICE SOCIAL", + "T02" => "INFIRMIER", + "T12" => "AMINISTRATEUR DE DONNEES", + "T13" => "HUISSIER", + "T14" => "AGENT D'ACCUEIL", + "T15" => "HOTESSE D'ACCUEIL", + "T16" => "AGENT TECHNIQUE", + "T17" => "CHARGE DE COM, REL PUBLIQUE OU PRESSE", + "T18" => "ALLOCATAIRE D'EMPLOIS", + "T19" => "ANALYSTE", + "T22" => "ASSISTANT DE DIRECTION", + "T24" => "ASSISTANT TECHNIQUE", + "T25" => "CHARGE D'ETUDES", + "T26" => "CHEF DE PROJET", + "T27" => "CHEF DE PROJET INFORMATIQUE", + "T29" => "CONCEPTEUR REDACTEUR SITE WEB", + "T30" => "CONDUCTEUR AUTOMOBILE", + "T31" => "CONSEILLER SCIENTIFIQUE ET TECHNIQUE", + "T32" => "CONTROLEUR DE GESTION", + "T34" => "CORRESPONDANT INFORMATIQUE", + "T35" => "DEVELOPPEUR D'APPLICATIONS", + "T36" => "DOCUMENTALISTE - ARCHIVISTE", + "T37" => "GESTIONNAIRE", + "T39" => "GESTIONNAIRE DE PARC INF & TELECOM", + "T40" => "GESTIONNAIRE GRH", + "T41" => "GESTIONNAIRE DE RESTAURANT ADMINISTRATIF", + "T42" => "GESTIONNAIRE FINANCIER", + "T43" => "INFOGRAPHISTE - MAQUETTISTE (PAO)", + "T44" => "INFORMATICIEN BUREAUTIQUE", + "T45" => "INFORMATICIEN D'EXPLOITATION", + "T46" => "INFORMATICIEN SYSTEMES ET RESEAUX", + "T47" => "INGENIEUR PEDAGOGIQUE OU EN FORM PROF", + "T48" => "MECANICIEN", + "T49" => "OPERATEUR", + "T50" => "OUVRIER", + "T51" => "AGENT DE PREMIERE INTERVENTION", + "T52" => "PERSONNEL DE RESTAURATION", + "T54" => "REDACTEUR", + "T55" => "REPROGRAPHISTE", + "T56" => "RESPONSABLE PRODUCTION ET SYSTEMES", + "T57" => "SECRETAIRE", + "T58" => "SECRETAIRE PARTICULIER", + "T59" => "SECRETAIRE MEDICAL", + "T60" => "CHARGE DE MARCHES PUBLICS", + "T61" => "CHARGE DE GESTION FINANCIERE", + "T62" => "CHARGE DE PROGRAMMATION BUDGETAIRE", + "T63" => "TECHNICIEN CONSEIL HYGIENE ET SECURITE", + "T64" => "TECHNICIEN EXPLOITATION- MAINTENANCE", + "T65" => "AGENT COMPTABLE", + "T66" => "GESTIONNAIRE D'ETABLISSEMENT", + "T80" => "Maîtrise d'ouvrage des SI", + "T81" => "Maîtrise' d'œuvre des SI", + "T82" => "AQSSI", + "T83" => "RSSI", + "T84" => "CSSI (Correspondant/Chargé de SSI)", + "X00" => "MEDIATEUR", + "X01" => "MEDECIN", + "X10" => "EXPERT PEDAGOGIQUE", + "X11" => "EXPERT CREDIT IMPOT RECHERCHE", + "X30" => "CHAUFFEUR UTILITAIRE", + "X31" => "CHAUFFEUR DE MINISTRE", + "X32" => "CHAUFFEUR DU CABINET", + "X33" => "CHAUFFEUR DE DIRECTION", + "X40" => "CONTROLEUR FINANCIER", + "X50" => "JURISTE", + "X51" => "Correspondant I&L", + "X60" => "SECRETAIRE DE CABINET", + "X70" => "ACMO H&S", + "X71" => "Chargé de service de prévention H&S", + "X80" => "Assesseur" +); + +$GLOBALS['supannTypeEntite'] = array ( + "S101" => "Conseil d'Administration", + "S312" => "Centre de recherche" +); + +// Table de tranduction des roles dans les entites +$GLOBALS['supannTranslateRoleEntiteValueDirectory'] = array( + "SUPANN" => array ( + "role" => $GLOBALS['supannRoleGenerique'], + "type" => $GLOBALS['supannTypeEntite'] + ) +); + +// Table des fonctions de tranduction des roles dans les entites +$GLOBALS['supannTranslateFunctionDirectory'] = array( + "no" => array( + "code" => "supanGetEntiteNameById" + ) +); ?> diff --git a/public_html/images/default/LSformElement_supannRoleEntite_label_SUPANN.png b/public_html/images/default/LSformElement_supannRoleEntite_label_SUPANN.png new file mode 100644 index 0000000000000000000000000000000000000000..78ba57889df5b2df03619cec73915fc48ee1353a GIT binary patch literal 851 zcmV-Z1FZasP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L00eFT00eFU(4(?w00007bV*G`2iyn= z4-*85j<5*;00PrVL_t(I%WaZNXjFF;#((Gj@4cCsJIN&DIHFB#9`%((QETa<);`Fl zF0^7TEht?mZUn(68iNmnSR}hvq1a7JDHQsq&@Kd9bkRb6Efj2No8qI$G>&HGW^!ld ze~$}CjgN12IGpd}`#7HfguCcam%o79=_BOJJD7pbzrcjOL@x6^aX84&z$>b(OdsJ# z8gKwoM>Xekyy&?LR!s*8Ms&LATG3?Yz0ub4ohpDgaCj-rv+!3Ro6Qu+{h>a3X1k=a zXHCBMm(mt`(;sRcmtryKUgg)4;zZ`81G9e~N=kkh^p6p3$~eNQs8 zEvne!)#q@TF62^t}EP7PMZ2*gC4QOH@jrpkX1DY + * + * @param[in] $val La valeur composite + * + * @retval array Un tableau contenant key->value ou false en cas d'erreur + **/ + function supannParseCompositeValue($val) { + if (preg_match_all('/\[([^=]*)=([^\]]*)\]/',$val,$matches)) { + $parseValue=array(); + for($i=0;$i listObjectsName("(supannCodeEntite=$value)",NULL,array(),LS_SUPANN_LSOBJECT_ENTITE_FORMAT_SHORTNAME); + if (count($list)==1) { + return array( + 'translated' => array_pop($list), + 'label' => $label + ); + } + } + return array( + 'translated' => getFData(__("%{value} (unrecognized value)"),$value), + 'label' => $label + ); + } + + /** + * Parse une valeur a etiquette SUPANN + * + * Exemple de valeur : + * + * {SUPANN}S410 + * + * @param[in] $val La valeur + * + * @retval array Un tableau cle->valeur contenant label et value ou False + **/ + function supannParseLabeledValue($value) { + if (preg_match('/^\{([^\}]*)\}(.*)$/',$value,$m)) { + return array( + 'label'=>$m[1], + 'value'=>$m[2] + ); + } + return; + } + + /** + * Traduit une valeur en fonction de sa cle extrait d'un attribut + * supannRoleEntite. + * + * @param[in] $key La cle + * @param[in] $value La valeur + * + * @retval array Un tableau cle->valeur contenant label et translated ou False + **/ + function supannTranslateRoleEntiteValue($key,$value) { + $label='no'; + $pl=supannParseLabeledValue($value); + if ($pl) { + $label=$pl['label']; + $value=$pl['value']; + } + + // Translate by method + if (supannTranslateRoleEntiteFunction($label,$key)) { + $func = supannTranslateRoleEntiteFunction($label,$key); + if (function_exists($func)) { + try { + return $func($label,$key,$value); + } + catch (Exception $e) { + return; + } + } + else { + return; + } + } + // Translate by directory + elseif (isset($GLOBALS['supannTranslateRoleEntiteValueDirectory'][$label][$key][$value])) { + return array( + 'translated' => $GLOBALS['supannTranslateRoleEntiteValueDirectory'][$label][$key][$value], + 'label' => $label + ); + } + else { + return array( + 'label' => $label, + 'translated' => $value + ); + } + } + ?> diff --git a/public_html/includes/class/class.LSattr_html_supannRoleEntite.php b/public_html/includes/class/class.LSattr_html_supannRoleEntite.php new file mode 100644 index 00000000..c2178e11 --- /dev/null +++ b/public_html/includes/class/class.LSattr_html_supannRoleEntite.php @@ -0,0 +1,34 @@ + + */ +class LSattr_html_supannRoleEntite extends LSattr_html { + + var $LSformElement_type = 'supannRoleEntite'; + +} + +?> diff --git a/public_html/includes/class/class.LSformElement_supannRoleEntite.php b/public_html/includes/class/class.LSformElement_supannRoleEntite.php new file mode 100644 index 00000000..5813efe6 --- /dev/null +++ b/public_html/includes/class/class.LSformElement_supannRoleEntite.php @@ -0,0 +1,77 @@ + + */ + +class LSformElement_supannRoleEntite extends LSformElement { + + var $template = 'LSformElement_supannRoleEntite.tpl'; + var $fieldTemplate = 'LSformElement_supannRoleEntite_field.tpl'; + + /** + * Retourne les infos d'affichage de l'élément + * + * Cette méthode retourne les informations d'affichage de l'élement + * + * @retval array + */ + function getDisplay(){ + $return = $this -> getLabelInfos(); + + $parseValues=array(); + foreach($this -> values as $val) { + $keyValue=supannParseCompositeValue($val); + if ($keyValue) { + $parseValue=array(); + foreach($keyValue as $key => $value) { + $parseValue[$key]=array( + 'value' => $value + ); + $tr=supannTranslateRoleEntiteValue($key,$value); + if ($tr) { + if($tr['translated']) + $parseValue[$key]['translated']=$tr['translated']; + if($tr['label']) + $parseValue[$key]['label']=$tr['label']; + } + } + $parseValues[]=$parseValue; + } + } + + $return['html'] = $this -> fetchTemplate(NULL,array('parseValues' => $parseValues)); + return $return; + } + +} + +?> diff --git a/public_html/templates/default/LSformElement_supannRoleEntite.tpl b/public_html/templates/default/LSformElement_supannRoleEntite.tpl new file mode 100644 index 00000000..06390a01 --- /dev/null +++ b/public_html/templates/default/LSformElement_supannRoleEntite.tpl @@ -0,0 +1,23 @@ +
    + {if $parseValues} + {foreach from=$parseValues item=parseValue} + {if $parseValue.role.translated}{assign var=role value=$parseValue.role.translated}{else}{assign var=role value=$parseValue.role.value}{/if} + {if $parseValue.role.label!="no"}{assign var=label_role value=$parseValue.role.label}{else}{assign var=label_role value=""}{/if} + {if $parseValue.type.translated}{assign var=type value=$parseValue.type.translated}{else}{assign var=type value=$parseValue.type.value}{/if} + {if $parseValue.type.label!="no"}{assign var=label_type value=$parseValue.type.label}{else}{assign var=label_type value=""}{/if} + {if $parseValue.code.translated}{assign var=code value=$parseValue.code.translated}{else}{assign var=code value=$parseValue.code.value}{/if} + {if $parseValue.code.label!="no"}{assign var=label_code value=$parseValue.code.label}{else}{assign var=label_code value=""}{/if} +
  • {include file=$fieldTemplate}
  • + {foreachelse} + {assign var=value value=""} +
  • {include file=$fieldTemplate}
  • + {/foreach} + {else} + {foreach from=$values item=value} +
  • {include file=$fieldTemplate}
  • + {foreachelse} + {assign var=value value=""} +
  • {include file=$fieldTemplate}
  • + {/foreach} + {/if} +
diff --git a/public_html/templates/default/LSformElement_supannRoleEntite_field.tpl b/public_html/templates/default/LSformElement_supannRoleEntite_field.tpl new file mode 100644 index 00000000..d755c738 --- /dev/null +++ b/public_html/templates/default/LSformElement_supannRoleEntite_field.tpl @@ -0,0 +1,13 @@ +{if $freeze} + {if $value or $parseValue} + {if $parseValue} + {if $label_role}[{$label_role}] {/if}{$role} : {if $label_code}[{$label_code}] {/if}{$code} ({if $label_type}[{$label_type}] {/if}{$type}) + {else} + {$value} + {/if} + {else} + {$noValueTxt} + {/if} +{else} + +{/if}