#!/usr/bin/php
<?php
# Author: Oliver Skibbe oliskibbe (at) gmail.com
# Desc: Output of ticket total for specific queues and states
# Get a list of valid queues:
# SELECT id,name FROM queue WHERE valid_id = 1;
# Get a list of valid states:
# SELECT id,name FROM ticket_state WHERE valid_id = 1; 
# Date: 2013-04-09
# Version: 1.0
# 
#
#
# set programming lang
putenv('LANG=C');
# Get options
$options = getopt("l:h:w:c:");

function help()
{
        echo "Usage: ".$_SERVER['argv'][0]." -w warn -c crit\n";
        echo "-w warning limit\n";
        echo "-c critical limit\n";
        echo "-l states/queues\n";
        exit(3);
}

if ( $_SERVER['argc'] <= 1 ) {
	help();
}

## initialize variables
$msg = "";
$msgperf = "";
$list = "";
$warn = "";
$crit = "";

for ($i = 1; $i < $_SERVER["argc"]; $i++)
{
	switch($_SERVER["argv"][$i])
	{
		case "-w":
			$warn = $options['w'];
			break;
		case "-c":
			$crit = $options['c'];
			break;
		case "-h":
			help();
			break;
		case "-l":
			$list = $options['l'];
			break;
	}
}

if($list == "" && ($warn == "" || $crit == "" || $warn >= $crit) )
{
	help();
}	

# static vars
## ids (states and queues)
$queue_ids = "42,43,44,48,53,55,68,71,72,77";
$state_ids = "1,4,6,10,12,14,15";

## mysql conn
$mysql_host = "localhost";
$mysql_user = "otrs";
$mysql_pass = "yourpw";
$mysql_db = "otrs";

## query
$sql = "SELECT COUNT(`id`) FROM ticket WHERE `queue_id` IN ($queue_ids) AND `ticket_state_id` IN ($state_ids)";

	$conn = mysql_connect($mysql_host,$mysql_user,$mysql_pass);
	if($conn)
	{
		mysql_select_db($mysql_db,$conn);
		if($list != "")
		{
			if($list == "queues")
			{
				$query = "SELECT `id`,`name` FROM `queue` WHERE `valid_id` = 1";
				$result = mysql_query($query) or die (mysql_error());
				
				while($name = mysql_fetch_assoc($result))
				{
					if(in_array($name['id'],explode(",",$queue_ids))){	
						echo "[x]\t" . $name['id'] . "\t" . $name['name'] . "\n";
					}
					else {
						echo "[]\t". $name['id'] . "\t" . $name['name'] . "\n";
					}
				}
			}
			if($list == "states")
			{
				$query = "SELECT `id`,`name` FROM `ticket_state` WHERE `valid_id` = 1";
		                $result = mysql_query($query) or die (mysql_error());

				while($name = mysql_fetch_assoc($result))
				{
					if(in_array($name['id'],explode(",",$state_ids))){
		                        	echo "[x]\t" . $name['id'] . "\t" . $name['name'] . "\n";
					} else {
						echo "[]\t" . $name['id'] . "\t" . $name['name'] . "\n";
					}
                		}
			}
			exit(0);
		}		
		
		$result = mysql_query($sql,$conn);
		mysql_close($conn);
		if($result) {
			$result = mysql_result($result,0);
			if($result >= $warn)
			{
				if($result >= $crit)
				{
					$msg = "CRITICAL Ticket total is: $result";
					$msgperf = "|open=$result;$warn;$crit";
					$state = 2;
				}
				else
				{
					$msg = "WARNING Ticket total is: $result";
					$msgperf = "|open=$result;$warn;$crit";
					$state = 1;
				}
			}
			else
			{
				$msg = "OK Ticket total is: $result";
				$msgperf = "|open=$result;$warn;$crit";
				$state = 0;
			}
		}
		else
		{
			$msg = "UNKNOWN MYSQL Query failed. Error: " . mysql_error();
			$state = 3;
		}
	}
	else
	{
		$msg = "UNKNOWN MYSQL Connect failed. Error: " . mysql_error();
		$state = 3;
	}

# Output
echo $msg.$msgperf;
exit($state);
?>
