source: pmb4.2/trunk/fuentes/pmb/download.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: 7.3 KB
Line 
1<?php
2// +--------------------------------------------------------------------------+
3// | PMB est sous licence GPL, la réutilisation du code est cadrée            |
4// +--------------------------------------------------------------------------+
5// $Id: download.php,v 1.2 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[download_title]";
12$base_nobody=1;
13$base_noheader=1;
14
15
16require($base_path."/includes/init.inc.php");
17
18require_once($class_path."/sort.class.php");
19require_once($class_path."/search.class.php");
20require_once($class_path."/acces.class.php");
21
22if (file_exists($include_path.'/print/print_options_subst.xml')){
23        $xml_print = new XMLlist($include_path.'/print/print_options_subst.xml');
24} else {
25        $xml_print = new XMLlist($include_path.'/print/print_options.xml');
26}
27$xml_print->analyser();
28$download_options = $xml_print->table;
29
30if ($action_download=="download_prepare") {
31        header ("Content-Type: text/html; charset=$charset");
32        print $std_header;
33        print "<h3>".$msg["download_options"]."</h3>\n";
34        print "<form name='download_options' action='download.php?action_download=download' method='post'>";
35        print "<b>".$msg["download_size"]."</b>";
36        print"
37        <blockquote>
38                <input type='radio' name='pager' id='current_page' value='1' ".($download_options['current_page'] ? ' checked ' : '')."/><label for='current_page'>&nbsp;".$msg["download_size_current_page"]."</label><br />
39                <input type='radio' name='pager' id='all' value='0' ".($download_options['all'] ? ' checked ' : '')."/><label for='all'>&nbsp;".$msg["download_size_all"]."</label>
40        </blockquote>";
41
42        $sort_info = $sort_id ? '<input type="hidden" name="sort_id" value="'.$sort_id.'">' : '';
43       
44        print"
45                <b>".$msg["download_output_title"]."</b>
46                <blockquote>
47                        <input type='radio' name='output_docnum' id='output_docnum_singly' value='singly' ".($download_options['output_docnum_singly'] ? ' checked ' : '')."/><label for='output_docnum_singly'>&nbsp;".$msg["download_output_singly"]."</label><br />
48                        <input type='radio' name='output_docnum' id='output_docnum_zip' value='zip' ".($download_options['output_docnum_zip'] ? ' checked ' : '')."/><label for='output_docnum_zip'>&nbsp;".$msg["download_output_zip"]."</label><br />
49                </blockquote>
50                <input type='hidden' name='current_download' value='$current_download'/>
51                <input type='hidden' name='notice_id' value='$notice_id'/>".$sort_info."
52                <center><input type='submit' value='".$msg["download_download"]."' class='bouton'/>&nbsp;<input type='button' value='".$msg["download_cancel"]."' class='bouton' onClick='self.close();'/></center>";
53        print "</form></body></html>";
54}
55
56if ($action_download=="download") {
57        if ($_SESSION["session_history"][$current_download]) {
58                $_SESSION["DOWNLOAD"]=$_SESSION["session_history"][$current_download]["NOTI"];
59                $_SESSION["DOWNLOAD"]["pager"]=$pager;
60                $_SESSION["DOWNLOAD"]["output_docnum"]=$output_docnum;
61                if ($sort_id) $_SESSION["DOWNLOAD"]["sort_id"]=$sort_id;
62                else $_SESSION["DOWNLOAD"]["sort_id"]=$_SESSION['tri'];
63                echo "<script>document.location='./download.php';</script>";
64        } else {
65                echo "<script>alert(\"".$msg["download_no_search"]."\"); self.close();</script>";
66        }
67}
68
69if (($action_download=="")&&($_SESSION["DOWNLOAD"])) {
70        $environement=$_SESSION["DOWNLOAD"];
71        $limit='';
72        if ($environement["TEXT_QUERY"]) {
73                $requete=preg_replace('/limit\s+[0-9]\s*,*\s*[0-9]*\s*$/','',$environement["TEXT_QUERY"],1);
74        } else {
75                switch ($environement["SEARCH_TYPE"]) {
76                        case "extended":
77                                $sh=new search();
78                                $table=$sh->make_search();
79                                $requete="select notice_id from $table";
80                                break;
81                        case "cart":
82                                $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";
83                                break;
84                }
85        }
86        if ($environement["pager"]) {
87                $start= $nb_per_page_search*($environement["PAGE"]-1);
88                $nbLimit = $nb_per_page_search;
89                $limit="limit ".$start.",$nb_per_page_search";
90        }else{
91                $start = 0;
92                $nbLimit = -1;
93        }
94       
95        if ($environement["sort_id"]) {
96                $sort = new sort('notices','base');
97                $requete = $sort->appliquer_tri($environement["sort_id"] , $requete, "notice_id", $start, $nbLimit);
98        }else{
99                $requete.=" $limit";
100        }
101        $resultat=@pmb_mysql_query($requete);
102        while (($r=pmb_mysql_fetch_object($resultat))) {
103                $query = "SELECT explnum_id from explnum where explnum_notice=".$r->notice_id;
104                $query .= " union ";
105                $query .= " select explnum_id from explnum ,bulletins where explnum_bulletin=bulletin_id and num_notice=".$r->notice_id;
106                $result = pmb_mysql_query($query,$dbh);
107                if ($result) {
108                        while($row = pmb_mysql_fetch_object($result)){
109                                $explnum_id=$row->explnum_id;
110                                       
111                                $res = pmb_mysql_query("SELECT explnum_id, explnum_notice, explnum_bulletin, explnum_nom, explnum_mimetype, explnum_url, explnum_data, length(explnum_data) as taille,explnum_path, concat(repertoire_path,explnum_path,explnum_nomfichier) as path, repertoire_id FROM explnum left join upload_repertoire on repertoire_id=explnum_repertoire WHERE explnum_id = '$explnum_id' ", $dbh);
112                                $ligne = pmb_mysql_fetch_object($res);
113                                       
114                                $id_for_rigths = $ligne->explnum_notice;
115                                if($ligne->explnum_bulletin != 0){
116                                        //si bulletin, les droits sont rattachés à la notice du bulletin, à défaut du pério...
117                                        $req = "select bulletin_notice,num_notice from bulletins where bulletin_id =".$ligne->explnum_bulletin;
118                                        $res = pmb_mysql_query($req,$dbh);
119                                        if(pmb_mysql_num_rows($res)){
120                                                $r = pmb_mysql_fetch_object($res);
121                                                $id_for_rigths = $r->num_notice;
122                                                if(!$id_for_rigths){
123                                                        $id_for_rigths = $r->bulletin_notice;
124                                                }
125                                        }
126                                }
127               
128                                //droits d'acces utilisateur/notice
129                                if ($gestion_acces_active==1 && $gestion_acces_user_notice==1) {
130                                        require_once("$class_path/acces.class.php");
131                                        $ac= new acces();
132                                        $dom_1= $ac->setDomain(1);
133                                        $rights = $dom_1->getRights($PMBuserid,$id_for_rigths);
134                                }
135               
136                                if( $rights & 4 || (is_null($dom_1))){
137                                        if (($ligne->explnum_data)||($ligne->explnum_path)) {
138                                                $explnum_list[] = $ligne;
139                                        }
140                                }
141                        }
142                }
143        }
144       
145        if (count($explnum_list)) {
146                switch($environement['output_docnum']) {
147                        case 'singly':
148                                foreach ($explnum_list as $explnum) {
149                                        print "<script type='text/javascript'>
150                                                window.open('".$pmb_url_base."doc_num_data.php?explnum_id=".$explnum->explnum_id."&force_download=1','_blank','');
151                                                </script>";
152                                }
153                                break;
154                        case 'zip':
155                                $zip = new ZipArchive();
156                                $filename=microtime();
157                                $filename=str_replace(".","",$filename);
158                                $filename=str_replace(" ","",$filename);
159                                $filename="temp/pmb_".$filename.".zip";
160                                $res = $zip->open($filename, ZipArchive::CREATE);
161                                if ($res) {
162                                        foreach ($explnum_list as $explnum) {
163                                                $zip->addFromString(reg_diacrit(basename($explnum->path)),file_get_contents($opac_url_base."doc_num_data.php?explnum_id=".$explnum->explnum_id));
164                                        }
165                                        $zip->close();
166                                       
167                                        header("Content-disposition: attachment; filename=\"".basename($filename)."\"");
168                                        header("Content-Type: application/force-download");
169                                        header("Content-Transfer-Encoding: application/zip");
170                                        header("Content-Length: ".filesize($filename));
171                                        header("Pragma: no-cache");
172                                        header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
173                                        header("Expires: 0");
174                                       
175                                        $fp = fopen($filename, 'rb');
176                                        fpassthru($fp);
177                                        fclose($fp) ;
178                                       
179                                        @unlink($filename);
180                                }
181                                break;
182                }
183        }
184}
185?>
Note: See TracBrowser for help on using the repository browser.