Listen über individuelle PHP Callback Funktion filtern

Nutzbar ab: Version 006.008.063.000

04. Okt 2016

Nutzen Sie eigene PHP-Funktionen, um die für eine Weblication® Liste definierten Dateien vor der Ausgabe individuell manipulieren zu können.

Reichen Ihnen die Möglichkeiten der Weblication® Listenfunktionen und Filtermöglichkeiten nicht aus, können Sie die Ausgabe einer Dateiliste auch individuell beeinflussen.

Um dies realisieren zu können, ist eine CMS-Version ab 006.008.063.000 erforderlich und das aktuelle Listen-Element (Weblic® "Liste Standard"). Die erforderlichen Anpassungen werden nachfolgend beschrieben.

Setzen Sie eine eigene Funktion über die wMyProject.php Datei, die mit der BASE mitgeliefert wird und über die pre.php des globalen Projektes eingelesen wird. Diese Funktion steuern Sie über die "PHP Callback Funktion" an, die in den Listenoptionen über die "Filter für die aufzulistenden Dateien" ausgewählt werden kann. Im Feld tragen Sie die entsprechende Funktion ein, z.B. wMyProject::myListFunction.

Ihre eigene PHP Funktion wird nach dem Ermitteln der Dateien und vor der Darstellung ausgeführt.

Beispiel 1: Die ersten drei Listeneinträge nach Zufall sortieren

Das nachfolgende Beispiel führt an, wie Sie die ersten drei Listeneinträge der Dateiliste nach Zufall sortieren.

Listenoptionen mit "PHP Callback Funktion" Filterzoom
Listenoptionen mit "PHP Callback Funktion" Filter

Beispiel: Auszug aus /IhrGlobalesProjekt/wGlobal/scripts/php/wMyProject.php zur Zufallssortierung

<?php

//*********************************************************************************/
/**
* @method String myListFunction(Array $files, Array $listOptions)
*
* @description Callback Funktion für eigene Listenfilter
*
* @param files  Über die Liste eingelesene Dateien
*
* @param listOptions  (Eigene) Listenoptionen zur Steuerung der Listenausgabe
*
* @return String
*
*/
//*********************************************************************************/

public static function myListFunction($files$listOptions){

  
//$files['file'] beinhaltet die Dateien der Liste. Sie können diese hier nachträglich manipulieren
  
  //print '<pre>'; var_dump($files); print '<hr />'; var_dump($listOptions); print '</pre>';
  
  // sortiert die ersten drei Listeneinträge nach Zufall:
  
$filesToSortRandomly array_splice($files['file'], 0, (count($files['file']) < $files['file'] : 3));
  
shuffle($filesToSortRandomly);
  
$files['file'] = array_merge($filesToSortRandomly$files['file']);
  
  return 
$files;

}

?>

Beispiel 2: Veranstaltungstermine Uhrzeit genau filtern

Ein anderes Beispiel zur PHP Callback Funktion wird nachfolgend für die Liste des Veranstaltungskalenders aufgezeigt.

Hier werden die Termine nachträglich zur "normalen" Listenausgabe gem. dem aktuellen Zeitpunkt Uhrzeit genau gefiltert.
Standardmäßig zeigt der Veranstaltungskalender Termine des aktuellen Tages noch an, auch wenn die Endzeit schon abgelaufen ist (z.B. Termin von 10:00 - 11:00 Uhr und Aufruf am gleichen Tag um 12:00 Uhr).

Beispiel: Auszug aus /IhrGlobalesProjekt/wGlobal/scripts/php/wMyProject.php zu Veranstaltungsterminen

<?php

//*********************************************************************************/
/**
* @method String myEventlistFunction(Array $files, Array $listOptions)
*
* @description Callback Funktion für eigene Veranstaltungslistenfunktion
*
* @param files  Über die Liste eingelesene Dateien
*
* @param listOptions  (Eigene) Listenoptionen zur Steuerung der Listenausgabe
*
* @return String
*
*/
//*********************************************************************************/

public static function myEventlistFunction($files$listOptions){
   
   
$eventCheckTimeNowString   time();  
   
$filesMyEventlistFunction  = array();
   
   foreach(
$files as $filePath){
   
     
$toDate       wURL::getParameter($filePath,'to');
     
$toDateString strtotime($toDate);
    
     if(
$toDateString $eventCheckTimeNowString){
       
$filesMyEventlistFunction[] = $filePath;
     }    
   
   }

   return 
$filesMyEventlistFunction;



?>

Beispiel 3: Listeneinträge nach Besitzer filtern

Dieses Beispiel zur PHP Callback Funktion zeigt auf, wie eine Weblication® Liste nach dem Besitzer-Eintrag (wd:owner) gefiltert werden kann.

Die Liste wird nachträglich hinsichtlich der Einträge darauf geprüft, in welchen Dateien der aktuell eingeloggte Benutzer als Besitzer (wd:owner) eingetragen ist. In der Ausgabe erscheinen somit nur die Listeneinträge, die dem aktuellen Benutzer als Besitzer zugewiesen sind.

Beispiel: Auszug aus /IhrGlobalesProjekt/wGlobal/scripts/php/wMyProject.php zu Listeneinträgen für Besitzer

<?php

//*********************************************************************************/
/**
* @method String myListFunctionOwner(Array $files, Array $listOptions)
*
* @description Callback Funktion für eigene Listenfunktion für Besitzer
*
* @param files  Über die Liste eingelesene Dateien
*
* @param listOptions  (Eigene) Listenoptionen zur Steuerung der Listenausgabe
*
* @return String
*
*/
//*********************************************************************************/

public static function myListFunctionOwner($files$listOptions){
   
  
$wUserCurent wUserCur::getName();
  
$filesFilterOwner  = array();

  foreach(
$files as $filePath){
   
     
$filePathToCheck preg_replace('/\?.*/'''$filePath); // Querystrings rausnehmen (z.B. bei Veranstaltungsterminen wichtig)
     
$eventOwner wDocumentData::getData($filePathToCheck'/wd:extension/wd:permissions/wd:owner/@name');
    
     if(
$eventOwner == $wUserCurent){
      
$filesFilterOwner[] = $filePath;
     }
  
  }

  
//var_dump($fileslistFilterIsOwner);
  
return ($filesFilterOwner); 

}

?>

Beispiel 4: Listeneinträge nur bei HTTP-Parameter

Dieses Beispiel zur PHP Callback PRE Funktion zeigt auf, wie eine Weblication® Liste die Einträge nur bei übergebenem HTTP-Parameter Wert anzeigt.

Die Liste wird vor dem Ausführen darauf geprüft, ob dem URL-Parameter "firstLetter" ein Wert übergeben wurde. Ist dem nicht der Fall, werden keine Einträge an die Liste übergeben.

Auf diese Weise können Sie z.B. eine Liste mit Filter "Nach dem ersten Buchstaben des Titels filtern" umsetzen, welche beim Aufruf ohne URL-Parameter erstmal keine Einträge zeigt. Einträge werden erst beim Filtern über z.B. eine A-Z-Filterliste angezeigt.

Beispiel: Auszug aus /IhrGlobalesProjekt/wGlobal/scripts/php/wMyProject.php zu Listeneinträgen nur bei HTTP-Parameter

<?php

//*********************************************************************************/
/**
* @method String hasFirstLetter($query)
*
* @description Callback Funktion für eigene Listenfunktion bei HTTP-Parameter
*
* @param query  Über die Liste eingelesene Dateien
*
* @return String
*
*/
//*********************************************************************************/

public static function hasFirstLetter($query){

  if(
wRequest::getParameter('firstLetter') == ''$query = array();
  return 
$query;
}

?>

Ähnliche Seiten

Entwicklerbereich Weblication® CMS - © Scholl Communications AG