sTitle = _kt('Disk Usage'); $this->sClass = "ktInfo"; } function is_active($oUser) { $dfCmd = KTUtil::findCommand('externalBinary/df','df'); if ($dfCmd === false) { return false; } $this->dfCmd = $dfCmd; $config = KTConfig::getSingleton(); $this->warningPercent = $config->get('DiskUsage/warningThreshold', 15); $this->urgentPercent = $config->get('DiskUsage/urgentThreshold', 5); $this->getUsage(); return Permission::userIsSystemAdministrator(); } function getUsage($refresh=false) { $check = true; // check if we have a cached result if (isset($_SESSION['DiskUsage'])) { // we will only do the check every 5 minutes if (time() - $_SESSION['DiskUsage']['time'] < 5 * 60) { $check = false; $this->usage = $_SESSION['DiskUsage']['usage']; } } // we will only check if the result is not cached, or after 5 minutes if ($check) { $result = ktutil::pexec($this->dfCmd); $result = $result['out']; unset($result[0]); $usage=array(); foreach($result as $line) { preg_match('/(.*)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\%\s+(.*)/', $line, $matches); list($line, $filesystem, $size, $used, $avail, $usedp, $mount) = $matches; if ($usedp >= 100 - $this->urgentPercent) { $colour = 'red'; } elseif ($usedp >= 100 - $this->warningPercent) { $colour = 'orange'; } $usage[] = array( 'filesystem'=>$filesystem, 'size'=>KTUtil::filesizeToString($size), 'used'=>KTUtil::filesizeToString($used), 'available'=>KTUtil::filesizeToString($avail), 'usage'=>$usedp . '%', 'mounted'=>$mount, 'colour'=>$colour ); } $this->usage = $usage; $_SESSION['DiskUsage']['time'] = time(); $_SESSION['DiskUsage']['usage'] = $this->usage; } } function render() { $oTemplating =& KTTemplating::getSingleton(); $oTemplate = $oTemplating->loadTemplate('DiskUsage'); $oRegistry =& KTPluginRegistry::getSingleton(); $oPlugin =& $oRegistry->getPlugin('ktcore.housekeeper.plugin'); $dispatcherURL = $oPlugin->getURLPath('HouseKeeperDispatcher.php'); $aTemplateData = array( 'context' => $this, 'usages'=>$this->usage, 'warnPercent'=>$this->warningPercent, 'urgentPercent'=>$this->urgentPercent, 'dispatcherURL'=>$dispatcherURL ); return $oTemplate->render($aTemplateData); } } ?>