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