]> git.mxchange.org Git - friendica.git/blobdiff - mod/register.php
our implementation of "aspects" functionally complete
[friendica.git] / mod / register.php
index 5e14870286eb9f251479542044532604d471f5e7..451cb12465635cda2fdc3dded1259e39b5f216ff 100644 (file)
@@ -14,48 +14,71 @@ function register_post(&$a) {
                $verified = 1;
                break;
 
-       case REGISTER_VERIFY:
+       case REGISTER_APPROVE:
                $blocked = 1;
-               $verify = 0;
+               $verified = 0;
                break;
 
        default:
        case REGISTER_CLOSED:
                if((! x($_SESSION,'authenticated') && (! x($_SESSION,'administrator')))) {
-                       $_SESSION['sysmsg'] .= "Permission denied." . EOL;
+                       notice( t('Permission denied.') . EOL );
                        return;
                }
-               $blocked = 0;
+               $blocked = 1;
                $verified = 0;
                break;
        }
 
        if(x($_POST,'username'))
                $username = notags(trim($_POST['username']));
+       if(x($_POST['nickname']))
+               $nickname = notags(trim($_POST['nickname']));
        if(x($_POST,'email'))
-               $email =notags(trim($_POST['email']));
+               $email = notags(trim($_POST['email']));
 
-       if((! x($username)) || (! x($email))) {
-               $_SESSION['sysmsg'] .= "Please enter the required information.". EOL;
+       if((! x($username)) || (! x($email)) || (! x($nickname))) {
+               notice( t('Please enter the required information.') . EOL );
                return;
        }
 
        $err = '';
 
+       // TODO fix some of these regex's for int'l/utf-8.
+
        if(!eregi('[A-Za-z0-9._%-]+@[A-Za-z0-9._%-]+\.[A-Za-z]{2,6}',$email))
-               $err .= " Not valid email.";
-       if(strlen($username) > 40)
-               $err .= " Please use a shorter name.";
+               $err .= t(' Not a valid email address.');
+       if(strlen($username) > 48)
+               $err .= t(' Please use a shorter name.');
        if(strlen($username) < 3)
-               $err .= " Name too short.";
+               $err .= t(' Name too short.');
+
+       // I don't really like having this rule, but it cuts down
+       // on the number of auto-registrations by Russian spammers
+
+       if(! preg_match("/^[a-zA-Z]* [a-zA-Z]*$/",$username))
+               $err .= t(' That doesn\'t appear to be your full name.');
+
+
        $r = q("SELECT `uid` FROM `user` 
                WHERE `email` = '%s' LIMIT 1",
                dbesc($email)
-               );
+       );
+
        if($r !== false && count($r))
-               $err .= " This email address is already registered." . EOL;
+               $err .= t(' Your email address is already registered on this system.') ;
+
+       if(! preg_match("/^[a-zA-Z][a-zA-Z0-9\-\_]*$/",$nickname))
+               $err .= t(' Nickname <strong>must</strong> start with a letter and contain only letters, numbers, dashes, or underscore.') ;
+       $r = q("SELECT `uid` FROM `user`
+                       WHERE `nickname` = '%s' LIMIT 1",
+                       dbesc($nickname)
+       );
+       if(count($r))
+               $err .= t(' Nickname is already registered. Please choose another.');
+
        if(strlen($err)) {
-               $_SESSION['sysmsg'] .= $err;
+               notice( $err . EOL );
                return;
        }
 
@@ -79,12 +102,13 @@ function register_post(&$a) {
        $pkey = openssl_pkey_get_details($res);
        $pubkey = $pkey["key"];
 
-       $r = q("INSERT INTO `user` ( `username`, `password`, `email`,
+       $r = q("INSERT INTO `user` ( `username`, `password`, `email`, `nickname`,
                `pubkey`, `prvkey`, `verified`, `blocked` )
-               VALUES ( '%s', '%s', '%s', '%s', '%s', %d, %d )",
+               VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', %d, %d )",
                dbesc($username),
                dbesc($new_password_encoded),
                dbesc($email),
+               dbesc($nickname),
                dbesc($pubkey),
                dbesc($prvkey),
                intval($verified),
@@ -101,42 +125,44 @@ function register_post(&$a) {
                        $newuid = intval($r[0]['uid']);
        }
        else {
-               $_SESSION['sysmsg'] .= "An error occurred during registration. Please try again." . EOL;
+               notice( t('An error occurred during registration. Please try again.') . EOL );
                return;
        }               
 
-       if(x($newuid) !== NULL) {
+       if(x($newuid) !== false) {
                $r = q("INSERT INTO `profile` ( `uid`, `profile-name`, `is-default`, `name`, `photo`, `thumb` )
                        VALUES ( %d, '%s', %d, '%s', '%s', '%s' ) ",
                        intval($newuid),
                        'default',
                        1,
                        dbesc($username),
-                       dbesc($a->get_baseurl() . '/images/default-profile.jpg'),
-                       dbesc($a->get_baseurl() . '/images/default-profile-sm.jpg')
+                       dbesc($a->get_baseurl() . "/photo/profile/{$newuid}.jpg"),
+                       dbesc($a->get_baseurl() . "/photo/avatar/{$newuid}.jpg")
 
                );
                if($r === false) {
-                       $_SESSION['sysmsg'] .= "An error occurred creating your default profile. Please try again." . EOL ;
+                       notice( t('An error occurred creating your default profile. Please try again.') . EOL );
                        // Start fresh next time.
                        $r = q("DELETE FROM `user` WHERE `uid` = %d",
                                intval($newuid));
                        return;
                }
-               $r = q("INSERT INTO `contact` ( `uid`, `created`, `self`, `name`, `photo`, `thumb`, `blocked`, `url`,
-                       `request`, `notify`, `poll`, `confirm` )
-                       VALUES ( %d, '%s', 1, '%s', '%s', '%s', 0, '%s', '%s', '%s', '%s', '%s' ) ",
+               $r = q("INSERT INTO `contact` ( `uid`, `created`, `self`, `name`, `photo`, `thumb`, `blocked`, `pending`, `url`,
+                       `request`, `notify`, `poll`, `confirm`, `name-date`, `uri-date`, `avatar-date` )
+                       VALUES ( %d, '%s', 1, '%s', '%s', '%s', 0, 0, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' ) ",
                        intval($newuid),
                        datetime_convert(),
                        dbesc($username),
-                       dbesc($a->get_baseurl() . '/images/default-profile.jpg'),
-                       dbesc($a->get_baseurl() . '/images/default-profile-sm.jpg'), 
-                       dbesc($a->get_baseurl() . '/profile/' . intval($newuid)),
-                       dbesc($a->get_baseurl() . '/dfrn_request/' . intval($newuid)),
-                       dbesc($a->get_baseurl() . '/dfrn_notify/' . intval($newuid)),
-                       dbesc($a->get_baseurl() . '/dfrn_poll/' . intval($newuid)),
-                       dbesc($a->get_baseurl() . '/dfrn_confirm/' . intval($newuid))
-
+                       dbesc($a->get_baseurl() . "/photo/profile/{$newuid}.jpg"),
+                       dbesc($a->get_baseurl() . "/photo/avatar/{$newuid}.jpg"),
+                       dbesc($a->get_baseurl() . "/profile/$nickname"),
+                       dbesc($a->get_baseurl() . "/dfrn_request/$nickname"),
+                       dbesc($a->get_baseurl() . "/dfrn_notify/$nickname"),
+                       dbesc($a->get_baseurl() . "/dfrn_poll/$nickname"),
+                       dbesc($a->get_baseurl() . "/dfrn_confirm/$nickname"),
+                       dbesc(datetime_convert()),
+                       dbesc(datetime_convert()),
+                       dbesc(datetime_convert())
                );
 
 
@@ -152,16 +178,51 @@ function register_post(&$a) {
                                '$password' => $new_password,
                                '$uid' => $newuid ));
 
-               $res = mail($email,"Registration details for {$a->config['sitename']}",$email_tpl,"From: Administrator@{$_SERVER[SERVER_NAME]}");
+               $res = mail($email, t('Registration details for ') . $a->config['sitename'],
+                       $email_tpl, 'From: ' . t('Administrator@') . $_SERVER[SERVER_NAME]);
 
-       }
 
-       if($res) {
-               $_SESSION['sysmsg'] .= "Registration successful. Please check your email for further instructions." . EOL ;
-               goaway($a->get_baseurl());
+               if($res) {
+                       notice( t('Registration successful. Please check your email for further instructions.') . EOL ) ;
+                       goaway($a->get_baseurl());
+               }
+               else {
+                       notice( t('Failed to send email message. Here is the message that failed.') . $email_tpl . EOL );
+               }
        }
-       else {
-               $_SESSION['sysmsg'] .= "Failed to send email message. Here is the message that failed. $email_tpl " . EOL;
+       elseif($a->config['register_policy'] == REGISTER_APPROVE) {
+               if(! strlen($a->config['admin_email'])) {
+                       notice( t('Your registration can not be processed.') . EOL);
+                       goaway($a->get_baseurl());
+               }
+
+               $hash = random_string();
+               $r = q("INSERT INTO `register` ( `hash`, `created`, `uid`, `password` ) VALUES ( '%s', '%s', %d, '%s' ) ",
+                       dbesc($hash),
+                       dbesc(datetime_convert()),
+                       intval($newuid),
+                       dbesc($new_password)
+               );
+
+               $email_tpl = file_get_contents("view/register_verify_eml.tpl");
+               $email_tpl = replace_macros($email_tpl, array(
+                               '$sitename' => $a->config['sitename'],
+                               '$siteurl' =>  $a->get_baseurl(),
+                               '$username' => $username,
+                               '$email' => $email,
+                               '$password' => $new_password,
+                               '$uid' => $newuid,
+                               '$hash' => $hash
+                ));
+
+               $res = mail($a->config['admin_email'], t('Registration request at ') . $a->config['sitename'],
+                       $email_tpl,'From: ' .  t('Administrator@') . $_SERVER[SERVER_NAME]);
+
+               if($res) {
+                       notice( t('Your registration is pending approval by the site owner.') . EOL ) ;
+                       goaway($a->get_baseurl());
+               }
+
        }
        
        return;
@@ -175,8 +236,18 @@ function register_post(&$a) {
 if(! function_exists('register_content')) {
 function register_content(&$a) {
 
+       if($a->config['register_policy'] == REGISTER_CLOSED) {
+               notice("Permission denied." . EOL);
+               return;
+       }
+
        $o = file_get_contents("view/register.tpl");
-       $o = replace_macros($o, array('$registertext' =>((x($a->config,'register_text'))? $a->config['register_text'] : "" )));
+       $o = replace_macros($o, array(
+               '$registertext' =>((x($a->config,'register_text'))
+                       ? '<div class="error-message">' . $a->config['register_text'] . '</div>'
+                       : "" ),
+               '$sitename' => $a->get_hostname()
+       ));
        return $o;
 
 }}