MyQ X Server

Esempi di azioni di script PHP

In questa sezione sono disponibili esempi che coprono una varietà di opzioni di gestione dei lavori. Questi esempi dovrebbero fornire un'idea su come utilizzare lo scripting PHP in MyQ. È inoltre possibile sostituire le proprietà e i metodi negli esempi per utilizzarli come elementi costitutivi di script più complessi.

Azioni basate sul numero di pagine
Spostare i lavori di stampa con un numero maggiore di pagine a colori in una coda monocromatica.

PHP
if ($this->colorCount>20) {
 $this->moveToQueue("ForceMonochrome");
 }

Eliminare i lavori di stampa con un numero elevato di pagine.

PHP
if ($this->pageCount>500) {
 $this->delete();
 }


Azioni basate sulle dimensioni del lavoro
Spostare i lavori di grandi dimensioni in una coda dedicata.

PHP
if ($this->dataSize>1000000) {
 $this->moveToQueue("LargeJobs");
 }

Eliminare i lavori di grandi dimensioni.

PHP
if ($this->dataSize>5000000) {
 $this->delete();
 }


Azioni basate sul formato della
carta Spostare i lavori di Stampa con formato carta A3 in una coda dedicata.

PHP
if ($this->paper==="a3") {
 $this->moveToQueue("LargePaperFormat");
 }


Azioni basate sul proprietario del lavoro
Spostare i lavori di un determinato proprietario in una coda dedicata.

PHP
if ($this->owner->name==="eliot.kate") {
 $this->moveToQueue("EliotKate");
 }

Modifica il proprietario del lavoro.

PHP
if ($this->owner->name==="eliot.kate") {
 $this->owner=MyQ()->getUserByUserName("simon.kate");
 }


Azioni basate sulla proprietà
fronte-retro Spostare i lavori di stampa fronte-retro in una coda fronte-retro.

PHP
if ($this->duplex) {
 $this->moveToQueue("Duplex");
 }

Spostare i lavori di stampa in modalità solo fronte in una coda solo fronte.

PHP
if ($this->duplex===false) {
 $this->moveToQueue("Simplex");
 }


Azioni basate sulla proprietà del colore
Spostare i lavori di stampa a colori in una coda a colori.

PHP
if ($this->color) {
 $this->moveToQueue("Color");
 }


Azioni basate sul nome del lavoro o sull'applicazione di origine
Spostare i lavori di stampa in MS Word in una coda dedicata.

PHP
if (strpos($this->name,"Microsoft Word")!==false) {
 $this->moveToQueue("MSWord");
 }

Elimina i lavori di stampa inviati da Facebook.

PHP
if (strpos($this->name,'Facebook')!==false) {
 $this->delete();
 }


Azioni basate sui diritti relativi a una coda
Spostare i lavori di Stampa degli utenti che non sono autorizzati a stampare in una coda verso una coda diversa

PHP
if ($this->owner->canPrintToQueue("Color")===false) {
 $this->moveToQueue("Monochrome");
 }


Azioni basate sull'appartenenza a un gruppo
Spostare i lavori di Stampa inviati dai membri di un gruppo in una coda dedicata

PHP
if ($this->owner->hasGroup("Clerks")) {
 $this->moveToQueue("Clerks");
 }


Azioni basate sul PDL del lavoro
Spostare tutti i lavori di stampa inviati in un determinato PDL in una coda dedicata

PHP
if ($this->lang===0) {
 $this->moveToQueue("UnknownPDL");
 }


Invio di messaggi di log personalizzati a MyQ
Invia un messaggio di informazioni di log a MyQ Log

PHP
MyQ()->logInfo("This message appears in the MyQ log.");


Azioni complesse

Se il numero di pagine moltiplicato per il numero di copie supera un determinato numero, eliminare il lavoro di Stampa e informare l'utente

PHP
// get the number of pages and the number of copies
$pages_number = $this->pageCount; $copies_number = $this->copies;
// if total (pagescopies) exceeds 500, delete the job and notify its owner
if ( $pages_number * $copies_number>500) {
 $this->delete(); $this->owner->sendNotification("error","Job refused", "Cannot
 print jobs exceeding 500 pages.");
}


Spostare il lavoro in una coda, se consentito

PHP
if ($this->color) {
  if ($this->owner->canPrintToQueue("JPS2")) {
     $this->moveToQueue("JPS2");
  } else {
     $this->owner->sendEmail("Job error", "Color printing denied");
     $this->delete();
  }
}


Spostare il lavoro nella prima coda personale disponibile

PHP
// get all user's queues sorted by priority
$personalQueues = $this->owner->personalQueues;
 
// loop them
foreach ($personalQueues as $q) {
    // skip queue if no printer is available
    if ($q->isAnyPrinterAvailable() === false) {
        continue;
    }
 
    // queue printer is available, move job to queue
    $this->moveToQueue($q->name);
    // job is moved, stop the loop
    break;
}