source: pmb4.2/trunk/fuentes/pmb/print.php @ 815

Last change on this file since 815 was 815, checked in by jrpelegrina, 4 years ago

Initial release of pmb 4.2

  • Property svn:executable set to *
File size: 13.7 KB
Line 
1<?php
2// +--------------------------------------------------------------------------+
3// | PMB est sous licence GPL, la réutilisation du code est cadrée            |
4// +--------------------------------------------------------------------------+
5// $Id: print.php,v 1.42 2015-06-05 13:16:35 dgoron Exp $
6
7//Impression
8
9$base_path = ".";
10$base_auth = "CATALOGAGE_AUTH|CIRCULATION_AUTH";
11$base_title = "\$msg[print_title]";
12$base_nobody=1;
13$base_noheader=1;
14
15
16require($base_path."/includes/init.inc.php");
17
18if (($action_print=="")&&($_SESSION["PRINT"])) {
19        if ($_SESSION["PRINT"]["output"]=="tt") {
20                header("Content-Type: application/word");
21                header("Content-Disposition: attachement; filename=liste.doc");
22        }
23}
24
25require_once($class_path."/mono_display.class.php");
26require_once($include_path."/notice_authors.inc.php");
27require_once($include_path."/notice_categories.inc.php");
28require_once($class_path."/author.class.php");
29require_once($class_path."/editor.class.php");
30require_once($include_path."/isbn.inc.php");
31require_once($class_path."/collection.class.php");
32require_once($class_path."/subcollection.class.php");
33require_once($class_path."/serie.class.php");
34require_once($include_path."/explnum.inc.php");
35require_once($class_path."/category.class.php");
36require_once($class_path."/indexint.class.php");
37require_once($class_path."/search.class.php");
38require_once($class_path."/serial_display.class.php");
39require_once($include_path."/mail.inc.php");
40require_once($class_path."/notice_tpl_gen.class.php");
41
42if (file_exists($include_path.'/print/print_options_subst.xml')){
43        $xml_print = new XMLlist($include_path.'/print/print_options_subst.xml');
44} else {
45        $xml_print = new XMLlist($include_path.'/print/print_options.xml');
46}
47$xml_print->analyser();
48$print_options = $xml_print->table;
49
50if ($action_print=="print_prepare") {
51        header ("Content-Type: text/html; charset=$charset");
52        print $std_header;
53        print "<h3>".$msg["print_options"]."</h3>\n";
54        print "
55        <script type='text/javascript'>
56        function sel_part_gestion(){
57                if(document.getElementById('outp').checked){
58                        document.getElementById('mail_part').style.display='none';
59                }
60                if(document.getElementById('outt').checked){
61                        document.getElementById('mail_part').style.display='none';
62                }
63                if(document.getElementById('oute').checked){
64                        document.getElementById('mail_part').style.display='block';
65                }
66        }
67        </script>";
68        print "<form name='print_options' action='print.php?action_print=print' method='post'>
69        <b>".$msg["print_size"]."</b>";
70        if(!$notice_id) 
71        print"
72        <blockquote>
73                <input type='radio' name='pager' id='current_page' value='1' ".($print_options['current_page'] ? ' checked ' : '')."/><label for='current_page'>&nbsp;".$msg["print_size_current_page"]."</label><br />
74                <input type='radio' name='pager' id='all' value='0' ".($print_options['all'] ? ' checked ' : '')."/><label for='all'>&nbsp;".$msg["print_size_all"]."</label>
75        </blockquote>";
76
77        $sort_info = $sort_id ? '<input type="hidden" name="sort_id" value="'.$sort_id.'">' : '';
78       
79        $onchange="
80                var div_sel=document.getElementById('sel_notice_tpl');
81                var div_sel2=document.getElementById('sel_notice_tpl2');
82                var notice_tpl=document.getElementById('notice_tpl');
83                var sel=notice_tpl.options[notice_tpl.selectedIndex].value;
84            if(sel>0){
85                div_sel.style.display='none';
86                div_sel2.style.display='none';
87            }else {
88                div_sel.style.display='block';
89                div_sel2.style.display='block';
90            }               
91        ";
92        $sel_notice_tpl=notice_tpl_gen::gen_tpl_select("notice_tpl",0,$onchange);
93       
94        print"
95        <b>".$msg["print_format_title"]."</b>
96        <blockquote>
97                $sel_notice_tpl
98                <div id='sel_notice_tpl'>
99                        <input type='radio' name='short' id='s1' value='1' ".($print_options['s1'] ? ' checked ' : '')."/><label for='s1'>&nbsp;".$msg["print_short_format"]."</label><br />
100                        <input type='radio' name='short' id='s0' value='6' ".($print_options['s0'] ? ' checked ' : '')."/><label for='s0'>&nbsp;".$msg["print_long_format"]."</label><br />
101                        <input type='checkbox' name='header' id='header' value='1' ".($print_options['header'] ? ' checked ' : '')."/><label for='header'>&nbsp;".$msg["print_header"]."</label><br/>
102                        <input type='checkbox' name='permalink' id='permalink' value='1' ".($print_options['permalink'] ? ' checked ' : '')."/><label for='permalink'>&nbsp;".$msg["print_permalink"]."</label><br />
103                        <input type='checkbox' name='vignette' id='vignette' value='1' ".($print_options['vignette'] ? ' checked ' : '')."/><label for='vignette'>&nbsp;".$msg["print_vignette"]."</label><br />
104                </div> 
105        </blockquote>
106        <div id='sel_notice_tpl2'>
107        <b>".$msg["print_ex_title"]."</b>
108        <blockquote>";
109        if ($pmb_print_expl_default) {
110                $checkprintexpl="checked";
111                $checknoprintexpl="";
112        } else {
113                $checkprintexpl="";
114                $checknoprintexpl="checked";
115        }
116        print "
117                <input type='radio' name='ex' id='ex1' value='1' $checkprintexpl /><label for='ex1'>&nbsp;".$msg["print_ex"]."</label><br />
118                <input type='radio' name='ex' id='ex0' value='0' $checknoprintexpl /><label for='ex0'>&nbsp;".$msg["print_no_ex"]."</label>
119        </blockquote>
120        <b>".$msg["print_numeric_ex_title"]."</b>
121                <blockquote>
122                        <input type='radio' name='exnum' id='exnum1' value='1' ".($print_options['exnum'] ? ' checked=\'checked\' ' : '')."/><label for='exnum1'>&nbsp;".$msg["print_numeric_ex"]."</label><br />
123                        <input type='radio' name='exnum' id='exnum0' value='0' ".($print_options['exnum'] ? '' : ' checked=\'checked\' ')."/><label for='exnum0'>&nbsp;".$msg["print_no_numeric_ex"]."</label>
124                </blockquote>
125        </div>
126        <b>".$msg["print_output_title"]."</b>
127        <blockquote>
128                <input type='radio' name='output' id='outp' onClick =\"sel_part_gestion();\" value='printer' ".($print_options['outp'] ? ' checked ' : '')."/><label for='outp'>&nbsp;".$msg["print_output_printer"]."</label><br />
129                <input type='radio' name='output' id='outt' onClick =\"sel_part_gestion();\" value='tt' ".($print_options['outt'] ? ' checked ' : '')."/><label for='outt'>&nbsp;".$msg["print_output_writer"]."</label><br />
130                <input type='radio' name='output' id='oute' onClick =\"sel_part_gestion();\" value='email' ".($print_options['oute'] ? ' checked ' : '')."/><label for='oute'>&nbsp;".$msg["print_output_email"]."</label><br />
131        </blockquote>
132        <div id='mail_part'>
133                <blockquote>
134                        &nbsp;&nbsp;".$msg["print_emaildest"]."<input type='text' name='emaildest' value='' /><br />
135                        &nbsp;&nbsp;&nbsp;".$msg["523"]."&nbsp;<textarea rows='4' cols='40' name='emailcontent' value=''></textarea><b
136                </blockquote>
137        </div>
138        <input type='hidden' name='current_print' value='$current_print'/>
139        <input type='hidden' name='notice_id' value='$notice_id'/>".$sort_info."
140        <center><input type='submit' value='".$msg["print_print"]."' class='bouton'/>&nbsp;<input type='button' value='".$msg["print_cancel"]."' class='bouton' onClick='self.close();'/></center>";
141        print "</form><script type='text/javascript'>sel_part_gestion();</script></body></html>";
142}
143
144if ($action_print=="print") {
145        if ($_SESSION["session_history"][$current_print]) {
146                $_SESSION["PRINT"]=$_SESSION["session_history"][$current_print]["NOTI"];
147                $_SESSION["PRINT"]["short"]=$short;
148                $_SESSION["PRINT"]["ex"]=$ex;
149                $_SESSION["PRINT"]["exnum"]=$exnum;
150                $_SESSION["PRINT"]["output"]=$output;
151                $_SESSION["PRINT"]["emaildest"]=$emaildest;
152                $_SESSION["PRINT"]["emailcontent"]=$emailcontent;
153                $_SESSION["PRINT"]["pager"]=$pager;
154                $_SESSION["PRINT"]["notice_id"]=$notice_id;
155                $_SESSION["PRINT"]["permalink"]=$permalink;
156                $_SESSION["PRINT"]["vignette"]=$vignette;
157                $_SESSION["PRINT"]["header"]=$header;
158                $_SESSION["PRINT"]["notice_tpl"]=$notice_tpl;
159                if ($sort_id) $_SESSION["PRINT"]["sort_id"]=$sort_id;
160                else $_SESSION["PRINT"]["sort_id"]=$_SESSION['tri'];
161                echo "<script>document.location='./print.php'</script>";
162        } elseif ($notice_id) {
163                $_SESSION["PRINT"]["short"]=$short;
164                $_SESSION["PRINT"]["ex"]=$ex;
165                $_SESSION["PRINT"]["exnum"]=$exnum;
166                $_SESSION["PRINT"]["output"]=$output;
167                $_SESSION["PRINT"]["emaildest"]=$emaildest;
168                $_SESSION["PRINT"]["emailcontent"]=$emailcontent;
169                $_SESSION["PRINT"]["pager"]=$pager;
170                $_SESSION["PRINT"]["notice_id"]=$notice_id;
171                $_SESSION["PRINT"]["permalink"]=$permalink;
172                $_SESSION["PRINT"]["vignette"]=$vignette;
173                $_SESSION["PRINT"]["header"]=$header;
174                $_SESSION["PRINT"]["notice_tpl"]=$notice_tpl;
175                echo "<script>document.location='./print.php'</script>";               
176        } else {
177                echo "<script>alert(\"".$msg["print_no_search"]."\"); self.close();</script>";
178        }
179}
180$use_opac_url_base=1;
181$prefix_url_image=$opac_url_base;
182$no_aff_doc_num_image=1;
183
184if (($action_print=="")&&($_SESSION["PRINT"])) {
185
186       
187        $environement=$_SESSION["PRINT"];
188        $limit='';
189        if($environement["notice_id"]){
190                $requete="select notice_id from notices where notice_id=".$environement["notice_id"];
191        } elseif ($environement["TEXT_QUERY"]) {
192                $requete=preg_replace('/limit\s+[0-9]\s*,*\s*[0-9]*\s*$/','',$environement["TEXT_QUERY"],1);
193        } else {
194                switch ($environement["SEARCH_TYPE"]) {
195                        case "extended":
196                                $sh=new search();
197                                $table=$sh->make_search();
198                                $requete="select notice_id from $table";
199                                break;
200                        case "cart":
201                                $requete="select object_id as notice_id from caddie_content join notices where caddie_id=".$idcaddie." and object_id=notice_id order by index_sew";
202                                break;
203                }
204        }
205        if ($environement["pager"]) {
206                $start= $nb_per_page_search*($environement["PAGE"]-1);
207                $nbLimit = $nb_per_page_search;
208                $limit="limit ".$start.",$nb_per_page_search";
209        }else{
210                $start = 0;
211                $nbLimit = -1;
212        }
213       
214        if ($environement["sort_id"]) {
215                $sort = new sort('notices','base');
216                $requete = $sort->appliquer_tri($environement["sort_id"] , $requete, "notice_id", $start, $nbLimit);
217        }else{
218                $requete.=" $limit";
219        }
220        $resultat=@pmb_mysql_query($requete);
221
222        if (!$environement["vignette"]) {
223                $pmb_book_pics_show = 0;
224        }
225       
226        $pheader = '<html><head><title>'.$msg['print_title'].'</title><meta http-equiv=Content-Type content="text/html; charset='.$charset.'" /></head><body>';
227        $pheader.= '<style type="text/css">
228                body { 
229                        font-size: 10pt;
230                        font-family: verdana, geneva, helvetica, arial;
231                        color:#000000;
232                        background:#FFFFFF;
233                }
234                td {
235                        font-size: 10pt;
236                        font-family: verdana, geneva, helvetica, arial;
237                        color:#000000;
238                }
239                th {
240                        font-size: 10pt;
241                        font-family: verdana, geneva, helvetica, arial;
242                        font-weight:bold;
243                        color:#000000;
244                        background:#DDDDDD;
245                        text-align:left;
246                }
247                hr {
248                        border:none;
249                        border-bottom:1px solid #000000;
250                }
251                h3 {
252                        font-size: 12pt;
253                        color:#000000;
254                }
255                </style>';
256       
257        $output_final.= $pheader;
258
259        $date_today = formatdate(today()) ;
260        if (pmb_mysql_num_rows($resultat) != 1) {
261                $output_final.= '<h3>'.$date_today.'&nbsp;'.sprintf($msg["print_n_notices"],pmb_mysql_num_rows($resultat)).'</h3>';
262        }
263        //$output_final.= '<hr style="border:none;border-bottom:solid #000000 3px;"/>';
264        $output_final.= '<br>';
265       
266        if($_SESSION["PRINT"]["notice_tpl"])    $noti_tpl=new notice_tpl_gen($_SESSION["PRINT"]["notice_tpl"]);
267
268        while (($r=pmb_mysql_fetch_object($resultat))) {
269                if($noti_tpl) {
270                        $output_final.=$noti_tpl->build_notice($r->notice_id,$deflt2docs_location);
271                        $output_final.="<hr />";
272                } else{
273                        $n=pmb_mysql_fetch_object(@pmb_mysql_query("select * from notices where notice_id=".$r->notice_id));
274                        if($n->niveau_biblio != 's' && $n->niveau_biblio != 'a') {
275                                if($environement['output']=='email'||$environement['output']=='tt'){
276                                        $mono=new mono_display($n,$environement["short"],"",$environement["ex"],"","","",0,4,$environement["exnum"]);
277                                }else{
278                                        $mono=new mono_display($n,$environement["short"],"",$environement["ex"],"","","",0,1,$environement["exnum"]);
279                                }
280                                if ($environement["header"]) $output_final.= '<b>'.$mono->header.'</b><br /><br />';
281                                $output_final.= $mono->isbd;
282                        } else {
283                                if($environement['output']=='email'||$environement['output']=='tt'){
284                                        $serial = new serial_display($n, $environement["short"], "", "", "", "", "", 0,4,$environement["exnum"] );
285                                }else{
286                                        $serial = new serial_display($n, $environement["short"], "", "", "", "", "", 0,1,$environement["exnum"] );
287                                }
288                                if ($environement["header"]) $output_final.= '<b>'.$serial->header.'</b><br /><br />';
289                                $output_final.= $serial->isbd;
290                        }               
291                        if($environement["permalink"])
292                                $output_final .= "<br /><a href='".$pmb_opac_url."index.php?lvl=notice_display&id=".$r->notice_id."'>".substr($pmb_opac_url."index.php?lvl=notice_display&id=".$r->notice_id,0,80)."</a><br />";
293                        //$output_final.="<hr />";
294                        $output_final.= "<br>";
295                }       
296        }
297        if ($charset!='utf-8') $output_final=cp1252Toiso88591($output_final);
298        switch($environement['output']) {
299               
300                case 'email':
301                        $headers  = "MIME-Version: 1.0\n";
302                        $headers .= "Content-type: text/html; charset=".$charset."\n";
303                       
304                        $f_objet_mail = $msg['print_emailobj']." - $biblio_name - $date_today ";
305                        $f_message_to_send = "";
306                        if ($environement["emailcontent"]) $f_message_to_send .= $msg["523"].stripslashes($environement["emailcontent"])."<br />";
307                        $f_message_to_send .= $output_final.'<br /><br />'.mail_bloc_adresse()."</body></html> ";
308                        $emaildest=$_SESSION["PRINT"]["emaildest"];
309                       
310                        $res_envoi=mailpmb("", $emaildest, $f_objet_mail, $f_message_to_send, $PMBuserprenom." ".$PMBusernom, $PMBuseremail, $headers, "", $PMBuseremailbcc);
311                       
312                        if ($res_envoi) {
313                                print "$pheader\n<br /><br /><center><h3>".sprintf($msg["print_emailsucceed"],$emaildest)."</h3><br /><a href=\"\" onClick=\"self.close(); return false;\">".$msg["print_emailclose"]."</a></center></body></html>" ;
314                        } else {
315                                print "$pheader\n<br /><br /><center><h3>".sprintf($msg["print_emailfailed"],$emaildest)."</h3><br /><a href=\"\" onClick=\"self.close(); return false;\">".$msg["print_emailclose"]."</a></center></body></html>" ;
316                        }
317                        break; 
318                case 'printer':
319                        $output_final.= '<script type="text/javascript">self.print();</script>';
320                        $output_final.= '</body></html>';
321                        print pmb_bidi($output_final);
322                        break;                                 
323                case 'tt':
324                        $output_final.= '</body></html>';
325                        print pmb_bidi($output_final);
326                        break;                                 
327        }
328        $_SESSION["PRINT"]=false;
329}
330?>
Note: See TracBrowser for help on using the repository browser.