diff options
Diffstat (limited to 'actions/useradd.php')
-rw-r--r-- | actions/useradd.php | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/actions/useradd.php b/actions/useradd.php new file mode 100644 index 000000000..17459021b --- /dev/null +++ b/actions/useradd.php @@ -0,0 +1,69 @@ +<?php +/** + * Elgg add action + * + * @package Elgg + * @subpackage Core + */ + +elgg_make_sticky_form('useradd'); + +// Get variables +$username = get_input('username'); +$password = get_input('password', null, false); +$password2 = get_input('password2', null, false); +$email = get_input('email'); +$name = get_input('name'); + +$admin = get_input('admin'); +if (is_array($admin)) { + $admin = $admin[0]; +} + +// no blank fields +if ($username == '' || $password == '' || $password2 == '' || $email == '' || $name == '') { + register_error(elgg_echo('register:fields')); + forward(REFERER); +} + +if (strcmp($password, $password2) != 0) { + register_error(elgg_echo('RegistrationException:PasswordMismatch')); + forward(REFERER); +} + +// For now, just try and register the user +try { + $guid = register_user($username, $password, $name, $email, TRUE); + + if ($guid) { + $new_user = get_entity($guid); + if ($new_user && $admin && elgg_is_admin_logged_in()) { + $new_user->makeAdmin(); + } + + elgg_clear_sticky_form('useradd'); + + $new_user->admin_created = TRUE; + // @todo ugh, saving a guid as metadata! + $new_user->created_by_guid = elgg_get_logged_in_user_guid(); + + $subject = elgg_echo('useradd:subject'); + $body = elgg_echo('useradd:body', array( + $name, + elgg_get_site_entity()->name, + elgg_get_site_entity()->url, + $username, + $password, + )); + + notify_user($new_user->guid, elgg_get_site_entity()->guid, $subject, $body); + + system_message(elgg_echo("adduser:ok", array(elgg_get_site_entity()->name))); + } else { + register_error(elgg_echo("adduser:bad")); + } +} catch (RegistrationException $r) { + register_error($r->getMessage()); +} + +forward(REFERER); |