Example #1
0
 public function execute()
 {
     global $gvOfficeCode;
     $deskList = Desk::fromDatabaseCompleteList();
     $content = array();
     if (!$deskList) {
         $content['ErrorCode'] = "AE004";
         $content['ErrorMsg'] = "No desks in this office";
         return $content;
     }
     $content['OfficeCode'] = $gvOfficeCode;
     $content['NumDesks'] = count($deskList);
     $content['Desks'] = array();
     foreach ($deskList as $desk) {
         if ($desk->getOpCode() != null) {
             $ticket = Ticket::fromDatabaseByDesk($desk->getNumber());
             if ($ticket) {
                 $ticket = $ticket->getTextString();
             } else {
                 $ticket = '';
             }
         } else {
             $ticket = '';
         }
         $deskObj = array('Number' => $desk->getNumber(), 'Ticket' => $ticket);
         $content['Desks'][] = $deskObj;
     }
     return $content;
 }
Example #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;
     }
 }
Example #3
0
 private function removeDesk()
 {
     $desk_id = $_GET['desk_id'];
     $desk = Desk::fromDatabaseById($desk_id);
     if ($desk) {
         if ($desk->isOpen()) {
             return 'deskOpen';
         }
         if ($desk->delete()) {
             return 'true';
         }
     }
     return 'false';
 }
Example #4
0
 public static function loginOperator($code)
 {
     $_SESSION['userLevel'] = Page::OPERATOR_USER;
     $_SESSION['op_code'] = $code;
     // Determine desk number
     $desk_ip_address = $_SERVER['REMOTE_ADDR'];
     $desk = Desk::fromDatabaseByIpAddress($desk_ip_address);
     if (!$desk) {
         session_destroy();
         throw new UnknownDeskException();
     }
     $_SESSION['desk_number'] = $desk->getNumber();
     $desk->updateLastActivityTime();
     $desk->setOpCode($code);
     $desk->save();
 }
Example #5
0
    private function getTableBody()
    {
        global $gvPath;
        $desks = Desk::fromDatabaseCompleteList();
        if (count($desks) === 0) {
            return '<tr><td colspan="3" class="noEntry">Nessuno sportello</td></tr>';
        }
        $ret = "";
        foreach ($desks as $desk) {
            $ret .= <<<EOS
<tr>
        <td>{$desk->getNumber()}</td>
        <td>{$desk->getIpAddress()}</td>
\t<td><a href="{$gvPath}/application/adminDeskEdit?desk_id={$desk->getId()}" class="tdEditLink">Modifica</a>&nbsp;&nbsp;
        <a class="ajaxRemove" href="{$gvPath}/ajax/removeRecord?desk_id={$desk->getId()}">Rimuovi</a></td>
</tr>
EOS;
        }
        return $ret;
    }
Example #6
0
 public function testGetHostname()
 {
     $hostname = Desk::getHostname('foobar');
     $this->assertSame('https://foobar.desk.com', $hostname);
 }
Example #7
0
 private function getDesk()
 {
     if (!$this->desk) {
         if (isset($_SESSION['desk'])) {
             $this->desk = $_SESSION['desk'];
         } else {
             if (isset($_SESSION['desk_number'])) {
                 $this->desk = Desk::fromDatabaseByNumber($_SESSION['desk_number']);
             } else {
                 throw new Exception("Unable to retrieve operator's desk.");
             }
         }
     }
     return $this->desk;
 }
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;
        }
        // Desk is closing send empty stuff
        $output->setContent(array('status' => 'changed', 'code' => '', 'number' => ''));
        $output->output();
        die;
    }
    if ($currentTicket->getCode() != $pageTicketCode || $currentTicket->getNumber() != $pageTicketNumber) {
        // New ticket called
        $output->setContent(array('status' => 'changed', 'code' => $currentTicket->getCode(), 'number' => $currentTicket->getNumber()));
<?php

include '../Setup.php';
$desks = Desk::fromDatabaseCompleteList();
foreach ($desks as $desk) {
    if (time() - $desk->getLastActivityTime() >= $gvSessionTimeout) {
        $desk->setLastActivityTime(null);
        $desk->setOpCode(null);
        $desk->save();
    }
}
Database::getConnection()->commit();
Example #10
0
 private function getCombobox()
 {
     $ret = '<select name="dev_desk_number" id="dev_desk_number">';
     $ret .= PHP_EOL . '<option value="0">Display di sala</option>';
     foreach (Desk::getUsedDeskNumbers() as $num) {
         $selected = $this->dev_desk_number === $num ? ' selected' : '';
         $ret .= "\n<option value=\"{$num}\"{$selected}>Display sportello {$num}</option>";
     }
     $ret .= "\n</select>";
     return $ret;
 }
Example #11
0
<?php

set_exception_handler(function (\Exception $e) {
    echo $e->getMessage() . "\n";
    exit(1);
});
foreach (glob('src/*.php') as $file) {
    require_once $file;
}
$desk = new Desk();
$args = $argv;
array_shift($args);
foreach ($args as $move) {
    $desk->move($move);
}
$desk->dump();
Example #12
0
<?php

require_once __DIR__ . '/vendor/autoload.php';
$desk = new \Desk();
$desk->addCell(new \Cell(3, 3, true));
$desk->addCell(new \Cell(3, 4, true));
$desk->addCell(new \Cell(3, 5, true));
$desk->addCell(new \Cell(5, 5, true));
$desk->addCell(new \Cell(6, 6, true));
$desk->addCell(new \Cell(6, 7, true));
$desk->addCell(new \Cell(7, 7, true));
$desk->addCell(new \Cell(6, 8, true));
$desk->addCell(new \Cell(6, 9, true));
$desk->addCell(new \Cell(2, 9, true));
$desk->addCell(new \Cell(3, 9, true));
$desk->addCell(new \Cell(5, 9, true));
$desk->addCell(new \Cell(9, 9, true));
$desk->addCell(new \Cell(9, 10, true));
$desk->addCell(new \Cell(10, 10, true));
$desk->addCell(new \Cell(13, 14, true));
$desk->addCell(new \Cell(13, 13, true));
$desk->addCell(new \Cell(13, 12, true));
$rules = new \Rules();
$renderer = new \Renderer();
$game = new \Game($desk, $rules, $renderer);
$game->fetchGameStateInOutput();
for ($i = 1; $i < 100; $i++) {
    $game->makeGameStep();
    $game->fetchGameStateInOutput();
}
Example #13
0
 public static function clearTableForLogout($op_code, $desk = null, $ticket = null)
 {
     if (!$desk) {
         // Load desk
         $desk = Desk::fromDatabaseByOperator($op_code);
     }
     if (!$ticket) {
         // Load ticket
         $ticket = Ticket::fromDatabaseByOperator($op_code);
     }
     if ($desk) {
         $desk->setLastActivityTime(null);
         $desk->setOpCode(null);
         $desk->save();
     }
     if ($ticket) {
         $stats = TicketStats::newFromTicket($ticket);
         $ticket->delete();
         $stats->save();
     }
 }
Example #14
0
 public function fetchGameStateInOutput()
 {
     $this->renderer->renderCells($this->desk->getDeskWithCells());
 }