source: pmb4.1/trunk/fuentes/pmb/classes/pret.class.php @ 478

Last change on this file since 478 was 478, checked in by mabarracus, 4 years ago

copy trusty code 4.1

  • Property svn:executable set to *
File size: 10.0 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: pret.class.php,v 1.15 2012-04-02 13:12:31 dgoron Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9// définition de la classe de gestion des 'prêts'
10
11if ( ! defined( 'PRET_CLASS' ) ) {
12  define( 'PRET_CLASS', 1 );
13
14class pret {
15
16/*---------------------------------------------------------------
17                propriétés de la classe
18  ---------------------------------------------------------------
19
20        var $id_empr;                           id emprunteur
21        var $id_expl;                           id exemplaire
22        var $pret_date;                         timestamp du début du pret
23        var $pret_retour;                       timestamp du retour prévu
24        var $cb_expl;                           code barre exemplaire
25        var $type_doc;                          type de doc de l'exemplaire
26        var $titre_auteur;                      titre/auteur de l'exemplaire
27        var $owner                              propriétaire de l'exemplaire
28        var $date_pret_display;                 date début du prêt en format affichable
29        var $date_retour_display;               date retour prévu du prêt en format affichable
30        var $resultat_action;                   booléen de résultat de l'action
31        var $display;                           reste dispo pour l'instant
32
33  ---------------------------------------------------------------
34                pret($id_empr, $id_expl, $cb_expl, $pret_date, $pret_retour) : constructeur
35                        id_empr = id de l'emprunteur
36                        id_expl = id de l'exemplaire
37                        cb_expl = code barre de l'exemplaire, au choix avec l'id
38                        pret_date = date du début du pret
39                        pret_retour = date du retour prévu
40  --------------------------------------------------------------*/
41        var $id_empr;
42        var $id_expl;
43        var $pret_date;
44        var $pret_retour;
45        var $cb_expl;
46        var $type_doc;
47        var $statut_doc;
48        var $titre_auteur;
49        var $date_pret_display;
50        var $date_retour_display;
51        var $etat;
52        var $display;
53
54function pret( $id_empr, $id_expl, $cb_expl, $pret_date, $pret_retour) {
55
56$this->id_empr=$id_empr;
57
58if (($id_expl!=0) || ($cb_expl!="")){
59        // on cherche à atteindre un prêt existant
60        $this->id_expl = $id_expl;
61        $this->cb_expl = $cb_expl;
62        $this->getData();
63        } else {
64                // on n'a pas de quoi chercher le pret
65                $this->id_expl = 0;
66                $this->cb_expl = "";
67                $this->getData();
68                }
69}
70
71
72//      récupération infos du prêt
73function getData() {
74global $dbh;
75global $msg;
76if(($this->id_expl==0) && ($this->cb_expl=="")) {
77        // aucun identifiant. on retourne un tableau vide
78        $this->id_empr = 0;
79        $this->id_expl = 0;
80        $this->pret_date = "";
81        $this->pret_retour = "";
82        $this->cb_expl = "";
83        $this->type_doc="";
84        $this->statut_doc="";
85        $this->titre_auteur="";
86        $this->owner="";
87        $this->date_pret_display="";
88        $this->date_retour_display="";
89        $this->etat=0;
90        $this->display = $msg[4052];   
91        } else {
92                $sql_dates = " date_format(pret_date, '".$msg["format_date"]."') as aff_pret_date, ";
93                $sql_dates .= " date_format(pret_retour, '".$msg["format_date"]."') as aff_pret_retour, ";
94                $sql_dates .= " IF(pret_retour>sysdate(),0,1) as retard " ; 
95                if ($this->id_expl!=0) $requete = "SELECT pret_idempr, pret_idexpl, pret_date, pret_retour, expl_cb, expl_typdoc, expl_statut, tit1, expl_owner, $sql_dates FROM pret, exemplaires, notices WHERE pret_idexpl='".$this->id_expl."' and pret_idexpl=expl_id and expl_notice=notice_id LIMIT 1 ";
96                        else $requete = "SELECT pret_idempr, pret_idexpl, pret_date, pret_retour, expl_cb, expl_typdoc, tit1, expl_owner, $sql_dates FROM pret, exemplaires, notices, authors WHERE expl_cb='".$this->cb_expl."' and pret_idexpl=expl_id and expl_notice=notice_id LIMIT 1 ";
97                $result = @mysql_query($requete, $dbh);
98                if(mysql_num_rows($result)) {
99                        $temp = mysql_fetch_object($result);
100                        mysql_free_result($result);
101                        $this->id_empr = $temp->pret_idempr;
102                        $this->id_expl = $temp->pret_idexpl;
103                        $this->pret_date = $temp->pret_date;
104                        $this->pret_retour = $temp->pret_retour;
105                        $this->cb_expl = $temp->expl_cb;
106                       
107                        $requete = "select tdoc_libelle from docs_type where idtyp_doc='".$temp->expl_typdoc."' ";
108                        $result = @mysql_query($requete, $dbh);
109                        $typdoc = mysql_fetch_object($result);
110                        mysql_free_result($result);
111                        $this->type_doc = $typdoc->tdoc_libelle;
112                       
113                        $requete = "select statut_libelle from docs_statut where idstatut='".$temp->expl_statut."' ";
114                        $result = @mysql_query($requete, $dbh);
115                        $statdoc = mysql_fetch_object($result);
116                        mysql_free_result($result);
117                        $this->statut_doc = $statdoc->statut_libelle;
118                                       
119                        $this->titre_auteur = $temp->tit1;
120
121                        $requete = "select lender_libelle from lenders where idlender='".$temp->expl_owner."' ";
122                        $result = @mysql_query($requete, $dbh);
123                        $lender = mysql_fetch_object($result);
124                        mysql_free_result($result);
125                        $this->owner = $lender->lender_libelle;
126                       
127                        $this->date_pret_display=$temp->aff_pret_date;
128                        $this->date_retour_display=$temp->aff_pret_retour;
129                        $this->etat=1;
130                        $this->display = "Prêt existant";
131                        } else {
132                                // pas de prêt avec cette clé : on va aller chercher le expl_cb avec l'id ou l'inverse
133                                $long_maxi_cb_expl = mysql_field_len(mysql_query("SELECT expl_cb FROM exemplaires limit 1"),0);
134                                $this->cb_expl = rtrim(substr(pmb_preg_replace('/\[|\]/', '', rtrim(ltrim($this->cb_expl))),0,$long_maxi_cb_expl));
135
136                                if ($this->id_expl==0) {
137                                        /* ici la recherche de l'id_expl */
138                                        $query = "SELECT expl_id, expl_cb FROM exemplaires WHERE expl_cb='${key_cb_expl}' LIMIT 1 ";
139                                        } else {
140                                                /* ici la recherche du cb à partir de l'id */
141                                                $query = "SELECT expl_id, expl_cb FROM exemplaires WHERE expl_id='".$this->id_expl."' LIMIT 1 ";
142                                                }
143                                $result = @mysql_query($query, $dbh) or die("can't SELECT exemplaires ".$query);
144                                if (mysql_num_rows($result)==0) { /* on n'a trouvé aucun exemplaire */
145                                        $this->id_empr = 0;
146                                        $this->id_expl = 0;
147                                        $this->pret_date = "";
148                                        $this->pret_retour = "";
149                                        $this->cb_expl = "";
150                                        $this->type_doc="";
151                                        $this->statut_doc="";
152                                        $this->titre_auteur="";
153                                        $this->owner = "";
154                                        $this->date_pret_display="";
155                                        $this->date_retour_display="";
156                                        $this->etat=3;
157                                        $this->display = "Exemplaire introuvable";     
158                                        } else {
159                                                $expl  = mysql_fetch_object($result);
160                                                $this->id_expl = $expl->expl_id;
161                                                $this->cb_expl = $expl->expl_cb;
162                                                $this->pret_retour = "";
163                                                $this->type_doc="";
164                                                $this->statut_doc="";
165                                                $this->titre_auteur="";
166                                                $this->owner = "";
167                                                $this->date_pret_display="";
168                                                $this->date_retour_display="";
169                                                $this->etat=2;
170                                                $this->display = "Prêt possible, inexistant avec cette clé";   
171                                                }
172                                }
173                }
174}
175
176
177// retour prêt
178function retour($retour_effectif) {
179global $dbh;
180global $msg;
181
182// check sur le type de  la variable passée en paramètre
183if ($retour_effectif=="") $retour_effectif=time();         
184
185/* on a tout ce qu'il faut, on peut supprimer le prêt */
186
187/* on va d'abord transférer tout ce que l'on connait dans la table des archives pour les stats */
188$query = "SELECT pret_date debut, empr_cp, empr_ville, empr_prof, empr_year, empr_categ, empr_codestat, empr_sexe, empr_statut, empr_location, type_abt, ";
189$query.= "expl_typdoc, expl_cote, expl_statut, expl_location, expl_codestat, expl_section, expl_owner FROM pret, empr, exemplaires WHERE pret_idexpl='".$this->id_expl."' and id_empr=pret_idempr and expl_id=pret_idexpl ";
190$res_stat = @mysql_query($query, $dbh) or die(mysql_error()."<br />can't SELECT pret & co for stats <br />".$query."<br />");
191$temp = mysql_fetch_object($res_stat);
192$query = "insert into pret_archive set ";
193$query.="arc_debut          ='".$temp->debut         ."', ";
194$query.="arc_fin            ='".date("Y-m-d",$retour_effectif) ."', ";
195$query.="arc_empr_cp        ='".addslashes($temp->empr_cp       )."', ";
196$query.="arc_empr_ville     ='".addslashes($temp->empr_ville    )."', ";
197$query.="arc_empr_prof      ='".addslashes($temp->empr_prof     )."', ";
198$query.="arc_empr_year      ='".$temp->empr_year                        ."', ";
199$query.="arc_empr_categ     ='".$temp->empr_categ                       ."', ";
200$query.="arc_empr_codestat  ='".$temp->empr_codestat                    ."', ";
201$query.="arc_empr_sexe      ='".$temp->empr_sexe                        ."', ";
202$query.= "arc_empr_statut       ='".$temp->empr_statut                          ."', ";
203$query.= "arc_empr_location     ='".$temp->empr_location                ."', ";
204$query.= "arc_type_abt          ='".$temp->type_abt                             ."', ";
205$query.="arc_expl_typdoc    ='".$temp->expl_typdoc                      ."', ";
206$query.="arc_expl_cote      ='".addslashes($temp->expl_cote     )."', ";
207$query.="arc_expl_statut    ='".$temp->expl_statut                      ."', ";
208$query.="arc_expl_location  ='".$temp->expl_location                    ."', ";
209$query.="arc_expl_section  ='".$temp->expl_section                              ."', ";
210$query.="arc_expl_codestat  ='".$temp->expl_codestat                    ."', ";
211$query.="arc_expl_owner     ='".$temp->expl_owner                       ."', ";         
212$query.="arc_niveau_relance='". $temp->niveau_relance                   ."', ";
213$query.="arc_date_relance='".   $temp->date_relance                             ."', ";
214$query.="arc_printed='".                $temp->printed                                  ."', ";
215$query.="arc_cpt_prolongation='".$temp->cpt_prolongation                ."' ";
216@mysql_query($query, $dbh) or die(mysql_error()."<br />can't insert in pret_archive <br />".$query."<br />");
217
218$query = "delete from pret where pret_idexpl = '".$this->id_expl."' ";
219@mysql_query($query, $dbh) or die("can't delete from pret ".$query."<br />".mysql_error());
220return 0;
221}
222
223// ---------------------------------------------------------------
224//              annulation() : annulation violente d'un prêt
225// ---------------------------------------------------------------
226function annulation() {
227
228global $dbh;
229global $msg;
230
231$query = "delete from pret where ";
232$query .= "pret_idexpl = '".$this->id_expl."' ";
233$result = @mysql_query($query, $dbh) or die("can't delete from pret ".$query."<br />".mysql_error());
234return 0;
235}
236       
237// ---------------------------------------------------------------
238//              prolongation() : prolongation d'un prêt
239// ---------------------------------------------------------------
240function prolongation($nouvelle_date) {
241
242global $dbh;
243global $msg;
244
245$query = "update pret set pret_retour = '".$nouvelle_date."' where ";
246$query .= "pret_idexpl = '".$this->id_expl."' ";
247$result = @mysql_query($query, $dbh) or die("can't update pret ".$query."<br />".mysql_error());
248return 0;
249}
250
251
252} # fin de définition de la classe pret
253
254} # fin de délaration
Note: See TracBrowser for help on using the repository browser.