<?php

require_once __DIR__.'/lib/method.php';

class Clean extends Edi\Method
{
	function ediRun ($db)
	{
		$imap = $this->imap;

		$cleanPeriod = $db->getValue ('SELECT clean_period FROM imap_config');

		$deleted = 0;
		$date = new DateTime (NULL);
		$date->sub (new DateInterval ($cleanPeriod));
		$filter = sprintf ('BEFORE "%s"', $date->format('D, j M Y'));

		$folders = [
			 $this->imapConf['success_folder']
			,$this->imapConf['error_folder']
		];

		foreach ($folders as $folder)
		if (imap_reopen ($imap, "{$this->mailbox}$folder"))
		{
			if ($messages = imap_search ($imap, $filter))
			{
				foreach ($messages as $message)
					imap_delete ($imap, $message);

				imap_expunge ($imap);
				$count = count ($messages);
				$deleted += $count;
			}
			else
				$count = 0;

			echo "$count mails deleted from $folder mailbox\n";
		}

		echo "Total $deleted mails deleted\n";

		echo "Deleting records from database\n";
		$db->query ('DELETE FROM message WHERE created < #', [$date]);
		echo "Done\n";
	}
}

