function createUser($email, $data) { if (empty($email) || empty($data)) { return false; } $db = JFactory::getDBO(); $db->setQuery("SELECT `id` FROM #__users WHERE `email` LIKE '" . $db->getEscaped(strtolower($email)) . "' LIMIT 1"); if ($user_id = $db->loadResult()) { return $user_id; } $lang =& JFactory::getLanguage(); $lang->load('com_user', JPATH_SITE, null, true); $lang->load('com_user', JPATH_ADMINISTRATOR, null, true); $lang->load('com_users', JPATH_ADMINISTRATOR, null, true); $db =& JFactory::getDBO(); jimport('joomla.user.helper'); // Get required system objects $user = JFactory::getUser(0); @(list($username, $domain) = explode('@', $email)); $db->setQuery("SELECT `id` FROM #__users WHERE `username` LIKE '" . $db->getEscaped($username) . "' LIMIT 1"); if (preg_match("#[<>\"'%;()&]#i", $username) || strlen(utf8_decode($username)) < 2) { $username = JFilterOutput::stringURLSafe($data['name']); if (strlen($username) < 2) { $username = str_pad($username, 2, mt_rand(0, 9)); } } while ($db->loadResult()) { $username .= mt_rand(0, 9); $db->setQuery("SELECT `id` FROM #__users WHERE `username` LIKE '" . $db->getEscaped($username) . "' LIMIT 1"); } // Bind the post array to the user object $post = array(); $post['name'] = $data['name']; if (trim($post['name']) == '') { $post['name'] = $email; } $post['email'] = $email; $post['username'] = $username; $post['password'] = JUserHelper::genRandomPassword(8); $original = $post['password']; $post['password2'] = $post['password']; if (!$user->bind($post, 'usertype')) { JError::raiseError(500, $user->getError()); } // Set some initial user values $user->set('id', 0); if (RSTicketsProHelper::isJ16()) { $params = JComponentHelper::getParams('com_users'); $user->set('groups', array($params->get('new_usertype', 2))); } else { $authorize =& JFactory::getACL(); // Initialize new usertype setting $usersConfig =& JComponentHelper::getParams('com_users'); $newUsertype = $usersConfig->get('new_usertype'); if (!$newUsertype) { $newUsertype = 'Registered'; } $user->set('usertype', ''); $user->set('gid', $authorize->get_group_id('', $newUsertype, 'ARO')); } $date =& JFactory::getDate(); $user->set('registerDate', $date->toMySQL()); $user->set('block', 0); $user->set('lastvisitDate', '0000-00-00 00:00:00'); // If there was an error with registration, set the message if (!$user->save()) { return false; JError::raiseWarning('', JText::_($user->getError())); } // Hack for community builder - approve the user so that he can login if (file_exists(JPATH_SITE . DS . 'components' . DS . 'com_comprofiler' . DS . 'comprofiler.php')) { $db->setQuery("INSERT INTO #__comprofiler SET approved = 1 , user_id = " . $user->get('id') . " , id = " . $user->get('id') . " , confirmed = 1"); $db->query(); } // Send registration confirmation mail $password = $original; // Disallow control chars in the email $password = preg_replace('/[\\x00-\\x1F\\x7F]/', '', $password); RSTicketsProHelper::sendUserEmail($user, $password); return $user->get('id'); }