]> gitweb.fluxo.info Git - lorea/elgg.git/commitdiff
added warnings for email/usernames
authorcash <cash.costello@gmail.com>
Sat, 17 Dec 2011 22:16:38 +0000 (17:16 -0500)
committercash <cash.costello@gmail.com>
Sat, 17 Dec 2011 22:16:38 +0000 (17:16 -0500)
languages/en.php
lib/helpers.php
views/default/forms/openid_client/register.php
views/default/openid_client/register.php

index d68517b01d6e2581020db3217e56d109287cd479..4efb59463fb47a942b54170fdba26b4fef3728d8 100644 (file)
@@ -13,9 +13,15 @@ $english = array(
        'openid_client:provider:blogger' => 'Blogger',\r
        'openid_client:provider:wordpress' => 'Wordpress',\r
 \r
+       'openid_client:create' => 'Create an account',\r
+       'openid_client:create:instructs' => 'Your account has been approved. We just need you to confirm or set the below information.',\r
+\r
        'openid_client:success:register' => 'Your account has been created.',\r
        'openid_client:error:bad_register' => 'Unable to create an account. Please contact a site administrator.',\r
        'openid_client:error:bad_response' => 'Bad response from the OpenID server',\r
+       'openid_client:warning:username_not_available' => 'The username %s is not available. Please pick another.',\r
+       'openid_client:warning:username_valid' => 'The username %s is not valid as this site. Please pick another.',\r
+       'openid_client:warning:email_not_available' => 'The email address %s is not available. Please pick another.',\r
 );\r
 \r
 add_translation('en', $english);\r
index 765fc0a61aa2d99bd4e36040954c2596199313f4..3fc101c4206752aed1d473ca0ee2e3988537b1b8 100644 (file)
@@ -17,12 +17,16 @@ function openid_client_registration_page_handler(array $data) {
                return false;
        }
 
-       $title = 'register';
+       $title = elgg_echo('openid_client:create');
 
        $vars = openid_client_prepare_registration_vars($data);
        $content = elgg_view('openid_client/register', $vars);
 
-       $body = elgg_view_layout('one_column', array('content' => $content));
+       $params = array(
+               'title' => $title,
+               'content' => $content,
+       );
+       $body = elgg_view_layout('one_column', $params);
        echo elgg_view_page($title, $body);
 
        return true;
@@ -49,7 +53,9 @@ function openid_client_prepare_registration_vars(array $data) {
        }
 
        // is the username available
-       $vars['is_username_available'] = true;
+       if ($vars['username']) {
+               $vars['is_username_available'] = openid_client_is_username_available($vars['username']);
+       }
 
        // is the username valid
        try {
@@ -62,5 +68,47 @@ function openid_client_prepare_registration_vars(array $data) {
        $vars['email'] = elgg_extract('email', $data);
        $vars['name'] = elgg_extract('name', $data);
 
+       if ($vars['email']) {
+               $vars['is_email_available'] = openid_client_is_email_available($vars['email']);
+       }
+
        return $vars;
 }
+
+/**
+ * Is this username available?
+ *
+ * @param string $username The username
+ * @return bool 
+ */
+function openid_client_is_username_available($username) {
+       $db_prefix = elgg_get_config('dbprefix');
+       $username = sanitize_string($username);
+
+       $query = "SELECT count(*) AS total FROM {$db_prefix}users_entity WHERE username = '$username'";
+       $result = get_data_row($query);
+       if ($result->total == 0) {
+               return true;
+       } else {
+               return false;
+       }
+}
+
+/**
+ * Is this email address available?
+ *
+ * @param string $email Email address
+ * @return bool
+ */
+function openid_client_is_email_available($email) {
+       $db_prefix = elgg_get_config('dbprefix');
+       $email = sanitize_string($email);
+
+       $query = "SELECT count(*) AS total FROM {$db_prefix}users_entity WHERE email = '$email'";
+       $result = get_data_row($query);
+       if ($result->total == 0) {
+               return true;
+       } else {
+               return false;
+       }
+}
index 63d5ba04e091053d7623a97d219b1227769ca5bb..279d298c44615b521fc60aea3bba36a3ad7c5d31 100644 (file)
@@ -7,10 +7,19 @@
  * @uses $vars['is_username_available']
  * @uses $vars['is_username_valid']
  * @uses $vars['email']
+ * @uses $vars['is_email_available']
  * @uses $vars['name']
  */
 
 $username_label = elgg_echo('username');
+$username_warning = '';
+if (!elgg_extract('is_username_available', $vars, true)) {
+       $username_warning = elgg_echo('openid_client:warning:username_not_available', array($vars['username']));
+       $username_warning = "($username_warning)";
+} else if (!elgg_extract('is_username_valid', $vars, true)) {
+       $username_warning = elgg_echo('openid_client:warning:username_valid', array($vars['username']));
+       $username_warning = "($username_warning)";
+}
 $username_input = elgg_view('input/text', array(
        'name' => 'username',
        'value' => $vars['username'],
@@ -23,9 +32,16 @@ $name_input = elgg_view('input/text', array(
 ));
 
 $email_label = elgg_echo('email');
+$email_available = elgg_extract('is_email_available', $vars, true);
+$email_warning = '';
+if (!$email_available) {
+       $email_warning = elgg_echo('openid_client:warning:email_not_available', array($vars['email']));
+       $email_warning = "($email_warning)";
+}
 $email_input = elgg_view('input/email', array(
        'name' => 'email',
        'value' => $vars['email'],
+       'disabled' => !$email_available,
 ));
 
 $openid_input = elgg_view('input/hidden', array(
@@ -36,7 +52,7 @@ $button = elgg_view('input/submit', array('value' => elgg_echo('save')));
 
 echo <<<HTML
 <div>
-       <label>$username_label</label>
+       <label>$username_label</label> $username_warning
        $username_input
 </div>
 <div>
@@ -44,7 +60,7 @@ echo <<<HTML
        $name_input
 </div>
 <div>
-       <label>$email_label</label>
+       <label>$email_label</label> $email_warning
        $email_input
 </div>
 <div class="elgg-foot">
index 0c3770ed278d22f4ecacf721c6d9180e89c7bde6..be448ef5431f3dac2ebf4a8a86740076076fb423 100644 (file)
@@ -4,4 +4,8 @@
  *
  */
 
+echo '<p>';
+echo elgg_echo('openid_client:create:instructs');
+echo '<p>';
+
 echo elgg_view_form('openid_client/register', array(), $vars);