Subversion Repositories Sites.tela-botanica.org

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

<?php

// +--------------------------------------------------------------------------------+
// | admin_annu.php                                                                                                     |
// +--------------------------------------------------------------------------------+
// | Copyright (c) 2002                                                                                                                 |
// +--------------------------------------------------------------------------------+
// | Administration des inscrits à un annuaire de type annuaire_tela                       |
// | de Gsite,                                                                                                                      |
// | Sont également mises en jeux les tables gen_COUNTRY, gen_FRENCH_DPT,              |
// | LABELS                                                                                                                                     |
// | Plus spécifique la fonction cotisation($id) en bas permet de                                  |
// | gérer les cotisations versées par les inscrits, avec la table                                    |
// | annuaire_COTISATION                                                                                                                        |
// +--------------------------------------------------------------------------------+
// | Auteur : Alexandre Granier <alexandre@tela-botanica.org>                                   |
// +--------------------------------------------------------------------------------+
//
// $Id: admin_annu.php,v 1.1 2005/03/24 08:47:31 alex Exp $


global $HTTP_HOST ;

define ("URL_RECU", $GLOBALS['ann_url']->protocol. '://'.$GLOBALS['ann_url']->host."/client/annuaire/voir_recu_pdf.php") ;

include_once ("HTML/Table.php") ;
include_once 'api/formulaire/FORM_formulaire.class.php' ;

// admin_annu est une application cliente de gsite elle commence donc
// dans une fonction putFrame()


function putFrame()
{
        global $u_id, $cotisation_id ;
    global $action ;
    global $link ;

    if (empty($action)) $action = false  ;

    $url = $GLOBALS['ann_url']->getURL() ;

    // mise à jour si il y lieu

    if ($action == "up") {
        upSQL() ;
        }

    // Requete de pour récupérer toutes les infos d'un usager

    $query = "select annuaire_tela.*,annuaire_LABEL_ACT.*,annuaire_LABEL_ASS.*,gen_COUNTRY.GC_NAME" ;
    $query .= ", annuaire_LABEL_NIV.*, annuaire_LABEL_STATUT.*" ;
    $query .= " from annuaire_tela,gen_COUNTRY,gen_FRENCH_DPT," ;
    $query .= " annuaire_LABEL_ACT,annuaire_LABEL_ASS, annuaire_LABEL_NIV, annuaire_LABEL_STATUT" ;
    $query .= " where U_ID=$u_id" ;
    //$query .= " and annuaire_tela.U_FRENCH_DPT=gen_FRENCH_DPT.GFD_ID" ;
    $query .= " and annuaire_tela.U_COUNTRY=gen_COUNTRY.GC_ID" ;
    $query .= " and annuaire_tela.U_ACT=annuaire_LABEL_ACT.ID_LABEL_ACT" ;
    $query .= " and annuaire_tela.U_ASS=annuaire_LABEL_ASS.ID_LABEL_ASS" ;
    $query .= " and annuaire_tela.U_NIV=annuaire_LABEL_NIV.ID_LABEL_NIV" ;

    $result = mysql_query($query) or die("Echec de la requete sur ".ANN_ANNUAIRE.":<br>".mysql_error().'<br>'.$query) ;

    $row = mysql_fetch_object($result) ;

    $res = "<h1>Edition d'un adh&eacute;rent : $row->U_NAME $row->U_SURNAME</h1>\n" ;
    $res .= "<div>".form("Nom : ", "U_NAME", $row->U_NAME)."</div>\n" ;
    $res .= "<div>".form("Pr&eacute;nom : ", "U_SURNAME", $row->U_SURNAME)."</div>\n" ;
    $res .= "<div>".form("Adresse mail : ", "U_MAIL", $row->U_MAIL)."</div>\n" ;
    $res .= "<div>".form("Date d'inscription : ", "U_DATE", $row->U_DATE)."</div>\n" ;
    $res .= "<div>".form("Adresse 1 : ", "U_ADDR1", $row->U_ADDR1)."</div>\n" ;
    $res .= "<div>".form("Adresse 2 : ", "U_ADDR2", $row->U_ADDR2)."</div>\n" ;
    $res .= "<div>".form("Région : ", "U_STATE", $row->U_STATE)."</div>\n" ;
    $res .= "<div>".form("Code postal : ", "U_ZIP_CODE", $row->U_ZIP_CODE)."</div>\n" ;
    $res .= "<div>".form("Ville : ", "U_CITY", $row->U_CITY)."</div>\n" ;
    $res .= "<div>".form("Pays : ", "U_COUNTRY", $row->U_COUNTRY)."</div>\n" ;
    $res .= "<div>".form("Site web personnel : ", "U_WEB", $row->U_WEB)."</div>\n" ;
    $res .= "<div>".form("Organisme : ", "U_TITLE", $row->U_TITLE)."</div>\n" ;
    $res .= "<div>".form("Fonction : ", "U_FONCTION", $row->U_FONCTION)."</div>\n" ;
    $res .= "<div>".form("Niveau en botanique : ", "LABEL_NIV", $row->LABEL_NIV)."</div>\n" ;
    $res .= "<div>".form("Activit&eacute; : ", "LABEL_ACT", $row->LABEL_ACT)."</div>\n" ;
    $res .= "<div>".form("Secteur associatif : ", "LABEL_ASS", $row->LABEL_ASS)."</div>\n" ;
    $res .= "<div>".form("Sp&eacute;cialit&eacute; : ", "U_SPE", $row->U_SPE)."</div>\n" ;
    $res .= "<div>".form("Sp&eacute;cialit&eacute; g&eacute;ographique : ", "U_GEO", $row->U_GEO)."</div>\n" ;
    $res .= "<div>".form("Statut : ", "LABEL_STATUT", $row->LABEL_STATUT)."</div>\n" ;
    if (isset($cotisation_id) && $cotisation_id != "") {
        $db = & $GLOBALS['ann_db'];
        include_once ANN_CHEMIN_APPLI."recu_pdf_corps.php" ;
        // buffer est une propriété de la classe FPDF qui contient les données au format PDF.
        // habituellement on ne l'utilise pas, on appelle $pdf->Output() qui envoie les
        // entete HTTP du document généré

        $pdf->Close() ;
        $buf = $pdf->buffer;

        // Inclusion des bibliothèques PEAR

        include_once ('Mail.php');
        include_once ('Mail/mime.php');

        $file = 'Recu_Fiscal_Tela_Botanica.pdf';
        $crlf = "\r\n";
        $hdrs = array(
              'From'    => 'accueil@tela-botanica.org',
              'Subject' => 'Reçu pour don à Tela Botanica'
              );

        $mime = new Mail_mime($crlf);
        $text = "Bonjour !\n\n".
            "Le Réseau Tela Botanica vous remercie du soutien financier que vous lui avez apporté. Votre contribution permettra au réseau :\n\n".
            "- de continuer à encourager et accompagner des projets botaniques,\n".
            "- de maintenir et d'améliorer nos services Internet dédiés à la botanique.\n\n".
            "Vous trouverez en pièce jointe à ce message un document PDF contenant le reçu fiscal à imprimer".
            " et à joindre à votre déclaration d'impôts. Si vous n'arrivez pas à imprimer ce document, veuillez".
            " nous le signaler en répondant à ce mail et en indiquant votre nom et votre adresse postale. Nous vous".
            " ferons parvenir le reçu imprimé à cette adresse.\n\n".
            "Rappel : Votre contribution financière ne constitue pas une adhésion à l'Association Tela Botanica mais ".
            "bien un soutien aux actions menées par le Réseau Tela Botanica.\n\n".
            "Si ce n'est déjà fait, n'oubliez pas de vous inscrire au Réseau sur le site Internet, à l'adresse : ".
            "http://www.tela-botanica.org (menu « Inscription», onglet « Inscription»), afin que vous puissiez :\n\n".
            "- consulter l'annuaire des personnes inscrites au Réseau ;\n- localiser les membres du Réseau dans tous".
            " les pays;\n- accédez à certaines données diffusées sur le site ;\n- vous inscrire à des projets ".
            "botaniques ;\n- être informé personnellement des actualités du Réseau.\n\n".
            "Bien cordialement,\n\n".
            "Tela Botanica\nLe Réseau des Botanistes Francophones\n163, rue A. Broussonnet\n34090 Montpellier\n".
            "Tél. : 04-67-52-41-22\naccueil@tela-botanica.org\nhttp://www.tela-botanica.org\n" ;
        $mime->setTXTBody($text);

        // On attache le document PDF grace à $buf, et en indiquant son type MIME
        $mime->addAttachment($buf, 'application/pdf', $file, false) ;

        $body = $mime->get();
        $hdrs = $mime->headers($hdrs);

        $mail =& Mail::factory('mail');
        $mail->send($ligne->U_MAIL, $hdrs, $body);

        // On insere le numéro du reçu dans la table annuaire_COTISATION
        @mysql_query("update annuaire_COTISATION set IC_RECU=$num_recu, IC_DATE_ENVOIE_RECU=NOW() where IC_ID=$cotisation_id") ;

        // On incrémente le compteur de mail de 1
        if (!$deja_envoye) {
            $num_recu++ ;
            mysql_query("update COMPTEUR_COTISATION set COMPTEUR=$num_recu ") ;
        }
        $res .= "<div>Le reçu a été envoyé</div>\n" ;
    }
    $res .= cotisation($u_id) ;
    $res .= suppression($u_id) ;
    return $res ;
}


// form construit soit un formulaire de type <input type="text" ...> et
// de nom $field_ et place un $label devant
// soit construit un lien vers un formulaire à partir du champs $field_


function form($label, $field_, $value)
{
    global $u_id, $GS_GLOBAL, $field ;

    $url = $GLOBALS['ann_url']->getURL() ;

    if ($field != $field_) {
        $res = "<b>$label</b>" ;
        $res .= "<a href=\"$url&amp;field=$field_\">" ;
                                if ($field_ == 'LABEL_NIV' || $field_ == 'LABEL_ACT' || $field_== 'LABEL_ASS') {
                    $res .= $value ? $value : "(vide)";
                                } else if ($field_ == "U_COT") {
                                                if ($value == 0) {
                                                                $res .= "non" ;
                                                } else {
                                                                $res .= "oui" ;
                                                }
                                } else {
                                                $res .= $value ? $value : "(vide)";
                                }
                                $res .= "</a>\n" ;
                }
                if ($field == $field_) {
                                                $res = "\n<form action=\"$url&amp;u_id=$u_id&amp;action=up&amp;field_=$field_\" method=\"post\">" ;
                                                $res .= "<b>$label</b>\n" ;
                                                switch ($field_) {
                                                                case "U_COUNTRY" :
                                                                                $select_country = new form($GS_GLOBAL['link']) ;
                                                                                $res .= ereg_replace("gen_COUNTRY", "U_COUNTRY", $select_country->selectFromTable("gen_COUNTRY", $value, "GC_ID", "GC_NAME")) ;
                                                                                unset($select_country) ;
                                                                break ;

                                                                case "LABEL_NIV" :
                                                                                $res .= getFormInsInfo($field_, $value) ;
                                                                break ;

                                                                case "LABEL_ASS" :
                                                                                $res .= getFormInsInfo($field_, $value) ;
                                                                break ;

                                                                case "LABEL_ACT" :
                                                                                $res .= getFormInsInfo($field_, $value) ;
                                                                break ;

                                case "LABEL_STATUT" :
                                        $res .= getFormInsInfo($field_, $value) ;
                                break ;

                                                                case "U_COT" :
                                                                                $res .= "<select class=\"insInputForm\" name=\"II_COT\">\n" ;
                                                                                if ($value == 0) {
                                                                                                $check0 = " selected" ;
                                                                                                $check1 = "" ;
                                                                                } else {
                                                                                                $check1 = " selected" ;
                                                                                                $check0 = "" ;
                                                                                }
                                                                                $res .= "<option value=\"0\"$check0>non</option>\n" ;
                                                                                $res .= "<option value=\"1\"$check1>oui</option>\n" ;
                                                                                $res .= "</select>\n" ;
                                                                break ;

                                                                default :
                                                                                $res .= "<input type=\"text\" size=\"40\" name=\"$field_\" value=\"$value\">\n" ;
                                                }
                                                $res .= "<input type=\"submit\" value=\"valider\" class=\"texte_tb\">\n" ;
                                                $res .= "</form>" ;
                                }
                                return $res ;
}


// upSQL met à jour la table annuaire_tela

function upSQL()
{
    global $field_ ;
    global  $u_id ;
    global $HTTP_POST_VARS ;
        switch ($field_) {
            case "LABEL_NIV" : $field_ = "U_NIV" ;
                                $id_field = "ID_LABEL_NIV";
            break ;
            case "LABEL_ACT" : $field_ = "U_ACT" ;
                                $id_field = "ID_LABEL_ACT";
            break ;
            case "LABEL_ASS" : $field_ = "U_ACT" ;
                                $id_field = "ID_LABEL_ASS";
            break ;
            default :$id_field = $field_ ;
        }

    // Recherche de l'ancien mail
    $req_am = "select U_MAIL from annuaire_tela where U_ID = $u_id" ;
    $res_am = mysql_query ($req_am) or die ("Echec ".mysql_error()) ;
    $ligne_am = mysql_fetch_object ($res_am) ;
    $ancien_mail = $ligne_am->U_MAIL ;

    $query = "update annuaire_tela set $field_=\"".$HTTP_POST_VARS[$id_field]."\" where U_ID = $u_id" ;
    mysql_query($query) or die ("<br>Echec de la requete de mise à jour<br>\n") ;

    // Traitement du département
    if ($field_ == "U_ZIP_CODE") {
        if (preg_match("/^97|98[0-9]*/", $HTTP_POST_VARS['U_ZIP_CODE'])) {
            $n_dpt = substr($HTTP_POST_VARS['U_ZIP_CODE'], 0, 3) ;
        } else {
            $n_dpt = substr($HTTP_POST_VARS['U_ZIP_CODE'], 0, 2) ;
        }
        mysql_query ("update annuaire_tela set U_FRENCH_DPT='$n_dpt' where U_ID='$u_id'") ;
    }

    // Traitement de l'adresse mail


    if ($field_ == "U_MAIL") {
        $requete = "update ins_STATS set IS_MAIL=\"".$HTTP_POST_VARS['U_MAIL']."\" where IS_MAIL=\"$ancien_mail\"" ;
        mysql_query ($requete) ;
    }
}

function getFormInsInfo($field, $value)
{

    $query = "select * from annuaire_$field" ;
    $id_field = "ID_$field" ;
    $result = mysql_query($query) or die ("Echec de la requete sur ID_$field<br>".mysql_error()) ;

    $res = "<select name=\"$id_field\" class=\"insInputForm\">\n" ;
    $i = 0 ;
    while ($row = mysql_fetch_object($result)) {

        $res .= "<option value=\"".$row->$id_field."\"" ;
        if ($value == $row->$field) $res .= " selected";
        $res .= ">" ;
    $res .= $row->$field ;
        $res .= "</option>\n" ;
        $i++ ;
    }
    $res .= "</select>\n" ;
    return $res ;
}

// Fonction pour gérer les cotisations d'un inscrit, en
// fonction de son id  ($u_id)

function cotisation($u_id)
{
    global $GS_GLOBAL, $action, $IC_MONTANT, $IC_DATE, $id_cot, $IC_MC_ID ;

    $res = '' ;
    // un peu de javascript pour la confirmation en cas de destruction

    $outputText = "function confirmLink(theLink, theSqlQuery)
    {
      var is_confirmed = confirm(theSqlQuery);
      return is_confirmed;
    } " ;

                // fonction gsite pour inclure la fonction Javascript
                // au code html

    GEN_stockerCodeScript($outputText) ;

    $url = $GLOBALS['ann_url']->getURL() ;

                // Ce qui suit sont le traitement des 3 actions ajouter, modifier, supprimer
                // qui agissent sur la table annuaire_COTISATION

                // l'action 'cu' consiste en l'insertion d'une ligne dans la table annuaire_COTISATION

    if ($action == "cu") {
        $date = preg_replace("/([0-9]+)-([0-9]+)-([0-9]+)/", "\\3\\2\\1", $IC_DATE) ;
        $query = "insert into annuaire_COTISATION values (\"\", $IC_MC_ID, $u_id, UNIX_TIMESTAMP($date),\"$IC_MONTANT\", 0, \"0000-00-00\")" ;
                                mysql_query ($query) or die ("Echec de la requete d'insertion dans annuaire_COTISATION<br>$query<br>".mysql_error()) ;
                                mysql_query("update annuaire_tela set U_COT=1 where U_ID=$u_id") ;
    }

                // l'action 'mu' permet de mettre à jour une ligne dans annuaire_COTISATION

    if ($action == "mu") {
        $date = preg_replace("/([0-9]+)-([0-9]+)-([0-9]+)/", "\\3\\2\\1", $IC_DATE) ;
        $query = "update annuaire_COTISATION set IC_DATE=UNIX_TIMESTAMP($date), IC_MONTANT=\"$IC_MONTANT\",
                        IC_MC_ID=$IC_MC_ID where IC_ID=$id_cot" ;
                                mysql_query ($query) or die ("Echec de la requete d'insertion dans annuaire_COTISATION<br>$query<br>".mysql_error()) ;
    }

                // l'action 'rm' retire une ligne de la table annuaire_COTISATION

    if ($action == "rm") {
        $query = "delete from annuaire_COTISATION where IC_ID=$id_cot" ;
                                mysql_query ($query) or die ("Echec de la requete de suppression dans annuaire_COTISATION") ;
                                mysql_query("update annuaire_tela set U_COT=0 where U_ID=$u_id") ;
    }

                // Quoi qu'il arrive, on récupère les informations concernant
                // les cotisations d'un inscrit et on les affiche sous forme de
                // table HTML

    $query = "select * from annuaire_COTISATION, MODE_COTISATION where IC_ANNU_ID=$u_id
                and IC_MC_ID=MC_ID" ;
    $result = mysql_query($query) or die ("Echec de la requete sur annuaire_COTISATION<br>".$query) ;
    $res = "<h1>Etat des cotisations : </h1>" ;

                // formatage de la date
    $date = date("d-m-Y") ;


                // l'action 'sc' correspond à l'édition d'une ligne de la table
                // annuaire_COTISATION. Si elle est présente on affiche un formulaire
                // de modification

    if ($action == "sc") {

        $res .= "<div><form action=\"$url&action=cu\" method=\"post\"><b>Date : </b>" ;
                                $res .= "<input type=\"text\" size=\"9\" class=\"insInputForm\" name=\"IC_DATE\" value=\"";
                                $res .= $date ;
                                $res .= "\">\n" ;
                                $res .= "<b>Montant : </b><input type=\"text\" class=\"insInputForm\" size=\"5\" name=\"IC_MONTANT\" value=\"30\"> &euro;\n" ;
                $res .= mode_paiement(0) ;
                                $res .= "<input type=\"submit\" value=\"Valider\" class=\"texte_tb\">\n" ;
                                $res .= "<input type=\"button\" value=\"Annuler\" class=\"texte_tb\" onclick=\"javascript:window.location.href='$url';\"></form>\n" ;
                                $res .= "</div>\n" ;

                // si l'action 'sc' n'est pas active on affiche toutes les lignes
                // de cotisation de l'inscrit

                } else {
        if (mysql_num_rows($result) != 0) {
            $res .= "<div>" ;
            $table = new HTML_Table(array("width" => "100%", "class" => "texte_tb2")) ;
            $table->addRow(array("Date", "Montant", "Mode", "modifier", "supprimer", "Voir le reçu", "Envoyer le reçu",
                                        "Date d'envoie du reçu"),
                            array("class" => "insTitle1")) ;

            while ($row = mysql_fetch_object($result)) {
                            // Le reçu a t il été envoyé ?
                if ($row->IC_RECU != 0) {
                    $message_envoye =  $row->IC_DATE_ENVOIE_RECU ; ;
                } else  {
                    $message_envoye = "Reçu non envoyé";
                }
                if ($action != "mc" || $id_cot != $row->IC_ID) {
                    $table->addRow(array (date ("j m Y", $row->IC_DATE), $row->IC_MONTANT." <b>&euro;</b>", $row->MC_LABEL,
                                            "<a href=\"$url&amp;action=mc&amp;id_cot=$row->IC_ID\">modifier</a>",
                                            "<a href=\"$url&amp;action=rm&amp;id_cot=$row->IC_ID\"".
                                            " onclick=\"javascript:return confirmLink(this, '&ecirc;tes-vous".
                                            " s&ucirc;r de vouloir supprimer cette entr&eacute;e');\">supprimer</a>",
                                            "<a href=\"".URL_RECU."?cotisation_id=$row->IC_ID\">Voir le reçu</a>",
                                            "<a href=\"$url&cotisation_id=$row->IC_ID\">Envoyer le reçu</a>",
                                            $message_envoye)) ;
                } else {
                    // Recherche du mode de paiement

                    $table->addRow(array("<form action=\"$url&amp;action=mu&amp;id_cot=$row->IC_ID\" method=\"post\">\n".
                                        "<input type=\"text\" size=\"9\" class=\"insInputForm\" name=\"IC_DATE\" value=\"".date ("j-m-Y", $row->IC_DATE)."\">",
                                        "<input type=\"text\" size=\"5\" class=\"insInputForm\" name=\"IC_MONTANT\" value=\"$row->IC_MONTANT\"><b>&euro;</b>",
                                        mode_paiement($row->IC_MC_ID),
                                        "<input type=\"submit\" class=\"texte_tb\" value=\"valider\">".
                                        "<input type=\"button\" value=\"Annuler\" class=\"texte_tb\" onclick=\"javascript:window.location.href='$url';\"></form>",
                                        "&nbsp;")) ;
                }
            }
            $table->altRowAttributes(1, array("class" => "texte_tb2"), array("class" => "text2")) ;
            $res .= $table->toHTML()."</div>\n" ;
            unset($table) ;
        } else {
            $res .= "<div>non cotisant</div>\n" ;
        }
        $res .= "<div><input type=\"button\" class=\"texte_tb\" " ;
        $res .= "value=\"Saisir une cotisation\" onclick=\"javascript:window.location.href='$url&action=sc';\"></div>\n" ;
    }

    return $res ;
}

function suppression($u_id) {
    global $GS_GLOBAL, $action ;

    // un peu de javascript pour la confirmation en cas de destruction

    $outputText = "function confirmLink(theLink, theSqlQuery)
    {
      var is_confirmed = confirm(theSqlQuery);
      return is_confirmed;
    } " ;

                // fonction gsite pour inclure la fonction Javascript
                // au code html

    GEN_stockerCodeScript($outputText) ;

    $url = $GLOBALS['ann_url']->getURL() ;

    $res = "<div>Supprimer l'inscription</div>\n" ;
    $res .="<div><form action=\"$url&action=suppr_adh\" method=\"post\">\n" ;
    $res .= "<input type=\"submit\" class=\"texte_tb\" value=\"Supprimer\" " ;
    $res .= "onclick=\"javascript:return confirmLink(this, '&ecirc;tes-vous s&ucirc;r de vouloir supprimer cet adh&eacute;rent');\">\n" ;
    $res .= "</form></div>\n" ;

    if ($action=="suppr_adh") {
        $queryLogin = "select U_MAIL from annuaire_tela where U_ID=$u_id" ;
        $resultLogin = mysql_query($queryLogin) or die ("Echec de la requete sur annu_USERS");
        $rowLogin = mysql_fetch_object($resultLogin) ;
        $mail = $rowLogin->U_MAIL ;
        mysql_free_result($resultLogin) ;

        // vérifications
        // 1. annu_ADMIN
        $q_annu_ADMIN = "select AA_ID from annu_ADMIN where AA_ID=$u_id" ;
        $r_annu_ADMIN = mysql_query($q_annu_ADMIN) or die ("Echec ..." );
        if (mysql_num_rows($r_annu_ADMIN) != 0) {
            $res .= "Une référence dans annu_ADMIN" ;
        }

        // 2.
        // suppression

        $query = "delete from annuaire_tela where U_ID=$u_id" ;
    }
    return $res ;
}

/** function mode_paiement () Produit un champs select avec le mode de paiement
*
*
*   @param  integer mode de paiement par defaut
*       @return string  HTML
*/
function mode_paiement ($defaut) {
    $res = "<select name=\"IC_MC_ID\" class=\"insInputForm\">\n" ;
    $req_mode = "select * from MODE_COTISATION" ;
    $res_mode = mysql_query($req_mode) or die ($req_mode."<br>".mysql_error()) ;
    while ($ligne_mode = mysql_fetch_object($res_mode)) {
        $res .= "<option value=\"$ligne_mode->MC_ID\"" ;
        if ($ligne_mode ->MC_ID == $defaut) $res .= " selected" ;
        $res .= ">$ligne_mode->MC_LABEL</option>\n" ;
    }
    $res .= "</select>\n" ;
    return $res ;
}

?>