<?php
@session_start();
require_once('Smarty/Smarty.class.php');
require_once('FlowChart.class.php');
// Extend the FloeChart class to change the root dir for smarty
class HelpDeskFlowChart extends FlowChart {
var $BaseDir = "/var/www/helpdesk/smarty";
}
class Helpdesk {
// Storage for the flowchart
var $Flowchart;
// Database setup
var $MySQLHost = 'localhost';
var $MySQLUser = 'helpdesk';
var $MySQLPass = 'password';
var $MySQLDatabase = 'Helpdesk';
function Helpdesk () {
$this->_MySQL = mysql_connect($this->MySQLHost,$this->MySQLUser,$this->MySQLPass);
mysql_select_db($this->MySQLDatabase);
// Cheating - smarty is already loaded in flowchart
$this->Flowchart = new HelpDeskFlowChart();
$this->DoTickSheet ();
}
function DoTickSheet () {
if ($this->GetUsername()) {
$this->AssignVar('Username',$_SESSION['Helpdesk']['Username']);
if ($this->DisplayDetails()) {
if ($this->Flowchart->Run()) {
if ($this->GetComments()) {
$this->SendEmail();
}
}
}
} else {
$this->Flowchart->Smarty->display('username.tpl');
}
}
function AssignVar ($Varname,$Varvalue) {
//Cheating function to cut back on typing
$this->Flowchart->Smarty->assign($Varname,$Varvalue);
}
function GetUsername () {
if (!isset($_SESSION['Helpdesk']['Username'])) {
if (isset($_POST['Submit']) && isset($_POST['Username'])) {
if ($_POST['Username'] != 'username@isp.com' && preg_match("/^[A-z0-9][\w\.-]*@[A-z0-9][\w\-\.]+\.[A-z0-9]{2,6}$/",$_POST['Username'])) {
$_SESSION['Helpdesk']['Username'] = $_POST['Username'];
$_SESSION['Helpdesk']['CallStartTime'] = time();
} else {
$this->AssignVar('Error','That doesn\'t appear to be a valid username');
}
}
if (!isset($_SESSION['Helpdesk']['Username'])) {
return false;
}
}
return true;
}
function Cleanup() {
unset($_SESSION['Helpdesk']);
}
function GetComments() {
if (!isset($_SESSION['Helpdesk']['Comments'])) {
if (!isset($_POST['Comments'])) {
$this->Flowchart->Smarty->display('comments.tpl');
return false;
} else {
$_SESSION['Helpdesk']['Comments'] = $_POST['Comments'];
}
}
return true;
}
function SendEmail() {
echo "Ticksheet completed<br />\n<pre>";
$History = $this->Flowchart->GetHistory();
print 'Call taken '.date('d-m-Y H:i:s')."\n";
print 'Username: '.$_SESSION['Helpdesk']['Username']."\n\n";
print "Time taken: ".(time() - $_SESSION['Helpdesk']['CallStartTime'])." seconds\n\n";
foreach ($History as $Name=>$Value) {
print $Value['Question'].' -> '.$Value['SelectedValue']."\n";
}
print "\nComments:\n";
print $_SESSION['Helpdesk']['Comments']."\n";
if ($this->Flowchart->EndType == 4) {
print "\nThis call has been flagged for further investiagaion\n";
}
print "</pre>";
print '<br /><a href="index.php"> Take new call </a>';
}
}
$Helpdesk = new Helpdesk();
|