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 * Copyright 2019, Franck Villaume - TrivialDev
11 * http://fusionforge.org/
13 * This file is part of FusionForge.
15 * FusionForge is free software; you can redistribute it and/or modify
16 * it under the terms of the GNU General Public License as published by
17 * the Free Software Foundation; either version 2 of the License, or
18 * (at your option) any later version.
20 * FusionForge is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 * GNU General Public License for more details.
25 * You should have received a copy of the GNU General Public License along
26 * with this program; if not, write to the Free Software Foundation, Inc.,
27 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
30 require_once dirname(__FILE__)."/../../env.inc.php";
31 require_once $gfcommon.'include/pre.php';
32 require_once $gfwww.'project/admin/project_admin_utils.php';
35 global $quota_management;
37 session_require_perm('project_admin', $group_id);
39 $group = group_get_object($group_id);
41 if (!$group || !is_object($group)) {
43 } elseif ($group->isError()) {
44 exit_error($group->getErrorMessage(), 'home');
48 if ($group->usesDocman()) {
49 $res_db = $quota_management->getDocumentsSizeForProject($group_id);
51 $q["name"] = _('Documents');
52 $q["nb"] = 0; $q["size"] = 0;
54 $q1["name"] = _('Documents search engine');
56 if (db_numrows($res_db) > 0) {
57 $e = db_fetch_array($res_db);
59 $q["size"] = $e["size"];
61 $q1["size"] = $e["size1"];
67 if ($group->usesNews()) {
68 $res_db = $quota_management->getNewsSizeForProject($group_id);
70 $q["name"] = _('News');
71 $q["nb"] = 0; $q["size"] = 0;
72 if (db_numrows($res_db) > 0)
74 $e = db_fetch_array($res_db);
76 $q["size"] = $e["size"];
81 if ($group->usesForum()) {
82 $res_db = $quota_management->getForumSizeForProject($group_id);
84 $q["name"] = _('Forums');
85 $q["nb"] = 0; $q["size"] = 0;
86 if (db_numrows($res_db) > 0) {
87 $e = db_fetch_array($res_db);
89 $q["size"] = $e["size"];
94 if ($group->usesTracker()) {
95 $res_db = $quota_management->getTrackerSizeForProject($group_id);
97 $q["name"] = _('Trackers');
98 $q["nb"] = 0; $q["size"] = 0;
99 if (db_numrows($res_db) > 0) {
100 $e = db_fetch_array($res_db);
102 $q["size"] = $e["size"];
107 if ($group->usesFRS()) {
108 $res_db = $quota_management->getFRSSizeForProject($group_id);
110 $q["name"] = _('FRS');
111 $q["nb"] = 0; $q["size"] = 0;
112 if (db_numrows($res_db) > 0) {
113 $e = db_fetch_array($res_db);
115 $q["size"] = $e["size"];
120 if ($group->usesPM()) {
121 $res_db = $quota_management->getPMSizeForProject($group_id);
123 $q["name"] = _('PM');
124 $q["nb"] = 0; $q["size"] = 0;
125 if (db_numrows($res_db) > 0) {
126 $e = db_fetch_array($res_db);
128 $q["size"] = $e["size"];
133 $quotas_disk = array();
136 $_quota_block_size = trim(shell_exec('echo $BLOCK_SIZE')) + 0;
137 if ($_quota_block_size == 0) $_quota_block_size = 1024;
140 $res_db = db_query_params('SELECT quota_soft, quota_hard FROM plugin_quota_management WHERE group_id = $1',
142 if (db_numrows($res_db) > 0) {
143 $e = db_fetch_array($res_db);
144 $quota_hard = $e["quota_hard"];
145 $quota_soft = $e["quota_soft"];
146 $quota_hard = round(($_quota_block_size * $quota_hard) / (1024*1024), 0);
147 $quota_soft = round(($_quota_block_size * $quota_soft) / (1024*1024), 0);
150 $quota_tot_other = 0;
154 if (forge_get_config('use_shell')) {
155 $q["name"] = _('Home project directory');
156 $q["size"] = $quota_management->getHomeSize($group_id);
157 $q["quota_label"] = _('With Home quota control');
158 $quota_tot_1 += $q["size"];
162 if ($group->usesFTP()) {
163 $q["name"] = _('FTP project directory');
164 $q["size"] = $quota_management->getFTPSize($group_id);
165 $q["quota_label"] = _('With FTP quota control');
166 $quota_tot_1 += $q["size"];
170 plugin_hook_by_reference('quota_display', $quotas_disk);
174 <table width="500" cellpadding="2" cellspacing="0" border="0">
175 <tr style="font-weight:bold">
176 <td colspan="3" style="border-top:thick solid #808080; text-align: center"><?php echo _('Database'); ?></td>
178 <tr style="font-weight:bold">
179 <td style="border-top:thin solid #808080"><?php echo _('quota type'); ?></td>
180 <td style="border-top:thin solid #808080; text-align: right"><?php echo _('quantity'); ?></td>
181 <td style="border-top:thin solid #808080; text-align: right"><?php echo _('size'); ?></td>
185 foreach ($quotas as $q) {
186 if ($q["size"] != "") {
187 $sizetot += $q["size"];
190 <td style="border-top:thin solid #808080"><?php echo $q["name"]; ?></td>
191 <td style="border-top:thin solid #808080; text-align: right"><?php echo $q["nb"]; ?></td>
192 <td style="border-top:thin solid #808080; text-align: right"><?php echo human_readable_bytes($q["size"]); ?></td>
198 <tr style="font-weight:bold">
199 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080">
200 <?php echo _('Total'); ?>
202 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080"> </td>
203 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080; text-align: right">
204 <?php echo human_readable_bytes($sizetot); ?>
210 <?php if (count($quotas_disk) > 0) { ?>
211 <table width="500" cellpadding="2" cellspacing="0" border="0">
212 <tr style="font-weight:bold">
213 <td colspan="3" style="border-top:thick solid #808080; text-align: center">
214 <?php echo _('Disk space'); ?>
217 <tr style="font-weight:bold">
218 <td style="border-top:thin solid #808080">
219 <?php echo _('quota type'); ?>
221 <td style="border-top:thin solid #808080; text-align: right"> </td>
222 <td style="border-top:thin solid #808080; text-align: right">
223 <?php echo _('size'); ?>
228 foreach ($quotas_disk as $q) {
229 if ($q["size"] != "") {
230 $sizetot += $q["size"];
233 <td style="border-top:thin solid #808080"><?php echo $q["name"]; ?></td>
234 <td style="border-top:thin solid #808080; text-align: right">
235 <?php echo $q["quota_label"]; ?>
237 <td style="border-top:thin solid #808080; text-align: right">
238 <?php echo human_readable_bytes($q["size"]); ?>
245 <tr style="font-weight:bold">
246 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080"><?php echo _('Total'); ?></td>
247 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080"> </td>
248 <td style="border-top:thick solid #808080;border-bottom:thick solid #808080; text-align: right">
249 <?php echo human_readable_bytes($sizetot); ?>
262 $qs = $quota_soft * 1024 * 1024;
263 if (($quota_tot_1+0) > ($qs+0) && ($qs+0) > 0) {
265 $msg1 = _('Quota exceeded');
267 if (($quota_tot_scm+0) > ($qs+0) && ($qs+0) > 0) {
269 $msg2 = _('Quota exceeded');
273 <table width="500" cellpadding="2" cellspacing="0" border="0">
274 <tr style="font-weight:bold">
275 <td colspan="4" style="border-top:thick solid #808080; text-align: center"><?php echo _('Quota disk management'); ?></td>
277 <tr style="font-weight:bold">
278 <td style="border-top:thin solid #808080">
279 <?php echo _('Quota settings'); ?>
281 <td style="border-top:thin solid #808080;font-weight:bold; text-align: right">
284 <td style="border-top:thin solid #808080; text-align: right">
285 <?php echo _('Quota soft'); ?>
287 <td style="border-top:thin solid #808080; text-align: right">
288 <?php echo _('Quota hard'); ?>
291 <tr style="background:<?php echo $color1; ?>">
292 <td style="border-top:thin solid #808080">
293 <?php echo _('Home, Ftp'); ?>
295 <td style="border-top:thin solid #808080;font-weight:bold;color:red; text-align: right">
298 <td style="border-top:thin solid #808080; text-align: right">
300 if ($quota_soft == 0) {
308 <td style="border-top:thin solid #808080; text-align: right">
310 if ($quota_hard == 0) {
319 <?php if ($group->usesSCM()) { ?>
320 <tr style="background:<?php echo $color2; ?>">
321 <td style="border-top:thin solid #808080">
322 <?php echo _('SCM'); ?>
324 <td style="border-top:thin solid #808080;font-weight:bold;color:red; text-align: right">
327 <td style="border-top:thin solid #808080; text-align: right">
329 if ($quota_soft == 0) {
337 <td style="border-top:thin solid #808080; text-align: right">
339 if ($quota_hard == 0) {
349 <tr style="font-weight:bold">
350 <td colspan="4" style="border-top:thick solid #808080"> </td>
353 <?php project_admin_footer();