1c37fbc86SMark Prins<?php 2c37fbc86SMark Prins/* 3ee422996SMark 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. 16*57f8d5bbSMark Prins * 17*57f8d5bbSMark Prins * @phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps 18c37fbc86SMark Prins */ 19*57f8d5bbSMark Prins 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 */ 31*57f8d5bbSMark Prins public function getMenuSort(): int { 32c37fbc86SMark Prins return 800; 33c37fbc86SMark Prins } 34*57f8d5bbSMark Prins 35*57f8d5bbSMark Prins public function getMenuIcon(): string { 36*57f8d5bbSMark Prins $plugin = $this->getPluginName(); 37*57f8d5bbSMark Prins return DOKU_PLUGIN . $plugin . '/admin/purge.svg'; 38c37fbc86SMark Prins } 39c37fbc86SMark Prins 40c37fbc86SMark Prins /** 41c37fbc86SMark Prins * (non-PHPdoc) 42c37fbc86SMark Prins * @see DokuWiki_Admin_Plugin::handle() 43c37fbc86SMark Prins */ 44*57f8d5bbSMark Prins public function handle(): void { 45c37fbc86SMark Prins global $conf; 46*57f8d5bbSMark Prins if(!isset($_REQUEST['continue']) || !checkSecurityToken()) { 47*57f8d5bbSMark Prins return; 48*57f8d5bbSMark Prins } 49c37fbc86SMark Prins if(isset($_REQUEST['purgetiles'])) { 50c37fbc86SMark Prins $path = $conf['cachedir'] . '/olmaptiles'; 51*57f8d5bbSMark Prins if($this->rrmdir($path)) { 52*57f8d5bbSMark Prins msg($this->getLang('admin_purged_tiles'), 0); 53*57f8d5bbSMark Prins } 54c37fbc86SMark Prins } 55c37fbc86SMark Prins if(isset($_REQUEST['purgemaps'])) { 56c37fbc86SMark Prins $path = $conf['mediadir'] . '/olmapmaps'; 57*57f8d5bbSMark Prins if($this->rrmdir($path)) { 58*57f8d5bbSMark Prins msg($this->getLang('admin_purged_maps'), 0); 59c37fbc86SMark Prins } 60c37fbc86SMark Prins } 61c37fbc86SMark Prins } 62c37fbc86SMark Prins 63c37fbc86SMark Prins /** 64c37fbc86SMark Prins * Recursively delete the directory. 65c37fbc86SMark Prins * @param string $sDir directory path 66c37fbc86SMark Prins * @return boolean true when succesful 67c37fbc86SMark Prins */ 68*57f8d5bbSMark Prins private function rrmdir(string $sDir): bool { 69c37fbc86SMark Prins if(is_dir($sDir)) { 70c37fbc86SMark Prins dbglog($sDir, 'admin_plugin_openlayersmap_purge::rrmdir: recursively removing path: '); 71c37fbc86SMark Prins $sDir = rtrim($sDir, '/'); 72c37fbc86SMark Prins $oDir = dir($sDir); 73c37fbc86SMark Prins while(($sFile = $oDir->read()) !== false) { 74*57f8d5bbSMark Prins if($sFile !== '.' && $sFile !== '..') { 75*57f8d5bbSMark Prins (!is_link("$sDir/$sFile") && is_dir("$sDir/$sFile")) ? 76*57f8d5bbSMark Prins $this->rrmdir("$sDir/$sFile") : unlink("$sDir/$sFile"); 77c37fbc86SMark Prins } 78c37fbc86SMark Prins } 79c37fbc86SMark Prins $oDir->close(); 80c37fbc86SMark Prins rmdir($sDir); 81c37fbc86SMark Prins return true; 82c37fbc86SMark Prins } 83c37fbc86SMark Prins return false; 84c37fbc86SMark Prins } 85*57f8d5bbSMark Prins 86*57f8d5bbSMark Prins /** 87*57f8d5bbSMark Prins * (non-PHPdoc) 88*57f8d5bbSMark Prins * @see DokuWiki_Admin_Plugin::html() 89*57f8d5bbSMark Prins */ 90*57f8d5bbSMark Prins public function html(): void { 91*57f8d5bbSMark Prins echo $this->locale_xhtml('admin_intro'); 92*57f8d5bbSMark Prins $form = new Doku_Form(array('id' => 'olmap_purgeform', 'method' => 'post')); 93*57f8d5bbSMark Prins $form->addHidden('continue', 'go'); 94*57f8d5bbSMark Prins 95*57f8d5bbSMark Prins $form->startFieldset($this->getLang('admin_tiles')); 96*57f8d5bbSMark Prins $form->addElement('<p>'); 97*57f8d5bbSMark Prins $form->addElement( 98*57f8d5bbSMark Prins '<input id="purgetiles" name="purgetiles" type="checkbox" value="1" class="checkbox" />' 99*57f8d5bbSMark Prins ); 100*57f8d5bbSMark Prins $form->addElement( 101*57f8d5bbSMark Prins '<label for="purgetiles" class="label">' . $this->getLang('admin_purge_tiles') 102*57f8d5bbSMark Prins . '</label>' 103*57f8d5bbSMark Prins ); 104*57f8d5bbSMark Prins $form->addElement('</p>'); 105*57f8d5bbSMark Prins $form->endFieldset(); 106*57f8d5bbSMark Prins 107*57f8d5bbSMark Prins $form->startFieldset($this->getLang('admin_maps')); 108*57f8d5bbSMark Prins $form->addElement('<p>'); 109*57f8d5bbSMark Prins $form->addElement('<input id="purgemaps" name="purgemaps" type="checkbox" value="1" class="checkbox" />'); 110*57f8d5bbSMark Prins $form->addElement( 111*57f8d5bbSMark Prins '<label for="purgemaps" class="label">' . $this->getLang('admin_purge_maps') . '</label>' 112*57f8d5bbSMark Prins ); 113*57f8d5bbSMark Prins $form->addElement('</p>'); 114*57f8d5bbSMark Prins $form->endFieldset(); 115*57f8d5bbSMark Prins 116*57f8d5bbSMark Prins $form->addElement( 117*57f8d5bbSMark Prins form_makeButton( 118*57f8d5bbSMark Prins 'submit', 'admin', $this->getLang('admin_submit'), 119*57f8d5bbSMark Prins array('accesskey' => 'p', 'title' => $this->getLang('admin_submit')) 120*57f8d5bbSMark Prins ) 121*57f8d5bbSMark Prins ); 122*57f8d5bbSMark Prins $form->printForm(); 123*57f8d5bbSMark Prins } 124c37fbc86SMark Prins} 125