public function register($params)
{
if (defined('MW_API_CALL')) {
// if (isset($params['token'])){
if ($this->is_admin() == false) {
$validate_token = $this->csrf_validate($params);
if ($validate_token == false) {
return array('error' => 'Invalid token!');
}
}
//}
}
$user = isset($params['username']) ? $params['username'] : false;
$pass = isset($params['password']) ? $params['password'] : false;
$email = isset($params['email']) ? $params['email'] : false;
$first_name = isset($params['first_name']) ? $params['first_name'] : false;
$last_name = isset($params['last_name']) ? $params['last_name'] : false;
$middle_name = isset($params['middle_name']) ? $params['middle_name'] : false;
$confirm_password = isset($params['confirm_password']) ? $params['confirm_password'] : false;
$pass2 = $pass;
$no_captcha = get_option('captcha_disabled', 'users') == 'y';
$disable_registration_with_temporary_email = get_option('disable_registration_with_temporary_email', 'users') == 'y';
if ($email != false and $disable_registration_with_temporary_email) {
$checker = new \Microweber\Utils\lib\DisposableEmailChecker();
$is_temp_email = $checker->check($email);
if ($is_temp_email) {
$domain = substr(strrchr($email, "@"), 1);
return array('error' => 'You cannot register with email from ' . $domain . ' domain');
}
}
if (!$no_captcha) {
if (!isset($params['captcha'])) {
return array('error' => 'Please enter the captcha answer!');
} else {
$validate_captcha = $this->app->captcha->validate($params['captcha']);
if (!$validate_captcha) {
return array('error' => 'Invalid captcha answer!', 'captcha_error' => true);
}
}
}
$override = $this->app->event_manager->trigger('before_user_register', $params);
if (is_array($override)) {
foreach ($override as $resp) {
if (isset($resp['error']) or isset($resp['success'])) {
return $resp;
}
}
}
if (defined('MW_API_CALL')) {
if (isset($params['is_admin']) and $this->is_admin() == false) {
unset($params['is_admin']);
}
if (isset($params['is_verified']) and $this->is_admin() == false) {
unset($params['is_verified']);
}
}
if (!isset($params['password']) or isset($params['password']) and $params['password'] == '') {
return array('error' => 'Please set password!');
}
if (!isset($params['username']) and !isset($params['email'])) {
return array('error' => 'Please set username or email!');
}
if (!isset($params['password'])) {
return array('error' => 'Please set a password!');
}
if (isset($params['password']) and $params['password'] != '') {
if ($confirm_password != false) {
if ($params['password'] != $confirm_password) {
return array('error' => 'Password confirm does not mach password!');
}
}
if ($email != false) {
$data = array();
$data['email'] = $email;
$data['one'] = true;
$data['no_cache'] = true;
$user_data = $this->get_all($data);
if (empty($user_data)) {
$data = array();
$data['username'] = $email;
$data['one'] = true;
$data['no_cache'] = true;
$user_data = $this->get_all($data);
}
if (empty($user_data)) {
$data = array();
$data['username'] = $email;
$data['password'] = $pass;
$data['is_active'] = 1;
$table = $this->tables['users'];
$reg = array();
$reg['username'] = $user;
$reg['email'] = $email;
$reg['password'] = $pass2;
$reg['is_active'] = 1;
if ($first_name != false) {
$reg['first_name'] = $first_name;
}
if ($first_name != false) {
$reg['first_name'] = $first_name;
}
if ($last_name != false) {
$reg['last_name'] = $last_name;
}
if ($middle_name != false) {
$reg['middle_name'] = $middle_name;
}
$this->force_save = true;
if (isset($params['attributes'])) {
$reg['attributes'] = $params['attributes'];
}
$next = $this->save($reg);
$this->force_save = false;
$this->app->cache_manager->delete('users/global');
$this->session_del('captcha');
$this->after_register($next);
$params = $data;
$params['id'] = $next;
if (isset($pass2)) {
$params['password2'] = $pass2;
}
$this->make_logged($params['id']);
return array('success' => 'You have registered successfully');
} else {
$try_login = $this->login($params);
if (isset($try_login['success'])) {
return $try_login;
}
return array('error' => 'This user already exists!');
}
}
}
}