N3rds@Work

BoniPress boniPRESS_Query_Log

PSOURCE – Community’s Dokumente BoniPress Dokumentation BoniPress boniPRESS_Query_Log

Mit dieser Klasse kannst Du das BoniPress-Protokoll nach Einträgen durchsuchen, die auf einer Vielzahl von Optionen basieren. Ähnlich wie bei der WP_Query-Klasse kannst Du diese Klasse verwenden, um die Ergebnisse abzufragen und dann zu durchlaufen, um die Ergebnisse auf beliebige Weise anzuzeigen. Derzeit verfügt die Klasse auch über einen großen Satz von Funktionen, mit denen Du eine Tabelle rendern kannst, in der diese Ergebnisse dargestellt werden. Diese Funktion wird derzeit vom Log-Modul in Deinem Admin-Bereich und vom bonipress_history Shortcode / Widget verwendet.

Diese Klasse aufgeteilt und konzentriert sich auf das Ausführen von Abfragen in der Datenbank, während eine separate Klasse zur Verfügung gestellt wird, die die Tabelle rendert, um die Ergebnisse anzuzeigen.

Interaktion mit der Klasse

Während die Klasse eine große Anzahl von Funktionen bietet, die Du verwenden kannst, besteht Deine häufigste Interaktion darin, Argumente für Deine Suche zu erstellen und bereitzustellen.

// Example 1: Show the last 10 entries
$args = array(
'number' => 10
);

// The Query
$log = new boniPRESS_Query_Log( $args );

// The Loop
if ( $log->have_entries() ) {

// Display using the built-in table
$log->display();

}

// Example 2: Get log entries for user 1
$args = array(
'user_id' => 1
);

// The Query
$log = new boniPRESS_Query_Log( $args );

// The Loop
if ( $log->have_entries() ) {

// Build your custom loop
foreach ( $log->results as $entry ) {

// Present the results anyway you like

}

}
KlasseneigenschaftenZurück zum Seitenanfang 
Eigentum Deklarierte Art Beschreibung
$now Öffentlich INT Der aktuelle Unix-Zeitstempel. Wird für das Rendern und Parsen von Datum und Uhrzeit verwendet.
$render_mode Öffentlich BOOL Gibt an, ob die Klasse das Rendern von Ergebnissen mit den integrierten Methoden zulässt oder ob nur Abfragen ausgeführt werden können.
$args Öffentlich ARRAY Enthält die Argumente, um die die Klasse herum konstruiert wurde.
$request Öffentlich STRING Die SQL-Abfrage, die ausgeführt wurde, um die angezeigten Ergebnisse abzurufen.
$num_rows Öffentlich INT Die Anzahl der Zeilen, die die Abfrage zurückgegeben hat.
$max_num_pages Öffentlich STRING Die maximale Anzahl von Seiten, über die sich die Ergebnisse erstrecken. Der Standardwert ist 1.
$total_rows Öffentlich INT Die Gesamtzahl der Zeilen in der Datenbank.
$results Öffentlich ARRAY Die Ergebnisse der Abfrage.
$headers Öffentlich ARRAY Enthält ein assoziatives Array von Überschriften, die von der Tabelle gerendert werden.
$hidden_headers Öffentlich ARRAY Enthält ein Array von Header-IDs, die Du zum Ausblenden ausgewählt hast.
$core Öffentlich OBJECT Das boniPRESS_Settings-Klassenobjekt.
$is_admin Öffentlich BOOL Gibt an, ob die Klasse im Frontend oder im bereich wp-admin verwendet wird.
$references Öffentlich ARRAY Ein Array von Referenz-IDs und deren Bezeichnungen. Dies wird verwendet, um jeden Protokolleintragsverweis zu übersetzen, wenn er in der Tabelle angezeigt wird.
$refs Öffentlich ARRAY Ein Array, das alle in der Datenbank vorhandenen Verweise basierend auf der aktuellen Abfrage enthält.
$types Öffentlich ARRAY Gefüllt mit dem boniPRESS_Settings Objekt für jeden Punkttyp, nach dem wir suchen. Dies wird verwendet, wenn Du eine Tabelle für die Abfrageergebnisse mit mehreren Punkttypen renderst.

Klassenparameter

Die Klasse verfügt nur über zwei Parameter, die Du verwenden kannst.

Parameter Type Benötigt Description
$args ARRAY Ja Die Abfrageargumente, für die Ergebnisse zurückgegeben werden sollen.
$array BOOL Nein Option zur Rückgabe von Einträgen in einem Array-Format anstelle eines Objektformats. Kann nicht verwendet werden, wenn das Argument so eingestellt ist, dass es eine bestimmte Spalte oder ein bestimmtes Feld zurückgibt

Abfrageargumente

Argumente können im Zeichenfolgen- oder Arrayformat übergeben werden. Wenn Du ein Zeichenfolgenformat verwendest, trenne jedes Argument durch ein &-Zeichen. Das Zeichenfolgenformat eignet sich gut für einfache, einfache Abfragen, für erweiterte Abfragen ist jedoch ein Arrayformat erforderlich.

Eintrags-IDs

Argument Art Beschreibung
entry_id ARRAY oder INT Abrufen von Protokolleinträgen basierend auf ihren eindeutigen IDs. Unterstützt Abfragen einer einzelnen ID oder mehrerer IDs. Unterstützt , und Vergleiche.=!=INNOT IN

Beispiel 1: Abrufen eines einzelnen Eintrags mit der ID 1

$log = new boniPRESS_Query_Log( 'entry_id=1' );

Beispiel 2: Abrufen mehrerer Einträge

$log = new boniPRESS_Query_Log( array( 'entry_id' => array( 1, 2, 3 ) );

Beispiel 3: Abrufen von Einträgen, die nicht die IDs 1 oder 2 haben

$args = array(
'entry_id' => array(
'ids' => array( 1, 2 ),
'compare' => 'NOT IN'
)
);
$log = new boniPRESS_Query_Log( $args );

Beispiel 4: Abrufen von Einträgen, die nicht die ID 5 haben

$args = array(
'entry_id' => array(
'ids' => 5,
'compare' => '!='
)
);
$log = new boniPRESS_Query_Log( $args );

Punkttypen

Argument Art Beschreibung
ctype ARRAY oder STRING Rufe Protokolleinträge eines bestimmten Punkttyps oder mehrerer Typen basierend auf dem Punkttypschlüssel ab. Unterstützt , und Vergleiche.=!=INNOT IN

Wenn dieses Argument nicht festgelegt ist, legt die Klasse es so fest, dass Einträge des Hauptpunkttyps angezeigt werden. Um Einträge unabhängig davon anzuzeigen, zu welchem Punkttyp sie gehören, stelle sicher, dass Du dieses Attribut auf eine leere Zeichenfolge festlegst.

Beispiel 1: Abrufen von Einträgen des Standardpunkttyps

$log = new boniPRESS_Query_Log( 'ctype=bonipress_default' );

Beispiel 2: Abrufen von Einträgen eines benutzerdefinierten Punkttyps

$log = new boniPRESS_Query_Log( array( 'ctype' => 'mycustom_type' ) );

Beispiel 3: Abrufen von Einträgen, die nicht vom Typ „Benutzerdefinierter Punkt“ sind

$args = array(
'ctype' => array(
'ids' => array( 'mycustom_type', 'anothertype' ),
'compare' => 'NOT IN'
)
);
$log = new boniPRESS_Query_Log( $args );

Beispiel 4: Abrufen von Einträgen aller Punkttypen

$log = new boniPRESS_Query_Log( array( 'ctype' => '' ) );

Benutzer-IDs

Argument Art Beschreibung
user_id ARRAY oder INT Abrufen von Protokolleinträgen eines oder mehrerer Benutzer basierend auf ihren numerischen IDs. Unterstützt , und Vergleiche.=!=INNOT IN

Wenn Du die numerische ID des Benutzers nicht kennst, kannst Du jederzeit die Funktion bonipress_get_user_id verwendest, die das Konvertieren von Benutzernamen, E-Mail-Adressen oder Slugs in numerische IDs unterstützt (vorausgesetzt, ein Benutzer wird als übereinstimmend befunden).

Beispiel 1: Abrufen von Einträgen für den Benutzer mit der ID 1

$log = new boniPRESS_Query_Log( 'user_id=1' );

Beispiel 2: Abrufen von Einträgen für eine Gruppe von Benutzern

$log = new boniPRESS_Query_Log( array( 'user_id' => array( 1, 2, 4 ) ) );

Beispiel 3: Abrufen von Einträgen, die nicht den Benutzern 1, 2 und 6 gehören

$args = array(
'user_id' => array(
'ids' => array( 1, 2, 6 ),
'compare' => 'NOT IN'
)
);
$log = new boniPRESS_Query_Log( $args );

Referenzen

Argument Art Beschreibung
ref ARRAY oder STRING Abrufen von Protokolleinträgen basierend auf einem oder mehreren Verweisen. Unterstützt , und Vergleiche.=!=INNOT IN

 

Beispiel 1: Alle manuellen Einträge abrufen

$log = new boniPRESS_Query_Log( 'ref=manual' );

Beispiel 2: Abrufen von Einträgen für genehmigte Kommentare und veröffentlichte Inhalte

$log = new boniPRESS_Query_Log( array( 'ref' => array( 'approved_comment', 'published_content' ) ) );

Beispiel 3: Abrufen aller Einträge, die nicht manuell sind

$args = array(
'ref' => array(
'ids' => 'manual',
'compare' => '!='
)
);
$log = new boniPRESS_Query_Log( $args );

Beispiel 4: Abrufen aller Einträge einer benutzerdefinierten Referenz

$args = array(
'ref' => array(
'ids' => 'mycustomreference',
'compare' => '='
)
);
$log = new boniPRESS_Query_Log( $args );

Referenz-IDs

Argument Art Beschreibung
ref_id ARRAY oder INT Abrufen von Protokolleinträgen basierend auf einer oder mehreren Referenz-IDs. Unterstützt , , , , und Vergleiche.=!=<<=>=INNOT IN

Beispiel 1: Hole Dir alle Einträge mit der Referenz-ID 1

$log = new boniPRESS_Query_Log( 'ref_id=1' );

Beispiel 2: Abrufen von Einträgen mit einer Referenz-ID von 1, 2 oder 3

$log = new boniPRESS_Query_Log( array( 'ref_id' => array( 1, 2, 3 ) ) );

Beispiel 3: Abrufen aller Einträge mit einer Referenz-ID von weniger als 100

$args = array(
'ref_id' => array(
'ids' => 100,
'compare' => '<' ) ); $log = new boniPRESS_Query_Log( $args );

Beispiel 4: Rufe alle Einträge ab, deren Referenz-ID höher oder gleich 10 ist, unabhängig davon, zu welchem Punkttyp der Eintrag gehört

$args = array( 'ref_id' => array(
'ids' => 10,
'compare' => '>='
),
'ctype' => ''
);
$log = new boniPRESS_Query_Log( $args );

Punktebeträge

Argument Art Beschreibung
amount ARRAY oder INT oder FLOAT Abrufen von Protokolleinträgen basierend auf einem oder mehreren Beträgen. Unterstützt , , , , , , und Vergleiche.=!=<<=>=BETWEENNOT BETWEENINNOT IN

Beispiel 1: Hole alle Einträge, bei denen Benutzer 1000 Punkte gewonnen haben

$log = new boniPRESS_Query_Log( 'amount=1000' );

Beispiel 2: Erhalte Einträge, bei denen ein Benutzer 10, 20 oder 50 Punkte gewonnen hat

$log = new boniPRESS_Query_Log( array( 'amount' => array( 10, 20, 50 ) ) );

Beispiel 3: Erhalte alle Einträge, bei denen ein Benutzer zwischen 0 und 100 Punkten gewonnen hat

$args = array(
'amount' => array(
'num' => array( 0, 100 ),
'compare' => 'BETWEEN'
)
);
$log = new boniPRESS_Query_Log( $args );

Beispiel 4: Abrufen aller Einträge, bei denen ein Benutzer Punkte verloren hat, unabhängig vom Punkttyp

$args = array(
'amount' => array(
'num' => 0,
'compare' => '<' ), 'ctype' => ''
);
$log = new boniPRESS_Query_Log( $args );

Zeit

Argument Art Beschreibung
time ARRAY oder INT oder STRING Abrufen von Protokolleinträgen für einen bestimmten Zeitraum oder Datum/Uhrzeit. Du kannst eine gut formatierte Datums-/Uhrzeitzeichenfolge, einen Unix-Zeitstempel oder ein Schlüsselwort angeben. Unterstützte Schlüsselwörter: , , und . Unterstützt , , , , , , und Vergleiche.todayyesterdaythisweekthismonth=!=<<=>=BETWEENNOT BETWEENINNOT IN

BoniPress speichert Datumsangaben im Unix-Zeitstempelformat. Wenn Du keinen Unix-Zeitstempel angibst, verwendet die Klasse strtotime, um Dein angegebenes Datum/ Deine angegebene Uhrzeit in einen Unix-Zeitstempel zu konvertieren. Auf diese Weise kannst Du Schlüsselwörter verwenden, die strtotime zusammen mit Datums- und Uhrzeitangaben akzeptiert.

Wenn Du ein Datum, aber keine Uhrzeit angibst, fragt die Klasse Einträge bis zum Ende des Tages und nicht bis zum Beginn des Tages ab! Wenn dies nicht gewünscht wird, stelle sicher, dass Du auch eine Uhrzeit mit Deinem Datum angibst.

Beispiel 1: Hole Dir die heutigen Einträge

$log = new boniPRESS_Query_Log( 'time=today' );

Beispiel 2: Abrufen aller Einträge für ein bestimmtes Datum

$log = new boniPRESS_Query_Log( array( 'time' => '2016-10-01' ) );

Beispiel 3: Abrufen aller Einträge zwischen zwei Datumsangaben

$args = array(
'time' => array(
'dates' => array( '2016-01-01 00:00:01', '2016-12-31 23:59:59' ),
'compare' => 'BETWEEN'
)
);
$log = new boniPRESS_Query_Log( $args );

Beispiel 4: Hole Dir alle Einträge vor Beginn des heutigen Tages

$args = array(
'time' => array(
'dates' => 'today midnight',
'compare' => '<' ) ); $log = new boniPRESS_Query_Log( $args );

Suche

Argument Art Beschreibung
s INT oder STRING Durchsuche die Spalten „Eintrag“ und rufe übereinstimmende Einträge ab. Du kannst Platzhalter für LIKE-Vergleiche verwenden.%
data INT oder STRING Durchsuche die „Daten“-Spalten und rufe übereinstimmende Einträge ab. Du kannst Platzhalter für LIKE-Vergleiche verwenden.%

In der Suchzeichenfolge werden keine Platzhalter automatisch hinzugefügt. Stattdessen musst Du sie hinzufügen. Wenn keine Platzhalter verwendet werden, durchsucht die Klasse den Wert genau.

Beispiel 1: Abrufen von Einträgen, deren Beschreibung die Zeichenfolge „boo“ enthält

$log = new boniPRESS_Query_Log( 's=boo' );

Beispiel 2: Abrufen von Einträgen, bei denen der Inhalt der „Eintragsspalten“ mit „Token“ beginnt

$log = new boniPRESS_Query_Log( array( 's' => 'Tokens%' ) );

Beispiel 3: Abrufen von Einträgen, deren Datenspalte die Zeichenfolge „boo“ enthält

$log = new boniPRESS_Query_Log( 'data=boo' );

Beispiel 4: Abrufen von Einträgen, bei denen die „Daten“-Spalten ein serialisiertes Array enthalten

$log = new boniPRESS_Query_Log( array( 'data' => 'a:1:{s:8:"ref_type";s:4:"user";}' ) );

Sortierung der Ergebnisse

Argument Art Beschreibung
orderby ARRAY oder STRING Sortieredie abgerufenen Protokolleinträge. Du kannst nach mehreren Spalten sortieren, indem Du ein Array von Spalten und deren Reihenfolge angibst.
order STRING Entweder zum Aufsteigen oder zum Absteigen. Ignoriert, wenn es sich um ein Array handelt.

ASCDESCorderby

Beispiel 1: Abrufen von Einträgen für den Benutzer 1 nach Zeit sortiert in aufsteigender Reihenfolge (letzter Eintrag wird zuletzt angezeigt)

$args = array(
'user_id' => 1,
'orderby' => 'time',
'order' => 'ASC'
);
$log = new boniPRESS_Query_Log( $args );

Beispiel 2: Erhalte „manuelle“ Einträge sortiert nach dem Punktbetrag (größter zuerst), dann nach Zeit

$args = array(
'ref' => 'manual',
'orderby' => array( 'creds' => 'DESC', 'time' => 'DESC' )
);
$log = new boniPRESS_Query_Log( $args );

Rückgabefelder

Argument Art Beschreibung
fields ARRAY oder STRING Entweder der Name einer bestimmten Spalte oder ein Array von Spaltennamen, die in den Ergebnissen zurückgegeben werden sollen. Informationen zu akzeptierten Werten findest Du in der Dokumentation zur Protokollstruktur.
ids BOOL Option, nur die Log-Einträge eindeutige ID zurückzugeben.

Beispiel 1: Abrufen der Protokolleintrags-IDs nur für einen bestimmten Benutzer

$args = array(
'user_id' => 1,
'fields' => 'id'
);
$log = new boniPRESS_Query_Log( $args );

Beispiel 2: Abrufen der Protokolleintrags-IDs und der Punktbeträge nur für einen bestimmten Benutzer

$args = array(
'user_id' => 5,
'fields' => array( 'id', 'creds' )
);
$log = new boniPRESS_Query_Log( $args );

Paginierung

Argument Art Beschreibung
number INT Die Anzahl der zurückzugebenden Einträge. Standardmäßig ist dies 25. Wird verwendet, um alle Einträge zurückzugeben. Wenn Sie die Ergebnisse in der Klassentabelle rendern, entspricht dies der Anzahl der Einträge, die pro Seite angezeigt werden.-1
paged INT Die Seitenzahl. Rufe Einträge ab, die bei Verwendung der Navigation auf Seite x angezeigt werden. Der Standardwert ist wie auf der ersten Seite.1
offset INT Anzahl der Einträge, die verschoben oder übergangen werden sollen. Sollte in Kombination mit verwendet werden. Der Standardwert ist Null.number

Es wird nicht empfohlen, alle Protokolleinträge anzuzeigen, wenn Du beabsichtigst, dann in der Klassentabelle zu rendern! Wenn Du dies tust, wird die Seite immer langsamer geladen, wenn die Anzahl der Einträge zunimmt!

Beispiel 1: 15 Einträge pro Seite anzeigen

$args = array(
'user_id' => 1,
'number' => 15
);
$log = new boniPRESS_Query_Log( $args );

Beispiel 2: Alle manuellen Protokolleinträge abrufen

$args = array(
'ref' => 'manual',
'number' => -1
);
$log = new boniPRESS_Query_Log( $args );

Abfragefilter

Die Abfrage löst die folgenden Filter aus, wenn die Klasse erstellt wird:

Filter Beschreibung
bonipress_query_log_args Ermöglicht das Bearbeiten der Abfrageargumente, bevor sie von der Klasse verarbeitet werden.
bonipress_allowed_sortby Steuert, nach welchen Werten die Abfrage sortiert werden kann. Standardmäßig sind dies die Kopfzeilen der Protokollspalte.