In questa sezione si trovano esempi che coprono una serie di opzioni di gestione dei lavori. Questi esempi dovrebbero dare un'idea di come utilizzare lo scripting PHP in MyQ. È inoltre possibile sostituire le proprietà e i metodi degli esempi per utilizzarli come elementi costitutivi di script più complessi.

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

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

Eliminare i lavori con un numero elevato di pagine.

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

 

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

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

Eliminare i lavori sovradimensionati.

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

 

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

if ($this->paper===6) {
 $this->moveToQueue("LargePaperFormat");
 }
CODE

 

Azioni basate sul proprietario del lavoro
Sposta i lavori di un certo proprietario in una coda dedicata.

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

Cambiare il proprietario del lavoro.

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

 

Azioni basate sulla proprietà duplex
Sposta i lavori duplex in una coda duplex.

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

Sposta i lavori simplex in una coda simplex.

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

 

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

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

 

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

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

Eliminare i lavori inviati da Facebook.

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

 

Azioni basate sui diritti di una coda
Spostare i lavori degli utenti che non sono autorizzati a stampare in una coda in un'altra coda.

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

 

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

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

 

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

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

 

Invio di messaggi di log personalizzati a MyQ
Inviare un messaggio informativo di log a MyQ Log

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

 

Azioni complesse

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

// 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.");
}
CODE

 

Spostare il lavoro in una coda, se consentito.

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

 

Spostare il lavoro alla prima coda personale disponibile

// 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;
}
CODE