[gelöst]Bestehende Funktion eines Moduls aufrufen
Eingetragen von Timbalord (217)
am 21.07.2010 - 14:24 Uhr in
am 21.07.2010 - 14:24 Uhr in
Hallo zusammen,
es gibt im core modul user.module zwei nette Funktionen, die ich gerne als Benutzerdefinierten PHP Code innerhalb einer Aktion aufrufen wollen würde.
Der Code sperrt und entsperrt Benutzer:
<?php
/**
* Callback function for admin mass unblocking users.
*/
function user_user_operations_unblock($accounts) {
foreach ($accounts as $uid) {
$account = user_load(array('uid' => (int)$uid));
// Skip unblocking user if they are already unblocked.
if ($account !== FALSE && $account->status == 0) {
user_save($account, array('status' => 1));
}
}
}
/**
* Callback function for admin mass blocking users.
*/
function user_user_operations_block($accounts) {
foreach ($accounts as $uid) {
$account = user_load(array('uid' => (int)$uid));
// Skip blocking user if they are already blocked.
if ($account !== FALSE && $account->status == 1) {
user_save($account, array('status' => 0));
}
}
}
?>
was ich nun innerhalb des Benutzerdefinierten PHP COdes gemacht habe ist folgendes:
<?php
//Funktion stammt aus user.module Zeile 1843
user_user_operations_block(array($account->uid));
?>
leider tut sich da jedoch nichts, nachdem das event ausgelöst wurde. Mache ich einen Gedankenfehler?
Dennis
- Anmelden oder Registrieren um Kommentare zu schreiben
Wenn's so nicht klappt, dann
am 21.07.2010 - 16:05 Uhr
Wenn's so nicht klappt, dann schreib in die Action doch einfach ganz normalen Code, der den Status auf 0 oder 1 setzt.
<?php
$sql = "UPDATE {users} u SET status=0 WHERE uid = %d";
$result = db_query($sql, $account->uid);
?>
Fertig, schon wird der Status auf 0 gesetzt und der User ist gesperrt.
Oder ruf einfach in deinem Code die Funktion user_save auf, was anderes machen die beiden Funktionen oben letztendlich auch nicht.
Wenn der Aufruf dieser Funktion nicht klappt, dann bau sie eben im PHP-Code nach, das ist bei den kleinen Funktionen ja noch kein Problem.
include
am 21.07.2010 - 17:00 Uhr
Hallo.
Hast Du mal in Dein error.log von php geschaut, ob da eventuell ein Fehler auftaucht (so in der Art "unbekannte Funktion")?
<?php
module_load_include('module', 'user');
user_user_operations_block(array($account->uid));
?>
@Exterior: damit umgeht er jedoch sämtliche Sicherheitsbeschränkungen und eventuellen Benachrichtigungen
hth,
Stefan
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Ein ganz großer Haufen Asche
am 23.07.2010 - 06:54 Uhr
Ein ganz großer Haufen Asche auf mein Haupt.
Die Funktionen sind dem System auch ohne die Einbindung der Module bekannt. Wenn man bloß richtig liest, kommt zum Vorschein, dass der "benutzerdefinierte PHP Code ohne die Start und Ende zeichen eingegeben werden muss. Man man man.....
Danke euch trotzdem
Viele Grüße Dennis
--------------------------------------------------
http://www.datenbock.de
http://twitter.com/datenbock
http://www.xing.com/profile/Dennis_ReinertFrerich