1f125bc8dSSascha Leib<?php 2f125bc8dSSascha Leib 3f125bc8dSSascha Leibuse dokuwiki\Extension\AdminPlugin; 4f125bc8dSSascha Leib 5f125bc8dSSascha Leib/** 67bd08c30SSascha Leib * Bot Monitoring Plugin 7f125bc8dSSascha Leib* 8f125bc8dSSascha Leib* @license GPL 2 (http://www.gnu.org/licenses/gpl.html) 9f125bc8dSSascha Leib* @author Sascha Leib <ad@hominem.info> 10f125bc8dSSascha Leib*/ 11f125bc8dSSascha Leib 12f125bc8dSSascha Leib/** 13f125bc8dSSascha Leib * All DokuWiki plugins to extend the admin function 14f125bc8dSSascha Leib * need to inherit from this class 15f125bc8dSSascha Leib**/ 167bd08c30SSascha Leibclass admin_plugin_botmon extends AdminPlugin { 17f125bc8dSSascha Leib 18f125bc8dSSascha Leib /** 19f125bc8dSSascha Leib * Return the path to the icon being displayed in the main admin menu. 20f125bc8dSSascha Leib * 21f125bc8dSSascha Leib * @return string full path to the icon file 22f125bc8dSSascha Leib **/ 23f125bc8dSSascha Leib public function getMenuIcon() { 24f125bc8dSSascha Leib $plugin = $this->getPluginName(); 25f125bc8dSSascha Leib return DOKU_PLUGIN . $plugin . '/img/admin.svg'; 26f125bc8dSSascha Leib } 27f125bc8dSSascha Leib 28f125bc8dSSascha Leib /** 29f125bc8dSSascha Leib * output appropriate html 30f125bc8dSSascha Leib */ 31f125bc8dSSascha Leib public function html() { 32f125bc8dSSascha Leib 33ade4db36SSascha Leib global $conf; 34ade4db36SSascha Leib 35ade4db36SSascha Leib $pluginPath = $conf['basedir'] . 'lib/plugins/' . $this->getPluginName(); 36f125bc8dSSascha Leib 37f125bc8dSSascha Leib /* Plugin Headline */ 38*0c039615SSascha Leib echo '<div id="botmon__admin"> 39*0c039615SSascha Leib <h1>Bot Monitoring Plugin</h1> 40*0c039615SSascha Leib <nav id="botmon__tabs"> 41*0c039615SSascha Leib <ul class="tabs" role="tablist"> 42*0c039615SSascha Leib <li role="presentation" class="active"><a role="tab" href="#botmon__panel1" aria-controls="botmon__panel1" id="botmon__tab1" aria-selected="true">Today</a></li> 43*0c039615SSascha Leib </ul> 44*0c039615SSascha Leib </nav>'; 45f125bc8dSSascha Leib 46*0c039615SSascha Leib if ($this->hasOldLogFiles()) { 47*0c039615SSascha Leib echo '<div class="info"><strong>Note:</strong> There are old log files that can be deleted. <a href="' . $pluginPath . '/cleanup.php" target="_blank">Click here</a> to run a delete script, or use <em>cron</em> to automatically delete them.</div>'; 48*0c039615SSascha Leib } 49f125bc8dSSascha Leib 50*0c039615SSascha Leib echo '<article role="tabpanel" id="botmon__today""> 51*0c039615SSascha Leib <h2 class="a11y">Today</h2> 52*0c039615SSascha Leib <header id="botmon__today__title">Loading …</header> 53*0c039615SSascha Leib <div id="botmon__today__content"> 54*0c039615SSascha Leib <details id="botmon__today__overview" open> 55*0c039615SSascha Leib <summary>Bot overview</summary> 56*0c039615SSascha Leib <div class="grid-3-columns"> 57*0c039615SSascha Leib <dl id="botmon__today__botsvshumans"></dl> 58*0c039615SSascha Leib <dl id="botmon__botslist"></dl> 59*0c039615SSascha Leib <dl id="botmon__today__botips"></dl> 60*0c039615SSascha Leib </div> 61*0c039615SSascha Leib </details> 62*0c039615SSascha Leib <details id="botmon__today__webmetrics"> 63*0c039615SSascha Leib <summary>Web metrics</summary> 64*0c039615SSascha Leib <div class="grid-3-columns"> 65*0c039615SSascha Leib <dl id="botmon__today__wm_overview"></dl> 66*0c039615SSascha Leib <dl></dl> 67*0c039615SSascha Leib <dl></dl> 68*0c039615SSascha Leib </div> 69*0c039615SSascha Leib </details> 70*0c039615SSascha Leib <details id="botmon__today__visitors"> 71*0c039615SSascha Leib <summary>Visitor logs</summary> 72*0c039615SSascha Leib <div id="botmon__today__visitorlists"></div> 73*0c039615SSascha Leib </details> 74*0c039615SSascha Leib </div> 75*0c039615SSascha Leib <footer aria-live="polite"> 76*0c039615SSascha Leib <img src="' . $pluginPath . '/img/spinner.svg" id="botmon__today__busy" width="12" height="12" alt="busy indicator"> 77*0c039615SSascha Leib <span id="botmon__today__status">Initialising …</span> 78*0c039615SSascha Leib </footer> 79*0c039615SSascha Leib </article> 80*0c039615SSascha Leib</div><!-- End of BotMon Admin Tool -->'; 81ade4db36SSascha Leib 82*0c039615SSascha Leib } 83f125bc8dSSascha Leib 84*0c039615SSascha Leib /** 85*0c039615SSascha Leib * Check if there are old log files that can be deleted. 86*0c039615SSascha Leib * 87*0c039615SSascha Leib * @return bool true if there are old log files, false otherwise 88*0c039615SSascha Leib */ 89*0c039615SSascha Leib private function hasOldLogFiles() { 90*0c039615SSascha Leib 91*0c039615SSascha Leib $today = gmdate('Y-m-d'); 92*0c039615SSascha Leib $yesterday = gmdate('Y-m-d', time() - 86400); 93*0c039615SSascha Leib 94*0c039615SSascha Leib // scan the log directory and delete all files except for today and yesterday: 95*0c039615SSascha Leib $dir = scandir(getcwd() . '/lib/plugins/botmon/logs'); 96*0c039615SSascha Leib foreach($dir as $file) { 97*0c039615SSascha Leib $fName = pathinfo($file, PATHINFO_BASENAME); 98*0c039615SSascha Leib $bName = strtok($fName, '.'); 99*0c039615SSascha Leib 100*0c039615SSascha Leib if ($bName == '' || $bName == 'logfiles') { 101*0c039615SSascha Leib // ignore 102*0c039615SSascha Leib } else if ($bName == $today || $bName == $yesterday) { 103*0c039615SSascha Leib // skip 104*0c039615SSascha Leib } else { 105*0c039615SSascha Leib return true; 106*0c039615SSascha Leib } 107*0c039615SSascha Leib } 108*0c039615SSascha Leib return false; 109f125bc8dSSascha Leib } 110f125bc8dSSascha Leib}