Ejemplos de acciones de scripts PHP
En esta sección puede encontrar ejemplos que cubren una variedad de opciones de administración de trabajos. Estos ejemplos deberían darle una idea sobre cómo usar las secuencias de comandos PHP en MyQ. También puede sustituir las propiedades y los métodos de los ejemplos para usarlos como componentes básicos de secuencias de comandos más complejas.
Acciones en función del número de páginas
Mueva trabajos con una mayor cantidad de páginas en color a una cola monocromática.
if ($this->colorCount>20) {
$this->moveToQueue("ForceMonochrome");
}
Elimine trabajos con una gran cantidad de páginas.
if ($this->pageCount>500) {
$this->delete();
}
Acciones basadas en el tamaño del trabajo
Mueva 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 formato papel
Mueva trabajos con formato de papel A3 a una cola dedicada.
if ($this->paper===6) {
$this->moveToQueue("LargePaperFormat");
}
Acciones basadas en el propietario del trabajo
Mueva los trabajos de un determinado propietario 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 dúplex
Mueva trabajos dúplex a una cola dúplex.
if ($this->duplex) {
$this->moveToQueue("Duplex");
}
Mover trabajos simplex a una cola simplex.
if ($this->duplex===false) {
$this->moveToQueue("Simplex");
}
Acciones basadas en la propiedad del color.
Mueva trabajos de 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 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 a una cola
Mueva los trabajos de los usuarios que no pueden imprimir de una cola a una cola diferente.
if ($this->owner->canPrintToQueue(Color)===false) {
$this->moveToQueue(Monochrome);
}
Acciones basadas en la pertenencia al grupo
Mover trabajos enviados por miembros de un grupo a una cola dedicada.
if ($this->owner->hasGroup(Clerks)) {
$this->moveToQueue(Clerks);
}
Acciones basadas en la PDL del trabajo
Mueva 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 cierto número, 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;
}