source: pmb4.1/trunk/fuentes/pmb/classes/suggestion_multi.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: 11.3 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: suggestion_multi.class.php,v 1.15 2013-10-04 11:48:41 dgoron Exp $
6
7if (stristr($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
8
9require_once($include_path."/templates/suggestion_multi.tpl.php");
10require_once($class_path."/suggestions_origine.class.php");
11require_once($class_path."/suggestions.class.php");
12require_once($class_path."/suggestions_categ.class.php");
13require_once($class_path."/i_2709.class.php");
14require_once($class_path."/suggestions_unimarc.class.php");
15require_once($class_path."/docs_location.class.php");
16
17class suggestion_multi{
18       
19        var $liste_sugg=array();
20       
21        /**
22         * Constructeur
23         */
24        function suggestion_multi($tableau_sugg=array()){
25                $this->liste_sugg = $tableau_sugg;
26        }
27       
28        /**
29         * Formulaire de saisie des suggestions multiples
30         */
31        function display_form(){
32                global $dbh, $multi_sug_form,$charset,$msg, $src_liste;
33                global $PMBusernom;
34                global $PMBuserprenom;
35                global $origine_id, $type_origine, $acquisition_sugg_categ, $acquisition_sugg_localises;
36               
37                $req = "select * from suggestions_source order by libelle_source";
38                $res= mysql_query($req,$dbh);
39                $option = "<option value='0' selected>".htmlentities($msg['acquisition_sugg_no_src'],ENT_QUOTES,$charset)."</option>";
40                $select="";
41                while(($src=mysql_fetch_object($res))){
42                        $select = ($src_liste == $src->id_source ? "selected" : "");
43                        $option .= "<option value='".$src->id_source."' $select >".htmlentities($src->libelle_source,ENT_QUOTES,$charset)."</option>";
44                }       
45                if(!$this->liste_sugg){
46                        $multi_sug_form = str_replace("!!max_lignes!!","1",$multi_sug_form);   
47                        $ligne = "<tr id='sugg_0'>
48                                        <td><input type='texte' name='sugg_tit_0' id='sugg_tit_0' value='' disabled /></td>
49                                        <td><input type='texte' name='sugg_aut_0' id='sugg_aut_0' value=''disabled  /></td>
50                                        <td><input type='texte' name='sugg_edi_0' id='sugg_edi_0' value='' disabled /></td>
51                                        <td><input type='texte' name='sugg_code_0' id='sugg_code_0' value='' disabled /></td>
52                                        <td><input type='texte' name='sugg_prix_0' id='sugg_prix_0' value='' disabled /></td>
53                                        <td><input type='texte' name='sugg_url_0' id='sugg_url_0' value='' disabled /></td>
54                                        <td><textarea name='sugg_com_0' id='sugg_com_0' disabled ></textarea></td>
55                                        <td><textarea name='sugg_com_gestion_0' id='sugg_com_gestion_0' disabled ></textarea></td>
56                                        <td><input type='texte' name='sugg_date_0' id='sugg_date_0' value='' disabled /></td>
57                                        <td>
58                                                <select id='sugg_src_0' name='sugg_src_0' disabled>
59                                                        $option
60                                                </select>
61                                        </td>
62                                        <td><input type='texte' name='sugg_qte_0' id='sugg_qte_0' value='1' disabled /></td>
63                                        <td id='act_btn_0'><input type='button' class='bouton' name='add_line_0' id='add_line_0' value='+' onclick=\"add_line(0);\"/></td>
64                                </tr>";
65                } else {
66                        $multi_sug_form = str_replace("!!max_lignes!!",count($this->liste_sugg),$multi_sug_form);       
67                        for($i=0;$i<=count($this->liste_sugg);$i++){
68                                if($this->liste_sugg[$i]){
69                                        $ligne .= "<tr id='sugg_$i'>
70                                                <td><input type='texte' name='sugg_tit_$i' id='sugg_tit_$i' value='".htmlentities($this->liste_sugg[$i]['titre'],ENT_QUOTES,$charset)."' /></td>
71                                                <td><input type='texte' name='sugg_aut_$i' id='sugg_aut_$i' value='".htmlentities($this->liste_sugg[$i]['auteur'],ENT_QUOTES,$charset)."' /></td>
72                                                <td><input type='texte' name='sugg_edi_$i' id='sugg_edi_$i' value='".htmlentities($this->liste_sugg[$i]['editeur'],ENT_QUOTES,$charset)."' /></td>
73                                                <td><input type='texte' name='sugg_code_$i' id='sugg_code_$i' value='".htmlentities($this->liste_sugg[$i]['code'],ENT_QUOTES,$charset)."' /></td>
74                                                <td><input type='texte' name='sugg_prix_$i' id='sugg_prix_$i' value='".$this->liste_sugg[$i]['prix']."' /></td>
75                                                <td><input type='texte' name='sugg_url_$i' id='sugg_url_$i' value='".htmlentities($this->liste_sugg[$i]['url'],ENT_QUOTES,$charset)."' /></td>
76                                                <td><textarea name='sugg_com_$i' id='sugg_com_$i'></textarea></td>
77                                                <td><textarea name='sugg_com_gestion_$i' id='sugg_com_gestion_$i'></textarea></td>
78                                                <td><input type='texte' name='sugg_date_$i' id='sugg_date_$i' value='".htmlentities($this->liste_sugg[$i]['date'],ENT_QUOTES,$charset)."' /></td>
79                                                <td>
80                                                        <select id='sugg_src_$i' name='sugg_src_$i'>
81                                                                $option
82                                                        </select>
83                                                </td>
84                                                <td><input type='texte' name='sugg_qte_$i' id='sugg_qte_$i' value='1' /></td>";
85                                       
86                                        if($i==count($this->liste_sugg)){       
87                                                $ligne .= "<td id='act_btn_$i'><input type='button' class='bouton' name='add_line_$i' id='add_line_$i' value='+' onclick=\"add_line($i);\"/></td>";
88                                        } else {       
89                                                $ligne .= "<td id='act_btn_$i'><input type='button' class='bouton' name='del_line_$i' id='del_line_$i' value='X' onclick=\"del_line($i);\"/></td>";
90                                        }
91                                       
92                                        if($this->liste_sugg[$i]['id_uni']) 
93                                                $ligne .= "<input type='hidden' name='id_unimarc_$i' id='id_unimarc_$i' value='".$this->liste_sugg[$i]['id_uni']."'/> ";
94                                       
95                                        $ligne .= "</tr>";
96                                }                                       
97                        }
98                }
99                $multi_sug_form = str_replace('!!ligne!!',$ligne,$multi_sug_form);
100               
101                if(!$origine_id){
102                        $multi_sug_form = str_replace('!!id_user!!',SESSuserid,$multi_sug_form);
103                        $multi_sug_form = str_replace('!!type_user!!',0,$multi_sug_form);                               
104                        $multi_sug_form = str_replace('!!user_txt!!',$PMBusernom.", ".$PMBuserprenom,$multi_sug_form);
105                } else  {
106                        $multi_sug_form = str_replace('!!id_user!!',$origine_id,$multi_sug_form);
107                        $multi_sug_form = str_replace('!!type_user!!',$type_origine,$multi_sug_form);
108                       
109                        if($type_origine)
110                                $req = "select concat(empr_prenom,' ',empr_nom) as nom from empr where id_empr='".$origine_id."'";
111                         else $req = "select concat(prenom,' ',nom) as nom from users where userid='".$origine_id."'";
112                        $res = mysql_query($req,$dbh);
113                        $empr = mysql_fetch_object($res); 
114                        $multi_sug_form = str_replace('!!user_txt!!',$empr->nom,$multi_sug_form);
115                }
116               
117                //Selecteur Affecter a une categorie
118                if ($acquisition_sugg_categ == '1' ) {         
119                        $sel_categ = "<label class='etiquette' >".htmlentities($msg['acquisition_sug_sel_categ'],ENT_QUOTES, $charset)."</label>&nbsp;";               
120                        $tab_categ = suggestions_categ::getCategList();
121                        $sel_categ.= "<select class='saisie-25em' id='num_categ' name='num_categ'>";
122                        $sel_categ.= "<option value='-1'>".htmlentities($msg['acquisition_sug_tous'],ENT_QUOTES, $charset)."</option>";
123                        foreach($tab_categ as $id_categ=>$lib_categ){
124                                $sel_categ.= "<option value='".$id_categ."' > ";
125                                $sel_categ.= htmlentities($lib_categ,ENT_QUOTES, $charset)."</option>";
126                        }
127                        $sel_categ.= "</select>";
128                } else {
129                        $sel_categ = "";
130                }
131                //Selecteur de localisation
132                if ($acquisition_sugg_localises) {
133                        $list_locs .= "<label class='etiquette' >".htmlentities($msg['acquisition_sug_sel_localisation'],ENT_QUOTES, $charset)."</label>&nbsp;";
134                        if ($sugg_location_id) $temp_location=$sugg_location_id;
135                        else $temp_location=0;
136                        $locs=new docs_location();
137                        $list_locs.=$locs->gen_combo_box_sugg($temp_location,1);
138                } else {
139                        $list_locs='';
140                }
141                               
142                $multi_sug_form = str_replace('!!categorie!!',$sel_categ,$multi_sug_form);
143                $multi_sug_form = str_replace('!!localisation!!',$list_locs,$multi_sug_form);
144                return $multi_sug_form;         
145        }
146       
147        /**
148         * Enregistrement de la suggestion multiple
149         */
150        function save(){
151               
152                global $dbh, $max_nblignes, $msg, $id_user, $type_user, $sugg_location_id, $num_categ;
153               
154                for($i=0;$i<$max_nblignes;$i++){
155                        $tit = "sugg_tit_".$i;  $aut = "sugg_aut_".$i;  $edi = "sugg_edi_".$i;
156                        $code = "sugg_code_".$i; $prix = "sugg_prix_".$i; $com = "sugg_com_".$i; $com_gestion = "sugg_com_gestion_".$i;
157                        $url = "sugg_url_".$i; $qte = "sugg_qte_".$i; $src = "sugg_src_".$i;
158                        $date = "sugg_date_".$i; $unimarc = "id_unimarc_".$i;
159                        global $$tit, $$aut, $$edi, $$code, $$com, $$com_gestion, $$prix, $$url, $$qte, $$src, $$date, $$unimarc;
160                       
161                        if(isset($$tit)){
162                                if(!is_numeric($$qte)){
163                                        print "<strong>".$msg['acquisition_sugg_qte_error']."</strong>";
164                                        return;
165                                } else if(!$$tit || (!$$edi && !$$aut && !$$code)) {
166                                        print "<strong>".str_replace('\n','<br />',$msg['acquisition_sug_ko'])."</strong>";
167                                        return;
168                                } else if(!suggestions::exists($id_user,$$tit,$$aut,$$edi,$$code)) {
169                                        $$prix = str_replace(',','.',$$prix);
170                                        $req="insert into suggestions set
171                                                        titre='".$$tit."',
172                                                        auteur='".$$aut."',
173                                                        editeur='".$$edi."',
174                                                        code='".$$code."',
175                                                        prix='".$$prix."',
176                                                        commentaires='".$$com."',
177                                                        commentaires_gestion='".$$com_gestion."',
178                                                        url_suggestion='".$$url."',
179                                                        nb='".$$qte."',
180                                                        sugg_source='".$$src."',
181                                                        statut=1,
182                                                        date_publication='".$$date."',
183                                                        date_creation='".date("Y-m-d")."',
184                                                        num_categ='".$num_categ."',
185                                                        sugg_location='".$sugg_location_id."'
186                                                        ";
187                                       
188                                        if($$unimarc){
189                                                $uni = new suggestions_unimarc($$unimarc);
190                                                $req .= ", notice_unimarc ='".addslashes($uni->sugg_uni_notice)."'";                                                   
191                                        } 
192                                        mysql_query($req,$dbh); 
193                                       
194                                        if (is_object($uni)) $uni->delete();
195                                               
196                                        $sug_orig = new suggestions_origine($id_user, mysql_insert_id());
197                                        $sug_orig->type_origine = $type_user;
198                                        $sug_orig->save();
199                                       
200                                print "<b>".$msg['acquisition_sugg_ok']."</b>";
201                                } else {
202                                        print "<b>".$msg['acquisition_sugg_already_exist']."</b>";
203                                }                               
204                        }
205                }
206        }
207       
208        function traite_notice($notice_iso2709,$n_notice) {
209                $notice=new iso2709_notices($notice_iso2709);
210                $n_notice--;
211                if (!$notice->error) {
212                        $this->liste_sugg[$n_notice]['code'] = ($notice->fields['010'][0]['a'][0] ? $notice->fields['010'][0]['a'][0] : $notice->fields['011'][0]['a'][0] );
213                        $this->liste_sugg[$n_notice]['prix'] = $notice->fields['010'][0]['d'][0];
214                        $this->liste_sugg[$n_notice]['titre'] = $notice->fields['200'][0]['a'][0];
215                        $this->liste_sugg[$n_notice]['editeur'] = $notice->fields['210'][0]['a'][0];
216                        $this->liste_sugg[$n_notice]['date']= $notice->fields['210'][0]['d'][0];
217                        $this->liste_sugg[$n_notice]['auteur'] = ( $notice->fields['700'][0]['a'][0] ? $notice->fields['700'][0]['a'][0] : ($notice->fields['710'][0]['a'][0] ? $notice->fields['710'][0]['a'][0] :  $notice->fields['701'][0]['a'][0].", ".$notice->fields['701'][0]['b'][0])) ;
218                        $this->liste_sugg[$n_notice]['url'] = $notice->fields['856'][0]['u'][0];       
219                       
220                        //Enregistrement de la suggestion unimarc
221                        $uni = new suggestions_unimarc();
222                        $uni->sugg_uni_notice = $notice_iso2709;
223                        $uni->sugg_uni_num_notice = $n_notice;
224                        $uni->sugg_uni_origine = $this->ori_unimarc;
225                        $uni->save();
226                        $this->liste_sugg[$n_notice]['id_uni'] = $uni->sugg_uni_id;
227                }
228        }
229       
230        function create_table_from_uni() {
231                global $charset,$file_in,$suffix;
232               
233                //Lecture des notices
234                if(!$suffix)
235                        $fp=@fopen("temp/$file_in","r");
236                else 
237                        $fp=@fopen("temp/$file_in.$suffix~","r");
238                if ($fp) {
239                        $n=1;
240                        $car=0x1d;
241                        $i=false;
242                        $notice="";
243                        $notices="";
244                        $this->ori_unimarc = microtime()."_unimulti";
245                        while (!feof($fp)) {
246                                $notices.=fread($fp,4096);
247                                $i=strpos($notices,$car);
248                                while ($i!==false) {
249                                        $notice=substr($notices,0,$i+1);
250                                        $this->traite_notice($notice,$n);
251                                        $n++;
252                                        $notices=substr($notices,$i+1);
253                                        $i=strpos($notices,$car);
254                                }
255                        }
256                        if ($notices!="") {
257                                $notice=$notices;
258                                $this->traite_notice($notice);
259                                $n++;
260                        }       
261                }
262                fclose($fp);
263                if(!$suffix)
264                        unlink("temp/$file_in");
265                else 
266                        unlink("temp/$file_in.$suffix~");
267        }
268}
269?>
Note: See TracBrowser for help on using the repository browser.