public function run() { x2base::cleanUpSessions(); // $criteria = new CDbCriteria(array('condition'=>'','distinct'=>true) // $sessions = Session::model()->findAll($criteria); // $str = ""; // foreach($sessions as $session) { // if(time()-$session->lastUpdated<(15*60)) { // $str.=$session->user.", "; // } // } // if($str!="") { // $str=substr($str,0,-2); // } $onlineUsers = User::getUserLinks(Session::getOnlineUsers()); $this->render('onlineUsers', array('users' => $onlineUsers)); //array( }
public function actionLogin() { $this->layout = '//layouts/login'; // echo var_dump(Session::getOnlineUsers()); if (Yii::app()->user->isInitialized && !Yii::app()->user->isGuest) { $this->redirect(Yii::app()->homeUrl); return; } $model = new LoginForm(); $model->useCaptcha = false; // collect user input data if (isset($_POST['LoginForm'])) { $model->attributes = $_POST['LoginForm']; $ip = $this->getRealIp(); x2base::cleanUpSessions(); $session = CActiveRecord::model('Session')->findByAttributes(array('user' => $model->username, 'IP' => $ip)); if (isset($session)) { $session->lastUpdated = time(); if ($session->status < 1) { if ($session->status > -3) { $session->status -= 1; } } else { $session->status = -1; } if ($session->status < -1) { $model->useCaptcha = true; } if ($session->status < -2) { $model->setScenario('loginWithCaptcha'); } } else { $session = new Session(); $session->user = $model->username; $session->lastUpdated = time(); $session->status = 1; $session->IP = $ip; } if ($model->validate() && $model->login()) { $user = User::model()->findByPk(Yii::app()->user->getId()); $user->login = time(); $user->save(); if ($user->username == 'admin') { if (ini_get('allow_url_fopen') == 1) { $context = stream_context_create(array('http' => array('timeout' => 2))); $updateSources = array('http://x2planet.com/updates/versionCheck.php', 'http://x2base.com/updates/versionCheck.php'); $newVersion = ''; foreach ($updateSources as $url) { $sourceVersion = @file_get_contents($url, 0, $context); if ($sourceVersion !== false) { $newVersion = $sourceVersion; break; } } if (empty($newVersion)) { $newVersion = Yii::app()->params->version; } /* // check X2Planet for updates $x2planetVersion = @file_get_contents('http://x2planet.com/updates/versionCheck.php',0,$context); if($x2planetVersion !== false) $newVersion = $x2planetVersion; else { // try X2Base if that didn't work $x2baseVersion = @file_get_contents('http://x2base.com/updates/versionCheck.php',0,$context); if($x2baseVersion !== false) $newVersion=$x2baseVersion; else $newVersion=Yii::app()->params->version; } */ if (version_compare($newVersion, Yii::app()->params->version) > 0) { // if the latest version is newer than our version Yii::app()->session['versionCheck'] = false; Yii::app()->session['newVersion'] = $newVersion; } else { Yii::app()->session['versionCheck'] = true; } } else { Yii::app()->session['versionCheck'] = true; } } else { Yii::app()->session['versionCheck'] = true; } Yii::app()->session['loginTime'] = time(); $session->status = 1; $session->save(); if (Yii::app()->user->returnUrl == 'site/index') { $this->redirect('index'); } else { $this->redirect(Yii::app()->user->returnUrl); } } else { $session->save(); $model->verifyCode = ''; if ($model->hasErrors()) { $model->addError('username', Yii::t('app', 'Incorrect username or password.')); } $model->addError('password', Yii::t('app', 'Incorrect username or password.')); } } // display the login form $this->render('login', array('model' => $model)); }
public function actionOnline() { x2base::cleanUpSessions(); $sessions = Session::model()->findAll(); $usernames = array(); $users = array(); foreach ($sessions as $session) { $usernames[] = $session->user; } foreach ($usernames as $username) { $user = User::model()->findByAttributes(array('username' => $username)); $users[] = $user->firstName . " " . $user->lastName; } $this->render('online', array('users' => $users)); }
public function getRoutingRules($data) { $admin =& Yii::app()->params->admin; //Admin::model()->findByPk(1); $online = $admin->onlineOnly; x2base::cleanUpSessions(); $sessions = Session::getOnlineUsers(); $rules = CActiveRecord::model('LeadRouting')->findAll("", array('order' => 'priority')); foreach ($rules as $rule) { $arr = LeadRouting::parseCriteria($rule->criteria); $flagArr = array(); foreach ($arr as $criteria) { if (isset($data[$criteria['field']])) { $val = $data[$criteria['field']]; $operator = $criteria['comparison']; $target = $criteria['value']; if ($operator != 'contains') { switch ($operator) { case '>': $flag = $val >= $target; break; case '<': $flag = $val <= $target; break; case '=': $flag = $val == $target; break; case '!=': $flag = $val != $target; break; default: $flag = false; } } else { $flag = preg_match("/{$target}/i", $val) != 0; } $flagArr[] = $flag; } } if (!in_array(false, $flagArr) && count($flagArr) > 0) { $users = $rule->users; $users = explode(", ", $users); if (is_null($rule->groupType)) { if ($online == 1) { $users = array_intersect($users, $sessions); } } else { $groups = $rule->users; $groups = explode(", ", $groups); $users = array(); foreach ($groups as $group) { if ($rule->groupType == 0) { $links = GroupToUser::model()->findAllByAttributes(array('groupId' => $group)); foreach ($links as $link) { if (array_search(User::model()->findByPk($link->userId)->username, $users) === false) { $users[] = User::model()->findByPk($link->userId)->username; } } } else { $users[] = $group; } } if ($online == 1 && $rule->groupType == 0) { $users = array_intersect($users, $sessions); } } $users[] = $rule->rrId; $rule->rrId++; $rule->save(); return $users; } } }