Beispiel #1
0
 public function getOutput()
 {
     global $gvPath;
     $ip = $_SERVER['REMOTE_ADDR'];
     //Check whether the address is registered
     $device = Device::fromDatabaseByIpAddress($ip);
     if (!$device) {
         $page = new WebPageOutput();
         $page->setHtmlPageTitle('Dispositivo non riconosciuto');
         $page->addHtmlHeader('<meta http-equiv="refresh" content="5">');
         $page->setHtmlBodyContent($this->getPageContentForUnknown($ip));
         return $page;
     }
     if ((int) $device->getDeskNumber() === 0) {
         // DisplayMain
         $td_code = $device->getTdCode();
         if ($td_code) {
             $td_code = "?td_code=" . urlencode($td_code);
         } else {
             $td_code = '';
         }
         $redirect = new RedirectOutput("{$gvPath}/device/main{$td_code}");
         return $redirect;
     }
     $num = $device->getDeskNumber();
     $redirect = new RedirectOutput("{$gvPath}/device/desk?desk_number={$num}");
     return $redirect;
 }
Beispiel #2
0
 public function execute()
 {
     global $gvPath;
     // Trim data
     $this->desk_number = trim($this->desk_number);
     $this->desk_ip_address = trim($this->desk_ip_address);
     // Data validation
     if ($this->desk_number === '' && $this->desk_ip_address === '') {
         $this->message = "Errore: tutti i campi sono obbligatori.";
         return true;
     }
     // desk_number should contain... numbers
     if (preg_match('/^[1-9][0-9]*$/', $this->desk_number) !== 1) {
         $this->message = "Errore: il numero dello sportello non è valido.";
         return true;
     }
     // Check ip_address
     if (!filter_var($this->desk_ip_address, FILTER_VALIDATE_IP)) {
         $this->message = "Errore: l'indirizzo IP non è valido.";
         return true;
     }
     $desk = Desk::fromDatabaseByNumber($this->desk_number);
     if ($desk && ($this->desk_id === 0 || $this->desk_id !== (int) $desk->getId())) {
         $this->message = "Errore: il numero sportello non è disponibile.";
         return true;
     }
     unset($desk);
     // Check ip is not taken
     $desk = Desk::fromDatabaseByIpAddress($this->desk_ip_address);
     $device = Device::fromDatabaseByIpAddress($this->desk_ip_address);
     if ($device || $desk && ($this->desk_id === 0 || $this->desk_id !== (int) $desk->getId())) {
         $this->message = "Errore: l'indirizzo IP è gia stato assegnato.";
         return true;
     }
     unset($desk);
     if ($this->desk_id === 0) {
         $desk = Desk::newRecord();
     } else {
         $desk = Desk::fromDatabaseById($this->desk_id);
     }
     if ($desk->isOpen()) {
         $this->message = "Errore: il desk è aperto. Chiudere la sessione prima di continuare.";
         return true;
     }
     $desk->setNumber($this->desk_number);
     $desk->setIpAddress($this->desk_ip_address);
     if ($desk->save()) {
         gfSetDelayedMsg('Operazione effettuata correttamente', 'Ok');
         $redirect = new RedirectOutput("{$gvPath}/application/adminDeskList");
         return $redirect;
     } else {
         $this->message = "Impossibile salvare le modifiche. Ritentare in seguito.";
         return true;
     }
 }
function main()
{
    // Check whether this device needs to be redirected somewhere
    $dev = Device::fromDatabaseByIpAddress($_SERVER['REMOTE_ADDR']);
    if ($content = getContentForRedirect($dev, 0)) {
        $output = new JsonOutput();
        $output->setContent($content);
        $output->output();
        exit;
    }
    $td_code = gfGetVar('td_code', '');
    $lastTicket = gfGetVar('lastTicket', 'A000');
    $content = null;
    $startTime = time();
    while (time() - $startTime < 120) {
        sleep(1);
        // Check every second
        $currentState = DisplayMain::fromDatabaseCompleteList($td_code);
        if (count($currentState) == 0) {
            continue;
        }
        if ($lastTicket != $currentState[0]->getTicket()) {
            // Something changed, compute new tickets
            $newTickets = array($currentState[0]);
            $i = 1;
            while ($i < count($currentState) && $i < 8 && $lastTicket != $currentState[$i]->getTicket()) {
                $newTickets[] = $currentState[$i];
                $i++;
            }
            $content = array('status' => 'changed', 'count' => count($newTickets), 'entries' => $newTickets);
            break;
        }
        unset($currentState);
    }
    // End while
    if (!$content) {
        // Polling wait expired
        $content = array('status' => 'unchanged');
    }
    $output = new JsonOutput();
    $output->setContent($content);
    $output->output();
}
<?php

include '../includes/Setup.php';
include './displayFunctions.php';
// Do not lock tables
Database::lockTables(false);
$deskNumber = gfGetVar('deskNumber');
// Check whether this device needs to be redirected somewhere
$dev = Device::fromDatabaseByIpAddress($_SERVER['REMOTE_ADDR']);
if ($content = getContentForRedirect($dev, (int) $deskNumber)) {
    $output = new JsonOutput();
    $output->setContent($content);
    $output->output();
    exit;
}
// Response is json
$output = new JsonOutput();
$pageTicketCode = gfGetVar('ticketCode', '');
$pageTicketNumber = gfGetVar('ticketNumber', '');
$startTime = time();
while (time() - $startTime < 120) {
    sleep(1);
    // Check every second
    // Update table for session timed out
    $desk = Desk::fromDatabaseByNumber($deskNumber);
    $desk->isOpen();
    $currentTicket = Ticket::fromDatabaseByDesk($deskNumber);
    if (!$currentTicket) {
        if ($pageTicketCode == '' && $pageTicketNumber == '') {
            // Still no ticket
            continue;
Beispiel #5
0
 public function execute()
 {
     global $gvPath;
     // Trim data
     $this->dev_ip_address = trim($this->dev_ip_address);
     $this->dev_desk_number = trim($this->dev_desk_number);
     // Data validation
     if ($this->dev_ip_address === '' || $this->dev_desk_number === '') {
         $this->message = "Errore: tutti i campi sono obbligatori.";
         return true;
     }
     // dev_desk_number should contain... numbers
     if (preg_match('/^(0|[1-9][0-9]*)$/', $this->dev_desk_number) !== 1) {
         $this->message = "Errore: il numero dello sportello non è valido.";
         return true;
     }
     // Check ip_address
     if (!filter_var($this->dev_ip_address, FILTER_VALIDATE_IP)) {
         $this->message = "Errore: l'indirizzo IP non è valido.";
         return true;
     }
     // Check if desk number really exists
     if ((int) $this->dev_desk_number !== 0) {
         $desk = Desk::fromDatabaseByNumber($this->dev_desk_number);
         if (!$desk) {
             $this->message = "Errore: lo sportello specificato non esiste.";
             return true;
         }
         unset($desk);
     }
     // Check tdCode exists and active
     if ($this->dev_td_code) {
         $td = TopicalDomain::fromDatabaseByCode($this->dev_td_code);
         if (!$td || !$td->getActive()) {
             $this->message = "Errore: l'area tematica selezionata non è disponibile.";
             return true;
         }
     }
     // Check ip is not taken
     $device = Device::fromDatabaseByIpAddress($this->dev_ip_address);
     $desk = Desk::fromDatabaseByIpAddress($this->dev_ip_address);
     if ($desk || $device && ($this->dev_id === 0 || $this->dev_id !== (int) $device->getId())) {
         $this->message = "Errore: l'indirizzo IP è gia stato assegnato.";
         return true;
     }
     unset($device);
     if ($this->dev_id === 0) {
         $device = Device::newRecord();
     } else {
         $device = Device::fromDatabaseById($this->dev_id);
     }
     $device->setIpAddress($this->dev_ip_address);
     $device->setDeskNumber($this->dev_desk_number);
     $device->setTdCode($this->dev_td_code);
     if ($device->save()) {
         gfSetDelayedMsg('Operazione effettuata correttamente', 'Ok');
         $redirect = new RedirectOutput("{$gvPath}/application/adminDeviceList");
         return $redirect;
     } else {
         $this->message = "Impossibile salvare le modifiche. Ritentare in seguito.";
         return true;
     }
 }