public function regenerateID($deleteOldSession = false)
{
$oldID = session_id();
// if no session is started, there is nothing to regenerate
if (empty($oldID)) {
return;
}
parent::regenerateID(false);
$newID = session_id();
$query = new Query();
$row = $query->from($this->sessionTable)->where(['id' => $oldID])->createCommand($this->db)->queryOne();
if ($row !== false) {
if ($deleteOldSession) {
$this->db->createCommand()->update($this->sessionTable, ['id' => $newID], ['id' => $oldID])->execute();
} else {
$row['id'] = $newID;
$this->db->createCommand()->insert($this->sessionTable, $row)->execute();
}
} else {
// shouldn't reach here normally
$this->db->createCommand()->insert($this->sessionTable, $this->composeFields($newID, ''))->execute();
}
}