hello all
i want to share some modifications i made to roundcube code in order to get quota work .. i made this because i manage a computer with apache (only) and other with smtp and imap (only) and i want the user may be able to see his/her quota
i saw in the code (thanks to Roland Liebl for show me the file) that quota are retrieved via imap .. i don't have quotas via imap but in filesystem and my scenario is a little complex .. well, this changes modify some configuration variables and part of the code to process the quota
[config/main.inc.php]
$rcmail_config['quota'] = array(
'backend' => 'cmd',
'program' => '/usr/bin/ssh -i /usr/local/www/apache22/data/sitios/roundcubemail031/config/ssh_reporte reporte@madara.ipigto.rimed.cu /usr/bin/quota',
'program_parameters' => '-f /srv -v',
'zero_as_unlimited' => TRUE);
[program/steps/mail/func.inc]
function rcmail_quota_content($quota=NULL, $attrib=NULL)
{
global $CONFIG, $IMAP, $COMM_PATH, $RCMAIL;
$display = isset($_SESSION['quota_display']) ? $_SESSION['quota_display'] : '';
$quota = array(
'total' => 0,
'used' => 0,
'percent' => 0,
);
switch ($CONFIG['quota']['backend']) {
case 'imap':
if (empty($quota)) {
if (!$IMAP->get_capability('QUOTA'))
return rcube_label('unknown');
else
$quota = $IMAP->get_quota();
}
break;
case 'cmd':
$user = split("@", $RCMAIL->user->get_username());
exec($CONFIG['quota']['program'] ." ". $CONFIG['quota']['program_parameters'] ." ". $user[0], $result);
list($quota_fs, $quota['used'], $quota_sl, $quota['total']) = preg_split('/ /', trim($result[2]));
if (substr($quota['used'], -1) == '*') { $quota['used'] = substr($quota['used'], 0, -1); }
$quota['percent'] = (($quota['used'] * 100) / $quota['total']);
break;
default:
return rcube_label('unknown');
break;
}
if ($quota && !($quota['total']==0 && $CONFIG['quota']['zero_as_unlimited']))
{
$quota_result = sprintf('%s / %s (%.0f%%)',
show_bytes($quota['used'] * 1024), show_bytes($quota['total'] * 1024),
$quota['percent']);
if ($display == 'image') {
$quota_result = array(
'percent' => $quota['percent'],
'title' => $quota_result,
);
if ($attrib['width'])
$quota_result['width'] = $attrib['width'];
if ($attrib['height'])
$quota_result['height'] = $attrib['height'];
}
}
else
return rcube_label('unlimited');
return $quota_result;
}
i want to ask to roundcube developers to adopt this modifications in order to strengthen the quota retrieval system .. the complete configuration may be as follow:
[config/main.inc.php]
// Quota Retrieval System
$rcmail_config['quota'] = array(
'backend' => 'imap',
'zero_as_unlimited' => TRUE);
$rcmail_config['quota'] = array(
'backend' => 'cmd',
'program' => '/usr/bin/quota',
'program_parameters' => '-f /filesystem -v',
'zero_as_unlimited' => TRUE);
well, that's all