3 * Project Admin page to manage quotas project
5 * Portions Copyright 1999-2001 (c) VA Linux Systems
6 * Copyright 2002-2004 (c) GForge Team
7 * Copyright 2005, Fabio Bertagnin
8 * Copyright 2010 (c) FusionForge Team
9 * Copyright 2011, Franck Villaume - Capgemini
10 * http://fusionforge.org/
12 * This file is part of FusionForge.
14 * FusionForge is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by
16 * the Free Software Foundation; either version 2 of the License, or
17 * (at your option) any later version.
19 * FusionForge is distributed in the hope that it will be useful,
20 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22 * GNU General Public License for more details.
24 * You should have received a copy of the GNU General Public License along
25 * with this program; if not, write to the Free Software Foundation, Inc.,
26 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
29 require_once dirname(__FILE__)."/../../env.inc.php";
30 require_once $gfcommon.'include/pre.php';
31 require_once $gfwww.'project/admin/project_admin_utils.php';
33 $id = getIntFromRequest('group_id');
34 $quota_management = plugin_get_object('quota_management');
36 session_require_perm('project_admin', $id);
38 $group = &group_get_object($id);
40 if (!$group || !is_object($group)) {
42 } elseif ($group->isError()) {
43 exit_error($group->getErrorMessage(), 'home');
46 project_admin_header(array('title'=>_('Project quota manager'),'group'=>$group->getID(),'pagename'=>'project_admin_quotas','sectionvals'=>array(group_getname($id))));
49 <h4><?php echo _('Project quota manager'); ?></h4>
53 $res_db = db_query_params('SELECT SUM(octet_length(data)) as size, SUM(octet_length(data_words)) as size1, count(*) as nb FROM doc_data WHERE group_id = $1 ',
56 $q["name"] = _('Documents');
57 $q["nb"] = 0; $q["size"] = 0;
59 $q1["name"] = _('Documents search engine');
61 if (db_numrows($res_db) > 0) {
62 $e = db_fetch_array($res_db);
64 $q["size"] = $e["size"];
65 // $q1["nb"] = $e["nb"];
66 $q1["size"] = $e["size1"];
71 $res_db = db_query_params('SELECT SUM(octet_length(summary) + octet_length(details)) as size, count(*) as nb FROM news_bytes WHERE group_id = $1 ',
74 $q["name"] = _('News');
75 $q["nb"] = 0; $q["size"] = 0;
76 if (db_numrows($res_db) > 0)
78 $e = db_fetch_array($res_db);
80 $q["size"] = $e["size"];
84 $res_db = db_query_params('SELECT SUM(octet_length(subject)+octet_length(body)) as size, count(*) as nb FROM forum INNER JOIN forum_group_list ON forum.group_forum_id = forum_group_list.group_forum_id WHERE group_id = $1 ',
87 $q["name"] = _('Forums');
88 $q["nb"] = 0; $q["size"] = 0;
89 if (db_numrows($res_db) > 0) {
90 $e = db_fetch_array($res_db);
92 $q["size"] = $e["size"];
96 $quotas_disk = array();
100 $_quota_block_size = 1024;
101 $_quota_block_size = trim(shell_exec("echo $BLOCK_SIZE")) + 0;
102 if ($_quota_block_size == 0) $_quota_block_size = 1024;
105 $res_db = db_query_params('SELECT quota_soft, quota_hard FROM groups WHERE group_id = $1',
107 if (db_numrows($res_db) > 0) {
108 $e = db_fetch_array($res_db);
109 $quota_hard = $e["quota_hard"];
110 $quota_soft = $e["quota_soft"];
111 $quota_hard = round(($_quota_block_size * $quota_hard) / (1024*1024), 0);
112 $quota_soft = round(($_quota_block_size * $quota_soft) / (1024*1024), 0);
115 $quota_tot_other = 0;
119 $upload_dir = forge_get_config('upload_dir') . $group->getUnixName();
120 $chroot_dir = forge_get_config('chroot');
121 $ftp_dir = forge_get_config('ftp_upload_dir')."/pub/".$group->getUnixName();
122 $group_dir = $chroot_dir.forge_get_config('groupdir_prefix') . "/" . $group->getUnixName();
123 $cvs_dir = $chroot_dir.$cvsdir_prefix . "/" . $group->getUnixName();
124 $svn_dir = $chroot_dir.$svndir_prefix . "/" . $group->getUnixName();
126 $q["name"] = _('Download project directory');
127 $q["path"] = "$upload_dir";
128 $q["quota_label"] = _('Without quota control');
129 $q["size"] = $quota_management->get_dir_size("$upload_dir");
130 $quota_tot_other += $q["size"];
133 $q["name"] = _('Home project directory');
134 $q["path"] = "$group_dir"; $q["size"] = $quota_management->get_dir_size("$group_dir");
135 $q["quota_label"] = _('With ftp and home quota control');
136 $quota_tot_1 += $q["size"];
139 $q["name"] = _('FTP project directory');
140 $q["path"] = "$ftp_dir"; $q["size"] = $quota_management->get_dir_size("$ftp_dir");
141 $q["quota_label"] = _('With ftp and home quota control');
142 $quota_tot_1 += $q["size"];
145 $q["name"] = _('CVS project directory');
146 $q["path"] = "$cvs_dir"; $q["size"] = $quota_management->get_dir_size("$cvs_dir");
147 $q["quota_label"] = _('With cvs and svn quota control');
148 $quota_tot_scm += $q["size"];
151 $q["name"] = _('Subversion project directory');
152 $q["path"] = "$svn_dir"; $q["size"] = $quota_management->get_dir_size("$svn_dir");
153 $q["quota_label"] = _('With cvs and svn quota control');
154 $quota_tot_scm += $q["size"];
159 <table width="500px" cellpadding="2" cellspacing="0" border="0">
160 <tr style="font-weight:bold">
161 <td colspan="3" style="border-top:thick solid #808080" align="center"><?php echo _('Database'); ?></td>
163 <tr style="font-weight:bold">
164 <td style="border-top:thin solid #808080"><?php echo _('quota type'); ?></td>
165 <td style="border-top:thin solid #808080" align="right"><?php echo _('quantity'); ?></td>
166 <td style="border-top:thin solid #808080" align="right"><?php echo _('size'); ?></td>
170 foreach ($quotas as $q) {
171 if ($q["size"] != "") {
172 $sizetot += $q["size"];
175 <td style="border-top:thin solid #808080"><?php echo $q["name"]; ?></td>
176 <td style="border-top:thin solid #808080" align="right"><?php echo $q["nb"]; ?></td>
177 <td style="border-top:thin solid #808080" align="right"><?php echo $quota_management->add_numbers_separator($quota_management->convert_bytes_to_mega($q["size"]))." "._('Mb'); ?></td>
183 <tr style="font-weight:bold">
184 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080">
185 <?php echo _('Total'); ?>
187 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080"> </td>
188 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080" align="right">
189 <?php echo $quota_management->add_numbers_separator($quota_management->convert_bytes_to_mega($sizetot))." "._('Mb'); ?>
195 <table width="500px" cellpadding="2" cellspacing="0" border="0">
196 <tr style="font-weight:bold">
197 <td colspan="3" style="border-top:thick solid #808080" align="center">
198 <?php echo _('Disk space'); ?>
201 <tr style="font-weight:bold">
202 <td style="border-top:thin solid #808080">
203 <?php echo _('quota type'); ?>
205 <td style="border-top:thin solid #808080" align="right"> </td>
206 <td style="border-top:thin solid #808080" align="right">
207 <?php echo _('size'); ?>
212 foreach ($quotas_disk as $q) {
213 if ($q["size"] != "") {
214 $sizetot += $q["size"];
217 <td style="border-top:thin solid #808080"><?php echo $q["name"]; ?></td>
218 <td style="border-top:thin solid #808080" align="right">
219 <?php echo $q["quota_label"]; ?>
221 <td style="border-top:thin solid #808080" align="right">
222 <?php echo $quota_management->add_numbers_separator($quota_management->convert_bytes_to_mega($q["size"]))." "._('Mb'); ?>
229 <tr style="font-weight:bold">
230 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080"><?php echo _('Total'); ?></td>
231 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080"> </td>
232 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080" align="right">
233 <?php echo $quota_management->add_numbers_separator($quota_management->convert_bytes_to_mega($sizetot))." "._('Mb'); ?>
246 $qs = $quota_soft * 1024 * 1024;
247 if (($quota_tot_1+0) > ($qs+0) && ($qs+0) > 0) {
249 $msg1 = _('Quota exceeded');
251 if (($quota_tot_scm+0) > ($qs+0) && ($qs+0) > 0) {
253 $msg2 = _('Quota exceeded');
257 <table width="500px" cellpadding="2" cellspacing="0" border="0">
258 <tr style="font-weight:bold">
259 <td colspan="4" style="border-top:thick solid #808080" align="center"><?php echo _('Quota disk management'); ?></td>
261 <tr style="font-weight:bold">
262 <td style="border-top:thin solid #808080">
263 <?php echo _('Quota settings'); ?>
265 <td style="border-top:thin solid #808080;font-weight:bold" align="right">
268 <td style="border-top:thin solid #808080" align="right">
269 <?php echo _('Quota soft'); ?>
271 <td style="border-top:thin solid #808080" align="right">
272 <?php echo _('Quota hard'); ?>
275 <tr style="background:<?php echo $color1; ?>">
276 <td style="border-top:thin solid #808080">
277 <?php echo _('Home, Ftp'); ?>
279 <td style="border-top:thin solid #808080;font-weight:bold;color:red" align="right">
282 <td style="border-top:thin solid #808080" align="right">
284 if ($quota_soft == 0) {
292 <td style="border-top:thin solid #808080" align="right">
294 if ($quota_hard == 0) {
303 <tr style="background:<?php echo $color2; ?>">
304 <td style="border-top:thin solid #808080">
305 <?php echo _('CVS, SVN'); ?>
307 <td style="border-top:thin solid #808080;font-weight:bold;color:red" align="right">
310 <td style="border-top:thin solid #808080" align="right">
312 if ($quota_soft == 0) {
320 <td style="border-top:thin solid #808080" align="right">
322 if ($quota_hard == 0) {
331 <tr style="font-weight:bold">
332 <td colspan="4" style="border-top:thick solid #808080" align="center"> </td>
335 <?php project_admin_footer(array());