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