/var/www/vhosts/ihelp.ro/_OLD/vendor/cakephp/cakephp/src/Http/Session
Edit: /var/www/vhosts/ihelp.ro/_OLD/vendor/cakephp/cakephp/src/Http/Session/DatabaseSession.php (5319B)
setTableLocator($config['tableLocator']);
}
$tableLocator = $this->getTableLocator();
if (empty($config['model'])) {
$config = $tableLocator->exists('Sessions') ? [] : ['table' => 'sessions'];
$this->_table = $tableLocator->get('Sessions', $config);
} else {
$this->_table = $tableLocator->get($config['model']);
}
$this->_timeout = (int)ini_get('session.gc_maxlifetime');
}
/**
* Set the timeout value for sessions.
*
* Primarily used in testing.
*
* @param int $timeout The timeout duration.
* @return $this
*/
public function setTimeout(int $timeout)
{
$this->_timeout = $timeout;
return $this;
}
/**
* Method called on open of a database session.
*
* @param string $savePath The path where to store/retrieve the session.
* @param string $name The session name.
* @return bool Success
*/
public function open($savePath, $name): bool
{
return true;
}
/**
* Method called on close of a database session.
*
* @return bool Success
*/
public function close(): bool
{
return true;
}
/**
* Method used to read from a database session.
*
* @param string $id ID that uniquely identifies session in database.
* @return string Session data or empty string if it does not exist.
*/
public function read($id): string
{
/** @var string $pkField */
$pkField = $this->_table->getPrimaryKey();
$result = $this->_table
->find('all')
->select(['data'])
->where([$pkField => $id])
->disableHydration()
->first();
if (empty($result)) {
return '';
}
if (is_string($result['data'])) {
return $result['data'];
}
$session = stream_get_contents($result['data']);
if ($session === false) {
return '';
}
return $session;
}
/**
* Helper function called on write for database sessions.
*
* @param string $id ID that uniquely identifies session in database.
* @param string $data The data to be saved.
* @return bool True for successful write, false otherwise.
*/
public function write($id, $data): bool
{
if (!$id) {
return false;
}
$expires = time() + $this->_timeout;
$record = compact('data', 'expires');
/** @var string $pkField */
$pkField = $this->_table->getPrimaryKey();
$record[$pkField] = $id;
$result = $this->_table->save(new Entity($record));
return (bool)$result;
}
/**
* Method called on the destruction of a database session.
*
* @param string $id ID that uniquely identifies session in database.
* @return bool True for successful delete, false otherwise.
*/
public function destroy($id): bool
{
/** @var string $pkField */
$pkField = $this->_table->getPrimaryKey();
$this->_table->delete(new Entity(
[$pkField => $id],
['markNew' => false]
));
return true;
}
/**
* Helper function called on gc for database sessions.
*
* @param int $maxlifetime Sessions that have not updated for the last maxlifetime seconds will be removed.
* @return bool True on success, false on failure.
*/
public function gc($maxlifetime): bool
{
$this->_table->deleteAll(['expires <' => time()]);
return true;
}
}