Les adhérents sont entrés en tant que contact (module contact) dans un dossier particulier. Ici, nous avons créé un dossier "Adhérents" qui a l'identifiant 4. ===== ajout de la date d'adhésion ===== Un champ date est ajouté à la fiche du contact : === modification de la base de donnée === Soit un champ est ajouté à la base manuellement (ou par une interface type PhpMyAdmin), soit il est possible d'utiliser un fichier ''includes/mise_a_jour.inc.php''. C'est cette dernière solution qui a été choisie. Ajout à la ligne 31, après ''AJOUT DU CHAMP "COMPETENCES" ET "HOBBIES" DANS LA TABLE "gt_utilisateur" & "gt_contact"'' : // AJOUT DU CHAMP "ADHESION" DANS LA TABLE "gt_contact" db_test_champ_exist("gt_contact", "adhesion", "ALTER TABLE gt_contact ADD adhesion DATE AFTER siteweb"); === Modification de la fiche contact === Dans le fichier ''module_contact/contact.php'', ajout l.54 : if($contact_tmp["adhesion"]!="") echo " ".$trad["divers"]["adhesion"]." ".strftime("%e %b %Y",strtotime($contact_tmp["adhesion"])).""; === Modification de l'édition du contact === Dans le fichier ''module_contact/contact_edit.php'', insertion l.21 de adhesion=".db_insert($_POST["adhesion"]).",'' : $corps_sql = " civilite=".db_insert($_POST["civilite"]).", nom=".db_insert($_POST["nom"]).", prenom=".db_insert($_POST["prenom"]).", adresse=".db_insert($_POST["adresse"]).", codepostal=".db_insert($_POST["codepostal"]).", ville=".db_insert($_POST["ville"]).", pays=".db_insert($_POST["pays"]).", telephone=".db_insert($_POST["telephone"]).", telmobile=".db_insert($_POST["telmobile"]).", fax=".db_insert($_POST["fax"]).", mail=".db_insert($_POST["mail"]).", siteweb=".db_insert($_POST["siteweb"]).", adhesion=".db_insert($_POST["adhesion"]).", competences=".db_insert($_POST["competences"]).", hobbies=".db_insert($_POST["hobbies"]).", fonction=".db_insert($_POST["fonction"]).", societe_organisme=".db_insert($_POST["societe_organisme"]).", commentaire=".db_insert($_POST["commentaire"]).", raccourci=".db_insert(@$_POST["raccourci"],"bool")." "; Ajout l.101 : aff_champ(@$contact_tmp, "adhesion"); === Affichage de la date d'adhésion === On choisit de faire afficher la date d'adhésion sur l'affichage par liste et par bloc. De plus, les adhérents non à jour de cotisation sont indiqués en rouge, et ceux dont l'adhésion expire dans les 10 jours sont en orange. Dans le fichier ''module_contact/index.php'', insertion l.24 de '', adhesion=".db_insert($contact_tmp["adhesion"])."'' : db_query("UPDATE gt_utilisateur SET civilite=".db_insert($contact_tmp["civilite"]).", photo=".db_insert($photo_tmp).", societe_organisme=".db_insert($contact_tmp["societe_organisme"]).", fonction=".db_insert($contact_tmp["fonction"]).", adresse=".db_insert($contact_tmp["adresse"]).", codepostal=".db_insert($contact_tmp["codepostal"]).", ville=".db_insert($contact_tmp["ville"]).", pays=".db_insert($contact_tmp["pays"]).", telephone=".db_insert($contact_tmp["telephone"]).", telmobile=".db_insert($contact_tmp["telmobile"]).", fax=".db_insert($contact_tmp["fax"]).", siteweb=".db_insert($contact_tmp["siteweb"]).", adhesion=".db_insert($contact_tmp["adhesion"]).", competences=".db_insert($contact_tmp["competences"]).", hobbies=".db_insert($contact_tmp["hobbies"]).", commentaire=".db_insert($contact_tmp["commentaire"])." WHERE id_utilisateur=".db_insert($id_user_tmp)); Ajout l.93 : /// CONTACT A JOUR DE COTISATION ? if ($contact_tmp["adhesion"] < date("Y-m-j", mktime(0,0,0,date("m"),date("d"),date("Y")-1))) { $style = "color:red;"; } elseif ($contact_tmp["adhesion"] < date("Y-m-j", mktime(0,0,0,date("m"),date("d")+10,date("Y")-1))) { $style = "color:orange;"; } else { $style = ""; } Ajout l.113 : if($contact_tmp["adhesion"]!="") echo strftime("%e %b %Y",strtotime($contact_tmp["adhesion"]))."
"; Ajout l.138 : if($contact_tmp["adhesion"]!="") echo strftime("%e %b %Y",strtotime($contact_tmp["adhesion"])).""; === Ajout d'un critère de tri === Pour trier les contacts par date d'adhésion, modification du fichier ''module_contact/commun.inc.php''. Insertion l.7 de '',"adhesion@@asc","adhesion@@desc"'' : $config["tri_contact"] = modif_tri_defaut_personnes(array( "nom@@asc","nom@@desc", "prenom@@asc","prenom@@desc", "civilite@@asc","civilite@@desc", "date@@desc","date@@asc","codepostal@@asc","codepostal@@desc","ville@@asc","ville@@desc","pays@@asc","pays@@desc", "fonction@@asc","fonction@@desc","societe_organisme@@asc","societe_organisme@@desc","id_utilisateur@@asc","id_utilisateur@@desc","adhesion@@asc","adhesion@@desc")); === fonction d'affichage d'un calendrier === Pour être certain que la date soit au bon format, un calendrier s'affiche quand on clique sur l'édition du champ adhésion. Dans le fichier ''fonctions/utilisateur.inc.php'', insertion l.255, après : if ($cle_champ=="pass" or $cle_champ=="pass2") { $type_input = "password"; $autocomplete = "Autocomplete=\"off\""; } De : elseif ($cle_champ =="adhesion") { $type_input = "text"; $value = @$user_tmp[$cle_champ]; $debut_unix = (@$user_tmp["adhesion"]!="") ? strtotime($user_tmp["adhesion"]) : time(); $calend = " "; $calendrier = "cursor:pointer;\" onClick=\"afficher('calendrier_date_adhesion','bascule');\" readonly "; } === Affichage du nombre d'adhérents à jour de cotisation === Modification de la fonction qui affiche le nombre d'éléments d'un dossier pour compter le nombre d'adhérents à jour, seulement pour le dossier dont l'identifiant est 4. Dans ''fonctions/objet.inc.php'', Ajout l.467, après : $nb_elems_tmp = db_valeur("SELECT count(*) FROM ".$objet_enfant["table_objet"]." WHERE id_dossier=".$id_objet." ".sql_affichage($objet_enfant,$id_objet)); De : if ($id_objet==4) { $nb_adh_ajour = db_valeur("SELECT count(*) FROM ".$objet_enfant["table_objet"]." WHERE id_dossier=".$id_objet." AND TO_DAYS(NOW()) - TO_DAYS(adhesion) < 365 ".sql_affichage($objet_enfant,$id_objet)); } Remplacer l.470 : $contenu_dossier = $nb_elems_tmp." ".(($nb_elems_tmp>1)?$trad["divers"]["elements"]:$trad["divers"]["element"]); Par : if ($id_objet==4) { $contenu_dossier = $nb_elems_tmp." ".(($nb_elems_tmp>1)?$trad["divers"]["elements"]:$trad["divers"]["element"])."
".$nb_adh_ajour." adhérent-es à jour de cotisation" ; } else { $contenu_dossier = $nb_elems_tmp." ".(($nb_elems_tmp>1)?$trad["divers"]["elements"]:$trad["divers"]["element"]); } ===== ajout de l'option bénévole ===== Un nouveau champ booléan ''benevole'' est créé dans la table ''gt_contact''. Si le type BOOL n'est pas pris en compte (comme c'était le cas pour ma base de donnée mysql), il faut créer un champ TINYINT de longueur 1 (0 pour FAUX, 1 pour VRAI). === Modification de la fiche contact === Dans ''module_contact/contact.php'', ajout l.56 : if($contact_tmp["benevole"]==0) { echo " ".$trad["divers"]["benevole"]." Non"; } else { echo " ".$trad["divers"]["benevole"]." Oui"; } === Modification de l'édition de la fiche contact === Dans ''module_contact/contact_edit.php'', ajout l.20 : if ($_POST["benevole"]) {$valeur_benevole = "1";} else {$valeur_benevole = "0";} Insertion de '', benevole=".db_insert($valeur_benevole)."'' l.21 : $corps_sql = " civilite=".db_insert($_POST["civilite"]).", nom=".db_insert($_POST["nom"]).", prenom=".db_insert($_POST["prenom"]).", adresse=".db_insert($_POST["adresse"]).", codepostal=".db_insert($_POST["codepostal"]).", ville=".db_insert($_POST["ville"]).", pays=".db_insert($_POST["pays"]).", telephone=".db_insert($_POST["telephone"]).", telmobile=".db_insert($_POST["telmobile"]).", fax=".db_insert($_POST["fax"]).", mail=".db_insert($_POST["mail"]).", siteweb=".db_insert($_POST["siteweb"]).", adhesion=".db_insert($_POST["adhesion"]).", benevole=".db_insert($valeur_benevole).", competences=".db_insert($_POST["competences"]).", hobbies=".db_insert($_POST["hobbies"]).", fonction=".db_insert($_POST["fonction"]).", societe_organisme=".db_insert($_POST["societe_organisme"]).", commentaire=".db_insert($_POST["commentaire"]).", raccourci=".db_insert(@$_POST["raccourci"],"bool")." "; Ajout l.102 : aff_champ(@$contact_tmp, "benevole"); Modification de la fonction ''aff_champ'' dans ''fonctions/utilisateur.inc.php''. Remplacer l.268 : echo "".$trad["divers"][$cle_champ].""; echo "".$calend.""; par : if ($cle_champ =="benevole") { echo "".$trad["divers"][$cle_champ].""; if ($value == "1") { echo ""; } else { echo ""; } } else { echo "".$trad["divers"][$cle_champ].""; echo "".$calend.""; } === Ajout d'un critère de tri === Les bénévoles sont en premier sur la liste. Dans le fichier ''module_contact/commun.inc.php'' Insertion l.7 de '',"benevole@@desc"'' : $config["tri_contact"] = modif_tri_defaut_personnes(array( "nom@@asc","nom@@desc", "prenom@@asc","prenom@@desc", "civilite@@asc","civilite@@desc", "date@@desc","date@@asc","codepostal@@asc","codepostal@@desc","ville@@asc","ville@@desc","pays@@asc","pays@@desc", "fonction@@asc","fonction@@desc","societe_organisme@@asc","societe_organisme@@desc","id_utilisateur@@asc","id_utilisateur@@desc", "benevole@@desc","adhesion@@asc","adhesion@@desc")); ===== Envoi de mail ===== Pour l'envoi de mail, la sélection des adhérents à jour de cotisation se fait sur la base de la couleur du nom (rouge si l'adhérent est à jour, orange si l'adhésion est bientôt expirée). L'affichage doit donc être modifié dans le fichier ''module_mail/index.php''. Ajout l.185 : if ($contact_tmp["adhesion"] < date("Y-m-j", mktime(0,0,0,date("m"),date("d"),date("Y")-1))) { $style = "\"color:red;\""; } elseif ($contact_tmp["adhesion"] < date("Y-m-j", mktime(0,0,0,date("m"),date("d")+10,date("Y")-1))) { $style = "\"color:orange;\""; } else { $style = "\"\""; } ==== aux adhérents à jour de cotisation ==== Ajout de la fonction de sélection des adhésions à jour après la fonction ''function select_ensemble_users'' : // SELECTIONNER TOUS LES CONTACTS A JOUR DE COTISATION function select_users_a_jour(id_espace_dossier) { for(var i=0; i < tab_ensembles_users[id_espace_dossier].length; i++) { id_tmp = tab_ensembles_users[id_espace_dossier][i]; if(element("txt_"+id_tmp).getAttribute("style") != "color:red;") { if(element("box_"+id_tmp).checked==false) { element("box_"+id_tmp).checked = true; element("txt_"+id_tmp).className = "lien_select"; } else { element("box_"+id_tmp).checked = false; element("txt_"+id_tmp).className = "lien"; } } } } Ajout de l'icone permettant cette sélection, l.175 après : echo ""; De : if ($id_dossier_tmp == "D4") { echo ""; ==== dont l'adhésion expire dans les 10 jours ==== Ajout de la fonction de sélection des adhésions dont l'expiration arrive à terme après la fonction ''function select_users_a_jour'' : // SELECTIONNER TOUS LES CONTACTS NON A JOUR DE COTISATION DANS 10 JOURS function select_users_bientot_non_a_jour(id_espace_dossier) { for(var i=0; i < tab_ensembles_users[id_espace_dossier].length; i++) { id_tmp = tab_ensembles_users[id_espace_dossier][i]; if(element("txt_"+id_tmp).getAttribute("style") == "color:orange;") { if(element("box_"+id_tmp).checked==false) { element("box_"+id_tmp).checked = true; element("txt_"+id_tmp).className = "lien_select"; } else { element("box_"+id_tmp).checked = false; element("txt_"+id_tmp).className = "lien"; } } } } Ajout de l'icone permettant cette sélection, l.174 après : if ($id_dossier_tmp == "D4") { De : echo ""; ==== aux bénévoles ==== De même, on ajoute une icone après les adhérents bénévoles. Ajout de la fonction de sélection des bénévoles l.60 : // SELECTIONNER TOUS LES CONTACTS BENEVOLES function select_users_benevoles(id_espace_dossier) { for(var i=0; i < tab_ensembles_users[id_espace_dossier].length; i++){ id_tmp = tab_ensembles_users[id_espace_dossier][i]; if(element("txt_"+id_tmp).firstChild.nextSibling) { if(element("txt_"+id_tmp).firstChild.nextSibling.nodeName == "IMG") { if(element("box_"+id_tmp).checked==false){ element("box_"+id_tmp).checked = true; element("txt_"+id_tmp).className = "lien_select"; } else { element("box_"+id_tmp).checked = false; element("txt_"+id_tmp).className = "lien"; } } } } } Dans le fichier ''module_mail/index.php'', ajout l.176 : echo ""; Ajout l.186 : if ($contact_tmp["benevole"] == 1) {$benev = "";} else {$benev = "";} Ajout l.189 : echo "".$contact_tmp["prenom"]." ".$contact_tmp["nom"]." ".$benev." "."";