Community addon REDAXO 4.5 register_extension_points
Verfasst: 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,
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:
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:
LG
Gunter
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;
}
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 ();
}
...
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;
}
Gunter