%PDF- %PDF-
| Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/user/components/ |
| Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/user/components/Session.php |
<?php
/**
* @link https://www.humhub.org/
* @copyright Copyright (c) 2015 HumHub GmbH & Co. KG
* @license https://www.humhub.com/licences
*/
namespace humhub\modules\user\components;
use Yii;
use yii\web\DbSession;
use yii\web\ErrorHandler;
use yii\db\Query;
use yii\db\Expression;
/**
* @inheritdoc
*/
class Session extends DbSession
{
/**
* @inheritdoc
*/
public $sessionTable = 'user_http_session';
/**
* Returns all current logged in users.
*
* @return ActiveQueryUser
*/
public static function getOnlineUsers()
{
$query = \humhub\modules\user\models\User::find();
$query->leftJoin('user_http_session', 'user_http_session.user_id=user.id');
$query->andWhere(['IS NOT', 'user_http_session.user_id', new Expression('NULL')]);
$query->andWhere(['>', 'user_http_session.expire', time()]);
return $query;
}
/**
* @inheritDoc
*/
public function getCookieParams()
{
$params = parent::getCookieParams();
if (Yii::$app->request->autoEnsureSecureConnection &&
Yii::$app->request->isSecureConnection) {
$params['secure'] = true;
}
return $params;
}
/**
* @inheritdoc
*/
public function writeSession($id, $data)
{
// exception must be caught in session write handler
// http://us.php.net/manual/en/function.session-set-save-handler.php
try {
$userId = new Expression('NULL');
if (!Yii::$app->user->getIsGuest()) {
$userId = Yii::$app->user->id;
}
$expire = time() + $this->getTimeout();
$query = new Query;
$exists = $query->select(['id'])
->from($this->sessionTable)
->where(['id' => $id])
->createCommand($this->db)
->queryScalar();
if ($exists === false) {
$this->db->createCommand()
->insert($this->sessionTable, [
'id' => $id,
'data' => $data,
'expire' => $expire,
'user_id' => $userId,
])->execute();
} else {
$this->db->createCommand()
->update($this->sessionTable, ['data' => $data, 'expire' => $expire, 'user_id' => $userId], ['id' => $id])
->execute();
}
} catch (\Exception $e) {
$exception = ErrorHandler::convertExceptionToString($e);
// its too late to use Yii logging here
error_log($exception);
echo $exception;
return false;
}
return true;
}
}