Dans cette section, vous trouverez des exemples couvrant diverses options de gestion des travaux. Ces exemples devraient vous donner une idée de la manière d'utiliser les scripts PHP dans MyQ. Vous pouvez également remplacer les propriétés et les méthodes des exemples pour les utiliser comme éléments de base de scripts plus complexes.
Actions basées sur le nombre de pages
Déplacer les travaux comportant un nombre élevé de pages en couleur vers une file d'impression monochrome.
if ($this->colorCount>20) {
$this->moveToQueue("ForceMonochrome");
}
Supprimer les travaux comportant un grand nombre de pages.
if ($this->pageCount>500) {
$this->delete();
}
Actions basées sur la taille du travail
Déplacer les travaux volumineux vers une file d'impression dédiée.
if ($this->dataSize>1000000) {
$this->moveToQueue("LargeJobs");
}
Supprimer les travaux surdimensionnés.
if ($this->dataSize>5000000) {
$this->delete();
}
Actions basées sur le format du papier
Déplacer les travaux au format A3 vers une file d'impression dédiée.
if ($this->paper==="a3") {
$this->moveToQueue("LargePaperFormat");
}
Actions basées sur le propriétaire du travail
Déplacer les travaux d'un certain propriétaire vers une file d'impression dédiée.
if ($this->owner->name==="eliot.kate") {
$this->moveToQueue("EliotKate");
}
Modifier le propriétaire du travail.
if ($this->owner->name==="eliot.kate") {
$this->owner=MyQ()->getUserByUserName("simon.kate");
}
Actions basées sur la propriété
recto-verso Déplacer les travaux recto-verso vers une file d'impression recto-verso.
if ($this->duplex) {
$this->moveToQueue("Duplex");
}
Déplacer les travaux recto vers une file d'impression recto.
if ($this->duplex===false) {
$this->moveToQueue("Simplex");
}
Actions basées sur la propriété de couleur
Déplacer les travaux en couleur vers une file d'impression couleur.
if ($this->color) {
$this->moveToQueue("Color");
}
Actions basées sur le nom du travail ou l'application source
Déplacer les travaux imprimés dans MS Word vers une file d'impression dédiée.
if (strpos($this->name,"Microsoft Word")!==false) {
$this->moveToQueue("MSWord");
}
Supprimer les travaux envoyés depuis Facebook.
if (strpos($this->name,'Facebook')!==false) {
$this->delete();
}
Actions basées sur les droits d'accès à une file d'impression
Déplacer les travaux des utilisateurs qui ne sont pas autorisés à imprimer vers une file d'impression vers une autre file d'impression
if ($this->owner->canPrintToQueue("Color")===false) {
$this->moveToQueue("Monochrome");
}
Actions basées sur l'appartenance à un groupe
Déplacer les travaux envoyés par les membres d'un groupe vers une file d'impression dédiée
if ($this->owner->hasGroup("Clerks")) {
$this->moveToQueue("Clerks");
}
Actions basées sur le PDL du travail
Déplacer tous les travaux envoyés dans un certain PDL vers une file d'impression dédiée
if ($this->lang===0) {
$this->moveToQueue("UnknownPDL");
}
Envoi de messages de journalisation personnalisés vers MyQ
Envoyer un message d'information de journalisation vers MyQ Log
MyQ()->logInfo("This message appears in the MyQ log.");
Actions complexes
Si le nombre de pages multiplié par le nombre de copies dépasse un certain nombre, supprimer le travail et en informer l'utilisateur
// 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.");
}
Déplacer les travaux vers une file d'impression, si autorisé
if ($this->color) {
if ($this->owner->canPrintToQueue("JPS2")) {
$this->moveToQueue("JPS2");
} else {
$this->owner->sendEmail("Job error", "Color printing denied");
$this->delete();
}
}
Déplacer les travaux vers la première file d'impression personnelle 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;
}