3 * Project Admin page to manage quotas disk and database
5 * Copyright 2005, Fabio Bertagnin
6 * Copyright 2011, Franck Villaume - Capgemini
7 * http://fusionforge.org
9 * This file is part of FusionForge.
11 * FusionForge is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
16 * FusionForge is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
21 * You should have received a copy of the GNU General Public License along
22 * with this program; if not, write to the Free Software Foundation, Inc.,
23 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
26 require_once dirname(__FILE__)."/../../env.inc.php";
27 require_once $gfcommon.'include/pre.php';
28 require_once $gfwww.'admin/admin_utils.php';
30 $quota_management = plugin_get_object('quota_management');
32 $_quota_block_size = 1024;
33 $_quota_block_size = trim(shell_exec("echo $BLOCK_SIZE")) + 0;
34 if ($_quota_block_size == 0) $_quota_block_size = 1024;
36 site_admin_header(array('title'=>_('Site admin')));
39 <?php echo _('Ressources usage and quota'); ?>
40
41 <a href="quota_admin.php">Admin</a>
44 // stock projects infos in array
48 $res_db = db_query_params('SELECT group_id, group_name, unix_group_name, quota_soft, quota_hard FROM groups ORDER BY group_id ',
50 if (db_numrows($res_db) > 0) {
51 while($e = db_fetch_array($res_db)) {
52 $quotas["$e[group_id]"]["group_id"] = $e["group_id"];
53 $quotas["$e[group_id]"]["name"] = $e["group_name"];
54 $quotas["$e[group_id]"]["unix_name"] = $e["unix_group_name"];
55 $quotas["$e[group_id]"]["database_size"] = 0;
56 $quotas["$e[group_id]"]["disk_size_other"] = 0;
57 $quotas["$e[group_id]"]["disk_size_1"] = 0;
58 $quotas["$e[group_id]"]["disk_size_scm"] = 0;
59 $quotas["$e[group_id]"]["quota_hard"] = $e["quota_hard"] * $_quota_block_size;
60 $quotas["$e[group_id]"]["quota_soft"] = $e["quota_soft"] * $_quota_block_size;
64 // documents database size
65 $res_db = db_query_params('SELECT group_id, SUM(octet_length(data)) as size, SUM(octet_length(data_words)) as size1 FROM doc_data GROUP BY group_id ',
67 if (db_numrows($res_db) > 0) {
68 while($e = db_fetch_array($res_db)) {
70 $quotas["$e[group_id]"]["database_size"] += $e["size"];
71 $quotas["$e[group_id]"]["database_size"] += $e["size1"];
76 $res_db = db_query_params('SELECT group_id, SUM(octet_length(summary) + octet_length(details)) as size FROM news_bytes GROUP BY group_id',
78 if (db_numrows($res_db) > 0) {
79 while($e = db_fetch_array($res_db)) {
80 $quotas["$e[group_id]"]["database_size"] += $e["size"];
84 // forums database size
85 $res_db = db_query_params('SELECT forum_group_list.group_id as group_id, SUM(octet_length(subject)+octet_length(body)) as size FROM forum INNER JOIN forum_group_list ON forum.group_forum_id = forum_group_list.group_forum_id GROUP BY group_id',
87 if (db_numrows($res_db) > 0) {
88 while($e = db_fetch_array($res_db)) {
89 $quotas["$e[group_id]"]["database_size"] += $quota_management->convert_bytes_to_mega($e["size"]);
94 $chroot_dir = forge_get_config('chroot');
95 $ftp_dir = forge_get_config('ftp_upload_dir')."/pub/";
96 $upload_dir = forge_get_config('upload_dir');
97 $group_dir = $chroot_dir.forge_get_config('groupdir_prefix')."/";
98 $cvs_dir = $chroot_dir.$cvsdir_prefix."/";
99 $svn_dir = $chroot_dir.$svndir_prefix."/";
101 foreach ($quotas as $p) {
102 $group_id = $p["group_id"];
103 // upload dir disk space
104 $dir = $upload_dir.$p["unix_name"];
105 $size = $quota_management->get_dir_size($dir);
106 $quotas["$group_id"]["disk_size_other"] += $size;
107 // ftp dir disk space
108 $dir = $ftp_dir.$p["unix_name"];
109 $size = $quota_management->get_dir_size($dir);
110 $quotas["$group_id"]["disk_size_1"] += $size;
111 // home dir disk space
112 $dir = $group_dir.$p["unix_name"];
113 $size = $quota_management->get_dir_size($dir);
114 $quotas["$group_id"]["disk_size_1"] += $size;
115 // cvs dir disk space
116 $dir = $cvs_dir.$p["unix_name"];
117 $size = $quota_management->get_dir_size($dir);
118 $quotas["$group_id"]["disk_size_scm"] += $size;
119 // svn dir disk space
120 $dir = $svn_dir.$p["unix_name"];
121 $size = $quota_management->get_dir_size($dir);
122 $quotas["$group_id"]["disk_size_scm"] += $size;
125 // users disk space size
126 $chroot_dir = forge_get_config('chroot');
127 $ftp_dir = $chroot_dir."/home/users/";
129 $res_db = db_query_params('SELECT user_id, user_name, realname, unix_status FROM users ORDER BY user_id ',
131 if (db_numrows($res_db) > 0)
133 while($e = db_fetch_array($res_db))
135 if ($e["unix_status"] != "N")
137 $users["$e[user_id]"]["user_id"] = $e["user_id"];
138 $users["$e[user_id]"]["user_name"] = "$e[user_name]";
139 $users["$e[user_id]"]["realname"] = "$e[realname]";
140 $users["$e[user_id]"]["unix_status"] = "$e[unix_status]";
141 $users["$e[user_id]"]["disk_size"] = 0;
145 foreach ($users as $u)
147 $user_id = $u["user_id"];
148 $dir = $ftp_dir . $u["user_name"];
149 $size = $quota_management->get_dir_size($dir);
150 $users["$user_id"]["disk_size"] += $quota_management->convert_bytes_to_mega($size);
154 <table width="800px" cellpadding="2" cellspacing="0" border="0">
156 <td style="border-top:thick solid #808080;font-weight:bold" colspan="3">
157 <?php echo _('Projects ressources use'); ?>
159 <td style="border-top:thick solid #808080" colspan="7">
160 <span style="font-size:10px">
162 <?php echo _('project'); ?>* :
163 <?php echo _('Ftp, Home'); ?>
164
165 <?php echo _('scm'); ?>* :
166 <?php echo _('CVS, SVN'); ?>
167
168 <?php echo _('others'); ?>* :
169 <?php echo _('Download - without quota control'); ?>
175 <td style="border-top:thin solid #808080">
176 <?php echo _('id'); ?>
178 <td style="border-top:thin solid #808080">
179 <?php echo _('name'); ?>
181 <td style="border-top:thin solid #808080"><br /></td>
182 <td style="border-top:thin solid #808080;background:#e0e0e0" align="right">
183 <?php echo _('database'); ?>
185 <td style="border-top:thin solid #808080;background:#e0e0e0" align="right">
186 <?php echo _('project'); ?>*
188 <td style="border-top:thin solid #808080;background:#e0e0e0" align="right">
189 <?php echo _('scm'); ?>*
191 <td style="border-top:thin solid #808080;background:#e0e0e0" align="right">
192 <?php echo _('others'); ?>*
194 <td style="border-top:thin solid #808080;background:#e0e0e0" align="right">
195 <?php echo _('total'); ?>
197 <td style="border-top:thin solid #808080" align="right">
198 <?php echo _('disk quota soft'); ?>
200 <td style="border-top:thin solid #808080" align="right">
201 <?php echo _('disk quota hard'); ?>
208 $total_disk_other = 0;
210 foreach ($quotas as $q)
212 $total_database += $q["database_size"];
213 $total_disk_1 += $q["disk_size_1"];
214 $total_disk_other += $q["disk_size_other"];
215 $total_disk_scm += $q["disk_size_scm"];
216 $total_disk += $q["disk_size_1"]+$q["disk_size_scm"]+$q["disk_size_other"];
217 $local_disk_size = $q["database_size"]+$q["disk_size_1"]+$q["disk_size_scm"]+$q["disk_size_other"];
222 if ($q["quota_soft"] > 0)
227 // echo "size $q[disk_size] quota $q[quota_soft] <br />";
228 if (($q["disk_size_1"] > $q["quota_soft"] || $q["disk_size_scm"] > $q["quota_soft"]) && $q["quota_soft"] > 0)
237 <td style="border-top:thin solid #808080;background:<?php echo $color2; ?>"><?php echo $q["group_id"]; ?></td>
238 <td style="border-top:thin solid #808080;background:<?php echo $color2; ?>">
239 <a href="quota_project.php?group_id=<?php echo $q["group_id"]; ?>">
240 <?php echo $q["unix_name"]; ?>
243 <td style="border-top:thin solid #808080;background:<?php echo $color2; ?>">
244 <?php echo $q["name"]; ?>
246 <td style="border-top:thin solid #808080;background:<?php echo $color1; ?>" align="right">
247 <?php echo $quota_management->add_numbers_separator($quota_management->convert_bytes_to_mega($q["database_size"])); ?>
248 <?php echo _('Mb'); ?>
250 <td style="border-top:thin solid #808080;background:<?php echo $color0; ?>" align="right">
251 <?php echo $quota_management->add_numbers_separator($quota_management->convert_bytes_to_mega($q["disk_size_1"])); ?>
252 <?php echo _('Mb'); ?>
254 <td style="border-top:thin solid #808080;background:<?php echo $color0; ?>" align="right">
255 <?php echo $quota_management->add_numbers_separator($quota_management->convert_bytes_to_mega($q["disk_size_scm"])); ?>
256 <?php echo _('Mb'); ?>
258 <td style="border-top:thin solid #808080;background:<?php echo $color1; ?>" align="right">
259 <?php echo $quota_management->add_numbers_separator($quota_management->convert_bytes_to_mega($q["disk_size_other"])); ?>
260 <?php echo _('Mb'); ?>
262 <td style="border-top:thin solid #808080;background:<?php echo $color1; ?>;font-weight:bold" align="right">
263 <?php echo $quota_management->add_numbers_separator($quota_management->convert_bytes_to_mega($local_disk_size)); ?>
264 <?php echo _('Mb'); ?>
266 <td style="border-top:thin solid #808080;background:<?php echo $colorq; ?>" align="right">
268 if ($q["quota_soft"] > 0)
270 echo $quota_management->add_numbers_separator($quota_management->convert_bytes_to_mega($q["quota_soft"]));
280 <td style="border-top:thin solid #808080;background:<?php echo $colorq; ?>" align="right">
282 if ($q["quota_hard"] > 0)
284 echo $quota_management->add_numbers_separator($quota_management->convert_bytes_to_mega($q["quota_hard"]));
298 <tr style="font-weight:bold">
299 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080"><br /></td>
300 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080">
301 <?php echo _('total'); ?>
303 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080"><br /></td>
304 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080;background:#e0e0e0" align="right">
305 <?php echo $quota_management->add_numbers_separator($quota_management->convert_bytes_to_mega($total_database)); ?>
306 <?php echo _('Mb'); ?>
308 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080;background:#e0e0e0" align="right">
309 <?php echo $quota_management->add_numbers_separator($quota_management->convert_bytes_to_mega($total_disk_1)); ?>
310 <?php echo _('Mb'); ?>
312 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080;background:#e0e0e0" align="right">
313 <?php echo $quota_management->add_numbers_separator($quota_management->convert_bytes_to_mega($total_disk_scm)); ?>
314 <?php echo _('Mb'); ?>
316 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080;background:#e0e0e0" align="right">
317 <?php echo $quota_management->add_numbers_separator($quota_management->convert_bytes_to_mega($total_disk_other)); ?>
318 <?php echo _('Mb'); ?>
320 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080;background:#e0e0e0" align="right">
321 <?php echo $quota_management->add_numbers_separator($quota_management->convert_bytes_to_mega($total_database+$total_disk_1+$total_disk_scm+$total_disk_other)); ?>
322 <?php echo _('Mb'); ?>
324 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080"><br /></td>
325 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080"><br /></td>
330 <table width="700px" cellpadding="2" cellspacing="0" border="0">
331 <tr style="font-weight:bold">
332 <td style="border-top:thick solid #808080" colspan="6">
333 <?php echo _('Users disk use'); ?>
337 <td style="border-top:thin solid #808080"><?php echo _('id'); ?></td>
338 <td style="border-top:thin solid #808080"><?php echo _('name'); ?></td>
339 <td style="border-top:thin solid #808080"><br /></td>
340 <td style="border-top:thin solid #808080"><br /></td>
341 <td style="border-top:thin solid #808080"><br /></td>
342 <td style="border-top:thin solid #808080" align="right">
343 <?php echo _('disk'); ?>
348 foreach ($users as $u)
350 $total += $u["disk_size"];
353 <td style="border-top:thin solid #808080"><?php echo $u["user_id"]; ?></td>
354 <td style="border-top:thin solid #808080"><?php echo $u["user_name"]; ?></td>
355 <td style="border-top:thin solid #808080"><?php echo $u["realname"]; ?></td>
356 <td style="border-top:thin solid #808080"><br /></td>
357 <td style="border-top:thin solid #808080"><br /></td>
358 <td style="border-top:thin solid #808080" align="right">
359 <?php echo $quota_management->add_numbers_separator($u["disk_size"]); ?>
360 <?php echo _('Mb'); ?>
366 <tr style="font-weight:bold">
367 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080"><br /></td>
368 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080">
369 <?php echo _('total'); ?>
371 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080"><br /></td>
372 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080"><br /></td>
373 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080"><br /></td>
374 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080" align="right">
375 <?php echo $quota_management->add_numbers_separator($total); ?>
376 <?php echo _('Mb'); ?>
382 site_admin_footer(array());
386 // c-file-style: "bsd"