driver/search

Der driver/search wird dazu benutzt, eine Such-Maske zu bauen, die Eingabe-Felder enthält und die Anzeige der gefunden Objekte mittels des driver/result durchführt. Über cell/FUNCTION können Umschalter in die Suche eingebaut werden, um beispielsweise die Anzahl der Treffer, die Ansicht oder die Sortierung auswählbar zu machen.

Mask-Properties

No HTTP Header Wenn gesetzt wird kein HTTP-Header und kein HTML-Header ausgegeben. Dies kann benutzt werden, um Daten direkt aus der easydb zu holen und als Nicht-HTML auszugeben. Benutzen Sie dies mit grid/FUNCTION-detail/header. Seit Version 4.0.xx.
Page Class Definiert für diese Seite eine Page Class. Diese wird verwendet, um die speziellen Stringtool-Variablen zu benutzen. Seit Version 4.0.326.
Table Haupt-Tabelle für das Suchen der Objekte.
Order By Def PHP-Array um die verfügbaren Sortierungen zu definieren. Das PHP-Array beinhaltet eine Liste von assoziativen Arrays. Je assoziativem Array in der Liste wird eine Sortier-Definition definiert.
Das assoziative Array muss die folgenden Keys beinhalten:
  • name ist der Name der Sortierung, so wie er in dem Pulldown erscheint
  • order ist das SQL für die Sortierung nach dem ORDER BY

Das assoziative Array kann die folgenden Keys beinhalten:
  • table Eine Link-Tabelle, die entweder per 1-n, n-1 oder über eadb_links (keine Angabe von field oder reverse_field) verlinkt ist. Hinweis: Eine Sortierung über n-m verlinkte Tabellen muss als Sub-Select im order formuliert werden.
  • field Im Falle der 1-n-Verlinkung das Feld, über welches die Link-Tabelle verknüpft ist.
  • reverse_field Im Falle der n-1-Verlinkung (Wiederholgruppen) das Feld, über welches die Haupt-Tabelle verknüpft ist.
Beispiel:
array(
	 array('name' => 'Eingangsreihenfolge',
            'order' => 'id DESC'
      ),
     array('name' => "Pool-Name",
           'field' => "lk_pool_id",
           'table' => "pool",
           'order' => "pool.name"
      ),
      array('name' => "Künstler",
			'order' => ' (SELECT name FROM kuenstler WHERE kuenstler.id=(SELECT lk_kuenstler_id FROM bilder__kuenstler WHERE lk_bild_id=bilder.id ORDER BY id LIMIT 1)) ASC')
)
Das Beispiel definiert 2 Einträge für das Sortierungs-Menü: Pool-Name sortiert nach dem Pool-Namen welcher über lk_pool_id verknüpft ist und Eingangsreihenfolge sortiert rückwärts nach id.
Der Default, wenn diese Option nicht gesetzt ist, ist:
array(array('name' => "ID DESC", 'order => "%%%keep%%%"))
%%%keep%%% hat die besondere Bedeutung, dass die Eingabe-Reihenfolge erhalten bleibt, z.B. bei Listen, die über Arbeitsmappen in die Suche geladen werden. Für normale Suchen, hat %%%keep%%% die Bedeutung ID DESC, also die Eingangsreihenfolge rückwärts.

Im Fall der easydb Connector-Suche wird aus dem order, bzw. table.name (für Link-Tabellen) eine Sortiername gebildet. Wenn dieser Sortiername auch in der entfernten easydb existiert, so kann das Suchergebnis mit allen Connector-Treffern sortiert werden.
Default Result ID grid/result-Mask-ID. Die Maske, die standardmäßig verwendet wird. Eine Umschaltung der Ansicht kann der Benutzer über das Pulldown cell/FUNCTION-search/view_select durchführen. Der goto-Link springt zu der angegeben Maske.
Check Pool GCELL-ID des cell/TABLELINK welcher die Tabelle benutzt in der in die Spalte searchmask der Name einer alternativen driver/search-Maske drinsteht. Beim Seitenaufbau der Suche wird überprüft, ob die Maske ggfs. gewechselt werden muss. In der anderen Maske muss dieser Parameter ebenfalls gesetzt sein.
Autosearch Wenn gesetzt, wird beim ersten Aufruf der Suche und bei einem force_search in der URL eine Suche durchgeführt. Diese sucht alle Objekte ohne Einschränkung (unter Berücksichtigung des Rechtemanagements) gefiltert nach dem Filter Where Clause.
Filter Where Clause Filter, der bei allen Suchen in dieser Maske angewendet wird. Ersetzt werden: %user_id% durch die ID des Users (nur easydb-Authentifizierung), %user_login% durch das LOGIN des Users, %group_ids% durch eine kommaseparierte Liste der Gruppen-IDs des Users.

Vor Version 4.0.177 wurde der Filter nur bei Autosearch angewendet. Um dieses Verhalten weiterhin zu benutzen, kann im Filter die Variable %autosearch% verwendet werden, die bei Autosearch TRUE, sonst FALSE beinhaltet.
Limit Hits Anzahl der maximal gefundenen Treffer. Dieses Such-Limit überschreibt die Config-Variable SEARCH_MAX_HITS.
Set eadb_frame easydb verlässt sich für den Editor und die Detail-Ansicht auf die Angabe eines Frame-Namens, um nach dem Speichern z.B. die Suche neu laden zu können oder im Detail die Nummer des aktuellen Treffers anzugeben. Dieser Frame-Name ist normalerweise gleich dem FRAME-name des DOM. Wenn die easydb ohne FRAMES gebaut wird, dann können Sie mit diesem Paramater den Namen des Frames manuell setzen.
Filter linked objects from editor Mit diesem Paramater können Objekte, die aktuell in einem Editor aufgerufen werden (in einem anderen FRAME) als Suchfilter für die aktuelle Suche genutzt werden. Der Filter prüft, ob es ein 1-n-Link-Feld in der Haupt-Tabelle der Suche gibt, welches auf die Haupt-Tabelle des Editors zeigt. Es werden alle Objekte in der Suche angezeigt, die über dieses Feld zu dem Objekt im Editor verlinkt sind. Der Parameter ist der Name des Frames in dem sich der Editor befindet.
SQL Prefetch EAS Ids Select, um EAS-IDs vorzuselektieren. Dadurch wird das Abfragen und Anzeigen der Assets beschleunigt. *%IDS% wird durch die aktuell gefunden IDs je Seite ersetzt. *Seit Version 4.0.229.2.
Debug SQL Wenn gesetzt werden die meisten SQL-Abfragen, die diese Suche durchführen, zu Debug-Zwecken im Frontend angezeigt. Änderungen an diesem Parameter werden im Frontend nur wirksam, wenn sich der Benutzer neu anmeldet.

SQL callbacks

Der search driver erlaubt es, sich per PHP den automatisch von easydb zusammengebauten SELECT zu verändern. Dazu kann an beliebiger Stelle die Funktion search_register_sql_callback benutzt werden.

search_register_sql_callback(<functionname>, <parameter>);

// <functionname>: Name der Funktion
// <parameter>: Parameter der übergeben wird

Diese Funktion wird dann automatisch aufgerufen, nachdem easydb den SELECT zusammengebaut hat. Als erster Parameter wird $cid übergeben, als zweiter der registrierte <parameter>.

Folgende Variablen können Sie dann im PHP verändern:

$_SESSION[$cid]["sql"]; // das SQL welches ausgeführt wird, Achtung: ein Leerzeichen am Anfang
$_SESSION[$cid]["orderby"]; // das ORDER BY welches ausgeführt wird.

Beispielsweise kann eine Funktion ein Suchergebnis rekursiv erweitern:

function my_expand_select($cid, $parm) {
  // gibt "15" aus ( nur zum Test )
  echo $parms;

  // holen der sql clause
  $sql = $_SESSION[$cid]["sql"];

  $sql = " FROM item WHERE id IN (
    WITH selected_items AS (
        SELECT item.id ". $sql . "
    ) SELECT id FROM selected_items
    UNION
    SELECT lk_item_to FROM item__item WHERE lk_item_from IN (SELECT id FROM selected_items)
    UNION
    SELECT lk_item_from FROM item__item WHERE lk_item_to IN (SELECT id FROM selected_items)
   )";

   // zurückschreiben
   $_SESSION[$cid]["sql"] = $sql;
}

// registrieren des Callbacks
search_register_sql_callback("my_expand_select", 15);

Benutzen Sie Debug SQL, um Ihr SQL zu debuggen.

p.

cell/FUNCTION

Ein Such-Formular muss do_search, print_result, search_open_form und close_form benutzen!

do_search

Diese FUNCTION führt die eigentlich Suche aus. Sie gibt selbst kein HTML aus. do_search sollte vor search_open_form aufgerufen werden.

debug Wenn gesetzt, wird der aktuelle SQL-Select für die Suche zu Debug-Zwecken ausgegeben.

searchdef_group

Definiert eine Gruppe von Suchfeldern, die dann mit einem searchdef_modifier verknüpft werden können.

gcell_ids Kommasepariert Cell-IDs der Suchfelder die verknüpft werden sollen, die Reihenfolge bestimmt auch die Reihenfolge der logischen Verknüpfungen.

Achten Sie darauf, die Cell-IDs ohne Leerzeichen einzugeben!

searchdef_modifier

Gibt ein Pulldown mit AND, NOT und OR (optional) aus, um Suchfelder in einer Gruppe zu verknüpfen.

gcell_id GCELL-ID des Suchfeldes welches logisch in einer Gruppe zusammengefasst mit anderen Suchfeldern verknüpft werden soll.
default AND, OR oder NOT kann als Voreinstellung festgelegt werden.
"tags" Beliebiger String, der in die SELECT-Node-Deklaration kopiert wird.
omitOr Wenn gesetzt, wird kein OR ausgegeben.
namePrefix Für die einzelnen Optionen des Pulldown werden Stringtool Variablen SEARCH_MOD_[AND|NOT|OR] benutzt. Mit namePrefix kann an den Variablen-Namen noch ein String angehängt werden.

search_message

Diese Funktion ist seit Version 4.0.159 obsolet.

Gibt einen Error- oder Hinweis-Text aus der durch den Search-Driver intern gesetzt wurde.

Seit Version 4.0.159 gibt diese Funktion nichts mehr aus. Der Text wird jetzt automatisch bei close_form ausgegeben.

open_form

Diese FUNCTION öffnet das FORM (mit Methode GET) und gibt einiges an Verwaltungs-HTML aus.

Benutzen Sie ab sofort search_open_form. open_form funktioniert weiterhin wird aber nicht mehr empfohlen.

search_open_form

Diese FUNCTION öffnet das FORM und gibt einiges an Verwaltungs-HTML aus. do_search sollte vor search_open_form aufgerufen werden.

use_post Wenn gesetzt, wird die POST-Methode zum Formular senden verwendet. Verwenden Sie POST bei großen Formularen. Nachteil ist, dass der Browser eine Warnmeldung ausgibt, wenn ein Benutzer per Back-Button auf die Suche navigiert.

close_form

Schließt das FORM.

Seit Version 4.0.159 wird ggfs. ein Error- oder Hinweis-Text ausgegeben (in einer DIV mit der class="search_message").

view_select

Um die Ansicht zu wechseln gibt diese FUNCTION ein Pulldown mit verschiedenen Result-Mask aus.

"views" Kommaseparierte Liste mit Result-Mask-Namen. Sie können im Stringtool die Variable view_select_<view> setzen, um einen eigenen übersetzbaren Frontend-Namen zu vergeben. Hinweis: Die ältere Array-Notation für die Views funktioniert noch, ist aber obsolete.

get_current_result_id

Gibt die ID der aktuellen Result-Mask aus. ( Seit Version 4.0.168 )

get_orderby_select

Gibt den Namen der aktuellen Auswahl der Order-By-Pulldowns aus.

field Optionale Angabe eines Feldes zum Zugriff auf das Mask-Property Order By Def der Suche. Standardmäßig wird sort verwendet. Seit Version 4.0.287.

singlelink_thesaurus_children

Gibt eine Checkbox aus, die das Verhalten eines SINGELINKS so umstellt, dass die Suche einmal mit Kindern und einmal ohne Kinder sucht.

gcell GCELL-iD des SINGLELINK-Suchfeldes.
"tags" Beliebiger String, der in die INPUT-Node-Deklaration kopiert wird.

search_thesaurus_children

Gibt eine Checkbox aus, die das Verhalten der von normalen TEXT oder SINGLELINK-Searchdef-Suchen so verändert, das einmal die Kinder von gefundenen Treffern mit in die Suche einbezogen werden und einmal nicht.

Beispielsweise kann eine Suche in einer verlinkten Tabelle nach Europa zu genau einem Treffer führen. Wenn diese Checkbox gesetzt ist, werden alle Kinder und Kindeskinder von Europa mit in die Suche einbezogen. Im SINGLELINK-Fall werden alle Kinder und Kindeskinder einbezogen die mit keinem oder dem selben Ort bzw. den selben Orten verlinkt sind.

Die SINGLELINK-Variante funktioniert nur mit PostgreSQL-Datenbanken, nicht mit include_fathers und nur für die n-m- und normalen 1-n- Varianten. Diese Variante gibt es seit Version 4.0.241.

gcell GCELL-iD des TEXT- oder SINGLELINK-Suchfeldes.
include_fathers Neben allen Kindern werden hiermit auch alle Väter des Objektes in die Suche einbezogen (nur für TEXT-Suchen).
default_checked Wenn gesetzt, ist die Checkbox standardmäßig gesetzt.
tags Beliebiger String, der in die INPUT-Node-Deklaration kopiert wird.

orderby_select

Gibt das Pulldown aus, um die Sortierung zu wählen. Die Sortierungen werden in den Mask-Properties festgelegt.

"tags" Beliebiger String, der in die SELECT-Node-Deklaration kopiert wird.

chunksize_select

Gibt das Pulldown aus, um die Anzahl der Treffer pro Seite zu wählen. Die möglichen Werte werden in den Mask-Properties festgelegt.

"tags" Beliebiger String, der in die SELECT-Node-Deklaration kopiert wird.

chunk_selector

Gibt Links mit Seitenzahlen für die Seiten-Navigation aus.

selectChunkClass DOM class für die aktuell selektierte Seite.
unselectedChunkClass DOM class für die nicht-selektierten Seiten.
short Wenn gesetzt, wird eine kurze Version der Navigation ausgegeben.
short_range Anzahl der Seiten die links und rechts von der aktuellen Seiten angezeigt werden (bei aktivierter "short" Option).

output_search_navigation

Gibt die Vor-/Zurück-Knöpfe für die Seiten-Navigation aus.

show_first_last Wenn aktiviert, werden die "Zur ersten Seite"- und "Zur letzten Seite"-Knöpfe angezeigt.

checkbox_search_within

Gibt eine Checkbox aus mit der, wenn gesetzt, innnerhalb des aktuellen Treffer gesucht werden kann.

"tags" Beliebiger String, der in die SELECT-Node-Deklaration kopiert wird.

print_result

Gibt das aktuelle Such-Ergebnis über Result-Mask aus. Die Standard-Result-Mask wird in den Mask-Properties festgelegt.

mode print only Gibt das aktuelle Such-Ergebnis aus.
  print & message Gibt das aktuelle Such-Ergebnis aus. Wenn die Suche keine Objekte gefunden hat, wird ein Text in einer <div class="search-no-hits"><div class="text">...</div></div> ausgegeben. Der Text kann easydb-weit in den String-Tool-Variablen l10n.search.error.noHits für normale Suchen resp. l10n.search.error.noHitsWithin für "Suchen innerhalb" angepasst werden. Innerhalb von grid/IFTHEN, wird kein Text ausgegeben.
  print & message & welcome-div Wie der vorherige Mode mit dem Unterschied, dass beim ersten Aufruf seit Anmeldung des Benutzers, eine sogenannte Welcome-Div ausgegeben wird. Dabei handelt es sich um die im easydb-Docroot befindliche Datei welcome.html. Der Pfad zu dieser Datei kann per Config-Variable WELCOME_DIV bzw. WELCOME_DIV_GUEST (für unangemeldete Benutzer) überschrieben werden. Diese Datei wird an der Stelle von print_result eingefügt.
output_escaping - default – Keine Änderung des Escapings.
  csv Überschreibt das Escaping in allen OUTPUT-cell.

Die Option mode gibt es seit Version 4.0.168.
Die Option output_escaping gibt es seit Version 4.0.326.

Sie können lokale Dokumente auf dem easydb Web-Server in das Verzeichnis local legen. Die WELCOME_DIV wird als PHP geladen, nutzen Sie die Funktion current_language_code(), um die aktuelle System-Sprache auszulesen.

print_variable

Gibt aktuelle Werte zum Suchergebnis aus.

type total_count Gesamt-Zahl der Objekte die sich in der Tabelle der Suche befinden.
  hit_from Die erste Treffer-Nummer auf der aktuellen Seite.
  hit_to Die letzte Treffer-Nummer auf der aktuellen Seite.
  hit_total Die aktuelle Gesamt-Zahl der Treffer.

saved_search_list

Gespeicherte Suchen sind noch nicht in die easydb 4 portiert.

saved_search_new

Gespeicherte Suchen sind noch nicht in die easydb 4 portiert.

found_ids

Gibt die aktuell gefundene Anzahl von Treffern aus.

within_title

Gibt den aktuellen Text aus, der für eine search_within gesetzt wurde. Die Stringtool Variable dafür ist l10n.search.SearchWithinNHits.

Es kommt vor, dass within_title aus $_REQUEST[title] gesetzt wird, also z.B. aus der Sidebar von einer Arbeitsmappe oder Präsentation gesetzt wird.

current_sql

Gibt den aktuellen Select aus der zuletzt von dieser Search-Mask gesucht wurde.

first_call

Gibt 1 aus, wenn die Suche zum ersten Mal aufgerufen wird und noch nichts gesucht wurde.

grid/FUNCTION

header

Rendert die inneren Cols und Rows und setzt damit einen HTTP-Header. Es wird die PHP-Funktion header verwendet.

Diese FUNCTION kann mehrfach verwendet werden. Diese Funktion macht nur Sinn in Verbindung mit search/no_http_header.

Seit Version 4.0.xx

grid/LINK

nav_first

Gibt den LINK aus, um in der Navigation zur ersten Seite in der Trefferliste zu springen.

nav_prev

Gibt den LINK aus, um in der Navigation zur vorherigen Seite in der Trefferliste zu springen.

nav_next

Gibt den LINK aus, um in der Navigation zur nächsten Seite in der Trefferliste zu springen.

nav_last

Gibt den LINK aus, um in der Navigation zur letzten Seite in der Trefferliste zu springen.

form_reset

Gibt den LINK aus, um das Such-Formular zu resetten.

email_result

Seit Version 4.0.199

Erzeugt einen LINK der eine Email versendet.

email Email-Mask die zum Rendern der Email benutzt wird. Die Email muss dieselbe Tabelle benutzen, wie die Suche. Die Email-Maske wird mit der ID des ersten gefundenen Objektes in der Suche aufgerufen. Benutzen sie cell/FUNCTION-email/render_search_result , um alle Objekte des aktuellen Suchergebnisses zu erhalten.