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");
 }
CODE

Löschen Sie Aufträge mit einer großen Anzahl von Seiten.

if ($this->pageCount>500) {
 $this->delete();
 }
CODE

 

Maßnahmen je nach Umfang des Auftrags
Verschieben Sie große Aufträge in eine spezielle Warteschlange.

if ($this->dataSize>1000000) {
 $this->moveToQueue("LargeJobs");
 }
CODE

Löschen Sie übergroße Aufträge.

if ($this->dataSize>5000000) {
 $this->delete();
 }
CODE

 

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");
 }
CODE

 

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");
 }
CODE

Ändern Sie den Eigentümer des Auftrags.

if ($this->owner->name==="eliot.kate") {
 $this->owner=MyQ()->getUserByUserName("simon.kate");
 }
CODE

 

Aktionen auf der Grundlage der Duplex-Eigenschaft
Verschieben Sie Duplex-Aufträge in eine Duplex-Warteschlange.

if ($this->duplex) {
 $this->moveToQueue("Duplex");
 }
CODE

Verschieben Sie Simplex-Aufträge in eine Simplex-Warteschlange.

if ($this->duplex===false) {
 $this->moveToQueue("Simplex");
 }
CODE

 

Aktionen auf der Grundlage der Farbeigenschaft
Verschieben Sie Farbaufträge in eine Farbwarteschlange.

if ($this->color) {
 $this->moveToQueue("Color");
 }
CODE

 

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");
 }
CODE

Löschen Sie von Facebook gesendete Aufträge.

if (strpos($this->name,'Facebook')!==false) {
 $this->delete();
 }
CODE

 

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);
 }
CODE

 

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);
 }
CODE

 

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);
 }
CODE

 

Senden von benutzerdefinierten Protokollmeldungen an MyQ
Senden Sie eine Log-Info-Nachricht an MyQ Log

MyQ()->logInfo("This message appears in the MyQ log.");
CODE

 

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.");
}
CODE

 

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();
  }
}
CODE

 

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;
}
CODE