]> git.mxchange.org Git - friendica.git/blobdiff - mod/register.php
relax content-type check on yadi discovery document
[friendica.git] / mod / register.php
index a0a5e5c284f880ba7003d5732452184ea1472cee..3b26f69712f56d4694378a334e488dba5afdd126 100644 (file)
@@ -36,22 +36,35 @@ function register_post(&$a) {
                $nickname = notags(trim($_POST['nickname']));
        if(x($_POST,'email'))
                $email = notags(trim($_POST['email']));
+       if(x($_POST,'openid_url'))
+               $openid_url = notags(trim($_POST['openid_url']));
+
 
        if((! x($username)) || (! x($email)) || (! x($nickname))) {
+               if($openid_url) {
+                       $_SESSION['register'] = 1;
+                       $_SESSION['openid'] = $openid_url;
+                       require_once('library/openid.php');
+                       $openid = new LightOpenID;
+                       $openid->identity = $openid_url;
+                       $openid->returnUrl = $a->get_baseurl() . '/openid'; 
+                       $openid->required = array('namePerson/friendly', 'contact/email', 'namePerson');
+                       $openid->optional = array('namePerson/first');
+                       goaway($openid->authUrl());
+                       // NOTREACHED   
+               }
+
                notice( t('Please enter the required information.') . EOL );
                return;
        }
 
        $err = '';
 
-       // TODO fix some of these regex's for int'l/utf-8.
 
-       if(! valid_email($email))
-               $err .= t(' Not a valid email address.');
        if(strlen($username) > 48)
-               $err .= t(' Please use a shorter name.');
+               $err .= t('Please use a shorter name.') . EOL;
        if(strlen($username) < 3)
-               $err .= t(' Name too short.');
+               $err .= t('Name too short.') . EOL;
 
        // I don't really like having this rule, but it cuts down
        // on the number of auto-registrations by Russian spammers
@@ -63,23 +76,27 @@ function register_post(&$a) {
        $loose_reg = get_config('system','no_regfullname');
 
        if((! $loose_reg) && (! preg_match($pat,$username)))
-               $err .= t(' That doesn\'t appear to be your full name.');
+               $err .= t('That doesn\'t appear to be your full name.') . EOL;
 
        if(! allowed_email($email))
-                       $err .= t(' Your email domain is not among those allowed on this site.');
+                       $err .= t('Your email domain is not among those allowed on this site.') . EOL;
+
+       if((! valid_email($email)) || (! validate_email($email)))
+               $err .= t('Not a valid email address.') . EOL;
+
+       $nickname = $_POST['nickname'] = strtolower($nickname);
 
-       $nickname = strtolower($nickname);
        if(! preg_match("/^[a-z][a-z0-9\-\_]*$/",$nickname))
-               $err .= t(' Your "nickname" can only contain "a-z", "0-9", "-", and "_", and must also begin with a letter.');
+               $err .= t('Your "nickname" can only contain "a-z", "0-9", "-", and "_", and must also begin with a letter.') . EOL;
        $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.');
+               $err .= t('Nickname is already registered. Please choose another.') . EOL;
 
        if(strlen($err)) {
-               notice( $err . EOL );
+               notice( $err );
                return;
        }
 
@@ -117,12 +134,13 @@ function register_post(&$a) {
        $spkey = openssl_pkey_get_details($sres);
        $spubkey = $spkey["key"];
 
-       $r = q("INSERT INTO `user` ( `username`, `password`, `email`, `nickname`,
+       $r = q("INSERT INTO `user` ( `username`, `password`, `email`, `openid`, `nickname`,
                `pubkey`, `prvkey`, `spubkey`, `sprvkey`, `verified`, `blocked` )
-               VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d )",
+               VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d )",
                dbesc($username),
                dbesc($new_password_encoded),
                dbesc($email),
+               dbesc($openid_url),
                dbesc($nickname),
                dbesc($pubkey),
                dbesc($prvkey),
@@ -187,6 +205,50 @@ function register_post(&$a) {
 
        }
 
+       $use_gravatar = ((get_config('system','no_gravatar')) ? false : true);
+       if($use_gravatar) {
+
+               require_once('include/Photo.php');
+
+               $photo = gravatar_img($email);
+               $photo_failure = false;
+
+               $filename = basename($photo);
+               $img_str = fetch_url($photo,true);
+               $img = new Photo($img_str);
+               if($img->is_valid()) {
+
+                       $img->scaleImageSquare(175);
+                                       
+                       $hash = photo_new_resource();
+
+                       $r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 4 );
+
+                       if($r === false)
+                               $photo_failure = true;
+
+                       $img->scaleImage(80);
+
+                       $r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 5 );
+
+                       if($r === false)
+                               $photo_failure = true;
+
+                       $img->scaleImage(48);
+
+                       $r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 6 );
+
+                       if($r === false)
+                               $photo_failure = true;
+
+                       if(! $photo_failure) {
+                               q("UPDATE `photo` SET `profile` = 1 WHERE `resource-id` = '%s' ",
+                                       dbesc($hash)
+                               );
+                       }
+               }
+       }
+
        if( $a->config['register_policy'] == REGISTER_OPEN ) {
                $email_tpl = load_view_file("view/register_open_eml.tpl");
                $email_tpl = replace_macros($email_tpl, array(
@@ -243,7 +305,6 @@ function register_post(&$a) {
                }
 
        }
-       
        return;
 }}
 
@@ -266,12 +327,30 @@ function register_content(&$a) {
                return;
        }
 
+       $username     = ((x($_POST,'username'))     ? $_POST['username']     : ((x($_GET,'username'))     ? $_GET['username'] : ''));
+       $email        = ((x($_POST,'email'))        ? $_POST['email']        : ((x($_GET,'email'))        ? $_GET['email']    : ''));
+       $openid_url   = ((x($_POST,'openid_url'))   ? $_POST['openid_url']   : ((x($_GET,'openid_url'))   ? $_GET['openid_url']   : ''));
+       $nickname     = ((x($_POST,'nickname'))     ? $_POST['nickname']     : ((x($_GET,'nickname'))     ? $_GET['nickname'] : ''));
+
        $o = load_view_file("view/register.tpl");
        $o = replace_macros($o, array(
+               '$regtitle'  => t('Registration'),
                '$registertext' =>((x($a->config,'register_text'))
                        ? '<div class="error-message">' . $a->config['register_text'] . '</div>'
                        : "" ),
-               '$sitename' => $a->get_hostname()
+               '$fillwith'  => t('You may ' . "\x28" . 'optionally' . "\x29" . ' fill in this form via OpenID by supplying your OpenID and clicking ') . "'" . t('Register') . "'",
+               '$fillext'   => t('If you are not familiar with OpenID, please leave that field blank and fill in the rest of the items.'),
+               '$oidlabel'  => t('Your OpenID ' . "\x28" . 'optional' . "\x29" . ': '),
+               '$openid'    => $openid_url,
+               '$namelabel' => t('Your Full Name ' . "\x28" . 'e.g. Joe Smith' . "\x29" . ': '),
+               '$addrlabel' => t('Your Email Address: '),
+               '$nickdesc'  => t('Choose a profile nickname. This must begin with a text character. Your global profile locator will then be \'<strong>nickname@$sitename</strong>\'.'),
+               '$nicklabel' => t('Choose a nickname: '),
+               '$regbutt'   => t('Register'),
+               '$username'  => $username,
+               '$email'     => $email,
+               '$nickname'  => $nickname,
+               '$sitename'  => $a->get_hostname()
        ));
        return $o;