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.
if ($this->colorCount>20) {
$this->moveToQueue("ForceMonochrome");
}
Eliminare i lavori di stampa con un numero elevato di pagine.
if ($this->pageCount>500) {
$this->delete();
}
Azioni basate sulle dimensioni del lavoro
Spostare i lavori di grandi dimensioni in una coda dedicata.
if ($this->dataSize>1000000) {
$this->moveToQueue("LargeJobs");
}
Eliminare i lavori di grandi dimensioni.
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.
if ($this->paper==="a3") {
$this->moveToQueue("LargePaperFormat");
}
Azioni basate sul proprietario del lavoro
Spostare i lavori di un determinato proprietario in una coda dedicata.
if ($this->owner->name==="eliot.kate") {
$this->moveToQueue("EliotKate");
}
Modifica il proprietario del lavoro.
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.
if ($this->duplex) {
$this->moveToQueue("Duplex");
}
Spostare i lavori di stampa in modalità solo fronte in una coda solo fronte.
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.
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.
if (strpos($this->name,"Microsoft Word")!==false) {
$this->moveToQueue("MSWord");
}
Elimina i lavori di stampa inviati da Facebook.
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
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
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
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
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
// 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
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
// 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;
}