[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Community addon REDAXO 4.5 register_extension_points - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
gupi
Beiträge: 286
Registriert: 20. Nov 2008, 13:49
Wohnort: Elsdorf/Rheinland

Community addon REDAXO 4.5 register_extension_points

21. Jun 2013, 08:41

Hallo,
wenn ich in der Funktion "deleteUser($id)" der Klasse "rex_com_auth" die extension points "COM_AUTH_USER_DELETE" und "COM_AUTH_USER_DELETED" nutzen will,

Code: Alles auswählen

function deleteUser($id)
{
$delete = TRUE;
$delete = rex_register_extension_point("COM_AUTH_USER_DELETE", $delete, $id);
if(!$delete) { return FALSE; }

$id = (int) $id;
$gu = rex_sql::factory();
$gu->setQuery('delete from rex_com_user where id='.$id);

rex_register_extension_point("COM_AUTH_USER_DELETED", "", $id);

return TRUE;
}
stelle ich fest, dass der Parameter 'id' nicht übergeben wird.
Ein Blick in den Quellcode der Core-function "rex_register_extension_point(...)" zeigt mir auch warum das so ist:

Code: Alles auswählen

function rex_register_extension_point($extensionPoint, $subject = '', $params = array (), $read_only = false)
{
  global $REX;
  $ep_log_entry = array('type'=>'EP',
                        'name'=>$extensionPoint,
                        '$subject'=>$subject,
                        '$params'=>$params,
                        '$read_only'=>$read_only
                        ); /* ep log patch */

  $result = $subject;

  if (!is_array($params))
  {
    $params = array ();
  }
...
Der ursprüngliche Wert von $params geht verloren falls dieser kein Array ist. Dies ist aber hier der Fall.
Ich habe bei mir als workaround die "deleteUser" Funktion geändert und erfolgreich getestet:

Code: Alles auswählen

function deleteUser($id)
{
$delete = TRUE;
$delete = rex_register_extension_point("COM_AUTH_USER_DELETE", $delete, array('id'=>$id));
if(!$delete) { return FALSE; }

$id = (int) $id;
$gu = rex_sql::factory();
$gu->setQuery('delete from rex_com_user where id='.$id);

rex_register_extension_point("COM_AUTH_USER_DELETED", "", array('id'=>$id));

return TRUE;
}
LG
Gunter
read the manual first

Benutzeravatar
Markus.Staab
Entwickler
Beiträge: 9634
Registriert: 29. Jan 2005, 15:50
Wohnort: Aschaffenburg/Germany
Kontaktdaten: ICQ Website

Re: Community addon REDAXO 4.5 register_extension_points

22. Jun 2013, 23:28


Zurück zu „Sonstiges“