diff --git a/lib/common.php b/lib/common.php index 6138200e49..94540e3a85 100644 --- a/lib/common.php +++ b/lib/common.php @@ -63,8 +63,13 @@ if (!function_exists('dl')) { // Fortunately trying to call the disabled one will only trigger // a warning, not a fatal, so it's safe to leave it for our case. // Callers will be suppressing warnings anyway. - $disabled = array_filter(array_map('trim', explode(',', ini_get('disable_functions')))); - if (!in_array('dl', $disabled)) { + try { + // Reading the ini setting is hard as we don't know PHP's parsing, + // but we can check if it is disabled through reflection. + $dl = new ReflectionFunction('dl'); + // $disabled = $dl->isDisabled(); // don't need to check this now + } catch (ReflectionException $e) { + // Ok, it *really* doesn't exist! function dl($library) { return false; } diff --git a/plugins/Facebook/FBConnectAuth.php b/plugins/Facebook/FBConnectAuth.php index 84d51578f1..937db56e56 100644 --- a/plugins/Facebook/FBConnectAuth.php +++ b/plugins/Facebook/FBConnectAuth.php @@ -232,6 +232,10 @@ class FBConnectauthAction extends Action function createNewUser() { + if (!Event::handle('StartRegistrationTry', array($this))) { + return; + } + if (common_config('site', 'closed')) { // TRANS: Client error trying to register with registrations not allowed. $this->clientError(_m('Registration not allowed.')); @@ -297,6 +301,8 @@ class FBConnectauthAction extends Action common_debug('Facebook Connect Plugin - ' . "Registered new user $user->id from Facebook user $this->fbuid"); + Event::handle('EndRegistrationTry', array($this)); + common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)), 303); } diff --git a/plugins/OpenID/finishopenidlogin.php b/plugins/OpenID/finishopenidlogin.php index 0053a7f1d2..8d498d0549 100644 --- a/plugins/OpenID/finishopenidlogin.php +++ b/plugins/OpenID/finishopenidlogin.php @@ -262,6 +262,10 @@ class FinishopenidloginAction extends Action { # FIXME: save invite code before redirect, and check here + if (!Event::handle('StartRegistrationTry', array($this))) { + return; + } + if (common_config('site', 'closed')) { // TRANS: OpenID plugin message. No new user registration is allowed on the site. $this->clientError(_m('Registration not allowed.')); @@ -374,6 +378,9 @@ class FinishopenidloginAction extends Action common_rememberme($user); } unset($_SESSION['openid_rememberme']); + + Event::handle('EndRegistrationTry', array($this)); + common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)), 303); } diff --git a/plugins/RegisterThrottle/RegisterThrottlePlugin.php b/plugins/RegisterThrottle/RegisterThrottlePlugin.php index 0078d3c600..e3982427da 100644 --- a/plugins/RegisterThrottle/RegisterThrottlePlugin.php +++ b/plugins/RegisterThrottle/RegisterThrottlePlugin.php @@ -167,28 +167,24 @@ class RegisterThrottlePlugin extends Plugin } /** - * Called after someone registers. + * Called after someone registers, by any means. * * We record the successful registration and IP address. * - * @param Action $action Action that is being executed + * @param Profile $profile new user's profile + * @param User $user new user * * @return boolean hook value * */ - function onEndRegistrationTry($action) + function onEndUserRegister($profile, $user) { $ipaddress = $this->_getIpAddress(); if (empty($ipaddress)) { - throw new ServerException(_m('Cannot find IP address.')); - } - - $user = common_current_user(); - - if (empty($user)) { - throw new ServerException(_m('Cannot find user after successful registration.')); + // User registration can happen from command-line scripts etc. + return true; } $reg = new Registration_ip(); diff --git a/plugins/TwitterBridge/twitterauthorization.php b/plugins/TwitterBridge/twitterauthorization.php index bbe41bd438..28b40cc4f4 100644 --- a/plugins/TwitterBridge/twitterauthorization.php +++ b/plugins/TwitterBridge/twitterauthorization.php @@ -419,6 +419,10 @@ class TwitterauthorizationAction extends Action function createNewUser() { + if (!Event::handle('StartRegistrationTry', array($this))) { + return; + } + if (common_config('site', 'closed')) { $this->clientError(_m('Registration not allowed.')); return; @@ -490,6 +494,8 @@ class TwitterauthorizationAction extends Action common_debug('TwitterBridge Plugin - ' . "Registered new user $user->id from Twitter user $this->twuid"); + Event::handle('EndRegistrationTry', array($this)); + common_redirect(common_local_url('showstream', array('nickname' => $user->nickname)), 303); }