<?php /* ---------------------------------------------------------------------- LICENSE This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. To read the license please visit http://www.gnu.org/copyleft/gpl.html ---------------------------------------------------------------------- */ /** * Display the quotas of one or some users * * @copyright AlternC-Team 2000-2017 https://alternc.com/ */ require_once("../class/config.php"); $fields = array ( "mode" => array ("request", "integer" ,0), "sd" => array ("request", "integer" ,0), "usr" => array ("request", "integer" ,0), "order" => array ("request", "integer" ,0), ); getFields($fields); if (!$admin->enabled) { $msg->raise("ERROR", "admin", _("This page is restricted to authorized staff")); echo $msg->msg_html_all(); exit(); } include_once ("head.php"); ?> <h3><?php __("Quotas status"); ?></h3> <hr id="topbar"/> <br /> <?php echo $msg->msg_html_all(); ?> <p> <?php __("This page shows the space and service count of your AlternC server and each AlternC accounts."); echo "<br /><br />"; printf(_("If you want to manage them, go to")." <a href=\"adm_list.php\">"._("Administration -> Manage the Alternc accounts")."</a>"); ?> </p> <p> <?php printf(_("Sizes are shown as %s"),($mode==0 || $mode==4)?_("MB."):_("% of the total.")); ?> </p> <p> <?php __("Server-side view:"); ?> <span class="ina <?php if ($mode==4) { echo 'ina-active'; } ?>"><a href="quotas_users.php?mode=4"><?php __("Global"); ?></a></span><br /><br /> <?php __("Detailed view:"); ?> <span class="ina <?php if ($mode==0) { echo 'ina-active'; } ?>"><a href="quotas_users.php?mode=0&sd=<?php echo $sd; ?>&usr=<?php echo $usr; ?>"><?php __("In MB"); ?></a></span> <span class="ina <?php if ($mode==1) { echo 'ina-active'; } ?>"><a href="quotas_users.php?mode=1&sd=<?php echo $sd; ?>&usr=<?php echo $usr; ?>"><?php __("Percentage"); ?></a></span> <span class="ina <?php if ($mode==2) { echo 'ina-active'; } ?>"><a href="quotas_users.php?mode=2&sd=<?php echo $sd; ?>&usr=<?php echo $usr; ?>"><?php __("Graphical"); ?></a></span> <?php if ($mode != 4) { ?> <?php if ($usr==0) { if ($sd==0) { ?> <span class="ina"><a href="quotas_users.php?mode=<?php echo $mode; ?>&sd=1&usr=<?php echo $usr; ?>"><?php __("Show the domain names"); ?></a></span> <?php } else { ?> <span class="ina"><a href="quotas_users.php?mode=<?php echo $mode; ?>&sd=0&usr=<?php echo $usr; ?>"><?php __("Hide the domain names"); ?></a></span> <?php } } ?> <?php if ($usr) { ?> <span class="ina"><a href="quotas_users.php?mode=<?php echo $mode; ?>&sd=<?php echo $sd; ?>"><?php __("All accounts"); ?></a></span> <?php } ?> <?php } ?> </p> <?php if ($mode == 4) { // Mode : global display if ($cuid != 2000) { $mList = array(); $membres_list = $admin->get_list(0, $cuid); foreach ($membres_list as $n) { $domList = $dom->enum_domains($n["uid"]); $mList[$n["uid"]] = array ( "login" => $n["login"], "domaines" => $domList, ); } $totalweb = 0; $totalmail = 0; $totallist = 0; $totaldb = 0; $dc = 0; $mc = 0; $mlc = 0; $dbc = 0; foreach ($mList as $mUID => $mData) { $tmpweb = $quota->get_size_web_sum_user($mUID); $totalweb += $tmpweb; if (!empty($mData["domaines"])) { foreach ($mData["domaines"] as $domaine) { $dc++; $tmpmail = $quota->get_size_mail_sum_domain($domaine); $totalmail += $tmpmail; $mc = $quota->get_size_mail_count_domain($domaine); $tmplist = $quota->get_size_mailman_sum_domain($domaine); $totallist += $tmplist; } } $mlc = $quota->get_size_mailman_count_user($mUID); $tmpdb = $quota->get_size_db_sum_user($mData["login"]); $totaldb += $tmpdb; $dbc = $quota->get_size_db_count_user($mData["login"]); } $tmptotal=$totalweb+$totallist+$totalmail+($totaldb/1024); $totaltotal=$quota->get_size_unit($tmptotal); } else { $tmptotalweb = $quota->get_size_web_sum_all(); // In KB $totalweb=$quota->get_size_unit($tmptotalweb * 1024); $tmptotalmail = $quota->get_size_mail_sum_all(); // In B $totalmail=$quota->get_size_unit($tmptotalmail); $tmptotallist = $quota->get_size_mailman_sum_all(); // IN KB $totallist=$quota->get_size_unit($tmptotallist * 1024); $tmptotaldb = $quota->get_size_db_sum_all(); // IN B $totaldb=$quota->get_size_unit($tmptotaldb); $tmptotaltotal=($tmptotalweb*1024)+($tmptotallist*1024)+$tmptotalmail+$tmptotaldb; // IN B $totaltotal=$quota->get_size_unit($tmptotaltotal); $dc = $dom->count_domains_all(); $mc = $quota->get_size_mail_count_all(); $mlc = $quota->get_size_mailman_count_all(); $dbc = $quota->get_size_db_count_all(); } ?> <center> <div> <table class="tedit" width="100%"> <thead> <tr><th> </th><th><?php __("Count"); ?></th><th><?php __("Space"); ?></th></tr> </thead> <tbody> <tr> <th><?php __("Domains"); ?></th> <td><?php echo $dc; ?></td> <td><?php echo sprintf("%.1f", $totalweb['size'])." ".$totalweb['unit']; ?></td> </tr> <tr> <th><?php __("Email addresses"); ?></th> <td><?php echo $mc; ?></td> <td><?php echo sprintf("%.1f", $totalmail['size'])." ".$totalmail['unit']; ?></td> </tr> <?php if ($mlc) { ?> <tr> <th><?php __("Mailman lists"); ?></th> <td><?php echo $mlc; ?></td> <td><?php echo sprintf("%.1f", $totallist['size'])." ".$totallist['unit']; ?></td> </tr> <?php } ?> <tr> <th><?php __("MySQL Databases"); ?></th> <td><?php echo $dbc; ?></td> <td><?php echo sprintf("%.1f", $totaldb['size'])." ".$totaldb['unit']; ?></td> </tr> <tr> <th colspan="2"><?php __("Total"); ?></th> <td><?php echo sprintf("%.1f", $totaltotal['size'])." ".$totaltotal['unit']; ?></td> </tr> </tbody> </table> </div> </center> <?php } elseif ($usr==0) { // Mode : display all accounts function sortlink($txt,$asc,$desc) { global $order,$mode,$sd,$usr; if ($order==$asc) $neworder=$desc; else $neworder=$asc; echo "<th"; if ($order==$asc) echo " class=\"headerSortUp\""; if ($order==$desc) echo " class=\"headerSortDown\""; echo ">"; echo "<a href=\"quotas_users.php?order=".$neworder."&mode=".$mode."&sd=".$sd."&usr=".$usr."\">"; echo $txt; echo "</a>"; echo "</th>"; } ?> <center> <div> <table class="tedit" width="100%"> <thead> <tr><th rowspan="2"><?php sortlink(_("Account"),0,1); ?></th><th colspan="3"><?php __("Count"); ?></th><th colspan="5"><?php __("Space"); ?></th></tr> <tr> <?php sortlink(_("Dom"),2,3); ?> <?php sortlink(_("Mails"),4,5); ?> <?php sortlink(_("Lists"),6,7); ?> <?php sortlink(_("Web"),8,9); ?> <?php sortlink(_("Mails"),10,11); ?> <?php sortlink(_("Lists"),12,13); ?> <?php sortlink(_("DB"),14,15); ?> <?php sortlink(_("Total"),16,17); ?> </tr> </thead> <tbody> <?php $afields=array("login","domaincount","mailcount","mailmancount","websize","mailsize","mailmansize","dbsize","totalsize"); if ($cuid != 2000) { $mList = array(); $membres_list = $admin->get_list(0, $cuid); foreach ($membres_list as $minfo) { $domList = $dom->enum_domains($minfo['uid']); $mList[$muid] = array ( "login" => $minfo['login'], "domaines" => $domList, ); } $totalweb = 0; $totalmail = 0; $totallist = 0; $totaldb = 0; $dc = 0; $mc = 0; $mlc = 0; $dbc = 0; foreach ($mList as $mUID => $mData) { $tmpweb = $quota->get_size_web_sum_user($mUID); $totalweb += $tmpweb; if (!empty($mData["domaines"])) { foreach ($mData["domaines"] as $domaine) { $dc++; $tmpmail = $quota->get_size_mail_sum_domain($domaine); $totalmail += $tmpmail; $mc = $quota->get_size_mail_count_domain($domaine); $tmplist = $quota->get_size_mailman_sum_domain($domaine); $totallist += $tmplist; } } $mlc = $quota->get_size_mailman_count_user($mUID); $tmpdb = $quota->get_size_db_sum_user($mData["login"]); $totaldb += $tmpdb; $dbc = $quota->get_size_db_count_user($mData["login"]); } } else { $totalweb = $quota->get_size_web_sum_all(); $totalmail = $quota->get_size_mail_sum_all(); $totallist = $quota->get_size_mailman_sum_all(); $totaldb = $quota->get_size_db_sum_all(); } $totaltotal=$totalweb+$totallist+($totalmail/1024)+($totaldb/1024); // In KB if ($totaltotal==0) $totaltotal=1; if ($cuid != 2000) { $membres_list = $admin->get_list(0, $cuid); } else { $membres_list = $admin->get_list(1); } // ------------------------------------------------------------ // LOOP ON EACH MEMBER $all=array(); foreach ($membres_list as $c) { $one=$c; // We show account AND domains $domaines_list = $dom->enum_domains($c["uid"]); $dc=0; // Domain Count $ms=0; // Mail Space $mls=0; $one["domains"]=array(); foreach ($domaines_list as $d) { $dc++; $one["domains"][]=$d; $mstmp = $quota->get_size_mail_sum_domain($d); $ms+=$mstmp; $mlstmp = $quota->get_size_mailman_sum_domain($d); $mls+=$mlstmp; } $one["mailsize"]=$ms; $one["mailmansize"]=$mls; // Mail Count $maildomains_list = $mail->enum_domains($c["uid"]); $mc = 0; foreach ($maildomains_list as $md) { $mc += $md['nb_mail']; } $one["mailcount"]=$mc; $one["domaincount"]=$dc; // Mailman List Count if (isset($mailman)) { $mlc = $mailman->count_ml_user($c["uid"]); $one["mailmancount"]=$mlc; } // Espace WEB $ws = $quota->get_size_web_sum_user($c["uid"]); $one["websize"]=$ws; // Espace Mail : // Espace DB : $ds = $quota->get_size_db_sum_user($c["login"]); $one["dbsize"]=$ds; $ts=$ds/1024+$ws+$ms/1024+$mls; // In KB $one["totalsize"]=$ts; $all[]=$one; } // SORT this $all array $asc=(($order%2)==0); $fie=$afields[intval($order/2)]; function mysort($a,$b) { global $fie,$asc; if ($asc) { if ($a[$fie]<$b[$fie]) return -1; if ($a[$fie]>$b[$fie]) return 1; return 0; } else { if ($a[$fie]<$b[$fie]) return 1; if ($a[$fie]>$b[$fie]) return -1; return 0; } } usort($all,"mysort"); // ------------------------------------------------------------ // LOOP ON EACH MEMBER foreach ($all as $c) { echo "<tr><td>"; // We show all accounts and domains echo "<b><a href=\"quotas_users.php?mode=".$mode."&sd=".$sd."&usr=".$c["uid"]."\">".$c["login"]."</a></b><br />\n"; $domaines_list = $dom->enum_domains($c["uid"]); $dc=0; // Domain Count $ms=0; // Mail Space $mls=0; foreach ($c["domains"] as $d) { if ($sd) echo " - {$d}<br />\n"; } $ms=$c["mailsize"]; $mls=$c["mailmansize"]; $mailsize=$quota->get_size_unit($ms); $mailmansize=$quota->get_size_unit($mls * 1024); // WEB space quota $ws = $c["websize"]; $webspace=$quota->get_size_unit($ws * 1024); if (isset($totalweb) && $totalweb){ $pc=intval(100*$ws/$totalweb); } else { $pc=0; } $dc=$c["domaincount"]; $mc=$c["mailcount"]; $mlc=$c["mailmancount"]; echo "</td><td>$dc</td><td>$mc</td><td>$mlc</td><td"; if ($mode!=2) echo " style=\"text-align: right\""; echo ">"; if ($mode==0) { echo sprintf("%.1f", $webspace['size'])." ".$webspace['unit']; } elseif ($mode==1) { echo sprintf("%.1f",$pc)." %"; } else { $quota->quota_displaybar($pc); } echo "</td><td"; if ($mode!=2) echo " style=\"text-align: right\""; echo ">"; // Mail space quota if ($totalmail) $pc=intval(100*$ms/$totalmail); else $pc=0; if ($mode==0) { echo sprintf("%.1f", $mailsize['size'])." ".$mailsize['unit']; } elseif ($mode==1) { echo sprintf("%.1f",$pc)." %"; } else { $quota->quota_displaybar($pc); } echo "</td><td"; if ($mode!=2) echo " style=\"text-align: right\""; echo ">"; // Mailman space quota if ($totallist) $pc=intval(100*$mls/$totallist); else $pc=0; if ($mode==0) { echo sprintf("%.1f", $mailmansize['size'])." ".$mailmansize['unit']; } elseif ($mode==1) { echo sprintf("%.1f",$pc)." %"; } else { $quota->quota_displaybar($pc); } echo "</td><td"; if ($mode!=2) echo " style=\"text-align: right\""; echo ">"; // MySQL db space $ds = $c["dbsize"]; $dbsize=$quota->get_size_unit($ds); if ($totaldb) $pc=intval(100*$ds/$totaldb); else $pc=0; if ($mode==0) { echo sprintf("%.1f", $dbsize['size'])." ".$dbsize['unit']; } elseif ($mode==1) { echo sprintf("%.1f",$pc)." %"; } else { $quota->quota_displaybar($pc); } echo "</td><td"; if ($mode!=2) echo " style=\"text-align: right\""; echo ">"; // Total space $ts=$c["totalsize"]; $totalsize=$quota->get_size_unit($ts * 1024); if ($mode==0) { echo sprintf("%.1f", $totalsize['size'])." ".$totalsize['unit']; } elseif ($mode==1) { echo sprintf("%.1f",(100*$ts/$totaltotal))." %"; } else { if ($totaltotal) { $pc=intval(100*$ts/$totaltotal); } else { $pc=0; } $quota->quota_displaybar($pc); } echo "</td>"; echo "</tr>"; } ?> </tbody> </table> </div> </center> <?php } else { // Display only ONE accoutn $oneuser_ok = false; if ($cuid != 2000) { $c = $admin->get($usr); $mcreator = $admin->get_creator($c['uid']); if ($mcreator['uid'] == $cuid) { $oneuser_ok = true; } } else { $c = $admin->get($usr); if ($c != false) { $oneuser_ok = true; } } if ($oneuser_ok) { // quotas_oneuser.php will used prefilled $c define("QUOTASONE","1"); require_once("quotas_oneuser.php"); } } // endif only one account ?> <?php include_once("foot.php"); ?>