/**
*/
public function write($id, $session_data)
{
if (!$this->_db->isActive()) {
$this->_db->reconnect();
$this->_db->beginDbTransaction();
}
/* Check if session exists. */
try {
$exists = $this->_db->selectValue(sprintf('SELECT 1 FROM %s WHERE session_id = ?', $this->_params['table']), array($id));
} catch (Horde_Db_Exception $e) {
return false;
}
/* Update or insert session data. */
$values = array('session_data' => new Horde_Db_Value_Binary($session_data), 'session_lastmodified' => time());
try {
if ($exists) {
$this->_db->updateBlob($this->_params['table'], $values, array('session_id = ?', array($id)));
} else {
$this->_db->insertBlob($this->_params['table'], array_merge(array('session_id' => $id), $values));
}
$this->_db->commitDbTransaction();
} catch (Horde_Db_Exception $e) {
try {
$this->_db->rollbackDbTransaction();
} catch (Horde_Db_Exception $e) {
}
return false;
}
return true;
}