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 "
";
=== 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." "."";