function newUser() { global $mainframe; $return = base64_decode(JRequest::getVar('return','','post')); // Get required system objects $user = clone(JFactory::getUser()); $pathway =& $mainframe->getPathway(); $config =& JFactory::getConfig(); $authorize =& JFactory::getACL(); $document =& JFactory::getDocument(); $usersConfig = &JComponentHelper::getParams( 'com_users' ); // Initialize new usertype setting $newUsertype = $usersConfig->get( 'new_usertype' ); if (!$newUsertype) { $newUsertype = 'Registered'; } require_once JPATH_ADMINISTRATOR.DS.'components'.DS.'com_myapi'.DS.'models'.DS.'facebook.php'; $facebookmodel = new myapiModelfacebook; //Bring the myAPI facebook model $fbUser = $facebookmodel->getLoggedInUserDetails(); if($fbUser['username'] != ''){ $newuserName = $fbUser['username']; }else{ $newuserName = str_replace(' ', '',$fbUser['name']); } $db = JFactory::getDBO(); $uniqueUsername = false; $i = 0; while(!$uniqueUsername){ $tryUsername = $newuserName; if($i >= 1){ $tryUsername = $tryUsername.$i; } $query = "SELECT COUNT(".$db->nameQuote('id').") FROM ".$db->nameQuote('#__users')." WHERE ".$db->nameQuote('username')." = ".$db->quote($tryUsername); $db->setQuery($query); $count = $db->loadResult(); if($count == 0){ $uniqueUsername = true; $newuserName = $tryUsername; } $i++; } jimport('joomla.user.helper'); $newUser['name'] = $fbUser['name']; $newUser['username'] = $newuserName; $newUser['password'] = $newUser['password2'] = JUserHelper::genRandomPassword(); $newUser['email'] = $fbUser['email']; // Bind the post array to the user object if (!$user->bind( $newUser, 'usertype' )) { $message = $user->getError(); $this->setRedirect($return,$message); } // Set some initial user values $user->set('id', 0); $user->set('usertype', $newUsertype); $user->set('gid', $authorize->get_group_id( '', $newUsertype, 'ARO' )); $date =& JFactory::getDate(); $user->set('registerDate', $date->toMySQL()); // If user activation is turned on, we need to set the activation information $useractivation = $usersConfig->get( 'useractivation' ); // If there was an error with registration, set the message and display form if ( !$user->save() ) { $message = $user->getError(); $this->setRedirect($return,$message); }elseif($fbUser['uid'] != ''){ $db = JFactory::getDBO(); global $facebook; $facebookSession = $facebook->getSession(); $query = "INSERT INTO ".$db->nameQuote('#__myapi_users')." (userId,uid,access_token) VALUES(".$db->quote($user->id).",".$db->quote($fbUser['uid']).",".$db->quote($facebookSession['access_token']).")"; $db->setQuery($query); $db->query(); //Sync Community Builder $sql_sync = "INSERT IGNORE INTO #__comprofiler(id,user_id) SELECT id,id FROM #__users WHERE #__users.id =".$db->Quote($user->id); $db->setQuery($sql_sync); $db->query(); // Send registration confirmation mail $password = $newUser['password']; $password = preg_replace('/[\x00-\x1F\x7F]/', '', $password); //Disallow control chars in the email myapiController::_sendMail($user, $password); $message = JText::_( 'LOGGED_IN_FACEBOOK' ); $options['fake_array'] = "This mainframe->login needs and array passed to it"; $error = $mainframe->login($fbUser['uid'],$options); $user = JFactory::getUser(); MyapiController::syncPhoto($fbUser['uid']); $this->setRedirect($return,$message); }else{ $this->setRedirect($return,'No Facebook User ID found'); } }