<?php

require_once('language_parser.class.php');
require_once('locale.class.php');

session_start();

$p = &new language_parser($_SESSION['locale']->encoding_code);

$result = $p->setInputFile('locale/'. $_SESSION['locale']->language_code .'/lang.xml');
$result = $p->parse();

$devicepath = (isset($_POST['path']) ? $_POST['path'].'/devices' : NULL);
$zonepath   = (isset($_POST['path']) ? $_POST['path'].'/zones' : NULL);

require_once('reference.class.php');
$ref = new Reference;
require_once('device.class.php');
$devices = new Devices;
require_once('zone.class.php');
$zones = new Zones;
require_once('cmipp2.class.php');
$cmipp2 = new cmIpp2;
require_once('message.class.php');
$message = new Message;
require_once('site.class.php');
$site = new Site;

$devices->readinDevices($devicepath);
$zones->readinZones($zonepath,false);

header('Content-type: text/plain;charset=UTF-8');

function h_rule($s,$c) {
	$l = 80;
	$s = " $s ";
	$dl = ($l - strlen($s)) / 2;
	$d = str_pad('',$dl,$c);
	return( str_pad($d.$s.$d,$l,$c) );
}

$dt = array();

$dt[] = array(
	ADDRESS,
	TYPE,
	STATUS,
	NAME
);
$dt[] = array(
	'--',
	'--',
	'--',
	'--'
);

$devices->getCurrentStatus();
foreach($devices->device as $n => $a) {
	if($a->nAddr == -1) {
		continue;
	}
	$dt[] = array(
		@$a->nAddr,
		@$ref->deviceString[$a->ftype],
		@implode('<br/>',(explode('|',(@$ref->deviceStatusString($a->devStatus))))),
		@$a->tagName
	);
}

$dt_pad = array();
foreach($dt as $i=>$v) {
	foreach($v as $j=>$vv) {
		if(strcmp($vv,'-1') === 0 || strcmp($vv,'NA') === 0) {
			$dt[$i][$j] = $vv = '';
		}
		@$dt_pad[$j] = max($dt_pad[$j],strlen($vv));
	}
}
foreach($dt as $i=>$v) {
	$p = $i==1 ? '-' : ' ';
	foreach($v as $j=>$vv) {
		@$dt[$i][$j] = str_pad($vv,$dt_pad[$j]+2,$p);
	}
}


$zt = array();
foreach($zones->zoneFile as $zr => $zf) {
	
	$r = array();
	$r[0] = array(
		array( NAME, $zones->zoneName($zr) ),
		array( COMMENT, $zones->zoneComment($zr) ),
		array( STATE, $zones->zoneStateString($zr) )
	);
	$r[1] = array();
	$r[1][] = array(
		ADDRESS,
		DEVICE,
		ALARM_TYPE,
		/* TRANSLATOR: Short for Cable ID */ CABLE,
		/* TRANSLATOR: Short for Start Subcell */ START,
		/* TRANSLATOR: Short for End Subcell */ END,
		/* TRANSLATOR: Short for Relay Number */ RELAY
	);
	$r[1][] = array(
		'--',
		'--',
		'--',
		'--',
		'--',
		'--',
		'--'
	);
	foreach( $zf->input as $n=>$ir ) {
		if(!$zones->inputIsset($zr,$n)) {
			continue;
		}
		$r[1][] = array(
			@$zones->inputNodeAddr($zr,$n),
			@$zones->inputDeviceType($zr,$n),
			@$zones->inputTypeString($zr,$n),
			(@$zones->inputCableIdHasvalue($zr,$n) ? @$zones->inputCableIdString($zr,$n) : ''),
			(@$zones->inputStartSubcellHasvalue($zr,$n) ? @$zones->inputStartSubcell($zr,$n) : ''),
			(@$zones->inputEndSubcellHasvalue($zr,$n) ? @$zones->inputEndSubcell($zr,$n) : ''),
			(@$zones->inputRelayNumberHasvalue($zr,$n) ? @$zones->inputRelayNumber($zr,$n) : '')
		);
	}
	$r[2] = array();
	$r[2][] = array(
		ADDRESS,
		DEVICE,
		RELAY
	);
	$r[2][] = array(
		'--',
		'--',
		'--'
	);
	foreach( $zf->relay_out as $n=>$ir ) {
		if(!$zones->outputIsset($zr,$n)) {
			continue;
		}
		$r[2][] = array(
			$zones->outputNodeAddress($zr,$n),
			$zones->outputDeviceTypeString($zr,$n),
			$zones->outputRelayNumber($zr,$n)
		);
	}
	$zt[] = $r;
}
$zt_pad = array();
foreach($zt as $i=>$v) {
	foreach($v as $j=>$vv) {
		foreach($vv as $k=>$vvv) {
			foreach($vvv as $m=>$vvvv) {
				if(strcmp($vvvv,'-1') === 0 || strcmp($vvvv,'NA') === 0) {
					$zt[$i][$j][$k][$m] = $vvvv = '';
				}
				@$zt_pad[$j][$m] = max($zt_pad[$j][$m],strlen($zt[$i][$j][$k][$m]));
			}
		}
	}
}
foreach($zt as $i=>$v) {
	foreach($v as $j=>$vv) {
		foreach($vv as $k=>$vvv) {
			foreach($vvv as $m=>$vvvv) {
				$p = strlen($vvvv) === 2 && strpos('--',$vvvv) === 0 ? '-' : ' ';
				@$zt[$i][$j][$k][$m] = str_pad($vvvv,$zt_pad[$j][$m]+2,$p);
			}
		}
	}
}

?>

<? if(isset($_POST['path'])): ?> 


<?= h_rule('%','%') ?> 
<?= h_rule(BACKUP_FILE_ZONE_REPORT,'%') ?> 
<?= h_rule('%','%') ?> 

<? endif ?>
<?= h_rule(CM_II,'*') ?> 

<?= /* TRANSLATOR: the version or part number of the CM-II */  PART_NUMBER ?>: <?=$_SESSION['device_version']?> 
<?= MAC ?>: <? system("ifconfig | grep eth0 | awk '{print $5}'"); ?>
<?= NAME ?>: <?= $site->siteName ?> 



<?= h_rule('*** '.DEVICE_RECORDS.' ***','=') ?>

<?	foreach($dt as $i=>$v): ?>
<?		foreach($v as $j=>$vv): ?>
<?			print($vv) ?>
<?	 	endforeach ?>

<?	endforeach ?> 



<?= h_rule('*** '.ZONE_RECORDS.' ***','=') ?>

<?	foreach($zt as $i=>$v): ?>

<?= h_rule(/* TRANSLATOR: Table Header before all the fields for one zone record */ ZONE_RECORD,'=') ?>

<? 		foreach($v as $j=>$vv): ?>
<?		switch($j): ?>
<?		case '1': ?>

<?= h_rule(ASSIGNED_INPUTS,'-') ?>

<?		break; ?>
<?		case '2': ?>

<?= h_rule(ASSIGNED_OUTPUTS,'-') ?>

<?		endswitch ?>
<? 			foreach($vv as $k=>$vvv): ?>
<?				foreach($vvv as $m=>$vvvv): ?>
<?					print($vvvv); ?>
<?				endforeach ?>

<?			endforeach ?>
<?		endforeach ?>


<?	endforeach ?>



