Esempio n. 1
0
 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(
 }
Esempio n. 2
0
 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));
 }
Esempio n. 3
0
 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;
         }
     }
 }