En esta sección encontrará ejemplos que abarcan una variedad de opciones de gestión de trabajos. Estos ejemplos le darán una idea de cómo utilizar los scripts PHP en MyQ. También puede sustituir las propiedades y métodos de los ejemplos para utilizarlos como bloques de construcción de scripts más complejos.
Acciones basadas en el número de páginas
Mover los trabajos con un mayor número de páginas en color a una cola monocromática.
if ($this->colorCount>20) {
$this->moveToQueue("ForceMonochrome");
}
Eliminar trabajos con un gran número de páginas.
if ($this->pageCount>500) {
$this->delete();
}
Acciones basadas en el tamaño del trabajo
Mover trabajos grandes a una cola dedicada.
if ($this->dataSize>1000000) {
$this->moveToQueue("LargeJobs");
}
Eliminar trabajos de gran tamaño.
if ($this->dataSize>5000000) {
$this->delete();
}
Acciones basadas en el formato de papel
Mover los trabajos con formato de papel A3 a una cola dedicada.
if ($this->paper==="a3") {
$this->moveToQueue("LargePaperFormat");
}
Acciones basadas en el propietario del trabajo
Mover los trabajos de un propietario determinado a una cola dedicada.
if ($this->owner->name==="eliot.kate") {
$this->moveToQueue("EliotKate");
}
Cambiar el propietario del trabajo.
if ($this->owner->name==="eliot.kate") {
$this->owner=MyQ()->getUserByUserName("simon.kate");
}
Acciones basadas en la propiedad de impresión
a doble cara Mover los trabajos a doble cara a una cola de doble cara.
if ($this->duplex) {
$this->moveToQueue("Duplex");
}
Mover los trabajos a una sola cara a una cola de trabajos a una sola cara.
if ($this->duplex===false) {
$this->moveToQueue("Simplex");
}
Acciones basadas en la propiedad de color
Mover los trabajos en color a una cola de color.
if ($this->color) {
$this->moveToQueue("Color");
}
Acciones basadas en el nombre del trabajo o la aplicación de origen
Mover los trabajos impresos en MS Word a una cola dedicada.
if (strpos($this->name,"Microsoft Word")!==false) {
$this->moveToQueue("MSWord");
}
Eliminar trabajos enviados desde Facebook.
if (strpos($this->name,'Facebook')!==false) {
$this->delete();
}
Acciones basadas en los derechos de una cola
Mover los trabajos de los usuarios que no tienen permiso para imprimir en una cola a una cola diferente
if ($this->owner->canPrintToQueue("Color")===false) {
$this->moveToQueue("Monochrome");
}
Acciones basadas en la pertenencia a un grupo
Mover los trabajos enviados por miembros de un grupo a una cola dedicada
if ($this->owner->hasGroup("Clerks")) {
$this->moveToQueue("Clerks");
}
Acciones basadas en el PDL del trabajo
Mover todos los trabajos enviados en un PDL determinado a una cola dedicada
if ($this->lang===0) {
$this->moveToQueue("UnknownPDL");
}
Envío de mensajes de registro personalizados a MyQ
Enviar un mensaje de información de registro a MyQ Log
MyQ()->logInfo("This message appears in the MyQ log.");
Acciones complejas
Si el número de páginas multiplicado por el número de copias supera un número determinado, elimine el trabajo e informe al usuario
// 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.");
}
Mover el trabajo a una cola, si está permitido
if ($this->color) {
if ($this->owner->canPrintToQueue("JPS2")) {
$this->moveToQueue("JPS2");
} else {
$this->owner->sendEmail("Job error", "Color printing denied");
$this->delete();
}
}
Mover el trabajo a la primera cola personal disponible
// 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;
}