xref: /plugin/openlayersmap/admin/purge.php (revision c37fbc860cc715b153668600c8b86db5a94a8cc4)
1*c37fbc86SMark Prins<?php
2*c37fbc86SMark Prins/*
3*c37fbc86SMark Prins * Copyright (c) 2008-2012 Mark C. Prins <mprins@users.sf.net>
4*c37fbc86SMark Prins*
5*c37fbc86SMark Prins* Permission to use, copy, modify, and distribute this software for any
6*c37fbc86SMark Prins* purpose with or without fee is hereby granted, provided that the above
7*c37fbc86SMark Prins* copyright notice and this permission notice appear in all copies.
8*c37fbc86SMark Prins*
9*c37fbc86SMark Prins* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10*c37fbc86SMark Prins* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11*c37fbc86SMark Prins* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12*c37fbc86SMark Prins* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13*c37fbc86SMark Prins* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14*c37fbc86SMark Prins* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15*c37fbc86SMark Prins* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16*c37fbc86SMark Prins*/
17*c37fbc86SMark Prinsif (!defined('DOKU_INC')) die();
18*c37fbc86SMark Prinsif (!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/');
19*c37fbc86SMark Prinsrequire_once DOKU_PLUGIN.'admin.php';
20*c37fbc86SMark Prins/**
21*c37fbc86SMark Prins * DokuWiki Plugin openlayersmap (Admin Component).
22*c37fbc86SMark Prins * This component purges the cached tiles and maps.
23*c37fbc86SMark Prins *
24*c37fbc86SMark Prins * @author Mark Prins
25*c37fbc86SMark Prins */
26*c37fbc86SMark Prinsclass admin_plugin_openlayersmap_purge extends DokuWiki_Admin_Plugin {
27*c37fbc86SMark Prins	/**
28*c37fbc86SMark Prins	 * (non-PHPdoc)
29*c37fbc86SMark Prins	 * @see DokuWiki_Admin_Plugin::getMenuSort()
30*c37fbc86SMark Prins	 */
31*c37fbc86SMark Prins	public function getMenuSort() {
32*c37fbc86SMark Prins		return 800;
33*c37fbc86SMark Prins	}
34*c37fbc86SMark Prins	/**
35*c37fbc86SMark Prins	 * (non-PHPdoc)
36*c37fbc86SMark Prins	 * @see DokuWiki_Admin_Plugin::forAdminOnly()
37*c37fbc86SMark Prins	 */
38*c37fbc86SMark Prins	public function forAdminOnly() {
39*c37fbc86SMark Prins		return true;
40*c37fbc86SMark Prins	}
41*c37fbc86SMark Prins
42*c37fbc86SMark Prins	/**
43*c37fbc86SMark Prins	 * (non-PHPdoc)
44*c37fbc86SMark Prins	 * @see DokuWiki_Admin_Plugin::handle()
45*c37fbc86SMark Prins	 */
46*c37fbc86SMark Prins	public function handle() {
47*c37fbc86SMark Prins		global $conf;
48*c37fbc86SMark Prins		if(!isset($_REQUEST['continue']) || !checkSecurityToken()) return;
49*c37fbc86SMark Prins		if(isset($_REQUEST['purgetiles'])){
50*c37fbc86SMark Prins			$path = $conf['cachedir'].'/olmaptiles';
51*c37fbc86SMark Prins			if ($this->rrmdir($path)) msg($this->getLang('admin_purged_tiles'),0);
52*c37fbc86SMark Prins		}
53*c37fbc86SMark Prins		if(isset($_REQUEST['purgemaps'])){
54*c37fbc86SMark Prins			$path = $conf['mediadir'].'/olmapmaps';
55*c37fbc86SMark Prins			if ($this->rrmdir($path)) msg($this->getLang('admin_purged_maps'),0);
56*c37fbc86SMark Prins		}
57*c37fbc86SMark Prins	}
58*c37fbc86SMark Prins
59*c37fbc86SMark Prins	/**
60*c37fbc86SMark Prins	 * (non-PHPdoc)
61*c37fbc86SMark Prins	 * @see DokuWiki_Admin_Plugin::html()
62*c37fbc86SMark Prins	 */
63*c37fbc86SMark Prins	public function html() {
64*c37fbc86SMark Prins		echo $this->locale_xhtml('admin_intro');
65*c37fbc86SMark Prins		$form = new Doku_Form(array('id'=>'olmap_purgeform', 'method'=>'post'));
66*c37fbc86SMark Prins		$form->addHidden('continue','go');
67*c37fbc86SMark Prins
68*c37fbc86SMark Prins		$form->startFieldset($this->getLang('admin_tiles'));
69*c37fbc86SMark Prins		$form->addElement('<p>');
70*c37fbc86SMark Prins		$form->addElement('<input id="purgetiles" name="purgetiles" type="checkbox" value="1" class="checkbox" />');
71*c37fbc86SMark Prins		$form->addElement('<label for="purgetiles" class="label">'.$this->getLang('admin_purge_tiles').'</label>');
72*c37fbc86SMark Prins		$form->addElement('</p>');
73*c37fbc86SMark Prins		$form->endFieldset();
74*c37fbc86SMark Prins
75*c37fbc86SMark Prins		$form->startFieldset($this->getLang('admin_maps'));
76*c37fbc86SMark Prins		$form->addElement('<p>');
77*c37fbc86SMark Prins		$form->addElement('<input id="purgemaps" name="purgemaps" type="checkbox" value="1" class="checkbox" />');
78*c37fbc86SMark Prins		$form->addElement('<label for="purgemaps" class="label">'.$this->getLang('admin_purge_maps').'</label>');
79*c37fbc86SMark Prins		$form->addElement('</p>');
80*c37fbc86SMark Prins		$form->endFieldset();
81*c37fbc86SMark Prins
82*c37fbc86SMark Prins		$form->addElement(form_makeButton('submit','admin',$this->getLang('admin_submit'),
83*c37fbc86SMark Prins				array('accesskey'=>'p','title'=>$this->getLang('admin_submit'))));
84*c37fbc86SMark Prins		$form->printForm();
85*c37fbc86SMark Prins	}
86*c37fbc86SMark Prins
87*c37fbc86SMark Prins	/**
88*c37fbc86SMark Prins	 * Recursively delete the directory.
89*c37fbc86SMark Prins	 * @param string $sDir directory path
90*c37fbc86SMark Prins	 * @return boolean true when succesful
91*c37fbc86SMark Prins	 */
92*c37fbc86SMark Prins	private function rrmdir($sDir) {
93*c37fbc86SMark Prins		if (is_dir($sDir)) {
94*c37fbc86SMark Prins			dbglog($sDir, 'admin_plugin_openlayersmap_purge::rrmdir: recursively removing path: ');
95*c37fbc86SMark Prins			$sDir = rtrim($sDir, '/');
96*c37fbc86SMark Prins			$oDir = dir($sDir);
97*c37fbc86SMark Prins			while (($sFile = $oDir->read()) !== false) {
98*c37fbc86SMark Prins				if ($sFile != '.' && $sFile != '..') {
99*c37fbc86SMark Prins					(!is_link("$sDir/$sFile") && is_dir("$sDir/$sFile")) ? $this->rrmdir("$sDir/$sFile") : unlink("$sDir/$sFile");
100*c37fbc86SMark Prins				}
101*c37fbc86SMark Prins			}
102*c37fbc86SMark Prins			$oDir->close();
103*c37fbc86SMark Prins			rmdir($sDir);
104*c37fbc86SMark Prins			return true;
105*c37fbc86SMark Prins		}
106*c37fbc86SMark Prins		return false;
107*c37fbc86SMark Prins	}
108*c37fbc86SMark Prins}
109