diff options
author | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2018-06-30 11:39:33 +0200 |
---|---|---|
committer | Ludovic Pouzenc <ludovic@pouzenc.fr> | 2018-06-30 11:39:33 +0200 |
commit | 9738017972a6d4fea655926525b3c67dd85740cf (patch) | |
tree | 938d6f26c138d7c176c821bafc513362186a8ca7 /beta_accents/app/include | |
parent | 5dac82f52f45ad27f16ec2ff63ee75e2f39ef942 (diff) | |
download | 2007-AWOR-9738017972a6d4fea655926525b3c67dd85740cf.tar.gz 2007-AWOR-9738017972a6d4fea655926525b3c67dd85740cf.tar.bz2 2007-AWOR-9738017972a6d4fea655926525b3c67dd85740cf.zip |
Version beta_accents 2007-03-12+17:26:00 - 2007-03-14+17:35:14
Diffstat (limited to 'beta_accents/app/include')
-rw-r--r-- | beta_accents/app/include/connect.inc.php | 8 | ||||
-rw-r--r-- | beta_accents/app/include/ical.inc.php | 6 | ||||
-rw-r--r-- | beta_accents/app/include/index.html | 0 | ||||
-rw-r--r-- | beta_accents/app/include/je.inc.php | 33 | ||||
-rw-r--r-- | beta_accents/app/include/ju.inc.php | 28 | ||||
-rw-r--r-- | beta_accents/app/include/ludo/auth.inc.php | 2 | ||||
-rw-r--r-- | beta_accents/app/include/ludo/config.inc.php | 12 | ||||
-rw-r--r-- | beta_accents/app/include/ludo/div_create_or_modif.php | 22 | ||||
-rw-r--r-- | beta_accents/app/include/ludo/fonctions.inc.php | 130 | ||||
-rw-r--r-- | beta_accents/app/include/ludo/html_elements.inc.php | 26 | ||||
-rw-r--r-- | beta_accents/app/include/ludo/mail_textarea.php | 9 | ||||
-rw-r--r-- | beta_accents/app/include/ludo/majDispo.php | 4 | ||||
-rw-r--r-- | beta_accents/app/include/ludo/redir.inc.php | 4 | ||||
-rw-r--r-- | beta_accents/app/include/tools.inc.php | 25 |
14 files changed, 161 insertions, 148 deletions
diff --git a/beta_accents/app/include/connect.inc.php b/beta_accents/app/include/connect.inc.php index b985b10..0bc0a10 100644 --- a/beta_accents/app/include/connect.inc.php +++ b/beta_accents/app/include/connect.inc.php @@ -1,14 +1,14 @@ <?php /* - * Paramètres de connexion à la base MySQL + * Paramètres de connexion à la base MySQL */ -// $bd représente le nom de la database à utiliser +// $bd représente le nom de la database à utiliser $bd = "awor"; // mysql_connect(<nom_ou_ip_serveur_mysql>, <utilisateur_mysql>, <mot_de_passe_en_clair_mysql>); -$link = @mysql_connect('localhost', 'lud_restricted', 'maille_ess_ku_elle'); +$link = @mysql_connect('localhost', 'awor', 'blagnac'); @mysql_select_db($bd , $link); -// NB : La gestion d'erreur est inhibée. Cet include ne génèrera jamais de code, même si la connexion n'a pas pu être établie +// NB : La gestion d'erreur est inhibée. Cet include ne génèrera jamais de code, même si la connexion n'a pas pu être établie ?>
\ No newline at end of file diff --git a/beta_accents/app/include/ical.inc.php b/beta_accents/app/include/ical.inc.php index 0d858e3..0936800 100644 --- a/beta_accents/app/include/ical.inc.php +++ b/beta_accents/app/include/ical.inc.php @@ -1,6 +1,6 @@ <?php /* - * Fonction de génération d'iCal + * Fonction de génération d'iCal */ // Constantes d'erreur @@ -34,7 +34,7 @@ define("ERR_ICAL_SQL_ERROR", -2); $iCal_content = "BEGIN:VCALENDAR\r\n" . "VERSION:2.0\r\n"; while ( list($idR, $objetR, $courrielP, $dateDeb, $duree, $lieuR, $ordreJourR, $idL) = mysql_fetch_array($result) ) { - // TODO : Il est probablement judicieux d'ajouter à l'UID un timestamp unix !!!!! + // TODO : Il est probablement judicieux d'ajouter à l'UID un timestamp unix !!!!! $iCal_content .= "BEGIN:VEVENT\r\n" . "UID:awor_${idP}.${idR}\r\n" . "SUMMARY:$objetR ($courrielP)\r\n"; $iCal_content .= 'DTSTART:' . date('Ymd\THis', $dateDeb) . "\r\n"; $iCal_content .= 'DTEND:' . date('Ymd\THis', $dateDeb+60*$duree) . "\r\n"; @@ -56,7 +56,7 @@ define("ERR_ICAL_SQL_ERROR", -2); $iCal_content .= "ATTENDEE:mailto:$mail_autres\r\n"; } } - // TODO : vérifier la pertinance de la variable utilisée + // TODO : vérifier la pertinance de la variable utilisée $iCal_content .= 'URL:http://' . $_SERVER['HTTP_HOST'] . "\r\n"; $iCal_content .= "END:VEVENT\r\n"; } diff --git a/beta_accents/app/include/index.html b/beta_accents/app/include/index.html new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/beta_accents/app/include/index.html diff --git a/beta_accents/app/include/je.inc.php b/beta_accents/app/include/je.inc.php index dcbb75e..53b1043 100644 --- a/beta_accents/app/include/je.inc.php +++ b/beta_accents/app/include/je.inc.php @@ -3,7 +3,7 @@ require_once ('include/connect.inc.php'); function traiter_formulaire_valider_modif_personnes() { - //Vérification a faire pour savoir si c'est bien le propriétaire ?!! $_SESSION['session_idP'] + //Vérification a faire pour savoir si c'est bien le propriétaire ?!! $_SESSION['session_idP'] $tabParticipant = array(); if (isset($_GET['dataParticipants'])) $tabParticipant = $_GET['dataParticipants']; $idL=-1; @@ -19,7 +19,7 @@ require_once ('include/connect.inc.php'); function traiter_formulaire_delete_list() { - //Vérification a faire pour savoir si c'est bien le propriétaire ?!! $_SESSION['session_idP'] + //Vérification a faire pour savoir si c'est bien le propriétaire ?!! $_SESSION['session_idP'] if (isset($_GET['idL'])) list_delete($_GET['idL']); } @@ -55,7 +55,7 @@ require_once ('include/connect.inc.php'); $tabOldPers[$i] = $row[0]; $tabOldPersMail[$i] = $row[1]; } - //Boucle permettant de mettre a NULL les élements identiques aux deux tableaux + //Boucle permettant de mettre a NULL les élements identiques aux deux tableaux $i = 0; while ($i < count($tabOldPers)) { @@ -148,11 +148,11 @@ require_once ('include/connect.inc.php'); - //Fonction qui affiche toutes les liste public ainsi que les liste privée possédées par idP + //Fonction qui affiche toutes les liste public ainsi que les liste privée possédées par idP function generate_html_array_list ($idP) { $result = mysql_query("SELECT idL,libelleL,estPrivee,idP_Createur FROM AWOR_Liste WHERE idP_Createur=$idP OR estPrivee='non' ORDER BY estPrivee,libelleL"); - echo "<table>\n<tr>\n<th>Supprimer</th>\n<th>Type</th>\n<th>Libellé</th>\n</tr>\n"; + echo "<table summary=\"Listes de personnes\">\n<tr>\n<th>Supprimer</th>\n<th>Type</th>\n<th>Libellé</th>\n</tr>\n"; if (mysql_num_rows($result)>0) { @@ -160,11 +160,11 @@ require_once ('include/connect.inc.php'); { $row = mysql_fetch_array($result); echo "<tr>\n<td>"; - if ($row['estPrivee'] == 'oui' || $row['idP_Createur']==$idP) echo "<a href=\"#\" onclick=\"loadid('popdeletelist.php?idL=".$row[0]."','popdeletelist',true);popon('popdeletelist')\"><img src=\"images/supprimer.png\" alt=\"Supprimer ".$row[1]."\" /></a></td>\n" ; else echo "</td>\n"; + if ($row['estPrivee'] == 'oui' || $row['idP_Createur']==$idP) echo "<a href=\"#\" onclick=\"loadid('popdeletelist.php?idL=".htmlentities($row[0], ENT_QUOTES)."','popdeletelist',true);popon('popdeletelist')\"><img src=\"images/supprimer.png\" alt=\"Supprimer ".htmlentities($row[1], ENT_QUOTES)."\" /></a></td>\n" ; else echo "</td>\n"; if ($row['estPrivee'] == 'oui') echo "<td>estPrivée" ; else echo "<td>Public"; echo "</td>\n<td>"; echo "<a href=\"#\" onclick=\"loadid('poppersonne.php?idL=".$row['idL']."&idP_orga=".$idP."','poppersonne',true);popon('poppersonne')\">"; - echo $row['libelleL']; + echo htmlentities($row['libelleL'], ENT_QUOTES); echo "</a></td>\n"; echo "</tr>\n"; } @@ -176,16 +176,17 @@ require_once ('include/connect.inc.php'); function traiter_formulaire_commentaire() { + require_once ('include/tools.inc.php'); if ($_GET['txtCommentaire'] != "") { require_once ('include/connect.inc.php'); if (isset($_GET['idR'])) { - $query="UPDATE AWOR_Repondre SET commentaireReponse ='".$_GET['txtCommentaire']."' WHERE idR=".$_GET['idR']." AND idP=".$_SESSION['session_idP']; + $query="UPDATE AWOR_Repondre SET commentaireReponse ='".addslashes_if_needed($_GET['txtCommentaire'])."' WHERE idR=".addslashes_if_needed($_GET['idR'])." AND idP=".$_SESSION['session_idP']; $result = @mysql_query($query); if ( ! $result || ( mysql_affected_rows() !== 1 ) ) { - $query="INSERT INTO AWOR_Repondre(idR,idP,commentaireReponse) VALUES (".$_GET['idR'].", ".$_SESSION['session_idP'].", '".$_GET['txtCommentaire']."')"; + $query="INSERT INTO AWOR_Repondre(idR,idP,commentaireReponse) VALUES (".addslashes_if_needed($_GET['idR']).", ".$_SESSION['session_idP'].", '".addslashes_if_needed($_GET['txtCommentaire'])."')"; $result = mysql_query($query); if ( ! $result || ( mysql_affected_rows() !== 1 )) @@ -199,17 +200,17 @@ require_once ('include/connect.inc.php'); } else { - $query="DELETE FROM AWOR_Repondre WHERE idR=".$_GET['idR']." AND idP=".$_SESSION['session_idP']; + $query="DELETE FROM AWOR_Repondre WHERE idR=".addslashes_if_needed($_GET['idR'])." AND idP=".$_SESSION['session_idP']; $result = mysql_query($query); } } - // Modifiée par Ludo pour les problèmes de vriables de session et pour d'autres détails : + // Modifiée par Ludo pour les problèmes de variables de session et pour d'autres détails : // S'il n'y a pas de commentaire, on affiche le tableau vide function generate_html_reunion_commentaires($idR) { $idP = $_SESSION['session_idP']; - echo '<table cellspacing="0" class="commentaires" summary="Liste des commentaires laissés pour les personnes conviées à cette réunion">'; + echo '<table cellspacing="0" class="commentaires" summary="Liste des commentaires laissés pour les personnes conviées à cette réunion">'; echo '<thead>'; echo '<tr>'; echo "<th>Commentaires <a href=\"#\" onclick=\"loadid('popcommentaire.php?idR=".$idR."&idP=".$idP."','popcommentaire',true);popon('popcommentaire');\">(Editer votre commentaire)</a></th>"; @@ -225,8 +226,8 @@ require_once ('include/connect.inc.php'); while($pers = mysql_fetch_array($resultat)) { echo '<tr><td>'; - if ($pers["nomP"] !== "" || $pers["prenomP"] !== "") echo $pers["nomP"] . " " . $pers["prenomP"]; else echo $row["courrielP"]; - echo " : ".$pers["commentaireReponse"]."</td></tr>\n"; + echo htmlentities($pers["nomP"], ENT_QUOTES) . " " . htmlentities($pers["prenomP"], ENT_QUOTES); + echo " : ".htmlentities($pers["commentaireReponse"], ENT_QUOTES)."</td></tr>\n"; } } @@ -235,10 +236,6 @@ require_once ('include/connect.inc.php'); echo "<tr><td>Aucun commentaire pour le moment.</td></tr>\n"; } } - echo '</table>'; - } - - ?>
\ No newline at end of file diff --git a/beta_accents/app/include/ju.inc.php b/beta_accents/app/include/ju.inc.php index 75fb4ee..a7154b7 100644 --- a/beta_accents/app/include/ju.inc.php +++ b/beta_accents/app/include/ju.inc.php @@ -2,6 +2,7 @@ function traiter_formulaire_popfichier() { require("include/ludo/config.inc.php"); + require("include/tools.inc.php"); $file = "fichier"; if ( isset($CONFIG['UPLOAD']['relative_path']) ) { $basepath=$CONFIG['UPLOAD']['relative_path']; } else { $basepath='fichiers/';} $basepath=$_SERVER['DOCUMENT_ROOT'].'/'.$basepath; @@ -10,7 +11,7 @@ function traiter_formulaire_popfichier() { if($_FILES[$file]["error"] == 0) { - //Récupération de l'extension + //Récupération de l'extension $ext = explode(".", $_FILES[$file]["name"]); $ext = array_pop($ext); if(is_numeric(array_search(strtolower($ext), $CONFIG["UPLOAD"]["accepted_files"]))) @@ -21,7 +22,7 @@ function traiter_formulaire_popfichier() if(move_uploaded_file($_FILES[$file]["tmp_name"], $filepath)) { if(isset($debug)) echo "DEBUG : basepath==$basepath\n"; - $requete = "INSERT INTO AWOR_Fichier(nomFic, idR) VALUES ('"."r".$_GET["idR"]."_".$_FILES[$file]["name"]."', '".$_GET["idR"]."')"; + $requete = "INSERT INTO AWOR_Fichier(nomFic, idR) VALUES ('"."r".addslashes_if_needed($_GET["idR"])."_".$_FILES[$file]["name"]."', '".addslashes_if_needed($_GET["idR"])."')"; if(mysql_query($requete) == false) { if(isset($debug)) echo "DEBUG : ".mysql_error()."<br/>\n"; @@ -72,7 +73,7 @@ function generate_html_reunion_fichiers($idR) $resultat = mysql_query($requete); if($resultat != false) { - echo '<table cellspacing="0" class="fichiers" summary="Liste des fichiers postés par les participants de la réunion.">'; + echo '<table cellspacing="0" class="fichiers" summary="Liste des fichiers postés par les participants de la réunion.">'; echo '<thead>'; echo '<tr>'; echo '<th>Fichiers attachés <a href="#" onclick="popon(\'popfichier\')">(Ajouter un fichier)</a></th>'; @@ -82,7 +83,7 @@ function generate_html_reunion_fichiers($idR) { while($fichier = mysql_fetch_array($resultat)) { - echo '<tr><td><a href="' . $basepath . $fichier["nomFic"].'" target="_blank" >'.$fichier["nomFic"]."</a></td></tr>\n"; + echo '<tr><td><a href="' . str_replace(" ", "%20", urlencode($basepath . $fichier["nomFic"])).'" target="_blank" >'.htmlentities($fichier["nomFic"], ENT_QUOTES)."</a></td></tr>\n"; } } else @@ -136,7 +137,7 @@ function traiter_formulaire_valider_creneau() if(isset($debug)) echo $listeCreneau; //On recupere les creneaux ne faisant plus partie de la novuelle liste des creneaux - $requete = "SELECT * FROM AWOR_Creneau WHERE idR='".$_REQUEST["idR"]."' AND idC NOT IN ".$listeCreneau; + $requete = "SELECT idC FROM AWOR_Creneau WHERE idR='".$_REQUEST["idR"]."' AND idC NOT IN ".$listeCreneau; //echo "DEBUG : $requete"; if($resultat = mysql_query($requete)) { @@ -150,7 +151,8 @@ function traiter_formulaire_valider_creneau() function traiter_formulaire_maj_profil() { - $requete = "UPDATE AWOR_Personne SET courrielP = '".$_POST["courrielP"]."', loginP = '".$_POST["loginP"]."', nomP = '".$_POST["nomP"]."', prenomP = '".$_POST["prenomP"]."', methodeAuth = '".$_POST["methodeAuth"]."' WHERE idP = '".$_SESSION['session_idP']."'"; + require_once ('include/tools.inc.php'); + $requete = "UPDATE AWOR_Personne SET courrielP = '".addslashes_if_needed($_POST["courrielP"])."', loginP = '".addslashes_if_needed($_POST["loginP"])."', nomP = '".addslashes_if_needed($_POST["nomP"])."', prenomP = '".addslashes_if_needed($_POST["prenomP"])."', methodeAuth = '".addslashes_if_needed($_POST["methodeAuth"])."' WHERE idP = '".$_SESSION['session_idP']."'"; if(mysql_query($requete) == false) return "Une erreur MySQL est survenu : ".mysql_error(); $_SESSION['session_prenomP'] = $_POST["prenomP"]; $_SESSION['session_nomP'] = $_POST["nomP"]; @@ -208,7 +210,7 @@ function creneauExiste($idR, $heureD, $minD, $heureA, $minA, $jourA, $moisA, $an $duree = $dateA - $dateD; $dateD = date("Y-m-d G:i:s", $dateD); $duree = $duree / 60; - $requete = "SELECT * FROM AWOR_Creneau WHERE idR='".$idR."' AND dateHeure='".$dateD."' AND duree=".$duree.""; + $requete = "SELECT idC FROM AWOR_Creneau WHERE idR='".$idR."' AND dateHeure='".$dateD."' AND duree=".$duree.""; if($result = mysql_query($requete)) { if(mysql_num_rows($result) > 0) @@ -222,16 +224,4 @@ function creneauExiste($idR, $heureD, $minD, $heureA, $minA, $jourA, $moisA, $an } } } - -function addslashes_if_needed($texte) -{ - if(get_magic_quotes_gpc() == 0) - { - return addslashes($texte); - } - else - { - return $texte; - } -} ?>
\ No newline at end of file diff --git a/beta_accents/app/include/ludo/auth.inc.php b/beta_accents/app/include/ludo/auth.inc.php index 18b339d..2491203 100644 --- a/beta_accents/app/include/ludo/auth.inc.php +++ b/beta_accents/app/include/ludo/auth.inc.php @@ -68,7 +68,7 @@ function pop3_auth ($server, $port, $user, $upw) return 0; } -// Fonction interne testant les réponses du serveur POP3 +// Fonction interne testant les réponses du serveur POP3 function pop3_GetAndTestReply($sock) { $reply = fgets($sock, 128); diff --git a/beta_accents/app/include/ludo/config.inc.php b/beta_accents/app/include/ludo/config.inc.php index 6d6504b..7f1d587 100644 --- a/beta_accents/app/include/ludo/config.inc.php +++ b/beta_accents/app/include/ludo/config.inc.php @@ -29,7 +29,7 @@ $CONFIG = array ( 'CHOOSER_LIST' => array ( - // 'nom à afficher' => 'nom_fichier_sans_extension' + // 'nom à afficher' => 'nom_fichier_sans_extension' 'standard' => 'ice', 'Glace (ancien)' => 'ice_moche', 'bleu' => 'style1' @@ -41,22 +41,22 @@ $CONFIG = array ( 'cree' => array ( - 'caption' => 'Nouvelle Réunion', + 'caption' => 'Nouvelle Réunion', 'tpl_file' => 'mail_cree.php' ), 'modif' => array ( - 'caption' => 'Réunion modifiée', + 'caption' => 'Réunion modifiée', 'tpl_file' => 'mail_modif.php' ), 'annul' => array ( - 'caption' => 'Réunion annulée', + 'caption' => 'Réunion annulée', 'tpl_file' => 'mail_annul.php' ), 'fixee' => array ( - 'caption' => 'Réunion fixée', + 'caption' => 'Réunion fixée', 'tpl_file' => 'mail_fixee.php' ) ) @@ -68,7 +68,7 @@ $CONFIG = array ( 'jpg', 'jpeg', 'gif', 'png', 'svg', 'pdf', 'ps', 'txt', 'rtf', 'csv', 'doc', 'docx', 'ppt', 'xls', 'sxw','sxp','sxd', 'odt', 'odg', 'odp', 'avi', 'mpg', 'mpeg', 'rm', 'flv', 'mp3', 'mp4', 'ogg','htm','html','zip', 'rar', 'tar', 'gz', 'bz2', 'ace' ), - 'relative_path' => 'beta/upload_files/' + 'relative_path' => 'final/upload_files/' ) ); ?> diff --git a/beta_accents/app/include/ludo/div_create_or_modif.php b/beta_accents/app/include/ludo/div_create_or_modif.php index c386060..34e81ca 100644 --- a/beta_accents/app/include/ludo/div_create_or_modif.php +++ b/beta_accents/app/include/ludo/div_create_or_modif.php @@ -1,17 +1,19 @@ <?php +require_once ('../tools.inc.php'); + $isModif=false; if ( isset ( $_GET['idR']) ) { if ( ! isset($_GET['objetR']) || ! isset($_GET['lieuR']) || ! isset($_GET['ordreJourR']) || ! isset($_GET['remarquesR']) ) { - $errmsg="Impossible de modifier la réunion : Paramètres incorrects\n"; + $errmsg="Impossible de modifier la réunion : Paramètres incorrects\n"; return; } - $idR=addslashes($_GET['idR']); - $objetR=addslashes($_GET['objetR']); - $lieuR=addslashes($_GET['lieuR']); - $ordreJourR=addslashes($_GET['ordreJourR']); - $remarquesR=addslashes($_GET['remarquesR']); + $idR=htmlentities(stripslashes_if_needed($_GET['idR']), ENT_QUOTES); + $objetR=htmlentities(stripslashes_if_needed($_GET['objetR']), ENT_QUOTES); + $lieuR=htmlentities(stripslashes_if_needed($_GET['lieuR']), ENT_QUOTES); + $ordreJourR=htmlentities(stripslashes_if_needed($_GET['ordreJourR']), ENT_QUOTES); + $remarquesR=htmlentities(stripslashes_if_needed($_GET['remarquesR']), ENT_QUOTES); $isModif=true; } @@ -21,11 +23,11 @@ if ( isset ( $_GET['idR']) ) <?php echo ' <input name="idR" type="hidden" value="' . $idR . '" />' ?> - <table class="detail_reunion" summary="Détail de la réunion que vous avez sélectionnée"> + <table class="detail_reunion" summary="Détail de la réunion que vous avez sélectionnée"> <thead> <tr> <th colspan="2"> - <?php if ($isModif) { echo 'Modification des détails de la réunion'; } else { echo 'Création d\'une réunion'; } ?> + <?php if ($isModif) { echo 'Modification des détails de la réunion'; } else { echo 'Création d\'une réunion'; } ?> </th> </tr> </thead> @@ -57,8 +59,8 @@ if ( isset ( $_GET['idR']) ) <tr> <td><strong>Etat :</strong></td> <td> - <input name="isCancelled" type="checkbox">Annulée</input> - <input name="isHidden" type="checkbox" checked="checked">Disponibilités masquées</input> + <input name="isCancelled" type="checkbox">Annulée</input> + <input name="isHidden" type="checkbox" checked="checked">Disponibilités masquées</input> </td> </tr> <tr> diff --git a/beta_accents/app/include/ludo/fonctions.inc.php b/beta_accents/app/include/ludo/fonctions.inc.php index 74b7ca7..9124ac5 100644 --- a/beta_accents/app/include/ludo/fonctions.inc.php +++ b/beta_accents/app/include/ludo/fonctions.inc.php @@ -1,19 +1,19 @@ <?php /* - * Fonctions de génération de message d'erreur pour utilisateur (et le debuggueur !) + * Fonctions de génération de message d'erreur pour utilisateur (et le debuggueur !) */ -// Fonction retournant un message d'erreur correspondant à une erreur mysql +// Fonction retournant un message d'erreur correspondant à une erreur mysql function mysql_generate_errmsg() { if ( isset($_REQUEST['debug']) ) { - return 'Erreur SQL numéro ' . mysql_errno() . ' : ' . mysql_error(); + return 'Erreur SQL numéro ' . mysql_errno() . ' : ' . mysql_error(); }else{ - return 'Une erreur de base de données s\'est produite, veuillez réessayer ultérieurement.'; + return 'Une erreur de base de données s\'est produite, veuillez réessayer ultérieurement.'; } } -// Fonction retournant un message d'erreur correspondant à un numero d'erreur de pop3_auth(...) +// Fonction retournant un message d'erreur correspondant à un numero d'erreur de pop3_auth(...) function pop3_generate_errmsg($errno) { require_once 'auth.inc.php'; @@ -26,14 +26,14 @@ function pop3_generate_errmsg($errno) { case ERR_POP3_AUTH_BADUSER : case ERR_POP3_AUTH_BADPASS : - $msg = 'Authentification rejetée : Vérifiez votre identifiant et saisissez votre mot de passe à nouveau'; + $msg = 'Authentification rejetée : Vérifiez votre identifiant et saisissez votre mot de passe à nouveau'; break; case ERR_BAD_PARAMS : - $msg = 'Adresse email invalide, ou serveur mail non répertorié'; + $msg = 'Adresse email invalide, ou serveur mail non répertorié'; break; default : $msg = 'Une erreur de communication avec le service d\'authentification s\'est produite,' . - 'veuillez réessayer ultérieurement.'; + 'veuillez réessayer ultérieurement.'; break; } } @@ -41,12 +41,12 @@ function pop3_generate_errmsg($errno) } /* - * Génération du code html d'une case du tableau croisé Créneau/Presonnes ayant comme personne $idP, - * comme créneau $idC. Si $idEditable est vrai je pourrai cliquer sur le bouton - * pour donner ma disponibilité. $estDispo peut-être 'oui', 'non', ou '' et signifie que la personne a déjà répondu 'oui', non' - * ou n'a pas encore répondu. + * Génération du code html d'une case du tableau croisé Créneau/Presonnes ayant comme personne $idP, + * comme créneau $idC. Si $idEditable est vrai je pourrai cliquer sur le bouton + * pour donner ma disponibilité. $estDispo peut-être 'oui', 'non', ou '' et signifie que la personne a déjà répondu 'oui', non' + * ou n'a pas encore répondu. */ -// Génération d'une case +// Génération d'une case function generate_html_dispo_case($idR, $idP, $idC, $isEditable, $estDispo, $withTD=false, $class='') { // Alignement html @@ -54,7 +54,7 @@ function generate_html_dispo_case($idR, $idP, $idC, $isEditable, $estDispo, $wit if ( ! $isEditable ) { if ( $withTD ) { echo " <td $class>\n "; } - // Cas général, on n'est pas la personne concernée + // Cas général, on n'est pas la personne concernée if ( ! isset($estDispo) || $estDispo == '' ) { // Dispo Inconnue (icone ?) generate_html_dispo_inconnu($idP, $idC); @@ -73,7 +73,7 @@ function generate_html_dispo_case($idR, $idP, $idC, $isEditable, $estDispo, $wit else { if ( $withTD ) { echo " <td id=\"dispo_idC${idC}\" $class>\n "; } - // On est la personne concernée, on peut donc choisir le créneau + // On est la personne concernée, on peut donc choisir le créneau if ( ! isset($estDispo) || $estDispo == '' ) { // Dispo Inconnue generate_html_dispo_dire_oui($idR, $idC); @@ -99,24 +99,17 @@ function generate_html_dispo_case($idR, $idP, $idC, $isEditable, $estDispo, $wit if ( $withTD ) { echo " </td>\n"; } } -// Génération du tableau complet -// TODO : idée : class du tableau différnete quand annulée -> tableau grisé... +// Génération du tableau complet +// TODO : idée : class du tableau différnete quand annulée -> tableau grisé... function generate_html_array_personnes_crenaux($idR) { - if ( isset($_SESSION['session_idP']) ) - { - $idP_Self=$_SESSION['session_idP']; - } - else - { - // TODO : Erreur - } + $idP_Self=$_SESSION['session_idP']; - // Connexion à la base et sélection de la database + // Connexion à la base et sélection de la database require_once 'include/connect.inc.php'; - // Récupération des paramètres de la réunion... + // Récupération des paramètres de la réunion... $montrerDispoR=$estAnnulee=$is_admin=$estFixee=false; $idP_orga=null; $query="SELECT r.montrerDispoR, r.estAnnulee, r.idP_Orga, r.idC_Fixe, r.idL FROM AWOR_Reunion r WHERE r.idR='$idR'"; @@ -126,13 +119,13 @@ function generate_html_array_personnes_crenaux($idR) list($montrerDispoR, $estAnnulee, $idP_orga, $idC_Fixe, $idL_interne) = mysql_fetch_row($result); $is_admin = ( $idP_Self == $idP_orga ); $montrerDispoR = ( ( $montrerDispoR === 'oui' ) || $is_admin ) ; - //echo "DEBUG : annulée $estAnnulee\n"; + //echo "DEBUG : annulée $estAnnulee\n"; $estAnnulee = ( $estAnnulee == 'oui' ); $estFixee = ( $idC_Fixe != null); } else { - // TODO : erreur + return "Impossible d'afficher le tableau de la réunion : Erreur de base de donnée\n"; } // DEBUG : tests en forçant les variables //$estAnnulee=true; @@ -140,7 +133,7 @@ function generate_html_array_personnes_crenaux($idR) //~ echo "DEBUG : \nmontrerDispoR==$montrerDispoR\nestAnnulee==$estAnnulee\nestFixee==$estFixee\nis_admin==$is_admin\n"; ?> <form id="formmail" action="sendmail.php" method="post"> - <table class="details" summary="Disponibilité des personnes pour chaque créneau possible de la réunion"> + <table class="details" summary="Disponibilité des personnes pour chaque créneau possible de la réunion"> <thead> <tr> <?php @@ -159,7 +152,7 @@ function generate_html_array_personnes_crenaux($idR) echo 'Personnes' . "\n"; echo ' </th>' . "\n"; - // Remplissage des entêtes de colonnes (créneaux) + // Remplissage des entêtes de colonnes (créneaux) $query="SELECT idC, UNIX_TIMESTAMP(dateHeure), duree FROM AWOR_Creneau WHERE idR='$idR' ORDER BY dateHeure ASC;"; $creneaux=array(); $dispos=array(); @@ -204,8 +197,8 @@ function generate_html_array_personnes_crenaux($idR) </thead> <tbody> <?php - // Remplissage du tableau, ligne à ligne - // Requette écrivant les disponibilités dans un tableau associatif en une seule fois + // Remplissage du tableau, ligne à ligne + // Requette écrivant les disponibilités dans un tableau associatif en une seule fois if ( $montrerDispoR ) { $query='SELECT ch.idC, ch.idP, ch.estDispo FROM AWOR_Choisir ch, AWOR_Creneau c, AWOR_Personne p, AWOR_Appartenir a, AWOR_Reunion r WHERE ' @@ -243,16 +236,16 @@ function generate_html_array_personnes_crenaux($idR) if ( $result = @mysql_query($query) ) { - // On écrit ligne à ligne les personnes et les disponibilités + // On écrit ligne à ligne les personnes et les disponibilités while ( $p = mysql_fetch_array($result) ) // Boucle sur chaque personne { echo " <tr>\n"; // Colonne de checkbox pour envoi email si $is_admin == true if ( $is_admin ) { echo ' <td><input name="mail_idP' . $p[0] . '" type="checkbox" checked="checked" /></td>' . "\n"; } - // Nom prénom - echo " <td>$p[1] $p[2]</td>\n"; - // Disponibilités - foreach ( $creneaux as $c_id ) // Pour chaque créneau + // Nom prénom + echo ' <td>' . htmlentities($p[1], ENT_QUOTES) . ' ' . htmlentities($p[2], ENT_QUOTES) . "</td>\n"; + // Disponibilités + foreach ( $creneaux as $c_id ) // Pour chaque créneau { if (isset($dispos[$c_id][$p[0]])) { @@ -293,12 +286,12 @@ function generate_html_array_personnes_crenaux($idR) echo " </tr>\n"; } - // On inscrit les lignes de totaux si les disponibilités sont révélées + // On inscrit les lignes de totaux si les disponibilités sont révélées if ( $is_admin && ! $estFixee && ! $estAnnulee) { echo " <tr>\n"; echo " <td> </td>\n"; - echo " <td>Personnes présentes</td>\n"; + echo " <td>Personnes présentes</td>\n"; foreach ( $creneaux as $c_id ) { if ( $c_id == $dispo_max_id ) @@ -332,7 +325,7 @@ function traiter_formulaire_fixer_creneau() { if ( ! isset($_GET['idR']) || !isset($_GET['idC']) ) { - $errmsg="Impossible de fixer la réunion : paramètres manquants ou erroné"; + $errmsg="Impossible de fixer la réunion : paramètres manquants ou erroné"; return $errmsg; } $idR=addslashes($_GET['idR']); @@ -341,7 +334,7 @@ function traiter_formulaire_fixer_creneau() $query="UPDATE AWOR_Reunion SET idC_Fixe=$idC WHERE idR=$idR;"; if ( ! mysql_query($query) || mysql_affected_rows() != 1 ) { - $errmsg='Impossible de fixer la réunion : ' . mysql_generate_errmsg(); + $errmsg='Impossible de fixer la réunion : ' . mysql_generate_errmsg(); return $errmsg; } return; @@ -352,7 +345,7 @@ function traiter_formulaire_creer_reunion() include_once('include/je.inc.php'); $idP=$_SESSION['session_idP']; - // Recherche d'une réunion vierge déjà existante + // Recherche d'une réunion vierge déjà existante $query='SELECT idR FROM AWOR_Reunion WHERE idP_Orga=' . "('$idP') AND objetR='Renseignez';"; if ( ( $result = mysql_query($query) ) && (mysql_num_rows($result) > 0) ) { @@ -360,20 +353,20 @@ function traiter_formulaire_creer_reunion() } else { - // Création de la Réunion sauf si une réunion vierge existe déjà + // Création de la Réunion sauf si une réunion vierge existe déjà $query='INSERT INTO AWOR_Reunion(idP_Orga, objetR) VALUES' . "('$idP', 'Renseignez');"; if ( ! $result = @mysql_query($query) || (mysql_affected_rows() != 1) ) { // Cas d'erreur - $errmsg ='Erreur lors de la création de la liste de participants : ' . mysql_generate_errmsg(); + $errmsg ='Erreur lors de la création de la liste de participants : ' . mysql_generate_errmsg(); return $errmsg; } $idR=mysql_insert_id(); - // Création de la Liste des participants + // Création de la Liste des participants if ( ! $idL=list_new("interne_idR_$idR","NULL",true) ) { - $errmsg ='Erreur lors de la création de la liste de participants : Erreur de base de données'; + $errmsg ='Erreur lors de la création de la liste de participants : Erreur de base de données'; return $errmsg; } @@ -381,7 +374,7 @@ function traiter_formulaire_creer_reunion() if ( ! $result = @mysql_query($query) || (mysql_affected_rows() != 1) ) { // Cas d'erreur - $errmsg = 'Erreur lors de la création de la liste de participants : ' . mysql_generate_errmsg(); + $errmsg = 'Erreur lors de la création de la liste de participants : ' . mysql_generate_errmsg(); return $errmsg; } } @@ -391,19 +384,20 @@ function traiter_formulaire_creer_reunion() function traiter_formulaire_modif_detail_reunion() { + require_once('include/tools.inc.php'); if ( ! isset($_REQUEST['idR']) || !isset($_POST['objetR']) || !isset($_POST['lieuR']) || !isset($_POST['ordreJourR']) || !isset($_POST['remarquesR']) ) { - $errmsg = 'Impossible de modifier de détail de la réunion : Paramètres manquants'; + $errmsg = 'Impossible de modifier de détail de la réunion : Paramètres manquants'; // DEBUG : //echo "DEBUG : $query\n$errmsg\n"; return $errmsg; } - $idR=addslashes($_REQUEST['idR']); - $objetR=addslashes($_POST['objetR']); - $lieuR=addslashes($_POST['lieuR']); - $ordreJourR=addslashes($_POST['ordreJourR']); - $remarquesR=addslashes($_POST['remarquesR']); + $idR=addslashes_if_needed($_REQUEST['idR']); + $objetR=addslashes_if_needed($_POST['objetR']); + $lieuR=addslashes_if_needed($_POST['lieuR']); + $ordreJourR=addslashes_if_needed($_POST['ordreJourR']); + $remarquesR=addslashes_if_needed($_POST['remarquesR']); $estAnnulee=( isset($_POST['isCancelled']) && ($_POST['isCancelled']==='on') )?'oui':'non'; $montrerDispoR=( isset($_POST['isHidden']) && ($_POST['isHidden']==='on') )?'non':'oui'; @@ -412,7 +406,7 @@ function traiter_formulaire_modif_detail_reunion() if ( ! $result = @mysql_query($query) || (mysql_affected_rows() != 1) ) { // Cas d'erreur - $errmsg = 'Erreur lors de la modification de la réunion : ' . mysql_generate_errmsg(); + $errmsg = 'Erreur lors de la modification de la réunion : ' . mysql_generate_errmsg(); // DEBUG : //echo "DEBUG : $query\n$errmsg\n"; return $errmsg; @@ -429,19 +423,18 @@ function generate_html_reunion_detail2($idR) $result = @mysql_query($query); if ( ! $result || ( mysql_num_rows($result) !== 1 ) ) { - $errmsg="Impossible de récuprérer les informations de la réunion : Erreur de base de données\n"; + $errmsg="Impossible de récuprérer les informations de la réunion : Erreur de base de données\n"; return $errmsg; } list($objetR, $ordreJourR, $lieuR, $remarquesR, $montrerDispoR, $estAnnulee, $idP_Orga, $idC_Fixe, $nomP, $prenomP) = mysql_fetch_row($result); if ( $estAnnulee=='oui' ) { $etat = 'reunion_annulee'; } elseif ( $idC_Fixe!=null) { $etat ='reunion_fixee'; } else { $etat = 'reunion_en_cours'; } - ?> - <table class="detail_reunion" summary="Détail de la réunion que vous avez sélectionnée"> + <table class="detail_reunion" summary="Détail de la réunion que vous avez sélectionnée"> <thead> <tr> <th colspan="2"> - Détails de la réunion + Détails de la réunion <?php //~ echo "DEBUG : SESSION['session_idP']==" . $_SESSION['session_idP'] . "\n" . "idP_Orga==" . $idP_Orga; if ( isset($_SESSION['session_idP']) && ($_SESSION['session_idP'] == $idP_Orga ) ) @@ -452,7 +445,12 @@ function generate_html_reunion_detail2($idR) echo urlencode($ordreJourR) . '&remarquesR=' . urlencode($remarquesR); echo "','details_reunion',false)\">(Editer)</a>\n"; } - + $objetR=htmlentities($objetR, ENT_QUOTES); + $ordreJourR=htmlentities($ordreJourR, ENT_QUOTES); + $lieuR=htmlentities($lieuR, ENT_QUOTES); + $remarquesR=htmlentities($remarquesR, ENT_QUOTES); + $nomP=htmlentities($nomP, ENT_QUOTES); + $prenomP=htmlentities($prenomP, ENT_QUOTES); ?> </th> </tr> @@ -496,16 +494,16 @@ function generate_html_reunion_detail2($idR) switch($etat) { case 'reunion_fixee': - echo "Fixée\n"; + echo "Fixée\n"; break; case 'reunion_en_cours': - echo "En préparation\n"; + echo "En préparation\n"; break; case 'reunion_annulee': - echo "Annulée\n"; + echo "Annulée\n"; break; } - if ( $montrerDispoR === 'non' ) { echo ', disponibilités masquées'; } + if ( $montrerDispoR === 'non' ) { echo ', disponibilités masquées'; } ?> </td> </tr> @@ -524,12 +522,12 @@ function html_generate_MySQLTableSuppr($table, $key_name, $columns='*', $where_c //~ echo "DEBUG : $query\n"; if ( ! $result = @mysql_query($query) ) { - return "Erreur de génération de la table $table\n"; + return "Erreur de génération de la table $table\n"; } else { $row = mysql_fetch_assoc($result); - // Affichage des entêtes du tableau et du pied de tableau + // Affichage des entêtes du tableau et du pied de tableau echo '<form action="" method="post">' . "\n" . '<table summary="Affichage des objets de la table ' . $table . ' pour la purger">' . "\n<thead>\n<tr>\n"; echo '<td colspan="' . ( count($row) + 1 ) . "\">$table</td>\n</tr>\n<tr>\n"; echo "<td></td><td>" . implode("</td>\n<td>",array_keys($row)) . "</td>\n"; diff --git a/beta_accents/app/include/ludo/html_elements.inc.php b/beta_accents/app/include/ludo/html_elements.inc.php index b845f28..35eaa68 100644 --- a/beta_accents/app/include/ludo/html_elements.inc.php +++ b/beta_accents/app/include/ludo/html_elements.inc.php @@ -1,6 +1,6 @@ <?php /* - * Fonctions de génération de code HTML... + * Fonctions de génération de code HTML... */ function generate_html_doctype_and_head($title) { @@ -10,9 +10,9 @@ echo '<?xml version="1.0" encoding="ISO-8859-1"?>'."\n" <html xmlns="http://www.w3.org/1999/xhtml" lang="fr"> <head> <?php echo "<title>AWOR - $title</title>\n"; ?> - <meta name="keywords" content="AWOR, Application Web, Organisation, Réunion, Reunion" /> - <meta name="description" content="Application Web d'Organisation de Réunion (AWOR). Facilite la vie des organisateurs !" /> - <meta name="author" content="Jérémie Dénoyer, Ludovic Pouzenc, Andriana Semouchtchak, Julien Sérè" /> + <meta name="keywords" content="AWOR, Application Web, Organisation, Réunion, Reunion" /> + <meta name="description" content="Application Web d'Organisation de Réunion (AWOR). Facilite la vie des organisateurs !" /> + <meta name="author" content="Jérémie Dénoyer, Ludovic Pouzenc, Andriana Semouchtchak, Julien Sérè" /> <script type="text/javascript" src="script.js"></script> <?php //print_r($_COOKIE['aworcustom_css']); @@ -88,7 +88,7 @@ function generate_html_div_errmsg($errmsg) require_once('config.inc.php'); if ( isset( $CONFIG['adminMail'] ) && ( ! isset($_REQUEST['debug'] ) ) ) { - echo '<span class="contactAdm">Si le problème persiste, vous pouvez contacter l\'administrateur par email à l\'adresse suivante : '; + echo '<span class="contactAdm">Si le problème persiste, vous pouvez contacter l\'administrateur par email à l\'adresse suivante : '; echo '<a href="mailto:' . $CONFIG['adminMail'] . '">' . $CONFIG['adminMail'] . "</a></span>\n"; } echo "</div>\n"; @@ -109,7 +109,7 @@ function generate_html_div_css_chooser() { echo ' <option value="' . $file . '"'; if ( $file == $css_selected ) { echo ' selected="selected"'; } - echo '>' . $name . '</option>' /*. "$DEBUG:file=$file, css_selected=$css_selected"*/ . "\n"; + echo '>' . htmlentities($name, ENT_QUOTES) . '</option>' /*. "$DEBUG:file=$file, css_selected=$css_selected"*/ . "\n"; } echo ' </select>'. "\n"; echo '</div>'. "\n"; @@ -124,18 +124,18 @@ function generate_html_div_footer() <?php generate_html_div_css_chooser(); ?> </li> <li class="center"> - <a href="http://validator.w3.org/check/referer" target="_blank"> - <img src="./images/vxhtml.gif" alt="Validate" border="0" height="31" width="88" /> + <a href="http://validator.w3.org/check/referer"> + <img src="./images/vxhtml.gif" alt="Validate" height="31" width="88" /> </a> - <a href="http://jigsaw.w3.org/css-validator/check/referer" target="_blank"> - <img src="./images/vcss.gif" alt="Validate" border="0" height="31" width="88" /> + <a href="http://jigsaw.w3.org/css-validator/check/referer"> + <img src="./images/vcss.gif" alt="Validate" height="31" width="88" /> </a> - <a href="http://www.w3.org/WAI/WCAG1A-Conformance" title="Explanation of Level A Conformance" target="_blank"> - <img src="./images/wai.gif" alt="W3C-WAI level A conformance icon" border="0" height="31" width="88" /> + <a href="http://www.w3.org/WAI/WCAG1A-Conformance"> + <img src="./images/wai.gif" alt="W3C-WAI level A conformance icon" height="31" width="88" /> </a> </li> <li class="right"> - <span class="discret">Application réalisée par Jérémie Dénoyer,<br /> Ludovic Pouzenc, Julien Séré et Andriana Semouchtchak</span> + <span class="discret">Application réalisée par Jérémie Dénoyer,<br /> Ludovic Pouzenc, Julien Séré et Andriana Semouchtchak</span> </li> </ul> </div> diff --git a/beta_accents/app/include/ludo/mail_textarea.php b/beta_accents/app/include/ludo/mail_textarea.php index 87f4965..6db990f 100644 --- a/beta_accents/app/include/ludo/mail_textarea.php +++ b/beta_accents/app/include/ludo/mail_textarea.php @@ -1,11 +1,12 @@ <?php require_once('session_verify.inc.php'); include('config.inc.php'); +require_once('../utils.inc.php'); //~ require_once('/home/lud/shares/public_html/awor/appli_3_alpha/include/connect.inc.php'); //include('include/connect.inc.php'); -if ( isset($_GET['model']) ) { $model=$_GET['model']; } else { $model='empty'; } +if ( isset($_GET['model']) ) { $model=addslashes_if_needed($_GET['model']); } else { $model='empty'; } ?> <textarea name="msgText" cols="80" rows="15"> @@ -15,11 +16,11 @@ if ( isset($_GET['model']) ) { $model=$_GET['model']; } else { $model='empty'; } include('../connect.inc.php'); if ( ! isset($CONFIG['MAIL']['TEMPLATES'][$model]['tpl_file']) ) { - echo 'Désolé, modèle indisponible...'; + echo 'Désolé, modèle indisponible...'; } else { - // On récupère quelques information à propos de la réunion pour que les templates puissent être customisés + // On récupère quelques information à propos de la réunion pour que les templates puissent être customisés $objetR=$ordreJourR=$lieuR=$remarquesR=""; if (isset( $_GET['idR']) ) { @@ -33,7 +34,7 @@ if ( isset($_GET['model']) ) { $model=$_GET['model']; } else { $model='empty'; } //echo 'DEBUG : ../../templates/' . $CONFIG['MAIL']['TEMPLATES'][$model]['tpl_file'] . "\n"; if (!@include('../../templates/' . $CONFIG['MAIL']['TEMPLATES'][$model]['tpl_file']) ) { - echo 'Désolé, impossible de charger le fichier modèle...'; + echo 'Désolé, impossible de charger le fichier modèle...'; } } } diff --git a/beta_accents/app/include/ludo/majDispo.php b/beta_accents/app/include/ludo/majDispo.php index 3f79fec..febd9c3 100644 --- a/beta_accents/app/include/ludo/majDispo.php +++ b/beta_accents/app/include/ludo/majDispo.php @@ -3,11 +3,11 @@ require('../connect.inc.php'); require('session_verify.inc.php'); require('fonctions.inc.php'); -// TODO : vérification que la réunion nous concerne bien ! +// TODO : vérification que la réunion nous concerne bien ! if ( /*!isset($_GET['idR']) ||*/ !isset($_GET['idC']) || !isset($_GET['estDispo']) || !isset($_SESSION['session_idP']) ) { - $errmsg="Paramètres incorrects\n"; + $errmsg="Paramètres incorrects\n"; } if ( isset( $errmsg ) ) diff --git a/beta_accents/app/include/ludo/redir.inc.php b/beta_accents/app/include/ludo/redir.inc.php index 6baf40d..2edec6e 100644 --- a/beta_accents/app/include/ludo/redir.inc.php +++ b/beta_accents/app/include/ludo/redir.inc.php @@ -9,8 +9,8 @@ generate_html_doctype_and_head("Redirection"); <h1>Redirection</h1> <p>Si vous voyez cette page, merci de suivre le lien ci-dessous</p> <?php - // Ne respecte pas le XHTML s'il y a des paramètres les & doivent être remplacée par & - echo '<p><a href="' . $dest . '">' . $dest . '</a></p>' . "\n"; + // Ne respecte pas le XHTML s'il y a des paramètres les & doivent être remplacée par & + echo '<p><a href="' . urlencode($dest) . '">' . htmlentities($dest, ENT_QUOTES) . '</a></p>' . "\n"; ?> </body> </html> diff --git a/beta_accents/app/include/tools.inc.php b/beta_accents/app/include/tools.inc.php new file mode 100644 index 0000000..bf75d1f --- /dev/null +++ b/beta_accents/app/include/tools.inc.php @@ -0,0 +1,25 @@ +<?php +function addslashes_if_needed($texte) +{ + if(get_magic_quotes_gpc() == 0) + { + return addslashes($texte); + } + else + { + return $texte; + } +} + +function stripslashes_if_needed($texte) +{ + if(get_magic_quotes_gpc() != 0) + { + return stripslashes($texte); + } + else + { + return $texte; + } +} +?>
\ No newline at end of file |