Willkommen, Gast ( Anmelden | Registrierung )     [ Hilfe | Mitglieder | Suche ]

 
Reply to this topicStart new topic
> Event für ein Plugin gesucht!
FireFlyer
Beitrag Tue. 29. April 2008, 20:34
Beitrag #1


Advanced Member
*******

Gruppe: AdvancedMembers
Beiträge: 446
Mitglied seit: 12.09.2006
Wohnort: Bamberg
Mitglieds-Nr.: 235



Ich hab schon vor längerer Zeit ein Script abgeändert, damit ich es als SF-Plugin nutzen kann. Klappt alles wunderbar, nur möchte ich jetzt, dass es geloggt wird.

Mit dem Plugin SF-Log kann ich mir ja alles anzeigen lassen, aber ich muß ja bei meinem Script einen EVENT eintragen und da hackt es.
Sobald mein Backend-Plugin-Menüpunkt angeklickt wird, soll er ins Log eintragen, dass Benutzer XP das Plugin benutzt.

Hab auch schon in der Classe vom SF-Log mal rein geschaut, aber unter Plugins dokumentiert er nur installieren, löschen...

Liegt es am SF-Log, dass dies nicht geht oder muß ich meinem Plugin einen Event mitgeben? Könnte mir jemand dabei helfen?
Go to the top of the page
 
+Quote Post
FireFlyer
Beitrag Fri. 2. May 2008, 21:46
Beitrag #2


Advanced Member
*******

Gruppe: AdvancedMembers
Beiträge: 446
Mitglied seit: 12.09.2006
Wohnort: Bamberg
Mitglieds-Nr.: 235



Kann mir denn niemand, wenigstens einen Amsatz geben, in welche Richtung ich suchen muss?
Go to the top of the page
 
+Quote Post
bjoern
Beitrag Sun. 4. May 2008, 22:07
Beitrag #3


Administrator
********

Gruppe: Members
Beiträge: 1.092
Mitglied seit: 16.06.2006
Wohnort: Köln
Mitglieds-Nr.: 1



Puhh, es wird wirklich Zeit das das neue Dokuwiki an den Start kommt...

Anleitung für die Nutzung von Events

Event anlegen

Ein Event kann ganz leicht mit fire_event('eventname', array('dem Event übergebene Argumente') ) an einer beliebigen Stelle des Codes eingefügt werden. Der Event wird nun abgefeuert. Was noch fehlt ist eine Funktionalität, die auf den Events reagiert und eigenen Code ausführt

Auf Events reagieren

Um auf Events zu reagieren, wird einfach ein spezieller SQL in der Datenbank hinterlegt. Events werden in der Tabelle "cms_values" abgespeichert.

Beispiel 1:

Ich definiere einen Event an einer beliebigen Stelle in meinem Code.

QUELLTEXT
$eventname = 'mein_erster_event';
$args = array('wert1'=> 'Hallo', 'wert2'=> 'Event')
fire_event($eventname, $args);



Nun muss der SQL erstellt werden, welcher auf den gefeuerten Event reagiert. Das folgende SQL generiert einen Eventlistener, der beim Feuern des Events auf dem Bildschirm "Hallo Event" ausgibt.

QUELLTEXT
INSERT INTO `cms_values` (
  `idclient`,
  `idlang`,
  `group_name`,
  `key1`,
  `key2`,
  `key3`,
  `key4`,
  `value`,
  `conf_sortindex`,
  `conf_desc_langstring`,
  `conf_head_langstring`,
  `conf_input_type`,
  `conf_input_type_val`,
  `conf_input_type_langstring`,
  `conf_visible`)
VALUES (
  0,
  0,
  'events',
  'mein_erster_event',
  'actions',
  'custom_events',
  NULL,
  ' echo $args["wert1"] . ' ' . $args['wert2'];',
  0,
  NULL,
  NULL,
  '',
  NULL,
  NULL,
  0);


Beschreibung des SQLs:
idclient = Id des Clients (Projektes) in dem der Event ausgeführt werden soll. Wird eine 0 eingetragen, dann ist der Event in jedem Projekt gültig.
idlang = Id der Sprache in dem der Event ausgeführt werden soll. Wird eine 0 eingetragen, dann ist der Event in jeder Sprache gültig.
group_name = Hier ist immer das Schlüsselwort 'event' einzutragen. Dadurch weiß Sefrengo, dass es sich um einen Datensatz der Event Gruppe handelt.
key1 = Name des Events, in diesem Fall 'mein_erster_event'
key2 = Hier muß immer das Schlüsselwort 'actions' eingetragen werden. Es bezeichnet den Type des Events. Zur Zeit unterstützt Sefrengo nur Events vom Type 'actions'
key3 = Beliebiger String, soll kurz beschreiben zu welcher Gruppe der Event gehört. Ich habe da mal einfach 'custom_events' eingetragen. Hat keine Funktion, die sich auf den Programmablauf auswirkt.
value = PHP Code, der ausgeführt werden soll. Im Beispiel werden beim feuern des Events die übergebenen Argumente ausgegeben. Aus echo $args["wert1"] . ' ' . $args['wert2']; wird dann bei Programmausführung 'Hallo Event'.
conf_sortindex = '0' eintragen, keine Weitere Funktion
conf_desc_langstring = 'NULL' eintragen, keine Weitere Funktion.
conf_head_langstring = 'NULL' eintragen, keine Weitere Funktion.
conf_input_type = '' eintragen, keine Weitere Funktion .
conf_input_type_val = 'NULL' eintragen, keine Weitere Funktion .
conf_input_type_langstring = 'NULL' eintragen, keine Weitere Funktion .
conf_visible = '0' eintragen, keine Weitere Funktion .

Beispiel 2

Der PHPCODE des SQLs wird um einen Rückgabewert erweitert.

QUELLTEXT
echo $args["wert1"] . ' ' . $args['wert2'];
$this->addReturnval('ein Rückgabewert');


Es ist egal, ob als Rückgabewert ein String, Array, Objekt, etc. übergeben wird. Alle Returnwerte werden in einem numerischen Array gespeichert. So ist es möglich, dass mehrere Rückgabewerte (z.B. wenn in einem Event mehrere Eventlistener ausgeführt werden )

QUELLTEXT
$rueckgabe = fire_event($eventname, $args);
print_r($rueckgabe);


In $rueckgabe['0'] steht jetzt der String "Ein Rückgabewert.".

Hoffe, Du kommst damit klar. smile.gif




--------------------
Es wird, es wird...
Go to the top of the page
 
+Quote Post
FireFlyer
Beitrag Mon. 5. May 2008, 13:34
Beitrag #4


Advanced Member
*******

Gruppe: AdvancedMembers
Beiträge: 446
Mitglied seit: 12.09.2006
Wohnort: Bamberg
Mitglieds-Nr.: 235



Danke bjoern, jetzt hab ich wenigstens Infos und kann mich da durch wühlen!
Go to the top of the page
 
+Quote Post
bjoern
Beitrag Mon. 5. May 2008, 17:20
Beitrag #5


Administrator
********

Gruppe: Members
Beiträge: 1.092
Mitglied seit: 16.06.2006
Wohnort: Köln
Mitglieds-Nr.: 1



Gerne geschehen.


--------------------
Es wird, es wird...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 Besucher lesen dieses Thema (Gäste: 1 | Anonyme Besucher: 0)
0 Mitglieder:

 



RSS Vereinfachte Darstellung Aktuelles Datum: 19.4.24 - 07:16

Sefrengo ist ein eingetragenes Markenzeichen und urheberrechtlich geschützt.
Copyright 2009 Design & Daten, Alle Rechte vorbehalten.