db.php 1.19 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
<?php namespace System\Session\Driver;

class DB implements \System\Session\Driver {

	/**
	 * Load a session by ID.
	 *
	 * @param  string  $id
	 * @return array
	 */
	public function load($id)
	{
13
		$session = $this->table()->find($id);
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

		if ( ! is_null($session))
		{
			return array('id' => $session->id, 'last_activity' => $session->last_activity, 'data' => unserialize($session->data));
		}
	}

	/**
	 * Save a session.
	 *
	 * @param  array  $session
	 * @return void
	 */
	public function save($session)
	{
		$this->delete($session['id']);
30
		$this->table()->insert(array('id' => $session['id'], 'last_activity' => $session['last_activity'], 'data' => serialize($session['data'])));
31 32 33 34 35 36 37 38 39 40
	}

	/**
	 * Delete a session by ID.
	 *
	 * @param  string  $id
	 * @return void
	 */
	public function delete($id)
	{
41
		$this->table()->delete($id);
42 43 44 45 46 47 48 49 50 51
	}

	/**
	 * Delete all expired sessions.
	 *
	 * @param  int   $expiration
	 * @return void
	 */
	public function sweep($expiration)
	{
52
		$this->table()->where('last_activity', '<', $expiration)->delete();
53 54 55 56 57 58 59
	}

	/**
	 * Get a session database query.
	 *
	 * @return Query
	 */
60
	private function table()
61 62 63 64 65
	{
		return \System\DB::table(\System\Config::get('session.table'));		
	}
	
}