diff cake/libs/controller/components/session.php @ 0:261e66bd5a0c

hg init
author Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
date Sun, 24 Jul 2011 21:08:31 +0900
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cake/libs/controller/components/session.php	Sun Jul 24 21:08:31 2011 +0900
@@ -0,0 +1,295 @@
+<?php
+/**
+ * SessionComponent.  Provides access to Sessions from the Controller layer
+ *
+ * PHP versions 4 and 5
+ *
+ * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
+ * Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
+ *
+ * Licensed under The MIT License
+ * Redistributions of files must retain the above copyright notice.
+ *
+ * @copyright     Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
+ * @link          http://cakephp.org CakePHP(tm) Project
+ * @package       cake
+ * @subpackage    cake.cake.libs.controller.components
+ * @since         CakePHP(tm) v 0.10.0.1232
+ * @license       MIT License (http://www.opensource.org/licenses/mit-license.php)
+ */
+if (!class_exists('cakesession')) {
+	require LIBS . 'cake_session.php';
+}
+
+/**
+ * Session Component.
+ *
+ * Session handling from the controller.
+ *
+ * @package       cake
+ * @subpackage    cake.cake.libs.controller.components
+ * @link http://book.cakephp.org/view/1310/Sessions
+ *
+ */
+class SessionComponent extends CakeSession {
+
+/**
+ * Used to determine if methods implementation is used, or bypassed
+ *
+ * @var boolean
+ * @access private
+ */
+	var $__active = true;
+
+/**
+ * Used to determine if request are from an Ajax request
+ *
+ * @var boolean
+ * @access private
+ */
+	var $__bare = 0;
+
+/**
+ * Class constructor
+ *
+ * @param string $base The base path for the Session
+ */
+	function __construct($base = null) {
+		if (Configure::read('Session.start') === true) {
+			parent::__construct($base);
+		} else {
+			$this->__active = false;
+		}
+	}
+
+/**
+ * Startup method.
+ *
+ * @param object $controller Instantiating controller
+ * @return void
+ * @access public
+ */
+	function startup(&$controller) {
+		if ($this->started() === false && $this->__active === true) {
+			$this->__start();
+		}
+	}
+
+/**
+ * Starts Session on if 'Session.start' is set to false in core.php
+ *
+ * @param string $base The base path for the Session
+ * @return void
+ * @access public
+ */
+	function activate($base = null) {
+		if ($this->__active === true) {
+			return;
+		}
+		parent::__construct($base);
+		$this->__active = true;
+	}
+
+/**
+ * Used to write a value to a session key.
+ *
+ * In your controller: $this->Session->write('Controller.sessKey', 'session value');
+ *
+ * @param string $name The name of the key your are setting in the session.
+ * 							This should be in a Controller.key format for better organizing
+ * @param string $value The value you want to store in a session.
+ * @return boolean Success
+ * @access public
+ * @link http://book.cakephp.org/view/1312/write
+ */
+	function write($name, $value = null) {
+		if ($this->__active === true) {
+			$this->__start();
+			if (is_array($name)) {
+				foreach ($name as $key => $value) {
+					if (parent::write($key, $value) === false) {
+						return false;
+					}
+				}
+				return true;
+			}
+			if (parent::write($name, $value) === false) {
+				return false;
+			}
+			return true;
+		}
+		return false;
+	}
+
+/**
+ * Used to read a session values for a key or return values for all keys.
+ *
+ * In your controller: $this->Session->read('Controller.sessKey');
+ * Calling the method without a param will return all session vars
+ *
+ * @param string $name the name of the session key you want to read
+ * @return mixed value from the session vars
+ * @access public
+ * @link http://book.cakephp.org/view/1314/read
+ */
+	function read($name = null) {
+		if ($this->__active === true) {
+			$this->__start();
+			return parent::read($name);
+		}
+		return false;
+	}
+
+/**
+ * Wrapper for SessionComponent::del();
+ *
+ * In your controller: $this->Session->delete('Controller.sessKey');
+ *
+ * @param string $name the name of the session key you want to delete
+ * @return boolean true is session variable is set and can be deleted, false is variable was not set.
+ * @access public
+ * @link http://book.cakephp.org/view/1316/delete
+ */
+	function delete($name) {
+		if ($this->__active === true) {
+			$this->__start();
+			return parent::delete($name);
+		}
+		return false;
+	}
+
+/**
+ * Used to check if a session variable is set
+ *
+ * In your controller: $this->Session->check('Controller.sessKey');
+ *
+ * @param string $name the name of the session key you want to check
+ * @return boolean true is session variable is set, false if not
+ * @access public
+ * @link http://book.cakephp.org/view/1315/check
+ */
+	function check($name) {
+		if ($this->__active === true) {
+			$this->__start();
+			return parent::check($name);
+		}
+		return false;
+	}
+
+/**
+ * Used to determine the last error in a session.
+ *
+ * In your controller: $this->Session->error();
+ *
+ * @return string Last session error
+ * @access public
+ * @link http://book.cakephp.org/view/1318/error
+ */
+	function error() {
+		if ($this->__active === true) {
+			$this->__start();
+			return parent::error();
+		}
+		return false;
+	}
+
+/**
+ * Used to set a session variable that can be used to output messages in the view.
+ *
+ * In your controller: $this->Session->setFlash('This has been saved');
+ *
+ * Additional params below can be passed to customize the output, or the Message.[key]
+ *
+ * @param string $message Message to be flashed
+ * @param string $element Element to wrap flash message in.
+ * @param array $params Parameters to be sent to layout as view variables
+ * @param string $key Message key, default is 'flash'
+ * @access public
+ * @link http://book.cakephp.org/view/1313/setFlash
+ */
+	function setFlash($message, $element = 'default', $params = array(), $key = 'flash') {
+		if ($this->__active === true) {
+			$this->__start();
+			$this->write('Message.' . $key, compact('message', 'element', 'params'));
+		}
+	}
+
+/**
+ * Used to renew a session id
+ *
+ * In your controller: $this->Session->renew();
+ *
+ * @return void
+ * @access public
+ */
+	function renew() {
+		if ($this->__active === true) {
+			$this->__start();
+			parent::renew();
+		}
+	}
+
+/**
+ * Used to check for a valid session.
+ *
+ * In your controller: $this->Session->valid();
+ *
+ * @return boolean true is session is valid, false is session is invalid
+ * @access public
+ */
+	function valid() {
+		if ($this->__active === true) {
+			$this->__start();
+			return parent::valid();
+		}
+		return false;
+	}
+
+/**
+ * Used to destroy sessions
+ *
+ * In your controller: $this->Session->destroy();
+ *
+ * @return void
+ * @access public
+ * @link http://book.cakephp.org/view/1317/destroy
+ */
+	function destroy() {
+		if ($this->__active === true) {
+			$this->__start();
+			parent::destroy();
+		}
+	}
+
+/**
+ * Returns Session id
+ *
+ * If $id is passed in a beforeFilter, the Session will be started
+ * with the specified id
+ *
+ * @param $id string
+ * @return string
+ * @access public
+ */
+	function id($id = null) {
+		return parent::id($id);
+	}
+
+/**
+ * Starts Session if SessionComponent is used in Controller::beforeFilter(),
+ * or is called from
+ *
+ * @return boolean
+ * @access private
+ */
+	function __start() {
+		if ($this->started() === false) {
+			if (!$this->id() && parent::start()) {
+				parent::_checkValid();
+			} else {
+				parent::start();
+			}
+		}
+		return $this->started();
+	}
+}