コード例 #1
0
 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');
 }