#!/usr/bin/perl
use cPanelUserConfig;
#AUTEUR: Danny J. Sohier
#DATE DE CREATION: 1er avril 2006
#NOM: handicap.pl
#PROJET: Maggiebou (Club de golf Lorette Inc.)
# Ce programme gère les handicaps.
use DBI;
use CGI qw/:standard/;;
use CGI::Cookie;
use Math::Round qw(round nearest);
use Math::VecStat qw(max min maxabs minabs sum average);
require "commun.pl";
$cgi = new CGI;
#&testhtml($cgi->Dump());
### NEW DBI 2016
$host= 'localhost:3306';
$database= 'golflevi_handicap';
$user= 'golflevi_golflev';
$password= 'NLr34eU?%uer4i68';
$data_source = "DBI:mysql:database=$database;host=$host;mysql_socket=/tmp/mysql.sock";
$dbh = DBI->connect($data_source, $user, $password) or die "Can't connect to $data_source: $DBI::errstr";
# On ramasse les informations du script
$action = $cgi->param('action');
$membre = cookie('membre');
$xmembre = $cgi->param('xmembre');
$id_partie = $cgi->param('id_partie');
$kiosque = $cgi->param('kiosque');
$scope = $cgi->param('scope');
$ico_plus = '/images/handicap/plus-ico2.png';
$ico_moins = '/images/handicap/moins-ico.png';
&init_url; # Initialisation des URL
$titre = "Gestion des handicaps";
&hdcp_varcalcul; # On initialise certaines variables pour le calcul du HDCP.
if ($action eq 'login') {
&verif_login; # On vérifie le login
&biscuit('creation'); # On émet un cookie
} #if
elsif ($action eq 'affiche') {
$htmlhdcp = &info_handicap;
} #elsif
elsif (($action eq 'ajout') && ($membre ne '')) {
&biscuit('verifie'); # on vérifie l'état du biscuit...
$infomembre = &info_membre;
&ajout_partie; # On ajoute une partie
$htmlhdcp = &info_handicap;
&biscuit('creation'); # On émet un cookie
} #elsif
elsif (($action eq 'supprimepartie') && ($membre ne '') && ($id_partie ne '')) {
&biscuit('verifie'); # on vérifie l'état du biscuit...
$infomembre = &info_membre;
&supprime_partie; # On supprime une partie
$htmlhdcp = &info_handicap;
&biscuit('creation'); # On émet un cookie
} #elsif
elsif ($action eq 'calculhdcp') {
$membre = $xmembre;
$infomembre = &info_membre;
$htmlhdcp .= &calculhdcptout; # On calcule le différentiel pour chaque partie d'un membre...
$htmlhdcp .= &info_handicap;
#$facthdcp = &calcul_handicap; # On calcule le nouveau handicap
&update_handicap($facthdcp); # On met à jour l'info du facteur hdcp du joueur dans sa fiche...
#$htmlhdcp .= &info_handicap;
$htmlhdcp .= $facthdcp;
} #elsif
elsif ($action eq 'doublon') {
# Exceptionnel. Ceci va éliminier les doublons dans la BD de handicaps
$infomembre = &info_membre;
$htmlhdcp .= &info_handicap;
$htmlhdcp .= &doublon;
} # elsif
elsif ($action eq 'listehdcp') {
# Cette fonction permet de lister tous les handicaps si le membre possède ces droits.
if ($scope eq 'embed') {
print header();
$htmlhdcp = &listehdcp;
print "$htmlhdcp";
exit(0);
} # if
else {
&biscuit('verifie'); # on vérifie l'état du biscuit...
$infomembre = &info_membre;
} # else
$htmlhdcp = &listehdcp;
&biscuit('creation'); # On émet un cookie
&init_html;
#print header(-cookie=>$monbiscuit);
print header();
print $entete;
print $banniere;
print $ariane;
print $init_contenu;
print $infomembre;
print "$htmlhdcp";
print $pied;
exit(0);
} #elsif
elsif ($action eq 'calcultous') {
# Exceptionnel. Ceci permet de calculer les handicaps de tous les membres
$htmlhdcp .= &calcultous;
} # elsif
else {
print "Location: $url\n\n";
exit(0);
} #else
&init_html;
#print $cgi->header(-cookie=>$monbiscuit);
print header(-cookie=>$monbiscuit);
print $entete;
print $banniere;
print $ariane;
print $init_contenu;
print $infomembre;
print $formulaire;
print "$htmlhdcp";
print $pied;
exit(0);
&testhtml($cgi->Dump());
####
#### Requetes secondaires
####
sub testhtml {
local($debug) = @_;
$html = $cgi->header; # create the HTTP header
print "$html $debug";
exit(0);
}
sub calcultous {
# Exceptionnel. Avec ceci, on fait le calcul de tous les handicaps...
local($stuff) = '';
$requete = "SELECT * from individu where ISNULL(handicap) order by numero";
$reqhtml .="
$g :: $INFO->{'numero'} - $INFO->{'nom'}, $INFO->{'prenom'} - $nb\n";
$membre=$INFO->{'numero'};
$MEMBRE->{'handicap'}='';
$MEMBRE->{'tournois_ajust'}='';
$MEMBRE->{'tournois_ajust'}='';
undef %DIFF;
undef @DIFF;
&info_handicap;
$g++;
} # if
} #while
$membre=$membrevrai;
$MEMBRE->{'handicap'}=$hdcpvrai;
} #if
return($stuff);
} # calcultous
sub biscuit {
# On fait la gestion des cookies...
local($quoi) = @_;
if ($quoi eq 'creation') { # On attribue un nouveau cookie...
###$monbiscuit = new CGI::Cookie(-name=>'membre',-value=>$MEMBRE->{'numero'}, -domain=>'.golflorette.ca', -expires =>'+4m');
$monbiscuit = new CGI::Cookie(-name=>'membre',-value=>$MEMBRE->{'numero'}, -expires =>'+4m');
} # creation
elsif ($quoi eq 'verifie') {
&erreur if ($membre eq '');
} # elsif
$bake.="BISCUITS ";
foreach $cook (@cookies) {
$bake.="$cook ";
} #foreach
} # biscuit
sub erreur {
print "Location: $urlloginerreur\n\n";
exit;
} #erreur
sub supprime_partie {
# On supprime une partie si celle-ci existe et appartient au membre.
$requete = "SELECT * from hdcp_partie where id_partie = '$id_partie'";
$reqhtml .="
$requete";
$sth = $dbh->prepare($requete);
$sth->execute();
if ($sth->rows()) {
$PARTIE = $sth->fetchrow_hashref('NAME_lc');
# Il y a une partie. On vérifie maintenant si la partie appartient au membre... Si non, on l'envoie en erreur
&erreur if ($MEMBRE->{'numero'} ne $PARTIE->{'id_membre'});
# On continue et on supprime la partie
$requete = "DELETE from hdcp_partie where id_partie='$id_partie'";
$reqhtml .="
$requete";
$reqhtml .="
MEMBRE-numero = $MEMBRE->{'numero'} :: PARTIE-membre = $PARTIE{'id_membre'}";
$dbh->do($requete);
} # if
else { # Il n'y a pas de partie avec ce numéro. On ejecte...
&erreur;
} # else
} # supprime_partie
sub verif_login {
$membre = $cgi->param('membre');
$passe = $cgi->param('passe');
if (($membre ne '') && ($passe ne '')) {
$infomembre = &info_membre;
if ($MEMBRE->{'motdepasse'} eq $passe) {
# Le mot de passe est bon on passe à autre chose...
$htmlhdcp = &info_handicap;
} #if
else { &erreur; } #else
} # if
else { &erreur; } #else
} # verif_login
sub update_handicap {
# On met à jour le facteur du handicap...
local($hdcp) = @_;
$requete = "UPDATE individu set handicap='$hdcp', date_handicap=now() where numero=$membre";
###$dbh->query($requete);
$dbh->do($requete);
} # update_handicap
sub calcul_handicap {
# Cette fonction permet de calculer le handicap d'un membre.
#local($nbmaxparties) = 0;
local($facthdcp) = '';
if ($nbmaxparties == 0) { #Il n'y a pas assez de parties pour calculer un facteur de handicap ARGC
&update_handicap($facthdcp) if ($facthdcp ne $MEMBRE->{'handicap'});
$MEMBRE->{'handicap'} = "N/D - Pas assez de parties inscrites...";
} #if
else { # Il y assez de parties. On prend les $nbmaxparties plus bas différentiels pour calculer le facteur de hdcp ARGC
@DIFF = sort {$a <=> $b} (@DIFF);
splice(@DIFF,$nbmaxparties);
local($somme) = sum(@DIFF);
$facthdcp = (($somme/$nbmaxparties) * 0.96);
$facthdcp =~s/(^\d{1,}\.\d{1})(.*$)/$1/;
#$paul = "HDCP-membre = $MEMBRE{'handicap'} -- FactHDCP = $facthdcp";
#$paul .= " -- ON DOIT UPDATER !!! " if ($facthdcp ne $MEMBRE{'handicap'});
&update_handicap($facthdcp);# if ($facthdcp ne $MEMBRE{'handicap'});
$MEMBRE->{'handicap'} = $facthdcp;
$MEMBRE->{'handicap'} = $MEMBRE->{'handicap'} - $MEMBRE->{'tournois_ajust'} if ($MEMBRE->{'tournois_ajust'} > 0);
} # else
# Mon handicap regroupe l'info du handicap du membre
#HOMMES
$hdcpnoir = &hdcpparcours($slope_noir,$MEMBRE->{'handicap'});
$hdcpbleu = &hdcpparcours($slope_bleu,$MEMBRE->{'handicap'});
$hdcpblanc_h = &hdcpparcours($slope_blanc_h,$MEMBRE->{'handicap'});
$hdcpvert_h = &hdcpparcours($slope_vert_h,$MEMBRE->{'handicap'});
$hdcpjaune_h = &hdcpparcours($slope_jaune_h,$MEMBRE->{'handicap'});
#FEMMES
$hdcpblanc_f = &hdcpparcours($slope_blanc_f,$MEMBRE->{'handicap'});
$hdcpvert_f = &hdcpparcours($slope_vert_f,$MEMBRE->{'handicap'});
$hdcpjaune_f = &hdcpparcours($slope_jaune_f,$MEMBRE->{'handicap'});
$hdcprouge = &hdcpparcours($slope_rouge,$MEMBRE->{'handicap'});
$hdcpgris = &hdcpparcours($slope_gris,$MEMBRE->{'handicap'});
$monhandicap = "
\n";
$monhandicap .="
Mon facteur HDCP ARGC
\n";
$monhandicap .="
$MEMBRE->{'handicap'} ";
$monhandicap .="calculé le $MEMBRE->{'date_handicap'}" if ($MEMBRE->{'date_handicap'} ne '');
$monhandicap .=" Nombre de parties jouées cette année : $nbparties";
$monhandicap .="
HANDICAP DE PARCOURS
";
$monhandicap .="
";
$monhandicap .="
";
$monhandicap .="
HOMMES
";
#hommes - ligne 1
$monhandicap .="
NOIR:
$hdcpnoir
";
$monhandicap .="
BLEU:
$hdcpbleu
";
#hommes - ligne 2
$monhandicap .="
BLANC:
$hdcpblanc_h
";
$monhandicap .="
VERT:
$hdcpvert_h
";
#hommes - ligne 3
$monhandicap .="
JAUNE:
$hdcpjaune_h
";
$monhandicap .="
";
$monhandicap .="
FEMMES
";
#femmes - ligne 1
$monhandicap .="
BLANC:
$hdcpblanc_f
";
$monhandicap .="
VERT:
$hdcpvert_f
";
#femmes - ligne 2
$monhandicap .="
JAUNE:
$hdcpjaune_f
";
$monhandicap .="
ROUGE:
$hdcprouge
";
#femmes - ligne 3
$monhandicap .="
GRIS:
$hdcpgris
";
$monhandicap .="
";
$monhandicap .="
";
$monhandicap .="
\n";
$monhandicap .="
\n";
#$yeah=join("-",@DIFF);
#$yukk=join("-",@nbparties);
#return("nbmaxparties=$nbmaxparties partiescalcul=$partiescalcul HDCP=$facthdcp $yeah $yukk");
return($facthdcp);
} # calcul_handicap
sub hdcpparcours {
local($slope,$fhdcp) = @_;
local($hdcpjalon)='';
if ($fhdcp eq 'N/D - Pas assez de parties inscrites...') {
$hdcpjalon = '-';
}
else {
$hdcpjalon = round($fhdcp*($slope/113));
}
return($hdcpjalon);
} # hdcpparcours
sub calculhdcptout {
# On calcule les diff de toutes les parties d'un membre
# Cette fonction est spéciale et n'est pas utilisée dans l'interface Web.
$requete = "select * from hdcp_partie where id_membre=$membre";
###$sth = $dbh->query($requete);
$sth = $dbh->prepare($requete);
$sth->execute();
###if ($sth->numrows()) { # Il y a des parties...
if ($sth->rows()) { # Il y a des parties...
###while (local(%PARTIE) = $sth->fetchhash()) {
while ($PARTIE = $sth->fetchrow_hashref('NAME_lc')) {
##local($diff)=&calculdiffpartie(%PARTIE);
local($diff)=&calculdiffpartie;
$requete = "UPDATE hdcp_partie set diffhdcp='$diff' where id_partie=$PARTIE->{'id_partie'}";
$htmlhdcp .="
$requete";
###$dbh->query($requete);
$dbh->do($requete);
} # while
} # if
} # calculhdcptout
sub calculdiffpartie {
local(%PARTIE) = @_;
local($diff) = 0;
$diff = ((($PARTIE{'pointage'}-$PARTIE{'evaluation'})*113)/$PARTIE{'slope'});
###&testhtml("APRES calculdiffpartie");
$diff = nearest(.1, $diff);
#$diff =~s/(^\d{1,}\.\d{1})(.*$)/$1/;
return($diff);
} #calculdiffpartie
#sub hdcp_varcalcul {
# # Cette fonction initialise des variables qui indique quoi faire pour calculer le facteur de handicap de la RCGA
# @nbparties = (0,0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,8,9,10);
# #hommmes
# $slope_noir = '133';
# $slope_bleu = '131';
# $slope_blanc_h = '125';
# $slope_vert_h = '121';
# $slope_jaune_h = '116';
# #femmes
# $slope_blanc_f = '131';
# $slope_vert_f = '128';
# $slope_rouge = '123';
# $slope_jaune_f = '128';
# $slope_gris = '117';
# #$slope_blanc_vert_h = '119';
# #$slope_bleu_blanc = '124';
#} # hdcp_varcalcul
sub info_membre {
# Cette fonction permet de recueillir les infos d'un membre.
local($stuff)='';
$requete="SELECT * from individu where numero='$membre'";
$sth = $dbh->prepare($requete);
$sth->execute();
if ($sth->rows()) { # Il y a un membre... On écrit sa fiche...
$MEMBRE=$sth->fetchrow_hashref('NAME_lc');
$MEMBRE->{'courriel'}='Aucune adresse fournie...' if ($MEMBRE->{'courriel'} eq '');
$stuff.="
\n
\n";
$stuff.="
MEMBRE:
$MEMBRE->{'nom'}, $MEMBRE->{'prenom'}
";
$stuff.="
CATÉGORIE :
$MEMBRE->{'desccategorie'}
";
$stuff.="
\n";
$stuff.="
COURRIEL:
$MEMBRE->{'courriel'}
";
$stuff.="
DÉPARTS:
";
$stuff.="Envoi par courriel activé" if ($MEMBRE->{'depcourriel'} eq 'Y');
$stuff.="Envoi par courriel désactivé" if ($MEMBRE->{'depcourriel'} eq 'N');
$stuff.="
\n";
} # if
return($stuff);
} # info_membre
sub ajout_partie {
# Cette fonction permet de recuillir les infos d'une partie et de l'ajouter au dossier de l'usager...
# On débute en ramassant les infos de la partie...
local($id_terrain,$jalon,$slope,$evaluation) = split(/\+/,$cgi->param('jalons'));
#local($jour,$mois,$annee) = split(/\//,$cgi->param('MyDate'));
local($mois,$jour,$annee) = split(/\//,$cgi->param('MyDate'));
# où 72+Blanc+117.00+69.00 (id_terrain+jalon+slope+evaluation)
$HDCP{'id_membre'} = $membre;
$HDCP{'date_partie'} = "$annee-$mois-$jour";
$HDCP{'id_terrain'} = $id_terrain;
if (($cgi->param('club') ne '99999') && ($cgi->param('club') ne '000')) { # C'est un club listé dans la BD
($HDCP{'nom_club'},$HDCP{'nom_terrain'}) = &fetch_terrain if ($cgi->param('club') ne '000');
} # if
else { # C'est un club avec des infos fournies par le membre...
$HDCP{'nom_club'} = $cgi->param('clubcache');
$HDCP{'nom_terrain'} = $cgi->param('parcourscache');
} # else
$HDCP{'jalon'} = $jalon;
$HDCP{'evaluation'} = $cgi->param('evaluation');
$HDCP{'slope'} = $cgi->param('slope');
$HDCP{'pointage'} = $cgi->param('pointage');
$HDCP{'tournoi'} = 'T' if ($cgi->param('tournoi') eq 'tournoi');
$HDCP{'putts'} = $cgi->param('putts') if ($cgi->param('putts') ne '');
$HDCP{'fairways'} = $cgi->param('fairways') if ($cgi->param('fairways') ne '');
$HDCP{'parfigure'} = $cgi->param('parfigure') if ($cgi->param('parfigure') ne '');
$HDCP{'categorie'} = $cgi->param('categorie');
###&testhtml("Avant WHILE ajout_partie");
$HDCP{'diffhdcp'} = &calculdiffpartie(%HDCP);
while (local($cle,$valeur)= each(%HDCP)) {
$champs .= "$cle,";
$valeur = $dbh->quote($valeur);
$valeurs .= "$valeur,";
$htmlhdcp.= "
$requete ";
$dbh->do($requete);
} # ajout_partie
sub fetch_terrain {
# Cette fonction va chercher le nom du club et le nom du terrain selon le paramètre id_terraint
$requete = "SELECT nom_club,nom_terrain from hdcp_terrain where id_terrain=$id_terrain";
###$idt = $dbh->query($requete);
###local($nc,$nt) = $idt->fetchrow();
$idt = $dbh->prepare($requete);
$idt->execute();
local($nc,$nt) = $idt->fetchrow_array();
return($nc,$nt);
} # fetch_terrain
sub fetch_tournois {
local($difftournoi1)= '';
local($difftournoi2)= '';
local($difftournoi)= '';
local($facttournoi)= '';
local($reduction)= '';
local($STUFF)= '';
#local($bi)= '';
$requete = "SELECT * from hdcp_partie where id_membre=$membre and tournoi='T'and (DATE_SUB(curdate(),INTERVAL 365 DAY) <= date_partie) order by diffhdcp";
#$bi .="
$requete ";
$sth = $dbh->prepare($requete);
$sth->execute();
local($nbtournois) = $sth->rows();
if ($nbtournois >= 2) { # Il y a plus de différentiels... On peut calculer le facteur des tournois.
$i=1;
#$bi.="
Plus ou egal à 2 tournois";
while ($STUFF = $sth->fetchrow_hashref('NAME_lc')) {
if ($i == 1) { # On calcule le premier différentiel formule tournoi...
#$bi .= "1- ((( $STUFF{'pointage'} - $STUFF{'evaluation'} ) * 113 )/ $STUFF{'slope'})";
$difftournoi1 = ((($STUFF->{'pointage'}-$STUFF->{'evaluation'})*113)/$STUFF->{'slope'});
if ($difftournoi1 < 0) { $difftournoi1 = nearest(.1, $difftournoi1); }
else { $difftournoi1 =~s/(^\d{1,}\.\d{1})(.*$)/$1/; }
#$bi .= "=$difftournoi1";
} # if
elsif ($i == 2) {
#$bi .= " 2- ((( $STUFF{'pointage'} - $STUFF{'evaluation'} ) * 113 ) / $STUFF{'slope'})";
$difftournoi2 = ((($STUFF->{'pointage'}-$STUFF->{'evaluation'})*113)/$STUFF->{'slope'});
$difftournoi2 =~s/(^\d{1,}\.\d{1})(.*$)/$1/;
#$bi .= "=$difftournoi2";
#$bi .= " $MEMBRE{'handicap'} - $difftournoi2";
$facttournoi = $MEMBRE->{'handicap'} - $difftournoi2;
#$bi .= "=$facttournoi";
if ($facttournoi >= 3) {
# C'est qu'on doit diminuer le handicap du membre avec la règle de tournoi...
#$bi .=" ( $difftournoi1 + $difftournoi2 ) / 2";
$difftournoi = ($difftournoi1+$difftournoi2)/2;
#$bi .= "=$difftournoi";
#$bi .= " $MEMBRE{'handicap'} - $difftournoi";
$difftournoi = $MEMBRE->{'handicap'} - $difftournoi;
#$bi .= "=$difftournoi";
$requete = "select reduction from hdcp_tournoi WHERE (moy_inf <= $difftournoi and moy_sup >= $difftournoi) and (nb_score_inf <= $nbtournois and nb_score_sup >= $nbtournois)";
#$bi .=" $requete";
$sdi = $dbh->prepare($requete);
$sdi->execute();
local($reduction)= 0;
$reduction = $sdi->fetchrow_array( ) if ($sdi->rows());
#$bi .=" REDUCTION= $reduction";
#$bi .=" ANCIEN HDCP= $MEMBRE{'handicap'}";
#$bi .="-- NOUVEAU HDCP= $MEMBRE{'handicap'}";
}# if
} #elsif
elsif ($i > 2) {
last; # On sort de la loop...
} # elsif
$i++;
} # while
} # if
if ($MEMBRE->{'tournois_ajust'} ne $reduction) {
# L'ajustement des tournois n'est plus le même. On doit le modifier dans la BD.
$requete= "UPDATE individu set tournois_ajust=$reduction where numero='$membre'";
$dbh->do($requete);
$MEMBRE->{'tournois_ajust'} = $reduction;
} # if
} # fetch_tournois
sub infoparties {
# Cette fonction permet de retrouver des statistiques sur les parties
local($quoi) = 0;
$requete = "select count(*) from hdcp_partie where id_membre=$membre
and year(date_partie)=year(now())
order by date_partie desc";
$htmlreq .= "
$requete ";
$sth = $dbh->prepare($requete);
$sth->execute();
$quoi = $sth->fetchrow_array() if ($sth->rows());
return($quoi);
} #infoparties
sub info_handicap {
# On retrouve les dernières parties et on les affiche
local($stuff) = "";
%JALON = ('Bleu','jalon_bleu.gif',
'Jaune (H)','jalon_jaune.gif',
'Jaune (F)','jalon_jaune.gif',
'Blanc','jalon_blanc.gif',
'Blanc (F)','jalon_blanc.gif',
'Blanc (H)','jalon_blanc.gif',
'Gris','jalon_gris.gif',
'Rouge','jalon_rouge.gif',
'Noir','jalon_noir.gif',
'Or','jalon_gold.gif',
'Vert (F)','jalon_vert.gif',
'Vert (H)','jalon_vert.gif',
'Vert','jalon_vert.gif');
# Cette fonction va chercher toutes les parties de tournoi et vérifie si on doit le diminuer selon les tournois...
&fetch_tournois;
$nbparties = &infoparties; # On retrouve le nombre de parties des joueurs
$requete = "SELECT * from hdcp_partie Where Id_membre=$membre Order by date_partie desc limit 20";
$htmlreq .= "
$requete ";
$sth = $dbh->prepare($requete);
$sth->execute();
$partiescalcul = $sth->rows(); # Le nombre de parties disponibles pour le calcul...
# Dans $nbmaxparties, on retrouve le nombre des plus petits diff utilisés dans le calcul du hdcp. $partie utilise seulement
# pour afficher le nombre de parties utilisés dans le calcul.
if ($partiescalcul == 20) {
$nbmaxparties = 10; } #if
else { $nbmaxparties = $nbparties[$partiescalcul]; } # else
$stuff .="\t
\n";
$stuff .="\t
Date
";
$stuff .="
"; # tournoi
$stuff .="
Club
";
$stuff .="
Parcours
";
$stuff .="
"; # jalon
$stuff .="
Pointage
";
$stuff .="
Eval.
";
$stuff .="
Slope
";
$stuff .="
Diff HDCP ARGC
";
#$stuff .="
Cat
";
$stuff .="
Putts
";
$stuff .="
Allées
";
$stuff .="
Par Fig.
\n";
$i=1;
while ($HDCP = $sth->fetchrow_hashref('NAME_lc')) {
#$DIFF{$HDCP{'id_partie'}} = $HDCP{'diffhdcp'};
$lastjalon = $HDCP->{'jalon'} if ($i == 1);
$DIFF{$i} = $HDCP->{'diffhdcp'};
$stuff .= &hdcp_html; # On code le html pour une ligne de handicap
push(@DIFF,$HDCP->{'diffhdcp'});
$i++;
} # while
#$debug.="
$cle - $valeur (nbcalc ($nbcalc) <= nbmaxparties ($nbmaxparties)";
$i=0;
foreach $ele (@ELIM) {
if ($valeur eq $ele) { # C'est une partie qui a compté...
#$debug.="
TROUVER: $valeur";
#
$stuff=~s/\/gras/;
splice(@ELIM,$i,1);
last;
} #if
$i++;
} # foreach
} # foreach
$stuff=~s/\//g;
$stuff .= &hdcp_resume; # On insère une ligne totale...
$stuff .= &hdcp_liste_tiers; # Hdcps des autres membres auxquels il a accès
$stuff .= "\t
\n";
if ($kiosque ne 'oui') {
#$stuff .= "
Cet outil Web calcule les handicaps selon la méthode approuvée et certifiée de l'Association Royal de Golf du Canada (ARCG). Pour en savoir plus sur cette méthode de calcul, visiter le Manuel du Handicap sur le site Web de l'ARGC.";
$stuff .= "
Commentaires, questions, suggestions ou pour l'ajout permanent d'un terrain à cette interface, écrivez à secretariat\@golflevis.com
";
} # if
local($final) = "
\n
$monhandicap
$stuff
\n
\n";
#local($final) ="
\n
$stuff
$monhandicap
\n
\n";
#$final.=$debug;
return($final);
} #info_handicap
sub listehdcp {
##29 avril 2012 - On élimine la condition de voir_membre = 100000. Maintenant, tous peuvent voir les handicaps.
#$requete = "SELECT * FROM hdcp_acces where id_membre='$membre' and voir_membre='100000'";
#$sth = $dbh->query($requete);
#if ($sth->numrows()) {
## Cela indique que ce membre peut voir tous les handicaps.
## 29 avril 2012 - Nouveau début de cette fonction.
$stuff = "
\n";
} # if
return($stuff);
} #listehdcp
sub hdcp_liste_tiers {
# Cette fonction permet de lister les hdcps des autres membres auxquels on a besoin d'avoir accès
local($htmltiers)='';
$requete = "Select voir_membre from hdcp_acces where id_membre='$membre' order by voir_membre";
$sth = $dbh->prepare($requete);
$sth->execute();
## 29 avril 2012 - Accès à tous les handicaps par les membres...
local($urltoushdpc) = "/cgi-bin/handicap.pl?action=listehdcp&scope=embed";
$htmltiers .= "
";
$htmltiers .= '\n";
$htmltiers .= "
\n";
if ($sth->rows()) { # Il y a des fiches de membres que ce membre peut voir...
while ($voir_membre = $sth->fetchrow_array()) {
$voir = 'oui';
push(@tiers,"'$voir_membre'");
# } #else
} #while
if ($voir eq 'oui') {
$tiers = join(',',@tiers);
$requete = "SELECT * from individu where numero in ($tiers) order by nom,prenom";
###$sth = $dbh->query($requete);
$sth = $dbh->prepare($requete);
$sth->execute();
#$htmltiers.="
$requete";
###if ($sth->numrows()) { # On retrouve les informations des membres ici...
if ($sth->rows()) { # On retrouve les informations des membres ici...
$htmltiers .="
LES FACTEURS D'INDEX ET HANDICAPS DE MES COLLÈGUES
";
} # if
} #if
} # if
return($htmltiers);
} #hdcp_liste_tiers
sub hdcp_resume {
# On fait un résumé des handicaps avec une ligne sommaire...
local($stuffhtml) = "";
local($avgpointage) = nearest(.01,average(@pointage));
local($avgputts) = nearest(.01,average(@putts));
local($avgalles) = nearest(.01,average(@alles));
local($avgparfig) = nearest(.01,average(@parfig));
local($avgdiffhdcp) = nearest(.01,average(@diffhdcp));
$stuffhtml = "\t
";
$stuffhtml .="
MOYENNE(S)
";
$stuffhtml .="
$avgpointage
";
$stuffhtml .="
";
$stuffhtml .="
$avgdiffhdcp
"; #10
#$stuffhtml .="
";
$stuffhtml .="
$avgputts
";
$stuffhtml .="
$avgalles
";
$stuffhtml .="
$avgparfig
";
$stuffhtml .="
\n";
return($stuffhtml);
} # hdcp_resume
sub hdcp_html {
# Ce programme tranforme un record de handicap en HTML
local($stuffhtml) = "";
local($jalon) = "";
if ($HDCP->{'pointage'} ne '') {
push(@pointage,$HDCP->{'pointage'});
} #if
if ($HDCP->{'putts'} ne '') {
push(@putts,$HDCP->{'putts'});
} #if
if ($HDCP->{'fairways'} ne '') {
push(@alles,$HDCP->{'fairways'});
} #if
if ($HDCP->{'parfigure'} ne '') {
push(@parfig,$HDCP->{'parfigure'});
} #if
if ($HDCP->{'diffhdcp'} ne '') {
push(@diffhdcp,$HDCP->{'diffhdcp'});
} # if
#if ($HDCP{'tournoi'} eq 'Y') {$HDCP{'tournoi'} ="T";} else {$HDCP{'tournoi'} ="";}
$HDCP->{'tournoi'}='' if ($HDCP->{'tournoi'} eq 'N');
#$jalon = $JALON{$HDCP{'jalon'}};
$HDCP->{'jalon'} = "" if ($JALON{$HDCP->{'jalon'}});
$stuffhtml .="
$i. $HDCP->{'date_partie'}
";
$stuffhtml .="
$HDCP->{'tournoi'}
";
$stuffhtml .="
$HDCP->{'nom_club'}
";
$stuffhtml .="
$HDCP->{'nom_terrain'}
";
$stuffhtml .="
$HDCP->{'jalon'}
";
#$stuffhtml .="
";
$stuffhtml .="
$HDCP->{'pointage'}
";
$stuffhtml .="
$HDCP->{'evaluation'}
";
$stuffhtml .="
$HDCP->{'slope'}
";
$stuffhtml .="
$HDCP->{'diffhdcp'}
";
#$stuffhtml .="
$HDCP->{'categorie'}
";
$stuffhtml .="
$HDCP->{'putts'}
";
$stuffhtml .="
$HDCP->{'fairways'}
";
$stuffhtml .="
$HDCP->{'parfigure'}
";
$stuffhtml ="\t
>".$stuffhtml."
\n";
return($stuffhtml);
} # hdcp_html
sub init_url {
# On initialise ici les URL de login et de login d'erreur selon s'il s'agit du mode kiosque ou non.
if ($kiosque eq 'oui') {
# Nous sommes dans le mode kiosque (on ne montre pas les menus déroulants...
$url= '/handicap/klogin.shtml';
$urlloginerreur='/handicap/kloginerreur.shtml';
} # if
else { # Mode Web normal
$url= '/handicap/login.shtml';
$urlloginerreur='/handicap/loginerreur.shtml';
} # else
} #init_url
sub init_html {
# On initialise les variables ici...
$entete = &lire_fichier("$racineweb/handicap/entete.html");
$pied = "\t\n\t
\n";
$formulaire = &lire_fichier("$racineweb/handicap/formulaire.html");
if ($kiosque eq 'oui') {
# Nous sommes dans le mode kiosque (on ne montre pas les menus déroulants...
$banniere = &lire_fichier("$racineweb/handicap/krefonteentete.html");
$ariane = '';
$formulaire =~s//oui/; # On met la variable du kiosque à oui.
} # if
else { # Mode Web normal
#$banniere = &lire_fichier("$racineweb/refonteentete.html");
#$ariane = &lire_fichier("$racineweb/handicap/ariane.html");
} # else
} # init_html
###
### Fonctions très spéciales qui n'ont servies qu'une fois...
###
sub doublon {
local($stuff)='';
$requete = "select distinct(id_membre) from hdcp_partie";
$sth = $dbh->query($requete);
while (local($id)=$sth->fetchrow()) {
$requete = "select id_membre, id_partie, date_partie, pointage from hdcp_partie where id_membre='$id' order by date_partie desc";
$nth = $dbh->query($requete);
my %PARTIE = ();
my %DATEPARTIE = ();
while (local($idmembre,$idpartie,$datepartie,$pointage) = $nth->fetchrow()) {
if ($PARTIE{$datepartie} eq $pointage) {
# Il y a déjà une partie, c'est un doublon. On l'enregistre
$stuff .= "
DOUBLON JOUEUR $id :: PARTIE $idpartie :: $datepartie $pointage";
$requete = "delete from hdcp_partie where id_partie='$idpartie'";
$dbh->query($requete);
$doub++;
} # if
else {
$PARTIE{$datepartie} = $pointage;
$DATEPARTIE{$idpartie} = $datepartie;
}
} # while
} # yeah
# On passe à travers tous les membres...
$stuff.="