collectivite; // Variable permettant de stocker l'identifiant de la collectivité de niveau 2 $niveau = ""; // if (isset($_GET["obj"]) || isset($_GET['idx'])) { // Identifiant de l'édition à générer (champ id de la table om_etat) (isset($_GET['obj']) ? $obj = $_GET['obj'] : $obj = ""); // Identifiant de l'élément concerné par l'édition (isset($_GET['idx']) ? $idx = $_GET['idx'] : $idx = ""); } elseif (isset($_POST["obj"]) || isset($_POST['idx'])) { // (isset($_POST['obj']) ? $obj = $_POST['obj'] : $obj = ""); // Si c'est un tableau qui est fourni dans le POST alors on le concatène // avec des ; pour coller au format attendu if (is_array($obj) === true) { $obj_str = ""; foreach ($obj as $value) { $obj_str .= $value.";"; } $obj = $obj_str; } // (isset($_POST['idx']) ? $idx = $_POST['idx'] : $idx = ""); // Si c'est un tableau qui est fourni dans le POST alors on le concatène // avec des ; pour coller au format attendu if (is_array($idx) === true) { $idx_str = ""; foreach ($obj as $value) { $idx_str .= $value.";"; } $idx = $idx_str; } } else { // $obj = ""; $idx = ""; } // $editions = explode(";", $obj); $elements = explode(";", $idx); // Si un seul élément est fourni alors qu'il y a plusieurs éditions alors on // suppose que c'est le même élément pour chacune des éditions if (count($editions) != count($elements) && count($elements) == 1) { foreach ($editions as $edition) { $elements[] = $elements[0]; } } /** * */ // set_time_limit(180); // require_once PATH_OPENMAIRIE."fpdf_etat.php"; /** * Multi impression */ // $counter = 0; // foreach ($editions as $key => $value) { // $counter++; // $obj = $value; // Compatibilité antérieure : dans le cas où le remplacement des variables dans // le fichier de remplacement dyn/varpdf.inc se base sur la variable // $_GET au lieu de la variable $idx $_GET['idx'] = "-1"; if (isset($elements[$key])) { $_GET['idx'] = $elements[$key]; } // $idx = "-1"; if (isset($elements[$key])) { $idx = $elements[$key]; } /** * Gestion de la sélection des paramètres de l'édition à générer * en fonction du paramètre actif et/ou du niveau de la collectivité */ // On récupère l'enregistrement 'om_etat' de la collectivité en cours dans // l'état 'actif' $sql = " select * from ".DB_PREFIXE."om_etat "; $sql .= " LEFT JOIN ".DB_PREFIXE."om_logo "; $sql .= " ON om_etat.logo=om_logo.id "; $sql .= " LEFT JOIN ".DB_PREFIXE."om_requete "; $sql .= " ON om_etat.om_sql=om_requete.om_requete "; $sql .= " where om_etat.id='".$obj."' "; $sql .= " and om_etat.actif IS TRUE "; $sql .= " and om_etat.om_collectivite='".$_SESSION['collectivite']."' "; $res1 = $f->db->query($sql); $f->addToLog("pdfetat.php: db->query(\"".$sql."\");", VERBOSE_MODE); $f->isDatabaseError($res1); // Si on obtient aucun résultat if ($res1->numrows() == 0) { // On libère le résultat de la requête précédente $res1->free(); // On récupère l'identifiant de la collectivité de niveau 2 $sql = " select om_collectivite from ".DB_PREFIXE."om_collectivite "; $sql .= " where niveau='2' "; $niveau = $f->db->getone($sql); $f->addToLog("pdfetat.php: db->getone(\"".$sql."\");", VERBOSE_MODE); $f->isDatabaseError($niveau); // On récupère l'enregistrement 'om_etat' de la collectivité de niveau // 2 dans l'état 'actif' $sql = " select * from ".DB_PREFIXE."om_etat "; $sql .= " LEFT JOIN ".DB_PREFIXE."om_logo "; $sql .= " ON om_etat.logo=om_logo.id "; $sql .= " LEFT JOIN ".DB_PREFIXE."om_requete "; $sql .= " ON om_etat.om_sql=om_requete.om_requete "; $sql .= " where om_etat.id='".$obj."' "; $sql .= " and om_etat.actif IS TRUE "; $sql .= " and om_etat.om_collectivite='".($niveau == "" ? -1 : $niveau)."' "; $res1 = $f->db->query($sql); $f->addToLog("pdfetat.php: db->query(\"".$sql."\");", VERBOSE_MODE); $f->isDatabaseError($res1); // Si on obtient aucun résultat if ($res1->numrows() == 0) { // On libère le résultat de la requête précédente $res1->free(); // On récupère l'enregistrement 'om_etat' de la collectivité de // niveau 2 dans n'importe quel état $sql = " select * from ".DB_PREFIXE."om_etat "; $sql .= " LEFT JOIN ".DB_PREFIXE."om_logo "; $sql .= " ON om_etat.logo=om_logo.id "; $sql .= " LEFT JOIN ".DB_PREFIXE."om_requete "; $sql .= " ON om_etat.om_sql=om_requete.om_requete "; $sql .= " where om_etat.id='".$obj."' "; $sql .= " and om_etat.om_collectivite='".($niveau == "" ? -1 : $niveau)."' "; $res1 = $f->db->query($sql); $f->addToLog("pdfetat.php: db->query(\"".$sql."\");", VERBOSE_MODE); $f->isDatabaseError($res1); } } /** * */ // while ($edition =& $res1->fetchRow(DB_FETCHMODE_ASSOC)) { /** * */ if ($key == 0) { // $pdf = new PDF($edition["orientation"], "mm", $edition["format"]); } // Définit un alias pour le nombre total de pages $pdf->AliasNbPages(); // Ajoute une nouvelle page à l'édition $pdf->AddPage(); /** * Affichage du logo */ // Récupération du path du logo à afficher $path_logo = $f->storage->getPath($edition['fichier']); $type = str_ireplace("image/", "", $f->storage->getMimetype($edition['fichier'])); // Placement d'une image if (file_exists($path_logo) && !is_dir($path_logo)) { // if ($edition["resolution"] != "") { // récupération de la taille de l'image en pixels $size = getimagesize($path_logo); // résolution explicite $pdf->Image($path_logo, $edition["logoleft"], $edition["logotop"], ($size[0]/($edition["resolution"]/25.4)), ($size[1]/($edition["resolution"]/25.4)), $type); } else { // aucune dimension explicite $pdf->Image($path_logo, $edition["logoleft"], $edition["logotop"], 0, 0, $type); } } /** * */ // Variables statiques contenant des paramètres à remplacer $sql = $edition['requete']; $titre = $edition["titre"]; $corps = $edition["corps"]; // Remplacement des paramètres dans le fichier ../dyn/varetatpdf.inc if (file_exists("../dyn/varetatpdf.inc")) { include "../dyn/varetatpdf.inc"; } // Exécution de la requête SQL de l'édition $res = $f->db->query($sql); $f->addToLog("pdfetat.php: db->query(\"".$sql."\");", VERBOSE_MODE); $f->isDatabaseError($res); // $row =& $res->fetchRow(DB_FETCHMODE_ASSOC); ////// // TITRE ////// // Explosion des champs à récupérer depuis la requête $temp = explode("[", $edition["titre"]); // for ($i = 1; $i < sizeof($temp); $i++) { // $temp1 = explode("]", $temp[$i]); // if (isset($row[$temp1[0]])) { $titre = str_replace("[".$temp1[0]."]", $row[$temp1[0]], $titre); } // $temp1[0] = ""; } //Mise en minuscule du titre $titre = $pdf->transformMinMaj($titre, "min"); //Mise en majuscule du titre $titre = $pdf->transformMinMaj($titre, "MAJ"); // if (DBCHARSET == "UTF8") { $titre = utf8_decode($titre); } $pdf->SetFont($edition["titrefont"], $edition["titreattribut"], $edition["titretaille"]); $pdf->code_barres($titre, $edition["titrelargeur"], $edition["titretaille"], $edition["titreleft"], $edition["titretop"]); //Suppression des chiffres de la chaine $titre = preg_replace('/\|{5}[a-zA-Z0-9]*\|{5}/', '', $titre); // $element = $titre; // On teste si une balise est présente dans l'élément if (strpos($element, "") === false) { // => Aucune balise n'est présente dans l'élément // if (trim($element) != "") { // $pdf->SetFont($edition["titrefont"], $edition["titreattribut"], $edition["titretaille"]); $pdf->SetXY($edition["titreleft"], $edition["titretop"]); $pdf->MultiCell($edition["titrelargeur"], $edition["titrehauteur"], $element, $edition["titrebordure"], $edition["titrealign"], 0); } } else { // => Une balise est présente dans l'élément // $pdf->SetY($edition["titretop"]); // $element_part1 = ""; $element_part1 = explode("", $element); // for ($x = 0; $x < sizeof($element_part1); $x++) { // if (strpos($element_part1[$x], "") === false) { // => // if (trim($element_part1[$x]) != "") { // $pdf->SetFont($edition["titrefont"], $edition["titreattribut"], $edition["titretaille"]); $pdf->SetX($edition["titreleft"]); $pdf->MultiCell($edition["titrelargeur"], $edition["titrehauteur"], $element_part1[$x], $edition["titrebordure"], $edition["titrealign"], 0); } } else { // => // $ctrl_fin_b = 0; $ctrl_fin_b = substr_count($element_part1[$x], ""); // $edition["titreattribut"] = str_replace("B", "", $edition["titreattribut"]); $edition["titreattribut"] = str_replace("b", "", $edition["titreattribut"]); // if ($ctrl_fin_b > 1) { // => nbr superieur a 1 // if (trim($element_part1[$x]) != "") { // $pdf->SetFont($edition["titrefont"], "B".$edition["titreattribut"], $edition["titretaille"]); $pdf->SetX($edition["titreleft"]); $pdf->MultiCell($edition["titrelargeur"], $edition["titrehauteur"], $element_part1[$x], $edition["titrebordure"], $edition["titrealign"], 0); } } else { // => // $element_part2 = explode("", $element_part1[$x]); // if (trim($element_part2[0]) != "") { // $pdf->SetFont($edition["titrefont"], "B".$edition["titreattribut"], $edition["titretaille"]); $pdf->SetX($edition["titreleft"]); $pdf->MultiCell($edition["titrelargeur"], $edition["titrehauteur"], $element_part2[0], $edition["titrebordure"], $edition["titrealign"], 0); } // if (trim($element_part2[1]) != "") { // $pdf->SetFont($edition["titrefont"], $edition["titreattribut"], $edition["titretaille"]); $pdf->SetX($edition["titreleft"]); $pdf->MultiCell($edition["titrelargeur"], $edition["titrehauteur"], $element_part2[1], $edition["titrebordure"], $edition["titrealign"], 0); } } } } } ////// // CORPS ////// // Explosion des champs à récupérer depuis la requête $temp = explode("[", $edition["corps"]); // for ($i = 1; $i < sizeof($temp); $i++) { // $temp1 = explode("]", $temp[$i]); // if (isset($row[$temp1[0]])) { $corps = str_replace("[".$temp1[0]."]", $row[$temp1[0]], $corps); } // $temp1[0] = ""; } //Mise en minuscule du corps $corps = $pdf->transformMinMaj($corps, "min"); //Mise en majuscule du corps $corps = $pdf->transformMinMaj($corps, "MAJ"); // if (DBCHARSET == "UTF8") { $corps = utf8_decode($corps); } //Code barres $pdf->SetFont($edition["corpsfont"], $edition["corpsattribut"], $edition["corpstaille"]); $pdf->code_barres($corps, $edition["corpslargeur"], $edition["corpstaille"], $edition["corpsleft"], $edition["corpstop"]); //Suppression des chiffres de la chaine $corps = preg_replace('/\|{5}[a-zA-Z0-9]*\|{5}/', '', $corps); // if (strstr($corps, "\p")) { // $temp = ""; $temp = explode("\p", $corps); // $element = $temp[0]; // On teste si une balise est présente dans l'élément if (strpos($element, "") === false) { // => Aucune balise n'est présente dans l'élément // if (trim($element) != "") { // $pdf->SetFont($edition["corpsfont"], $edition["corpsattribut"], $edition["corpstaille"]); $pdf->SetXY($edition["corpsleft"], $edition["corpstop"]); $pdf->MultiCell($edition["corpslargeur"], $edition["corpshauteur"], $element, $edition["corpsbordure"], $edition["corpsalign"], 0); } } else { // => Une balise est présente dans l'élément // $pdf->SetXY($edition["corpsleft"], $edition["corpstop"]); // $element_part1 = ""; $element_part1 = explode("", $element); // for ($x = 0; $x < sizeof($element_part1); $x++) { // if (strpos($element_part1[$x], "") === false) { // => // if (trim($element_part1[$x]) != "") { // $pdf->SetFont($edition["corpsfont"], $edition["corpsattribut"], $edition["corpstaille"]); $pdf->write($edition["corpshauteur"], $element_part1[$x]); } } else { // => // $ctrl_fin_b = 0; $ctrl_fin_b = substr_count($element_part1[$x], ""); // $edition["corpsattribut"] = str_replace("B", "", $edition["corpsattribut"]); $edition["corpsattribut"] = str_replace("b", "", $edition["corpsattribut"]); // if ($ctrl_fin_b > 1) { // => nbr superieur a 1 // if (trim($element_part1[$x]) != "") { // $pdf->SetFont($edition["corpsfont"], "B".$edition["corpsattribut"], $edition["corpstaille"]); $pdf->write($edition["corpshauteur"], $element_part1[$x]); } } else { // => // $element_part2 = explode("", $element_part1[$x]); // if (trim($element_part2[0]) != "") { // $nbcar = 0; $nbcar = $element_part2[0]; // if (strlen($nbcar) == 1) { // ??????bug fpdf write si affichage 1 seul caractere -> ajout 2 blancs $pdf->SetFont($edition["corpsfont"], "B".$edition["corpsattribut"], $edition["corpstaille"]); $pdf->write($edition["corpshauteur"], " ".$element_part2[0]." "); } else { // $pdf->SetFont($edition["corpsfont"], "B".$edition["corpsattribut"], $edition["corpstaille"]); $pdf->write($edition["corpshauteur"], $element_part2[0]); } } // if (trim($element_part2[1]) != "") { // $pdf->SetFont($edition["corpsfont"], $edition["corpsattribut"], $edition["corpstaille"]); $pdf->write($edition["corpshauteur"], $element_part2[1]); } } } } } // for ($i = 1; $i < sizeof($temp); $i++) { // $pdf->AddPage(); // $element = $temp[$i]; // On teste si une balise est présente dans l'élément if (strpos($element, "") === false) { // => Aucune balise n'est présente dans l'élément // if (trim($element) != "") { // $pdf->SetFont($edition["corpsfont"], $edition["corpsattribut"], $edition["corpstaille"]); $pdf->SetXY($edition["corpsleft"], 10); $pdf->MultiCell($edition["corpslargeur"], $edition["corpshauteur"], $element, $edition["corpsbordure"], $edition["corpsalign"], 0); } } else { // => Une balise est présente dans l'élément // $pdf->SetXY($edition["corpsleft"], 10); // $element_part1 = ""; $element_part1 = explode("", $element); // for ($x = 0; $x < sizeof($element_part1); $x++) { // if (strpos($element_part1[$x], "") === false) { // => // if (trim($element_part1[$x]) != "") { // $pdf->SetFont($edition["corpsfont"], $edition["corpsattribut"], $edition["corpstaille"]); $pdf->write($edition["corpshauteur"], $element_part1[$x]); } } else { // => // $ctrl_fin_b = 0; $ctrl_fin_b = substr_count($element_part1[$x], ""); // $edition["corpsattribut"] = str_replace("B", "", $edition["corpsattribut"]); $edition["corpsattribut"] = str_replace("b", "", $edition["corpsattribut"]); // if ($ctrl_fin_b > 1) { // => nbr superieur a 1 // if (trim($element_part1[$x]) != "") { // $pdf->SetFont($edition["corpsfont"], "B".$edition["corpsattribut"], $edition["corpstaille"]); $pdf->write($edition["corpshauteur"], $element_part1[$x]); } } else { // => // $element_part2 = explode("", $element_part1[$x]); // if (trim($element_part2[0]) != "") { // $nbcar = 0; $nbcar = $element_part2[0]; // if (strlen($nbcar) == 1) { // ??????bug fpdf write si affichage 1 seul caractere -> ajout 2 blancs $pdf->SetFont($edition["corpsfont"], "B".$edition["corpsattribut"], $edition["corpstaille"]); $pdf->write($edition["corpshauteur"], " ".$element_part2[0]." "); } else { // $pdf->SetFont($edition["corpsfont"], "B".$edition["corpsattribut"], $edition["corpstaille"]); $pdf->write($edition["corpshauteur"], $element_part2[0]); } } // if (trim($element_part2[1]) != "") { // $pdf->SetFont($edition["corpsfont"], $edition["corpsattribut"], $edition["corpstaille"]); $pdf->write($edition["corpshauteur"], $element_part2[1]); } } } } } } } else { // $element = $corps; // On teste si une balise est présente dans l'élément if (strpos($element, "") === false) { // => Aucune balise n'est présente dans l'élément // if (trim($element) != "") { $pdf->SetFont($edition["corpsfont"], $edition["corpsattribut"], $edition["corpstaille"]); $pdf->SetXY($edition["corpsleft"], $edition["corpstop"]); $pdf->MultiCell($edition["corpslargeur"], $edition["corpshauteur"], $element, $edition["corpsbordure"], $edition["corpsalign"], 0); } } else { // => Une balise est présente dans l'élément // $pdf->SetXY($edition["corpsleft"], $edition["corpstop"]); // $element_part1 = ""; $element_part1 = explode("", $element); // for ($x = 0; $x < sizeof($element_part1); $x++) { // if (strpos($element_part1[$x], "") === false) { // if (trim($element_part1[$x]) != "") { // $pdf->SetFont($edition["corpsfont"], $edition["corpsattribut"], $edition["corpstaille"]); $pdf->write($edition["corpshauteur"], $element_part1[$x]); } } else { // $ctrl_fin_b = 0; $ctrl_fin_b = substr_count($element_part1[$x], ""); // $edition["corpsattribut"] = str_replace("B", "", $edition["corpsattribut"]); $edition["corpsattribut"] = str_replace("b", "", $edition["corpsattribut"]); // if ($ctrl_fin_b > 1) { // => nbr superieur a 1 // if (trim($element_part1[$x]) != "") { // $pdf->SetFont($edition["corpsfont"], "B".$edition["corpsattribut"], $edition["corpstaille"]); $pdf->write($edition["corpshauteur"], $element_part1[$x]); } } else { // => // $element_part2 = explode("", $element_part1[$x]); // if (trim($element_part2[0]) != "") { // $nbcar = 0; $nbcar = $element_part2[0]; // if (strlen($nbcar) == 1) { // ??????bug fpdf write si affichage 1 seul caractere -> ajout 2 blancs $pdf->SetFont($edition["corpsfont"], "B".$edition["corpsattribut"], $edition["corpstaille"]); $pdf->write($edition["corpshauteur"], " ".$element_part2[0]." "); } else { // $pdf->SetFont($edition["corpsfont"], "B".$edition["corpsattribut"], $edition["corpstaille"]); $pdf->write($edition["corpshauteur"], $element_part2[0]); } } // if (trim($element_part2[1]) != "") { // $pdf->SetFont($edition["corpsfont"], $edition["corpsattribut"], $edition["corpstaille"]); $pdf->write($edition["corpshauteur"], $element_part2[1]); } } } } } } ////// // SOUS-ETATS ////// // Désérialisation du paramètre couleur $edition["se_couleurtexte"] = explode("-", $edition["se_couleurtexte"]); // Récupération de la liste des sous-états if (trim($edition['sousetat']) != "") { // Transformation de la valeur récupérée en liste // [chr(13) = retour charriot][chr(10) = retour a la ligne] // en sauvegarde pgsql, il n y a que le chr(10) // $sousetatliste = explode(chr(13).chr(10), $edition['sousetat']); // le ; aussi est utilisé comme séparateur if (strpos($edition['sousetat'], chr(10)) !== false) { $sousetatliste = explode(chr(10), $edition['sousetat']); } elseif (strpos($edition['sousetat'], ";") !== false) { $sousetatliste = explode(";", $edition['sousetat']); } else { $sousetatliste = array($edition['sousetat']); } } else { // $sousetatliste = array(); } // foreach ($sousetatliste as $elem) { // On récupère l'enregistrement 'om_sousetat' de la collectivité en cours dans // l'état 'actif' $sql = " select * from ".DB_PREFIXE."om_sousetat "; $sql .= " where id='".trim($elem)."' "; $sql .= " and actif IS TRUE "; $sql .= " and om_collectivite='".$_SESSION['collectivite']."' "; $res2 = $f->db->query($sql); $f->addToLog("pdfetat.php: db->query(\"".$sql."\");", VERBOSE_MODE); $f->isDatabaseError($res2); // Si on obtient aucun résultat if ($res2->numrows() == 0) { // On libère le résultat de la requête précédente $res2->free(); // if ($niveau == "") { // On récupère l'identifiant de la collectivité de niveau 2 $sql = "select om_collectivite from ".DB_PREFIXE."om_collectivite "; $sql .= " where niveau='2' "; $niveau = $f->db->getone($sql); $f->addToLog("pdfetat.php: db->getone(\"".$sql."\");", VERBOSE_MODE); $f->isDatabaseError($niveau); } // On récupère l'enregistrement 'om_sousetat' de la collectivité de niveau // 2 dans l'état 'actif' $sql = " select * from ".DB_PREFIXE."om_sousetat "; $sql .= " where id='".trim($elem)."'"; $sql .= " and actif IS TRUE "; $sql .= " and om_collectivite='".$niveau."' "; $res2 = $f->db->query($sql); $f->addToLog("pdfetat.php: db->query(\"".$sql."\");", VERBOSE_MODE); $f->isDatabaseError($res2); // Si on obtient aucun résultat if ($res2->numrows() == 0) { // On libère le résultat de la requête précédente $res2->free(); // On récupère l'enregistrement 'om_sousetat' de la collectivité de // niveau 2 dans n'importe quel état $sql = " select * from ".DB_PREFIXE."om_sousetat "; $sql .= " where id='".trim($elem)."' "; $sql .= " and om_collectivite='".$niveau."' "; $res2 = $f->db->query($sql); $f->addToLog("pdfetat.php: db->query(\"".$sql."\");", VERBOSE_MODE); $f->isDatabaseError($res2); } } // while ($sousetat =& $res2->fetchRow(DB_FETCHMODE_ASSOC)) { // $sql = ''; $titre = ''; // Variables statiques contenant des paramètres à remplacer $sql = $sousetat['om_sql']; $titre = $sousetat['titre']; // Remplacement des paramètres dans le fichier ../dyn/varetatpdf.inc if (file_exists("../dyn/varetatpdf.inc")) { include "../dyn/varetatpdf.inc"; } // $sousetat['om_sql'] = $sql; $sousetat['titre'] = $titre; // imprime les colonnes de la requete $pdf->sousetatdb($f->db, $edition, $sousetat); } } } } // if (!isset($pdf)) { return; } // Construction du nom du fichier $filename = date("Ymd-His"); $filename .= "-etat"; $filename .= "-".$obj; $filename .= ".pdf"; // $output = ""; if (isset($_GET["output"])) { $output = $_GET["output"]; } if (!in_array($output, array("string", "file", "download", "inline", "no"))) { if ($f->getParameter("edition_output") == "download") { $output = "download"; } else { $output = "inline"; // Valeur par defaut } } // if ($output == "string") { // S : renvoyer le document sous forme de chaine. name est ignore. $pdf_output = $pdf->Output("", "S"); } elseif ($output == "file") { // F : sauver dans un fichier local, avec le nom indique dans name // (peut inclure un repertoire). $pdf->Output($f->getParameter("pdfdir").$filename, "F"); } elseif ($output == "download") { // D : envoyer au navigateur en forcant le telechargement, avec le nom // indique dans name. $pdf->Output($filename, "D"); } elseif ($output == "inline") { // I : envoyer en inline au navigateur. Le plug-in est utilise s'il est // installe. Le nom indique dans name est utilise lorsque l'on selectionne // "Enregistrer sous" sur le lien generant le PDF. $pdf->Output($filename, "I"); } elseif ($output == "no") { // } ?>