#!/usr/bin/php
<?php
/*
  vim: set expandtab tabstop=4 softtabstop=4 shiftwidth=4:
  Codificación: UTF-8
  +----------------------------------------------------------------------+
  | Elastix version 2.0                                                  |
  | http://www.elastix.org                                               |
  +----------------------------------------------------------------------+
  | Copyright (c) 2006 Palosanto Solutions S. A.                         |
  +----------------------------------------------------------------------+
  | Cdla. Nueva Kennedy Calle E 222 y 9na. Este                          |
  | Telfs. 2283-268, 2294-440, 2284-356                                  |
  | Guayaquil - Ecuador                                                  |
  | http://www.palosanto.com                                             |
  +----------------------------------------------------------------------+
  | The contents of this file are subject to the General Public License  |
  | (GPL) Version 2 (the "License"); you may not use this file except in |
  | compliance with the License. You may obtain a copy of the License at |
  | http://www.opensource.org/licenses/gpl-license.php                   |
  |                                                                      |
  | Software distributed under the License is distributed on an "AS IS"  |
  | basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See  |
  | the License for the specific language governing rights and           |
  | limitations under the License.                                       |
  +----------------------------------------------------------------------+
  | The Original Code is: Elastix Open Source.                           |
  | The Initial Developer of the Original Code is PaloSanto Solutions    |
  +----------------------------------------------------------------------+
  $Id: emailaccount.php,v 1.1 2012/03/21 11:32:00 rocio Exp $*/

require_once 'Console/Getopt.php';

$opt = Console_Getopt::getopt($argv, '', array(
    'reconstruct_mailbox',  // Repair mailbox damage, cyrus function
    'mailbox=',    // mailbox that must be reconstructed
));

if (PEAR::isError($opt)) error_exit($opt->getMessage()."\n");

foreach ($opt[0] as $option) switch ($option[0]) {
	case '--reconstruct_mailbox':
		exit(reconstruct_mailbox($opt) ? 0 : 1);
}


error_exit("No action specified (--reconstruct_mailbox)\n");


function error_exit($sMsg, $errorcode = 1)
{
    fwrite(STDERR, $sMsg);
    exit($errorcode);
}


function reconstruct_mailbox($opt){
	$bExito = TRUE;
	$output = $ret = null;
	$username =  NULL;
    foreach ($opt[0] as $option) switch ($option[0]) {
		case '--mailbox':
			$username = $option[1];
			break;
	}

	if(is_null($username)){
		$bExito = FALSE;
        fprintf(STDERR, "ERR: mailbox must be specified\n");
	}else{
		$mailbox = escapeshellarg($username);
		exec("su - cyrus -c '/usr/lib/cyrus-imapd/reconstruct -r -f user/$mailbox'", $output, $ret);
		if($ret==0){
			exec("/etc/init.d/cyrus-imapd restart", $output, $ret);
		}
		if($ret==0){
			sleep(8);
		}
	}

	return ($ret == 0);
}
?>