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.
Un champ date est ajouté à la fiche du contact :
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");
Dans le fichier module_contact/contact.php
, ajout l.54 :
if($contact_tmp["adhesion"]!="") echo "<tr><td class=\"lib_user\"><img src=\"".path_templates."module_utilisateurs/user_fonction.png\" /> ".$trad["divers"]["adhesion"]." </td><td>".strftime("%e %b %Y",strtotime($contact_tmp["adhesion"]))."</td></tr>";
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");
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"]))."<br />";
Ajout l.138 :
if($contact_tmp["adhesion"]!="") echo strftime("%e %b %Y",strtotime($contact_tmp["adhesion"]))."<img src=\"".path_templates."divers/separateur.gif\" />";
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"));
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 = " <iframe id=\"calendrier_date_adhesion\" class=\"menu_flottant calendrier_flottant\" src=\"".path_includes."calendrier.inc.php?date_affiche=".$debut_unix."&date_selection=".$debut_unix."&champ_modif=adhesion\" frameborder=\"0\" scrolling=\"auto\"></iframe>"; $calendrier = "cursor:pointer;\" onClick=\"afficher('calendrier_date_adhesion','bascule');\" readonly "; }
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"])."<br>".$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"]); }
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).
Dans module_contact/contact.php
, ajout l.56 :
if($contact_tmp["benevole"]==0) { echo "<tr><td class=\"lib_user\"><img src=\"".path_templates."module_utilisateurs/user_fonction.png\" /> ".$trad["divers"]["benevole"]." </td><td>Non</td></tr>"; } else { echo "<tr><td class=\"lib_user\"><img src=\"".path_templates."module_utilisateurs/user_fonction.png\" /> ".$trad["divers"]["benevole"]." </td><td>Oui</td></tr>"; }
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 "<td class=\"".$style_txt."\" style=\"width:40%;\">".$trad["divers"][$cle_champ]."</td>"; echo "<td>".$calend."<input type=\"".$type_input."\" name=\"".$cle_champ."\" value=\"".$value."\" ".$autocomplete." style=\"width:100%; \" ".$calendrier." /></td>";
par :
if ($cle_champ =="benevole") { echo "<td class=\"".$style_txt."\" style=\"width:40%;\">".$trad["divers"][$cle_champ]."</td>"; if ($value == "1") { echo "<td><input type=\"checkbox\" name=\"benevole[]\" value=\"".$value." \"style=\"width:100%;\" checked=\"checked\" ; /></td>"; } else { echo "<td><input type=\"checkbox\" name=\"benevole[]\" value=\"".$value." \"style=\"width:100%;\" /></td>"; } } else { echo "<td class=\"".$style_txt."\" style=\"width:40%;\">".$trad["divers"][$cle_champ]."</td>"; echo "<td>".$calend."<input type=\"".$type_input."\" name=\"".$cle_champ."\" value=\"".$value."\" ".$autocomplete." style=\"width:100%; \" ".$calendrier." /></td>"; }
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"));
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 = "\"\""; }
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 “<img src=\”“.path_templates.”divers/inverser_selection.png\“
class=\"lien\" onclick=\"select_ensemble_users('".$id_dossier_tmp."');afficher_dynamic('".$id_dossier_tmp."',null,true);\" ".infobulle($trad["divers"]["inverser_selection"])." />";
De :
if ($id_dossier_tmp == "D4") { echo "<img src=\"".path_templates."divers/selection_ajour.png\" class=\"lien\" onclick=\"select_users_a_jour('".$id_dossier_tmp."');afficher_dynamic('".$id_dossier_tmp."',null,true);\" ".infobulle("adhésino | jour")." />";
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 "<img src=\"".path_templates."divers/selection_bientot_nonajour.png\" class=\"lien\" onclick=\"select_users_bientot_non_a_jour('".$id_dossier_tmp."');afficher_dynamic('".$id_dossier_tmp."',null,true);\" ".infobulle("expiration de l'adhésion dans 10 jours")." />";
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 "<img src=\"".path_templates."divers/benevolat-icon.png\" class=\"lien\" onclick=\"select_users_benevoles('".$id_dossier_tmp."');afficher_dynamic('".$id_dossier_tmp."',null,true);\" ".infobulle("bénévoles")." />";
Ajout l.186 :
if ($contact_tmp["benevole"] == 1) {$benev = "<img src=\"".path_templates."divers/benevolat-icon.png\"/>";} else {$benev = "";}
Ajout l.189 :
echo "<span class=\"lien\" id=\"txt_".$id_contact_tmp."\" onClick=\"check_txt_box(this.id,'".$id_contact_tmp."');\" style=".$style.">".$contact_tmp["prenom"]." ".$contact_tmp["nom"]." ".$benev." "."</span>";