/[openfoncier]/trunk/app/pdf_instruction.php
ViewVC logotype

Diff of /trunk/app/pdf_instruction.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/app/pdflettretype_instruction.php revision 88 by fraynaud, Thu Aug 25 09:59:07 2011 UTC trunk/app/pdf_instruction.php revision 1363 by fmichon, Mon Mar 11 16:22:01 2013 UTC
# Line 1  Line 1 
1  <?php  <?php
2  /**  /**
3     * Ce script est une interface qui permet en fonction de l'identifiant de
4     * l'instruction de retrouver la lettre type liée et d'appeler le script
5     * d'édition pdf avec les bons paramètres.
6   *   *
7   *   * @package openfoncier
8   * @package openmairie_exemple   * @version SVN : $Id$
  * @version SVN : $Id: pdflettretype.php 278 2010-11-30 07:12:41Z fmichon $  
9   */   */
10  // fpdf ne traite pas UTF8  
11  // donc il faut utiliser decode  //
 include ("../dyn/locales.inc.php");  
12  require_once "../obj/utils.class.php";  require_once "../obj/utils.class.php";
13  $f = new utils("nohtml");  $f = new utils("nohtml");
14    
15  /**  // Identifiant de l'objet métier
  *  
  */  
 // Nom de l'objet metier  
 (isset($_GET['obj']) ? $obj = $_GET['obj'] : $obj = "");  
16  (isset($_GET['idx']) ? $idx = $_GET['idx'] : $idx = "");  (isset($_GET['idx']) ? $idx = $_GET['idx'] : $idx = "");
   
 /**  
  * en utilisant une table courrier (par exemple)  
  * on peut typer les courriers  
  *  par destinataire  
  *  suivant une date  
  *  avec un complement  
  *  voir openfoncier ou openpersonnalite  
  *  
  *  cette table est desactivee dans l exemple  
  *    
  */  
   
   
 $sql_courrier="select * from instruction where instruction=".$idx;  
 $res = $f->db->query($sql_courrier);  
 $f->isDatabaseError($res);  
 while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){  
     $obj=$row['lettretype'];  
     //if(CHARSET=='UTF8'){  
     //    $titre= utf8_decode($lettretype["titre"]);  
     $destinataire=$row['destinataire'];  // ***  
     $datecourrier=$row['datecourrier'];  
     $complement=$row['complement'];  
     $complement2=$row['complement2'];  
     $complement3=$row['complement3'];  
     $complement4=$row['complement4'];  
     $complement5=$row['complement5'];  
     $complement6=$row['complement6'];  
     $complement7=$row['complement7'];  
     $complement8=$row['complement8'];  
     $complement9=$row['complement9'];  
     $complement10=$row['complement10'];  
     $complement11=$row['complement11'];  
     $complement12=$row['complement12'];  
     $complement13=$row['complement13'];  
     $complement14=$row['complement14'];  
     $complement15=$row['complement15'];  
 }  
   
 // ligne a desactiver ==========================================================================  
 //$destinataire ="";  
 //$datecourrier=date('d/m/Y');  
 //$complement="<-Ici le complement->";  
 // =============================================================================================  
   
 /* format a voir  
 if ($f->formatDate=="AAAA-MM-JJ"){  
     $valTemp=explode("-",$datecourrier);  
     $datecourrier = $valTemp[2]."/".$valTemp[1]."/".$valTemp[0];  
 }  
 */  
   
 /**  
  *  acces table om_lettretype  
  */  
 $niveau='';  
 // requete SQL  
 $sql= "select * from ".DB_PREFIXE."om_lettretype where id='".$obj."'"; // select obj  
 $sql.= " and actif ='Oui'";  
 $sql.= " and om_collectivite ='".$_SESSION['collectivite']."'";  
 $res1 = $f->db->query($sql);  
 $f->isDatabaseError($res1);  
 if ($res1->numrows()==0){  
     $sql="select om_collectivite from ".DB_PREFIXE."om_collectivite where niveau ='2'";  
     $niveau=$f->db->getOne($sql);  
     //$res1->free();  
     $sql= "select * from ".DB_PREFIXE."om_lettretype where id='".$obj."'"; // select obj  
     $sql.= " and actif ='Oui'";  
     $sql.= " and om_collectivite ='".$niveau."'";  
     $res1 = $f->db->query($sql);  
     $f->isDatabaseError($res1);  
 }  
   
 if ($res1->numrows()==0){  
     //$res1->free();  
     $sql= "select * from ".DB_PREFIXE."om_lettretype where id='".$obj."'"; // select obj  
     $sql.= " and om_collectivite ='".$niveau."'";  
     $res1 = $f->db->query($sql);  
     $f->isDatabaseError($res1);  
 }  
   
 set_time_limit(180);  
 //require_once PATH_FPDF."fpdf.php";  
 require_once "../php/fpdf/fpdf.php"; // *** mettre le path FPDF  
 $collectivite = $f->collectivite; // bug array vide  
   
   
 class PDF extends FPDF {  
     /**  
      * Pied de page  
      */  
     function Footer() {  
         // NUMERO DE PAGE  
         //Positionnement � 1,5 cm du bas  
         $this->SetY(-15);  
         // Police Arial italique 8  
         $this->SetFont('Arial','I',8);  
         // Numero de page  
         $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');  
     }  
       
 }  
   
   
 // INSTANCE PDF ================================================  
 // orientation P= portrait L=paysage  
 // unite mm (milimetre)  
 // format A4 A3  
 // =============================================================  
 $unite="mm";  
   
 while ($lettretype =& $res1->fetchRow(DB_FETCHMODE_ASSOC)) {  
   
     $pdf=new PDF($lettretype["orientation"],$unite,$lettretype["format"]);  
     // methode fpdf calcul nombre de page  
     $pdf->AliasNbPages();  
     // methode de creation de page  
     $pdf->AddPage();  
     // police ======================================================  
     // setFont 0 = times, arial  
     //         1 = I B ou ''  
     //         2 = 8 ....  
     // affichage image =============================================  
     // image     0 = nom  
     //           1 = left  
     //           2 = top  
     //           3 = width 0=calcul auto  
     //           4 = hauteur 0=calcul auto  
     //           5 = type image  rien=exetension du fichier  
     //           6 = lien  
     // setXY (left,top) =============================================  
     // affichage multicell ==========================================  
     // multicell 0 = width   =0 left->droite  
     //           1 = hauteur de la cellule  
     //           2 = texte  
     //           3 = bordure (0 ou 1)  
     //           4 = align (L C R J)  
     //           5 =     0 fd transparent  
     //                   1 couleur (parametre � rajouter)  
     // ==============================================================  
     $pdf->Image($f->getPathFolderTrs().$lettretype["logo"],  
                 $lettretype["logoleft"],  
                 $lettretype["logotop"],  
                 0,  
                 0,  
                 '',  
                 '');  
     // variables statiques  
     $sql = $lettretype['om_sql'];  
     $titre= $lettretype["titre"];  
     $corps= $lettretype["corps"];  
17    
       
     //  
     include("../dyn/varlettretypepdf.inc");  
     //  
     $res = $f->db->query($sql);  
     $f->isDatabaseError($res);  
     while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {  
         // titre  
        $temp = explode("[",$lettretype["titre"]);  
        for($i=1;$i<sizeof($temp);$i++){  
            $temp1 = explode("]",$temp[$i]);  
            $titre=str_replace("[".$temp1[0]."]",$row[$temp1[0]],$titre);  
        }  
        //  
        //************************************************  
        // traitement attribut affichage <b> dans titre  *  
        //              aout 2008                        *  
        //************************************************  
        $pos_t="";  
        $pos_t = strpos($titre, "<b>");  
         if(CHARSET=='UTF8')  
             $titre= utf8_decode($titre);  
        if ($pos_t === false) {  
        // compatibilite :aucun attribut affichage <b> dans corps  
        //***************************************************************************  
          if(trim($titre)!="") {  
              $pdf->SetFont($lettretype["titrefont"],  
                          $lettretype["titreattribut"],  
                          $lettretype["titretaille"]);  
              $pdf->SetXY($lettretype["titreleft"],  
                        $lettretype["titretop"]);  
              $pdf->MultiCell($lettretype["titrelargeur"],  
                            $lettretype["titrehauteur"],  
                            $titre,  
                            $lettretype["titrebordure"],  
                            $lettretype["titrealign"],  
                            0);  
         }  
        //****************************************************************************  
        // attribut affichage <b> present  dans titre  
        }else{  
           $pdf->SetY($lettretype["titretop"]);  
           $tmptitre="";  
           $tmptitre=explode('<b>', $titre);  
           //  
            for($y=0;$y<sizeof($tmptitre);$y++){  
                $pos1="";  
                $pos1 = strpos($tmptitre[$y], "</b>");  
                //  
                if ($pos1 === false) {  
                  if(trim($tmptitre[$y])!="") {  
                    $pdf->SetFont($lettretype["titrefont"],$lettretype["titreattribut"],$lettretype["titretaille"]);  
                    $pdf->SetX($lettretype["titreleft"]);  
                    $pdf->MultiCell($lettretype["titrelargeur"],$lettretype["titrehauteur"],$tmptitre[$y],$lettretype["titrebordure"],$lettretype["titrealign"],0);  
                  }  
                }else{  
                    $ctrl_fin_b=0;  
                    $ctrl_fin_b=substr_count($tmptitre[$y],"</b>");  
                    $lettretype["titreattribut"] = str_replace("B","",$lettretype["titreattribut"]);  
                    $lettretype["titreattribut"] = str_replace("b","",$lettretype["titreattribut"]);  
                     if ($ctrl_fin_b>1){  
                        // nbr </b> superieur a 1  
                        if(trim($tmptitre[$y])!="") {  
                           $pdf->SetFont($lettretype["titrefont"],"B".$lettretype["titreattribut"],$lettretype["titretaille"]);  
                           $pdf->SetX($lettretype["titreleft"]);  
                           $pdf->MultiCell($lettretype["titrelargeur"],$lettretype["titrehauteur"],$tmptitre[$y],$lettretype["titrebordure"],$lettretype["titrealign"],0);  
                        }  
                     }else{  
                        $tmptitre1 = explode("</b>",$tmptitre[$y]);  
                        //  
                        if(trim($tmptitre1[0])!="") {  
                             $pdf->SetFont($lettretype["titrefont"],"B".$lettretype["titreattribut"],$lettretype["titretaille"]);  
                             $pdf->SetX($lettretype["titreleft"]);  
                            $pdf->MultiCell($lettretype["titrelargeur"],$lettretype["titrehauteur"],$tmptitre1[0],$lettretype["titrebordure"],$lettretype["titrealign"],0);  
                        }  
                        if(trim($tmptitre1[1])!=""){  
                           $pdf->SetFont($lettretype["titrefont"],$lettretype["titreattribut"],$lettretype["titretaille"]);  
                           $pdf->SetX($lettretype["titreleft"]);  
                           $pdf->MultiCell($lettretype["titrelargeur"],$lettretype["titrehauteur"],$tmptitre1[1],$lettretype["titrebordure"],$lettretype["titrealign"],0);  
                        }  
                     }  
                   //  
                }  
            }  
        }  
        // corps  
       
        $temp = explode("[",$lettretype["corps"]);  
        for($i=1;$i<sizeof($temp);$i++){  
            $temp1 = explode("]",$temp[$i]);  
            $corps=str_replace("[".$temp1[0]."]",$row[$temp1[0]],$corps);  
        }  
        //************************************************  
        // traitement attribut affichage <b> dans corps  *  
        //              aout 2008                        *  
        //************************************************  
        $pos="";  
        $pos = strpos($corps, "<b>");  
         if(CHARSET=='UTF8')  
                 $corps= utf8_decode($corps);  
        if ($pos === false) {  
        // compatibilite :aucun attribut affichage dans corps  
        //***************************************************************************  
           if(trim($corps)!="") {  
             $pdf->SetFont($lettretype["corpsfont"],  
                        $lettretype["corpsattribut"],  
                        $lettretype["corpstaille"]);  
             $pdf->SetXY($lettretype["corpsleft"],  
                      $lettretype["corpstop"]);  
             $pdf->MultiCell($lettretype["corpslargeur"],  
                          $lettretype["corpshauteur"] ,  
                          $corps."vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv",  
                          $lettretype["corpsbordure"],  
                          $lettretype["corpsalign"],  
                          0);  
           }  
          //****************************************************************************  
          // attribut affichage <b> present  dans corps  
         }else{  
           $pdf->SetXY($lettretype["corpsleft"],$lettretype["corpstop"]);  
           $tmp="";  
           $tmp=explode('<b>', $corps);  
           //  
            for($x=0;$x<sizeof($tmp);$x++){  
                $pos1="";  
                $pos1 = strpos($tmp[$x], "</b>");  
                //  
                if ($pos1 === false) {  
                   if(trim($tmp[$x])!=""){  
                    $pdf->SetFont($lettretype["corpsfont"],$lettretype["corpsattribut"],$lettretype["corpstaille"]);  
                    $pdf->write($lettretype["corpshauteur"],$tmp[$x]);  
                   }  
                }else{  
                    $ctrl_fin_b=0;  
                    $ctrl_fin_b=substr_count($tmp[$x],"</b>");  
                    $lettretype["corpsattribut"] = str_replace("B","",$lettretype["corpsattribut"]);  
                    $lettretype["corpsattribut"] = str_replace("b","",$lettretype["corpsattribut"]);  
                     if ($ctrl_fin_b>1){  
                        // nbr </b> superieur a 1  
                        if(trim($tmp[$x])!=""){  
                           $pdf->SetFont($lettretype["corpsfont"],"B".$lettretype["corpsattribut"],$lettretype["corpstaille"]);  
                           $pdf->write($lettretype["corpshauteur"],$tmp[$x]);  
                        }  
                     }else{  
                        $tmp1 = explode("</b>",$tmp[$x]);  
                        //  
                        if(trim($tmp1[0])!=""){  
                             //  
                             $nbcar=0;  
                             $nbcar=$tmp1[0];  
                             if( strlen($nbcar)==1) {  
                               // ??????bug fpdf write si affichage 1 seul caractere -> ajout 2 blancs  
                               $pdf->SetFont($lettretype["corpsfont"],"B".$lettretype["corpsattribut"],$lettretype["corpstaille"]);  
                               $pdf->write($lettretype["corpshauteur"],"  ".$tmp1[0]."  ");  
                             }else{  
                                $pdf->SetFont($lettretype["corpsfont"],"B".$lettretype["corpsattribut"],$lettretype["corpstaille"]);  
                                $pdf->write($lettretype["corpshauteur"],$tmp1[0]);  
                             }  
                          }  
                        if(trim($tmp1[1])!=""){  
                           $pdf->SetFont($lettretype["corpsfont"],$lettretype["corpsattribut"],$lettretype["corpstaille"]);  
                           $pdf->write($lettretype["corpshauteur"],$tmp1[1]);  
                        }  
                     }  
                   //  
                }  
            }  
         }  
        // fermeture pdf  
        $pdf->Output();  
     }  
 }  
 ?>  
18    // Requête qui récupère l'objet de la lettre type
19    $sql = " SELECT instruction.lettretype ";
20    $sql .= " FROM ".DB_PREFIXE."instruction ";
21    $sql .= " WHERE instruction.instruction=".$idx;
22    $obj = $f->db->getone($sql);
23    $f->addTolog("app/pdf_instruction.php: db->query(\"".$sql."\");", VERBOSE_MODE);
24    $f->isDatabaseError($obj);
25    
26    // Redirection vers le script d'édition pdf avec les bons paramètres
27    header('Location: ../pdf/pdflettretype.php?idx='.$idx.'&obj='.$obj);
28    exit();
29    
30    ?>

Legend:
Removed from v.88  
changed lines
  Added in v.1363

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26