MyQ X Server

Beispiele für PHP-Skript-Aktionen

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.

PHP
if ($this->colorCount>20) {
 $this->moveToQueue("ForceMonochrome");
 }

Löschen Sie Aufträge mit einer großen Seitenanzahl.

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


Aktionen basierend auf der Größe des Auftrags
Verschieben Sie große Aufträge in eine spezielle Warteschlange.

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

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

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


Aktionen basierend auf dem Papierformat
Verschieben Sie Aufträge im A3-Papierformat in eine spezielle Warteschlange.

PHP
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.

PHP
if ($this->owner->name==="eliot.kate") {
 $this->moveToQueue("EliotKate");
 }

Ändern Sie den Eigentümer des Auftrags.

PHP
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.

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

Simplex-Aufträge in eine Simplex-Warteschlange verschieben.

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


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

PHP
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.

PHP
if (strpos($this->name,"Microsoft Word")!==false) {
 $this->moveToQueue("MSWord");
 }

Von Facebook gesendete Aufträge löschen.

PHP
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

PHP
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

PHP
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

PHP
if ($this->lang===0) {
 $this->moveToQueue("UnknownPDL");
 }


Senden benutzerdefinierter Protokollmeldungen an MyQ
Senden Sie eine Protokollmeldung an MyQ Log

PHP
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

PHP
// 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

PHP
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

PHP
// 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;
}