#!/usr/bin/php
<?php

	//this script requires Dovecot-IMAP and Dovecot-LDA

	function genquota($email)
	{
		global $ini;

		$mailuser=$ini['dovecot']['mailuser'];

		if (array_key_exists('dovecot',$ini) && array_key_exists('chrdir',$ini['dovecot']) && $ini['dovecot']['chrdir']!="")
		{
			$CHRSU='/usr/sbin/chroot --userspec='.$mailuser.' '.$ini['dovecot']['chrdir'];
			$CBRK='';
		} else
		{
			$CHRSU='su '.$mailuser.' -p -c';
			$CBRK='"';
		}

		//dovecot version info (default: 2.x)
		if (array_key_exists('dovecot',$ini) && array_key_exists('version',$ini['dovecot']) && $ini['dovecot']['version']=="1")
		{
			system("echo \"x GETQUOTAROOT Inbox\" | USER=\"".$email."\" ".$CHRSU." ".$CBRK."/usr/sbin/dovecot --exec-mail imap".$CBRK." >/dev/null 2>&1");
		} else
		{
			system("echo \"x GETQUOTAROOT Inbox\" | USER=\"".$email."\" ".$CHRSU." ".$CBRK."/usr/lib/dovecot/imap -u $email".$CBRK." >/dev/null 2>&1");
		}
	}

	function purgeqf($dir)
	{
		$qf = $dir."/maildirsize";
		if (file_exists($qf))
		{
			if (filemtime($qf) < time() - 604800)
			{
				//echo "[deleting $qf]\n";
				unlink($qf);
			}
		}
	}

########################################################################################

/// init
	global $ini;
	global $node;

	require(dirname(__FILE__)."/../include/functions.php");
	init();

	if (get_ini_opt('cron','refresh-maildirquota') === '0') { exit(0); }

	check_live();

	$chrdir='';

	if (array_key_exists('chrdir',$ini['dovecot']))
	{
		$chrdir=$ini['dovecot']['chrdir'];
	}

	$sql="SELECT CONCAT(mail_users.name,'@',IF(mail_users.hostid IS NULL,\"\",CONCAT(dom_host.host, \".\")),domain.name) AS email,
		CONCAT(IF(mail_users.hostid IS NULL,\"\",CONCAT(dom_host.host, \".\")),domain.name,\"/\",mail_users.name) AS userdir
		FROM `mail_users`
		LEFT JOIN domain ON mail_users.domainid=domain.id
		LEFT JOIN dom_host ON mail_users.hostid=dom_host.id
		LEFT JOIN client ON domain.clientid=client.id
		WHERE mail_users.active=1 AND domain.active=1 AND client.active=1;
	";

	$res=DBquery($sql);

	while ($srow=$res->fetch_assoc())
	{
		if (array_key_exists('mailmeta',$ini['dovecot']))
		{
			$maildir=$chrdir.$ini['dovecot']['mailmeta']."/".$srow['userdir']."/Maildir";
		}
		else
		{
			$maildir=$chrdir.$ini['global']['mailroot']."/".$srow['userdir']."/Maildir";
		}

		$email=$srow['email'];

		if (file_exists($maildir))
		{
			//echo "$email - $maildir\n";

			purgeqf($maildir);
			genquota($email);
		}
	}

	DBclose();

?>
