Beispiele für PHP-Skript-Aktionen
In diesem Abschnitt finden Sie Beispiele für eine Vielzahl von Auftragsverwaltungsoptionen. Diese Beispiele sollen Ihnen eine Vorstellung davon vermitteln, wie Sie die PHP-Skripte in MyQ verwenden 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 Anzahl der Seiten
Verschieben Sie Aufträge mit einer höheren Anzahl von Farbseiten in eine Monochrom-Warteschlange.
if ($this->colorCount>20) {
$this->moveToQueue("ForceMonochrome");
}
Löschen Sie Aufträge mit einer großen Anzahl von Seiten.
if ($this->pageCount>500) {
$this->delete();
}
Maßnahmen je nach Umfang 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();
}
Maßnahmen auf der Grundlage des Papierformats
Verschieben Sie Aufträge mit dem Papierformat A3 in eine spezielle Warteschlange.
if ($this->paper===6) {
$this->moveToQueue("LargePaperFormat");
}
Aktionen auf der Grundlage des Auftragseigentümers
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 auf der Grundlage der Duplex-Eigenschaft
Verschieben Sie Duplex-Aufträge in eine Duplex-Warteschlange.
if ($this->duplex) {
$this->moveToQueue("Duplex");
}
Verschieben Sie Simplex-Aufträge in eine Simplex-Warteschlange.
if ($this->duplex===false) {
$this->moveToQueue("Simplex");
}
Aktionen auf der Grundlage der Farbeigenschaft
Verschieben Sie Farbaufträge in eine Farbwarteschlange.
if ($this->color) {
$this->moveToQueue("Color");
}
Aktionen auf der Grundlage des Auftragsnamens 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");
}
Löschen Sie von Facebook gesendete Aufträge.
if (strpos($this->name,'Facebook')!==false) {
$this->delete();
}
Aktionen auf der Grundlage der Rechte an einer Warteschlange
Verschieben von Aufträgen von Benutzern, die nicht in einer Warteschlange drucken dürfen, in eine andere Warteschlange
if ($this->owner->canPrintToQueue(Color)===false) {
$this->moveToQueue(Monochrome);
}
Aktionen auf der Grundlage der Gruppenzugehörigkeit
Verschieben von Aufträgen, die von Mitgliedern einer Gruppe gesendet wurden, in eine spezielle Warteschlange
if ($this->owner->hasGroup(Clerks)) {
$this->moveToQueue(Clerks);
}
Aktionen auf der Grundlage der PDL des Auftrags
Verschieben aller in einer bestimmten PDL gesendeten Aufträge in eine spezielle Warteschlange
if ($this->lang===0) {
$this->moveToQueue(UnknownPDL);
}
Senden von benutzerdefinierten Protokollmeldungen an MyQ
Senden Sie eine Log-Info-Nachricht an MyQ Log
MyQ()->logInfo("This message appears in the MyQ log.");
Komplexe Aktionen
Wenn die Anzahl der Seiten multipliziert mit der Anzahl der Kopien eine bestimmte Anzahl überschreitet, wird der Auftrag gelöscht und der Benutzer informiert.
// 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, falls erlaubt
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;
}