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