'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
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;
}
// 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 {
$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;
+ }
+}
* @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'],
));
$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(
echo <<<HTML
<div>
- <label>$username_label</label>
+ <label>$username_label</label> $username_warning
$username_input
</div>
<div>
$name_input
</div>
<div>
- <label>$email_label</label>
+ <label>$email_label</label> $email_warning
$email_input
</div>
<div class="elgg-foot">
*
*/
+echo '<p>';
+echo elgg_echo('openid_client:create:instructs');
+echo '<p>';
+
echo elgg_view_form('openid_client/register', array(), $vars);