In diesem Abschnitt finden Sie Beispiele zu einer Vielzahl von Optionen für die Auftragsverwaltung. Diese Beispiele sollen Ihnen eine Vorstellung davon vermitteln, wie Sie die PHP-Skriptfunktion in MyQ nutzen können. Sie können die Eigenschaften und Methoden in den Beispielen auch ersetzen, um sie als Bausteine für komplexere Skripte zu verwenden.
Aktionen basierend auf der Seitenanzahl
Verschieben Sie Aufträge mit einer höheren Anzahl an Farbseiten in eine Schwarz-Weiß-Warteschlange.
if ($this->colorCount>20) {
$this->moveToQueue("ForceMonochrome");
}
Löschen Sie Aufträge mit einer großen Seitenanzahl.
if ($this->pageCount>500) {
$this->delete();
}
Aktionen basierend auf der Größe des Auftrags
Verschieben Sie große Aufträge in eine spezielle Warteschlange.
if ($this->dataSize>1000000) {
$this->moveToQueue("LargeJobs");
}
Löschen Sie übergroße Aufträge.
if ($this->dataSize>5000000) {
$this->delete();
}
Aktionen basierend auf dem Papierformat
Verschieben Sie Aufträge im A3-Papierformat in eine spezielle Warteschlange.
if ($this->paper==="a3") {
$this->moveToQueue("LargePaperFormat");
}
Aktionen basierend auf dem Auftragseigentümer
Verschieben Sie Aufträge eines bestimmten Eigentümers in eine spezielle Warteschlange.
if ($this->owner->name==="eliot.kate") {
$this->moveToQueue("EliotKate");
}
Ändern Sie den Eigentümer des Auftrags.
if ($this->owner->name==="eliot.kate") {
$this->owner=MyQ()->getUserByUserName("simon.kate");
}
Aktionen basierend auf der Duplex-Eigenschaft
Verschieben Sie Duplex-Aufträge in eine Duplex-Warteschlange.
if ($this->duplex) {
$this->moveToQueue("Duplex");
}
Simplex-Aufträge in eine Simplex-Warteschlange verschieben.
if ($this->duplex===false) {
$this->moveToQueue("Simplex");
}
Aktionen basierend auf der Farbeigenschaft
Verschieben Sie Farbaufträge in eine Farbwarteschlange.
if ($this->color) {
$this->moveToQueue("Color");
}
Aktionen basierend auf dem Auftragsnamen oder der Quellanwendung
Verschieben Sie in MS Word gedruckte Aufträge in eine spezielle Warteschlange.
if (strpos($this->name,"Microsoft Word")!==false) {
$this->moveToQueue("MSWord");
}
Von Facebook gesendete Aufträge löschen.
if (strpos($this->name,'Facebook')!==false) {
$this->delete();
}
Aktionen basierend auf den Rechten für eine Warteschlange
Verschieben Sie Aufträge von Benutzern, die nicht in eine bestimmte Warteschlange drucken dürfen, in eine andere Warteschlange
if ($this->owner->canPrintToQueue("Color")===false) {
$this->moveToQueue("Monochrome");
}
Aktionen basierend auf der Gruppenmitgliedschaft
Verschieben Sie Aufträge, die von Mitgliedern einer Gruppe gesendet wurden, in eine spezielle Warteschlange
if ($this->owner->hasGroup("Clerks")) {
$this->moveToQueue("Clerks");
}
Aktionen basierend auf der PDL des Auftrags
Verschieben Sie alle in einer bestimmten PDL gesendeten Aufträge in eine spezielle Warteschlange
if ($this->lang===0) {
$this->moveToQueue("UnknownPDL");
}
Senden benutzerdefinierter Protokollmeldungen an MyQ
Senden Sie eine Protokollmeldung an MyQ Log
MyQ()->logInfo("This message appears in the MyQ log.");
Komplexe Aktionen
Wenn die Seitenzahl multipliziert mit der Anzahl der Kopien eine bestimmte Zahl überschreitet, den Auftrag löschen und den Benutzer informieren
// 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.");
}
Verschieben Sie den Auftrag in eine Warteschlange, sofern dies zulässig ist
if ($this->color) {
if ($this->owner->canPrintToQueue("JPS2")) {
$this->moveToQueue("JPS2");
} else {
$this->owner->sendEmail("Job error", "Color printing denied");
$this->delete();
}
}
Verschieben Sie den Auftrag in die erste verfügbare persönliche Warteschlange
// 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;
}