Esempi di azioni di script PHP
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");
}
Eliminare i lavori 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 sovradimensionati.
if ($this->dataSize>5000000) {
$this->delete();
}
Azioni basate sul formato della carta
Spostare i lavori con formato carta A3 in una coda dedicata.
if ($this->paper===6) {
$this->moveToQueue("LargePaperFormat");
}
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");
}
Cambiare il proprietario del lavoro.
if ($this->owner->name==="eliot.kate") {
$this->owner=MyQ()->getUserByUserName("simon.kate");
}
Azioni basate sulla proprietà duplex
Sposta i lavori duplex in una coda duplex.
if ($this->duplex) {
$this->moveToQueue("Duplex");
}
Sposta i lavori simplex in una coda simplex.
if ($this->duplex===false) {
$this->moveToQueue("Simplex");
}
Azioni basate sulla proprietà del colore
Sposta i lavori a colori in una coda di colore.
if ($this->color) {
$this->moveToQueue("Color");
}
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");
}
Eliminare i lavori inviati da Facebook.
if (strpos($this->name,'Facebook')!==false) {
$this->delete();
}
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);
}
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);
}
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);
}
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.");
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.");
}
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 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;
}