; | tmpPWD.php |
------+-[ bordel ]--------------------------------+----------------
; | fiche_referent.php |
-; | mescontacts_pdf.php |
; | recherche.php |
; | trombino.php |
; | trombipromo.php |
xx | login.php | -
xx | maj.php |
xx | marketing.php | marketing/public.php
+xx | mescontacts_pdf.php |
xx | mescontacts.php | -
xx | motdepassemd5.php | -
xx | nbpromo2.php | stats/nb_by_promo.php
--- /dev/null
+<?php
+#
+# $Id: mescontacts_pdf.php,v 1.1 2004-07-19 15:46:00 x2000habouzit Exp $
+#
+
+require("auto.prepend.inc.php");
+new_skinned_page('index.tpl', AUTH_COOKIE);
+require("texify.inc.php");
+require("applis.func.inc.php");
+
+// choix de l'ordre des réponses (par promo ou par noms)
+if(isset($_GET['order']) && $_GET['order']=="promo") {
+ $req = $globals->db->query("SELECT * FROM auth_user_md5 as a, contacts as c"
+ ." WHERE a.user_id = c.contact AND c.uid = {$_SESSION['uid']} "
+ ." ORDER BY a.promo, a.nom, a.prenom"
+ );
+} else {
+ $req = $globals->db->query("SELECT * FROM auth_user_md5 as a, contacts as c "
+ ." WHERE a.user_id = c.contact AND c.uid = {$_SESSION['uid']} "
+ ." ORDER BY a.nom, a.prenom, a.promo"
+ );
+}
+
+// génération des en-têtes
+$texsrc = contacts_headers();
+
+// on traite ensuite les contacts un par un
+while ($myrow = mysql_fetch_array($req)) {
+
+ /* affichage de l'identité */
+ ereg( "[0-9]{2}([0-9]{2})-([0-9]{1,2})-([0-9]{1,2})", $myrow["date"], $regs );
+ $texsrc .= contact_tbl_hdr($myrow["prenom"], $myrow["nom"], $myrow["epouse"], $myrow["promo"], "$regs[3].$regs[2].$regs[1]");
+
+
+ /* affichage de l'école d'appli et de la post-appli */
+ $tmpreq=$globals->db->query(
+ "SELECT applis_def.text,applis_def.url,applis_ins.type,applis_ins.ordre
+ FROM applis_ins
+ INNER JOIN applis_def ON applis_def.id=applis_ins.aid
+ WHERE uid=".$myrow["user_id"]." ORDER by ordre"
+ );
+ while (list($rapp_txt,$rapp_url,$rapp_type,$rapp_ordre)=mysql_fetch_row($tmpreq)) {
+ if ($rapp_ordre==0)
+ $texsrc .= contact_tbl_entry("Appli", applis_fmt($rapp_type,$rapp_txt,""));
+ if ($rapp_ordre==1)
+ $texsrc .= contact_tbl_entry("Post-appli", applis_fmt($rapp_type,$rapp_txt,""));
+ }
+ mysql_free_result($tmpreq);
+
+ /* affichage des différentes adresses persos */
+ $i = 0;
+ $tmpreq = $globals->db->query(
+ "SELECT adr1,adr2,adr3,cp,ville,gp.pays,gr.name,tel,fax
+ FROM adresses AS adr
+ LEFT JOIN geoloc_pays AS gp ON(adr.pays=gp.a2)
+ LEFT JOIN geoloc_region AS gr ON(adr.pays=gr.a2 AND adr.region=gr.region)
+ WHERE adr.uid = ".$myrow["user_id"]
+ );
+ while (list($adr1,$adr2,$adr3,$cp,$ville,$pays,$region,$tel,$fax)
+ = mysql_fetch_row($tmpreq)) {
+ $i++;
+ $ch_adr = "";
+ if (! empty($adr1)) $ch_adr .= "\n$adr1";
+ if (! empty($adr2)) $ch_adr .= "\n$adr2";
+ if (! empty($adr3)) $ch_adr .= "\n$adr3";
+ if (! empty($cp) || ! empty($ville)) $ch_adr .= "\n$cp $ville";
+ if (! empty($region)) $ch_adr .= "\n$region, ";
+ else if (! empty($pays)) $ch_adr .= "\n";
+ if (! empty($pays)) $ch_adr .= "$pays";
+ $texsrc .= contact_tbl_entry("Adresse $i", substr($ch_adr, 1));
+ if (! empty($tel)) $texsrc .= contact_tbl_entry("Téléphone $i", $tel);
+ if (! empty($fax)) $texsrc .= contact_tbl_entry("Fax $i", $fax);
+
+ }
+ mysql_free_result($tmpreq);
+
+ /* affichage du téléphone mobile */
+ if ($myrow["mobile"])
+ $texsrc .= contact_tbl_entry("Mobile", $myrow["mobile"]);
+
+ /* affichage des infos professionnelles (poste, adresse, tel) */
+ $res_pro = $globals->db->query(
+ "SELECT entreprise, s.label, ss.label, f.fonction_fr, poste,
+ adr1, adr2, adr3, cp, ville, gp.pays, gr.name, tel, fax
+ FROM entreprises AS e
+ LEFT JOIN emploi_secteur AS s ON e.secteur = s.id
+ LEFT JOIN emploi_ss_secteur AS ss
+ ON (e.secteur = ss.secteur AND e.ss_secteur = ss.id)
+ LEFT JOIN fonctions_def AS f ON f.id = e.fonction
+ INNER JOIN geoloc_pays AS gp on gp.a2 = e.pays
+ INNER JOIN geoloc_region AS gr
+ ON (gr.a2 = e.pays AND gr.region = e.region)
+ WHERE e.uid = ".$myrow["user_id"]
+ );
+ while (list($entreprise, $secteur, $ss_secteur, $fonction, $poste, $adr1, $adr2, $adr3, $cp, $ville, $pays, $region, $tel, $fax) = mysql_fetch_row($res_pro)) {
+ if (!empty($entreprise))
+ $texsrc .= contact_tbl_entry("Entreprise", $entreprise . ($secteur ? " ($secteur - $ss_secteur)" : ""));
+
+ if (!empty($poste))
+ $texsrc .= contact_tbl_entry("Poste / Fonction", $poste." / ".(($fonction) ? $fonction : "-"));
+ $ch_adr = "";
+ if (! empty($adr1)) $ch_adr .= "\n$adr1";
+ if (! empty($adr2)) $ch_adr .= "\n$adr2";
+ if (! empty($adr3)) $ch_adr .= "\n$adr3";
+ if (! empty($cp) || ! empty($ville)) $ch_adr .= "\n$cp $ville";
+ if (! empty($region)) $ch_adr .= "\n$region, ";
+ else if (! empty($pays)) $ch_adr .= "\n";
+ if (! empty($pays)) $ch_adr .= "$pays";
+ $texsrc .= contact_tbl_entry("Adresse pro.", substr($ch_adr, 1));
+ if (! empty($tel)) $texsrc .= contact_tbl_entry("Téléphone pro.", $tel);
+ if (! empty($fax)) $texsrc .= contact_tbl_entry("Fax pro.", $fax);
+ }
+
+ /* fin du contact */
+ $texsrc .= contact_tbl_ftr();
+
+}
+
+// enfin on rajoute le footer
+$texsrc .= contacts_footer();
+mysql_free_result($req);
+
+// puis on convertit le fichier tex en pdf !
+tex_to_pdf($texsrc);
+
+?>
/** formatte une ecole d'appli pour l'affichage
*/
-function applis_fmt($params, &$smarty) {
- extract($params);
+function applis_fmt($type, $text, $url) {
$txt="";
if (($type!="Ingénieur")&&($type!="Diplôme"))
$txt .= $type;
}
return $txt;
}
-$page->register_function('applis_fmt','applis_fmt');
+function _applis_fmt($params, &$smarty) {
+ extract($params);
+ return applis_fmt($type, $text, $url);
+}
+$page->register_function('applis_fmt','_applis_fmt');
?>
--- /dev/null
+<?php
+/*
+ * Fonctions de générations de tex pour les pages de .org
+ * Auteur original : Pierre HABOUZIT
+ *
+ * $Id: texify.inc.php,v 1.1 2004-07-19 15:46:00 x2000habouzit Exp $
+ */
+
+/** Fonction qui gère les pdflatexisations :)
+ * Compile le code latex en pdf et le propose à l'upload
+ * @param $texte le texte à texifier
+ */
+function tex_to_pdf($texte) {
+ global $pdf_tmp_dir;
+ set_time_limit(300); // timeout de 5 minutes au cas où le texte serait gros
+ // et pdflatex lent
+ $pdf_tmp_dir=('/tmp/mescontacts_'.$_SESSION['username']);
+ // fonction pour effacer le rep temporaire
+ function clean_tmp_dir() {
+ global $pdf_tmp_dir;
+ system("rm -rf $pdf_tmp_dir");
+ }
+ // nétoyage du repertoire avant tout
+ clean_tmp_dir();
+
+ // programme le nétoyage du répertoire à la fin du script
+ // utile pour faire le nétoyage même en cas de fermeture prématurée
+ // de la connexion par le client
+ register_shutdown_function("clean_tmp_dir");
+
+ mkdir($pdf_tmp_dir, 0777);
+
+ $texf = fopen("$pdf_tmp_dir/contacts.tex", "w");
+ fwrite($texf, $texte);
+ fclose($texf);
+ system("cd $pdf_tmp_dir; pdflatex --interaction nonstopmode contacts.tex &>/dev/null");
+
+ // sortie en PDF
+ header("Pragma: ");
+ header("Cache-Control: ");
+ header("Content-type: application/pdf");
+ // force le nom du fichier final
+# header("Content-Disposition: attachment; filename=mes_contacts.pdf");
+
+ readfile("$pdf_tmp_dir/contacts.pdf", "r");
+
+ // le nétoyage du répertoire est fait par la fonction clean_tmp_dir
+ // exécutée à la fin du script grâce à register_shutdown_function.
+}
+
+/** Hearders LaTeX pour la feuille de contacts
+ * @return en têtes tex pour la feuille de contacts (imprimercontacts.php)
+ */
+function contacts_headers() {
+ return "\\documentclass[twocolumn,a4paper,10pt]{article}\n"
+ . "\\usepackage[francais]{babel}\n"
+ . "\\usepackage[latin1]{inputenc}\n"
+ . "\\usepackage[left=1.5cm,right=1.5cm,top=1cm,bottom=1cm]{geometry}\n"
+ . "\\usepackage{tabularx,float}\n"
+ . "\n"
+ . "\\makeatletter\n"
+ . "\\renewcommand{\\@oddhead}{\\small\\hfill "
+ ." {\\bf\\Large Mes contacts sur Polytechnique.org\$^\\ast\$}"
+ . "\\renewcommand{\\@evenhead}{\\@oddhead}\n"
+ ." \\hfill}\n"
+ . "\\renewcommand{\\@oddfoot}{\\small\\hfill "
+ ." {\\bf \$^\\ast\$ Informations limitées à un usage strictement personnel et non commercial}"
+ ." \\hfill}\n"
+ . "\\renewcommand{\\@evenfoot}{\\@oddfoot}\n"
+ . "\\makeatother\n"
+ . "\\newcolumntype{L}{@{\\hspace{1pt}}>{\\small\\sffamily\\bfseries}l}\n"
+ . "\\newcolumntype{T}{>{\\center\\bfseries}p{\\linewidth}}\n"
+ . "\\renewcommand{\\tabularxcolumn}[1]{>{\\small\\raggedright\\arraybackslash}p{#1}@{\\hspace{1pt}}}\n"
+ . "\n"
+ . "\\begin{document}\n"
+ . "\t\\floatstyle{plain}\n"
+ . "\t\\newfloat{contact}{thp}{lop}\n"
+ . "\t\\floatname{contact}{}\n"
+ . "\n";
+}
+
+/** Footers LaTeX pour la feuille de contacts
+ * @return pied de page tex pour la feuille de contacts (imprimercontacts.php)
+ */
+function contacts_footer() {
+ return "\n" . "\\end{document}\n";
+}
+
+/** préfixe de tableau de contact
+ * @return Préfixe de construction d'une fiche. Contient l'en tête avec le nom.
+ * @param $prenom prénom du contact
+ * @param $nom nom du contact
+ * @param $epouse nom d'épouse
+ * @param $promo promo
+ * @param $maj date de dernière mise à jour de la fiche
+ */
+function contact_tbl_hdr($prenom, $nom, $epouse, $promo, $maj) {
+ return "\t\\noindent\\parbox{\\linewidth}{\n"
+ . "\t\t\\begin{tabularx}{\\linewidth}{LX}\n"
+ . "\t\t\t\\multicolumn{2}{@{}T@{}}{\\noindent\\rule{\\linewidth}{1pt}\n\n"
+ . "\\vspace{-2pt}$prenom $nom" . ($epouse ? " épouse $epouse" : "") . " ($promo) {\small $maj}}\\\\\n"
+ . "\t\t\t\\hline\n";
+}
+
+/** suffixe de tableau de contact
+ * @return suffixe de construction d'une fiche.
+ */
+function contact_tbl_ftr() {
+ return "\t\t\\end{tabularx}\n"
+ . "\t}\n"
+ . "\t\\vspace{-1.5em}\n\n";
+}
+
+/** Fonction qui remplace les caractères particuliers
+ * remplace les # par \# par exemple
+ * @param $texte le texte à stripper
+ * @return le texte modifié
+ */
+function tex_strip($texte) {
+ $tmp = str_replace("\\", "$\\backslash$", $texte);
+ $tmp = str_replace("#", "\\#", $tmp);
+ $tmp = str_replace("$", "\\$", $tmp);
+ $tmp = str_replace("\\$\\backslash\\$", "$\\backslash$", $texte);
+ $tmp = str_replace("%", "\\%", $tmp);
+ $tmp = str_replace("&", "\\&", $tmp);
+ $tmp = str_replace("_", "\\_", $tmp);
+ $tmp = str_replace("^", "\\^{}", $tmp);
+ return $tmp;
+}
+
+/** Génération d'un nouvel item
+ * @return code TeX pour la création d'un nouveau titre de ligne de tableau
+ * @param $itemname label de la nouvelle ligne
+ */
+function contact_tbl_item($itemname) {
+ return "\t\t\t" . tex_strip($itemname) . "\n";
+}
+
+/** Génération d'un contenu
+ * @return code TeX pour l'insertion d'une nouvelle ligne de contenu.
+ * @param $text le-dit contenu, chaque '\n' est réinterprété.
+ */
+function contact_tbl_row($text) {
+ $temp = split("\n",tex_strip($text));
+ return "\t\t\t\t&"
+ . join("\\\\\n\t\t\t&", $temp)
+ . "\\\\\n";
+}
+
+/** Génération d'un item + contenu
+ * @return code TeX pour l'insertion d'une nouvelle ligne.
+ * @param $itemname label de la nouvelle ligne
+ * @param $text le-dit contenu, chaque '\n' est réinterprété.
+ */
+function contact_tbl_entry($itemname, $text) {
+ $temp = split("\n",tex_strip($text));
+ return "\t\t\t" . tex_strip($itemname) . "\n"
+ . "\t\t\t\t&"
+ . join("\\\\\n\t\t\t&", $temp)
+ . "\\\\\n";
+}
+
+?>