Example #1
0
 /**
  *
  */
 public function display($cachable = false, $urlparams = false)
 {
     if ($_POST) {
         $params = JRequest::getVar('params');
         $user = JXFactory::getUser();
         $mainframe = JFactory::getApplication();
         $emailChange = false;
         if ($user->email != $params['email']) {
             $emailChange = true;
             $oldEmail = $user->email;
         }
         // Only process this if there is an email change
         if ($emailChange) {
             $dummy = new JXUser();
             $loadUser = $dummy->loadUserByEmail($params['email']);
             // Email is being used by another user;
             if ($loadUser === true && $dummy->id != $user->id) {
                 $mainframe->redirect(JRoute::_('index.php?option=com_profile&view=edit'), JText::_('COM_PROFILE_ACTION_EMAIL_USED'), 'error');
                 return false;
             } else {
                 // update invitation in case there are invitations from the previous email
                 JModel::addIncludePath(JPATH_ROOT . DS . 'components' . DS . 'com_account' . DS . 'models');
                 $usersInvite = JModel::getInstance('usersInvite', 'AccountModel');
                 $usersInvite->updateFromEmail($oldEmail, $params['email'], $user);
             }
         }
         $params['password'] = JRequest::getVar('password', '', 'post', 'string', JREQUEST_ALLOWRAW);
         $params['password2'] = JRequest::getVar('confirm_password', '', 'post', 'string', JREQUEST_ALLOWRAW);
         // do a password safety check
         if (JString::strlen($params['password']) || JString::strlen($params['password2'])) {
             // so that "0" can be used as password e.g.
             if ($params['password'] != $params['password2']) {
                 $mainframe->redirect(JRoute::_('index.php?option=com_profile&view=edit'), JText::_('COM_REGISTER_ERRMSG_PASSWORD_MISMATCH'), 'error');
                 return false;
             }
         }
         $user->set('name', $params['name']);
         $user->set('email', $params['email']);
         $user->setParam('language', $params['language']);
         $user->setParam('about_me', $params['about_me']);
         $user->setParam('timezone', $params['timezone']);
         $user->setParam('style', $params['style']);
         $user->bind($params);
         if ($user->save()) {
             $percentageFilled = $user->getCalculateCompletion();
             $user->setGettingStartedCompletion(JXUser::GSTARTED_COMPLETE_PROFILE, $percentageFilled);
             // Reload the user session
             $user->reloadSession();
             /* Redirect to clear the previous user values */
             $mainframe->redirect(JRoute::_('index.php?option=com_profile&view=edit'), JText::_('COM_PROFILE_ACTION_SAVE_PROFILE_SUCCESS'));
         } else {
             $mainframe->redirect(JRoute::_('index.php?option=com_profile&view=edit'), JText::_('COM_PROFILE_ACTION_SAVE_PROFILE_FAILED'), 'error');
         }
     }
     parent::display(null);
 }
Example #2
0
 public static function getUser($id = null)
 {
     static $instances = array();
     if (empty($instances[$id])) {
         $user = JFactory::getUser($id);
         $jxuser = new JXUser();
         $jxuser->init($user);
         // Reload params from db, just for myself
         if (is_null($id)) {
             jimport('joomla.html.parameter');
             $db = JFactory::getDbo();
             // For current user, always reload params from db
             $query = "SELECT params FROM #__users WHERE " . $db->nameQuote('id') . " = " . $db->Quote($user->id);
             $db->setQuery($query);
             $params = $db->loadResult();
             $jxuser->setParameters(new JParameter($params));
         }
         $instances[$id] = $jxuser;
     }
     return $instances[$id];
 }
Example #3
0
 /**
  * To check if the event is already a passed event
  * @param JDate $endDate the end of event to compare to
  * @return Boolean true on passed event
  */
 public function isEventPassed($endDate)
 {
     $userTime = JXUser::getUserTime();
     $now = new JDate($userTime);
     $dateDiff = JXDate::timeDifference($endDate->toUnix(), $now->toUnix());
     $eventIsDue = !empty($dateDiff['days']) && $dateDiff['days'] < 0 ? false : true;
     return $eventIsDue;
 }
Example #4
0
 public function display($cachable = false, $urlparams = false)
 {
     // Only admin can use this function to invite guests
     $mainframe = JFactory::getApplication();
     $my = JXFactory::getUser();
     $dummy = new JXUser();
     if ($_POST) {
         // Check for request forgeries.
         JRequest::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
         $activeDirectory = new JActiveDirectory();
         if ($activeDirectory->connect()) {
             $username = JRequest::getVar('username', '', 'method', 'username');
             $password = JRequest::getString('password', '', 'post', JREQUEST_ALLOWRAW);
             // select user from database
             $checkUser = $dummy->loadUserByUsername($username);
             $addMsg = false;
             // if user exists, login user
             if ($checkUser === false) {
                 $displayName = $activeDirectory->getExchangeInfo('displayname');
                 if (empty($displayName)) {
                     $displayName = $username;
                     $addMsg = true;
                 }
                 $email = $activeDirectory->getExchangeInfo('mail');
                 if (empty($email)) {
                     $email = $username . $activeDirectory->getDomain();
                     $addMsg = true;
                 }
                 // register user automatically
                 $data = array('name' => $displayName, 'username' => $username, 'password' => $password, 'conf_pass' => $password, 'email' => $email);
                 $model = RegisterFactory::getModel('registration');
                 if (!$model->registerUser($data)) {
                     $mainframe->enqueueMessage($model->getError(), 'error');
                 }
                 $dummy->loadUserByUsername($username);
             }
             // Set the user to have the integration parameter; can be used to avoid user from editing password
             $chgPwd['password'] = $password;
             $chgPwd['password2'] = $password;
             $dummy->bind($chgPwd);
             $dummy->setParam('integration', 'activedirectory');
             $dummy->save();
             // login user
             // Get the log in options.
             $options = array();
             $options['remember'] = false;
             // Get the log in credentials.
             $credentials = array();
             $credentials['username'] = $username;
             $credentials['password'] = $password;
             $mainframe->login($credentials, $options);
             echo '<script type="text/javascript"> ';
             if ($addMsg) {
                 echo "alert('" . JText::_('COM_ACCOUNT_CONNECT_LABEL_CHANGE_DEFAULT_NAME_EMAIL') . "'); ";
                 echo 'window.opener.location.href="' . JRoute::_('index.php?option=com_profile&view=edit') . '"; window.close();';
             } else {
                 echo 'window.opener.location.reload(); window.close();';
             }
             echo '</script>';
             exit;
         } else {
             $mainframe->redirect(JRoute::_('index.php?option=com_register&view=connect&type=ad'), 'Failed to login Active Directory. Account might not exists. Please contact your server/site administrator!', 'error');
             exit;
         }
     }
     JRequest::setVar('view', 'connect');
     parent::display();
 }
Example #5
0
 public function ajaxResendInvitation()
 {
     // Only admin can use this function to invite guests
     $jxConfig = new JXConfig();
     $my = JXFactory::getUser();
     $accessHelper = new AccountAccessHelper();
     if (!$my->authorise('stream.setting.edit', $accessHelper)) {
         echo '{"error":"1","info":""';
         exit;
     }
     $invitation = JRequest::getVar('invitation_id', 0);
     $returnData = array();
     //if ($email !== false)
     if ($invitation) {
         $usersInvite = JTable::getInstance('usersInvite', 'AccountTable');
         $usersInvite->load(array('id' => $invitation));
         if ($usersInvite->id) {
             $emailToInvite = $usersInvite->invite_email;
             $dummy = new JXUser();
             $loadUser = $dummy->loadUserByEmail($usersInvite->from_email);
             if (!$loadUser) {
                 // Delete invitations which invitor email cannot be found from registered users
                 $dummy = JXFactory::getUser();
                 $usersInvite->delete();
             }
             $result = $this->processInvitation($dummy, $emailToInvite);
             $now = new JDate();
             if ($result['flag'] == self::SENT_FLAG) {
                 $usersInvite->load(array('from_email' => $dummy->email, 'invite_email' => $emailToInvite));
                 $returnData["info"] = JXDate::formatDate($now->format('Y-m-d h:i:s'));
                 $returnData["html"] = $usersInvite->getRowHtml();
             } elseif ($result['flag'] == self::ALREADY_REGISTERED_FLAG) {
                 $returnData["msg"] = JText::sprintf('COM_ACCOUNT_MSG_INVITATION_EMAIL_ALREADY_REGISTERED', $result['email']);
             }
             $returnData["error"] = '0';
         } else {
             $returnData["error"] = '1';
         }
     } else {
         $returnData["error"] = '1';
     }
     echo json_encode($returnData);
     exit;
 }
Example #6
0
 public function allowChangeDomain()
 {
     jimport('joomla.user.xuser');
     $arrUsers = JXUser::getRegisteredUsers();
     return count($arrUsers) >= self::MAX_DOMAIN_CHANGE_USER_COUNT ? false : true;
 }