source: pmb4.2/trunk/fuentes/pmb/classes/docbnf_zip.class.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: 2.2 KB
Line 
1<?php
2// +-------------------------------------------------+
3// © 2002-2005 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
4// +-------------------------------------------------+
5// $Id: docbnf_zip.class.php,v 1.1 2013-07-04 12:55:49 arenou Exp $
6
7
8if (stristr ($_SERVER['REQUEST_URI'], ".class.php")) die("no access");
9
10require_once($class_path."/docbnf.class.php");
11       
12class docbnf_zip extends docbnf {
13        public $tab_entries = array();
14        public $sizes =  array();
15        public $tmp_path = array();
16       
17        protected function parse(){
18               
19                $this->zip = zip_open($this->path);
20                if ($this->zip) {
21                        while ($zip_entry = zip_read($this->zip)) {
22                                $zip_entry_name = strtolower(zip_entry_name($zip_entry));
23                                $this->tab_entries[$zip_entry_name] = $zip_entry;
24                        }
25                }
26                ksort($this->tab_entries);
27               
28                foreach($this->tab_entries as $path => $ressource){
29                        $this->ref = str_replace("/","",$path);
30                        break;
31                }
32                $refnum_path = $this->ref."/x".$this->ref.".xml";
33                if($this->file_exists($refnum_path)){
34                        $this->refnum = new domDocument();
35                        $this->refnum->loadXML($this->get_file_content($refnum_path));
36                        return true;                                                                                                                                           
37                }else{
38                        return false;
39                }
40        }
41
42        //retourne le path interne au fichier
43        public function get_file_path($file){
44                return strtolower($this->ref."/".$file);
45        }
46       
47        //retourne le contenu d'un fichier
48        public function get_file_content($file_path){
49                if(!$this->tmp_path[$file_path]){
50                        $this->tmp_path[$file_path]=array_search('uri', @array_flip(stream_get_meta_data($GLOBALS[mt_rand()]=tmpfile())));
51                        $fp = fopen($this->tmp_path[$file_path], "w+");
52                        $content = zip_entry_read($this->tab_entries[$file_path],zip_entry_filesize($this->tab_entries[$file_path]));
53                        fwrite($fp, $content);
54                        fclose($fp);
55                }else{
56                        $content = file_get_contents($this->tmp_path[$file_path]);
57                }
58                return $content;
59        }
60       
61        //retourne un chemin vers le fichier
62        public function get_file($file_path){
63                if(!$this->tmp_path[$file_path]){
64                        $this->get_file_content($file_path);
65                }
66                return $this->tmp_path[$file_path];
67        }
68       
69        public function file_exists($file_path){
70                if(isset($this->tab_entries[$file_path])){
71                        return true;
72                }else{
73                        return isset($this->tab_entries[$file_path."/"]);
74                }
75        }
76}
Note: See TracBrowser for help on using the repository browser.