X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FEmailRegistration%2FEmailRegistrationPlugin.php;h=77ac763bd030df7a2a942afef7ec97c457dca1c6;hb=d6b28c64830f632bb2f4b6f3c9369b9e56ad217a;hp=7cbb8a85f32bdc5c55bf415a84c62d54af8c29a9;hpb=bc66211565035ed5986390fdecd089cbbb8db959;p=quix0rs-gnu-social.git diff --git a/plugins/EmailRegistration/EmailRegistrationPlugin.php b/plugins/EmailRegistration/EmailRegistrationPlugin.php index 7cbb8a85f3..77ac763bd0 100644 --- a/plugins/EmailRegistration/EmailRegistrationPlugin.php +++ b/plugins/EmailRegistration/EmailRegistrationPlugin.php @@ -47,25 +47,9 @@ if (!defined('STATUSNET')) { */ class EmailRegistrationPlugin extends Plugin { - function onAutoload($cls) - { - $dir = dirname(__FILE__); - - switch ($cls) - { - case 'EmailregisterAction': - include_once $dir . '/' . strtolower(mb_substr($cls, 0, -6)) . '.php'; - return false; - case 'EmailRegistrationForm': - case 'ConfirmRegistrationForm': - include_once $dir . '/' . strtolower($cls) . '.php'; - return false; - default: - return true; - } - } + const CONFIRMTYPE = 'register'; - function onArgsInitialize(&$args) + function onArgsInitialize(array &$args) { if (array_key_exists('action', $args) && $args['action'] == 'register') { // YOINK! @@ -88,7 +72,7 @@ class EmailRegistrationPlugin extends Plugin $dir = dirname(__FILE__); // @todo FIXME: i18n issue. - $docFile = DocFile::forTitle($title, $dir.'/doc-src/'); + $docFile = DocFile::forTitle($title, array($dir . '/doc-src/')); if (!empty($docFile)) { $output = $docFile->toHTML(); @@ -98,10 +82,100 @@ class EmailRegistrationPlugin extends Plugin return true; } - function onPluginVersion(&$versions) + static function registerEmail($email) + { + $old = User::getKV('email', $email); + + if (!empty($old)) { + // TRANS: Error text when trying to register with an already registered e-mail address. + // TRANS: %s is the URL to recover password at. + throw new ClientException(sprintf(_m('A user with that email address already exists. You can use the '. + 'password recovery tool to recover a missing password.'), + common_local_url('recoverpassword'))); + } + + $valid = false; + + if (Event::handle('StartValidateUserEmail', array(null, $email, &$valid))) { + $valid = Validate::email($email, common_config('email', 'check_domain')); + Event::handle('EndValidateUserEmail', array(null, $email, &$valid)); + } + + if (!$valid) { + // TRANS: Error text when trying to register with an invalid e-mail address. + throw new ClientException(_m('Not a valid email address.')); + } + + $confirm = Confirm_address::getAddress($email, self::CONFIRMTYPE); + + if (empty($confirm)) { + $confirm = Confirm_address::saveNew(null, $email, 'register'); + } + + return $confirm; + } + + static function nicknameFromEmail($email) + { + $parts = explode('@', $email); + + $nickname = $parts[0]; + + $nickname = preg_replace('/[^A-Za-z0-9]/', '', $nickname); + + $nickname = Nickname::normalize($nickname); + + $original = $nickname; + + $n = 0; + + while (User::getKV('nickname', $nickname)) { + $n++; + $nickname = $original . $n; + } + + return $nickname; + } + + static function sendConfirmEmail($confirm, $title=null) + { + $sitename = common_config('site', 'name'); + + $recipients = array($confirm->address); + + $headers['From'] = mail_notify_from(); + $headers['To'] = trim($confirm->address); + // TRANS: Subject for confirmation e-mail. + // TRANS: %s is the StatusNet sitename. + $headers['Subject'] = sprintf(_m('Welcome to %s'), $sitename); + $headers['Content-Type'] = 'text/html; charset=UTF-8'; + + $confirmUrl = common_local_url('register', array('code' => $confirm->code)); + + if (empty($title)) { + $title = 'confirmemailreg'; + } + + $confirmTemplate = DocFile::forTitle($title, DocFile::mailPaths()); + + $body = $confirmTemplate->toHTML(array('confirmurl' => $confirmUrl)); + + mail_send($recipients, $headers, $body); + } + + function onEndDocFileForTitle($title, array $paths, &$filename) + { + if ($title == 'confirmemailreg' && empty($filename)) { + $filename = dirname(__FILE__).'/mail-src/'.$title; + return false; + } + return true; + } + + function onPluginVersion(array &$versions) { $versions[] = array('name' => 'EmailRegistration', - 'version' => STATUSNET_VERSION, + 'version' => GNUSOCIAL_VERSION, 'author' => 'Evan Prodromou', 'homepage' => 'http://status.net/wiki/Plugin:EmailRegistration', 'rawdescription' =>