From 71accc61eb6474935434e2973e360a63dec8112e Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Thu, 05 Sep 2013 09:51:06 -0400
Subject: [PATCH] - Added DB size report in monitor. Thanks to Florian for the patch!

---
 interface/web/monitor/lib/lang/en.lng       |    5 ++
 interface/lib/classes/tools_monitor.inc.php |   38 +++++++++++++++++++
 interface/web/monitor/lib/module.conf.php   |    5 ++
 interface/lib/classes/functions.inc.php     |   10 ++++-
 interface/web/monitor/show_data.php         |    7 +++
 5 files changed, 63 insertions(+), 2 deletions(-)

diff --git a/interface/lib/classes/functions.inc.php b/interface/lib/classes/functions.inc.php
index 74f8400..661e557 100644
--- a/interface/lib/classes/functions.inc.php
+++ b/interface/lib/classes/functions.inc.php
@@ -322,7 +322,13 @@
             return intval($string);
         }
     }
-    
+
+    public function formatBytes($size, $precision = 2) {
+        $base=log($size)/log(1024);
+        $suffixes=array('','k','M','G','T');
+        return round(pow(1024,$base-floor($base)),$precision).$suffixes[floor($base)];
+    }
+
     /** IDN converter wrapper.
      * all converter classes should be placed in ISPC_CLASS_PATH.'/idn/'
      */
@@ -395,4 +401,4 @@
 		
 }
 
-?>
\ No newline at end of file
+?>
diff --git a/interface/lib/classes/tools_monitor.inc.php b/interface/lib/classes/tools_monitor.inc.php
index 42defa0..cb389c8 100644
--- a/interface/lib/classes/tools_monitor.inc.php
+++ b/interface/lib/classes/tools_monitor.inc.php
@@ -118,6 +118,44 @@
         return $html;
     }
 
+    function showDatabaseSize () {
+	global $app;
+	/* fetch the Data from the DB */
+	$record = $app->db->queryOneRecord("SELECT data, state FROM monitor_data WHERE type = 'database_size' and server_id = " . $_SESSION['monitor']['server_id'] . " order by created desc");
+	if(isset($record['data'])) {
+		$data = unserialize($record['data']);
+		/*
+            	Format the data
+            	*/
+            	$html =
+        	       '<div class="systemmonitor-state state-'.$record['state'].'">
+	                <div class="systemmonitor-content icons32 ico-'.$record['state'].'">
+                	<table>
+	                <thead>
+        	        <tr>
+                	<td>'.$app->lng("monitor_database_name_txt").'</td>
+	                <td>'.$app->lng("monitor_database_size_txt").'</td>
+        	        <td>'.$app->lng("monitor_database_client_txt").'</td>
+                	</tr>';
+            	foreach($data as $line) {
+                	$html .= '<tr>';
+	                if ($line['size'] > 0) $line['size'] = $app->functions->formatBytes($line['size']);
+        	        $t=$app->db->queryOneRecord("SELECT username FROM client WHERE sys_groupid = ".$line['client_id']);
+	                $line['client_id']=$t['username'];
+        	        unset($t);
+                	foreach ($line as $item) {
+				$html .= '<td>' . $item . '</td>';
+	                }
+        	        $html .= '</tr></tmpl loop>';
+            	}
+            	$html .= '</tbody></table>';
+            	$html .= '</div></div>';
+        } else {
+            	$html = '<p>'.$app->lng("no_data_database_size_txt").'</p>';
+        }
+        return $html;
+    }
+
     function showMemUsage () {
         global $app;
 
diff --git a/interface/web/monitor/lib/lang/en.lng b/interface/web/monitor/lib/lang/en.lng
index ec5ca73..aa6472e 100644
--- a/interface/web/monitor/lib/lang/en.lng
+++ b/interface/web/monitor/lib/lang/en.lng
@@ -10,6 +10,7 @@
 $wb['no_data_serverload_txt'] = 'No data about the server load available at the moment. Please check again later.';
 $wb['no_data_memusage_txt'] = 'No data about the memory usage available at the moment. Please check again later.';
 $wb['no_data_diskusage_txt'] = 'No data about the disk usage available at the moment. Please check again later.';
+$wb['no_data_database_size_txt'] = 'No data about the database usage available at the moment. Please check again later.';
 $wb['no_data_cpuinfo_txt'] = 'No data about the CPU available at the moment. Please check again later.';
 $wb['no_data_services_txt'] = 'No data about the services available at the moment. Please check again later.';
 $wb['no_data_updates_txt'] = 'No data about updates available at the moment. Please check again later.';
@@ -58,6 +59,10 @@
 $wb['monitor_diskusage_available_txt'] = 'Available';
 $wb['monitor_diskusage_usage_txt'] = 'Use%';
 $wb['monitor_diskusage_mounted_txt'] = 'Mounted on';
+$wb['monitor_database_name_txt'] = 'Database';
+$wb['monitor_database_size_txt'] = 'Size';
+$wb['monitor_database_client_txt'] = 'Client';
+$wb['monitor_database_domain_txt'] = 'Domain';
 $wb['monitor_logs_mail_txt'] = 'Mail - Log';
 $wb['monitor_logs_mailwarn_txt'] = 'Mail-Warn - Log';
 $wb['monitor_logs_mailerr_txt'] = 'Mail-Error - Log';
diff --git a/interface/web/monitor/lib/module.conf.php b/interface/web/monitor/lib/module.conf.php
index c019b84..ca68ade 100644
--- a/interface/web/monitor/lib/module.conf.php
+++ b/interface/web/monitor/lib/module.conf.php
@@ -106,6 +106,11 @@
                   'link'	=> 'monitor/show_data.php?type=disk_usage',
                   'html_id' => 'disk_usage');
 
+$items[] = array( 'title'       => "Show MySQL Database size",
+                  'target'      => 'content',
+                  'link'        => 'monitor/show_data.php?type=database_size',
+                  'html_id' => 'database_usage');
+
 $items[] = array( 'title' 	=> "Show Memory usage",
                   'target' 	=> 'content',
                   'link'	=> 'monitor/show_data.php?type=mem_usage',
diff --git a/interface/web/monitor/show_data.php b/interface/web/monitor/show_data.php
index 92c66a4..42f4766 100644
--- a/interface/web/monitor/show_data.php
+++ b/interface/web/monitor/show_data.php
@@ -61,6 +61,13 @@
         $title = $app->lng("Disk usage").' ('. $monTransSrv .' : ' . $_SESSION['monitor']['server_name'] . ')';
         $description = '';
         break;
+    case 'database_size':
+        $template = 'templates/show_data.htm';
+        $output .= $app->tools_monitor->showDatabaseSize();
+        $time = $app->tools_monitor->getDataTime('database_size');
+        $title = $app->lng("Database size").' ('. $monTransSrv .' : ' . $_SESSION['monitor']['server_name'] . ')';
+        $description = '';
+        break;
     case 'mem_usage':
         $template = 'templates/show_data.htm';
         $output .= $app->tools_monitor->showMemUsage();

--
Gitblit v1.9.1