#!/usr/bin/php -q
<?php
/**
 * Process outgoing faxes. Store, convert and send notification emails
 */

require_once('/usr/share/ombutel/www/includes/cli.php');
require_once('send_email.php');

use ombutel\email;
use ombutel\extension;
use ombutel\fax;
use ombutel\fax_settings;
use ombutel\tenant;
use ombutel\settings;
use ombutel\utils;

if($argc != 9) {
	die("$argv[0]: Script usage: <fax_filename> <extension> <user_name> <email> <fax_status> <fax_status_string> <destination> <fax_id>\n");
}

list(, $filename, $extension,
		$user_name, $email, $fax_status,
		$fax_status_msg, $destination, $fax_id) = $argv;

if(($extension = get_extension($extension)) == false) {
	die("$argv[0]: Error: extension $extension doesn't exist.\n");
}

$fax = new fax($fax_id); //fax_id
if($fax->fax_id != null) {
	$fax_settings = new fax_settings(tenant::current()->tenant_id, $extension->extension_id);
	if($fax_settings->fax_setting_id != null) {
		if($fax_settings->fax_send_notify != 'no') {
			if($email !== "none") {
				$from_email = $from_name = null;
				if(($from_address = settings::get('fax', 'from_email')) != "") {
					if(preg_match('/^"(.*)" <(.*)>$/', $from_address, $match)) {
						list( ,$from_name, $from_email) = $match;
					} elseif(preg_match('/^"(.*)"$/', $from_address, $match)) {
						$from_name = $match[1];
					} elseif(preg_match('/^<(.*)>$/', $from_address, $match)) {
						$from_email = $match[1];
					}
				} elseif(($from_email = settings::get('system_misc', 'fromemail')) === "") {
					$from_email = 'no-reply@localhost.localhost';
				}
				send_email($email, prepare_email_subject(), prepare_email(), $from_name, $from_email, null, null, null, null, email::origin());
			}
		}
	}
	$fax->status = $fax_status_msg;
	$fax->date = gmdate("Y-m-d H:i:s");
	$fax->save();
	$fax->clean();
}
@unlink($filename);

function get_extension($extension) {
	return extension::find_by_extension($extension);
}

function prepare_email() {
	global $destination, $fax_status, $fax_status_msg, $extension;

	$timestamp = utils::format_short_datetime(time(), ($extension) ? $extension->user() : null);
	$email_body = array();
	$email_body[] = __("fax.fax_process.email_hi");
	$email_body[] = "\n";
	if(strtolower($fax_status) == "success") {
		$email_body[] = __("fax.fax_process.fax_sending_success", null, $destination, $timestamp);
	} else {
		$email_body[] = __("fax.fax_process.fax_sending_failure", null, $destination, $timestamp);
	}
	$email_body[] = "\n";
	$email_body[] = __("fax.fax_process.fax_details");
	$email_body[] = __("fax.fax_process.destination", null, $destination);
	$email_body[] = __("fax.fax_process.timestamp", null, $timestamp);
	$email_body[] = __("fax.fax_process.status", null, $fax_status_msg);
	$email_body[] = __("fax.fax_process.soruce", null, $extension->extension);
	$email_body[] = "\n\n";
	return implode("\n", $email_body);
}

function prepare_email_subject() {
	global $fax_status;
	if(strtolower($fax_status) == "success") {
		return __('fax.fax_process.subject_success');
	}
	return __('fax.fax_process.subject_failure');
}

?>
