1<?php
2if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/');
3if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
4
5class helper_plugin_epub extends Dokuwiki_Plugin {
6	private $script_file;
7	private $cache;
8    function __construct() {
9            $this->script_file = metaFN('epub:cache', '.ser');
10            $this->cache = unserialize(io_readFile($this->script_file,false));
11            if(!$this->cache) $this->cache = array();
12
13    }
14
15	function msg($text) {
16	    if(is_array($text)) {
17		   $text = '<pre>' . print_r($text,true) . '</pre>';
18		}
19		echo "$text\n";
20	}
21
22
23    function is_inCache($id) {
24         $md5 = md5($id);
25         if(isset($this->cache[$md5])) return true;
26         return false;
27    }
28
29	function remove_page($id) {
30	     $md5 = md5($id);
31         $this->delete_page($md5);
32    }
33
34    function delete_page($md5) {
35		 unset($this->cache[$md5]);
36         if(isset($this->cache['current_books'][$md5])) {
37            unset($this->cache['current_books'][$md5]);
38         }
39		 io_saveFile($this->script_file,serialize($this->cache));
40	}
41
42    function delete_media($md5) {
43        $epub = $this->cache['current_books'][$md5]['epub'];
44        $file =  mediaFN($this->cache['current_books'][$md5]['epub']);
45        if(file_exists($file)) {
46            if(unlink($file)) {
47               return "Removed: " . $epub;
48            }
49            else return "error unlinking $epub";
50        }
51        return "File not found: " . $this->cache['current_books'][$md5]['epub'] ;
52    }
53    function writeCache($id) {
54         if(!$this->is_inCache($id)) {
55            $this->cache[md5($id)] = $id;
56            io_saveFile($this->script_file,serialize($this->cache));
57             return true;
58         }
59         return false;
60    }
61
62    function getCache() {
63         return  $this->cache;
64    }
65
66
67    function addBook($id,$epub,$title) {
68         $md5 = md5($id);
69         if(!$this->is_inCache($id)) {
70            $this->cache[$md5] = $id;
71         }
72         if(!isset($this->cache['current_books'])) {
73            $this->cache['current_books'] = array();
74         }
75         $this->cache['current_books'][$md5] = array('title'=>$title, 'epub'=>$epub);
76         io_saveFile($this->script_file,serialize($this->cache));
77    }
78
79    /**
80      * removes dokuwiki cache for page where Start button appears,
81      * so that Start can always be activated
82    */
83    function delete_dw_cachefiles($id) {
84       global $conf;
85       $data = wikiFN($id).$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'];
86       $_md5=md5($data);
87       $file = $conf['cachedir'].'/'.$_md5[0].'/'.$_md5;
88       $types = array('metadata','i','xhtml');
89       foreach ($types as $type) {
90          $name = $file . ".$type";
91           if(file_exists($name)) {
92               unlink($name);
93           }
94       }
95    }
96
97    function get_page_data($id) {
98         $md5 = md5($id);
99         if(isset($this->cache['current_books'][$md5])) {
100            return $this->cache['current_books'][$md5];
101         }
102         return false;
103    }
104
105    /**
106    *  return configuration values
107    */
108    function get_conf($which) {
109        return $this->getConf($which);
110    }
111}
112
113