start(); $this->__active = true; } else { $this->__active = false; } } /** * Turn sessions on if 'Session.start' is set to false in core.php * * @param string $base */ public function activate($base = null) { $this->__active = true; } /** * Used to read a session values set in a controller for a key or return values for all keys. * * In your view: `$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 values from the session vars * @access public * @link http://book.cakephp.org/view/1466/Methods */ public function read($name = null) { if ($this->__active === true && $this->__start()) { return parent::read($name); } return false; } /** * Used to check is a session key has been set * * In your view: `$session->check('Controller.sessKey');` * * @param string $name * @return boolean * @access public * @link http://book.cakephp.org/view/1466/Methods */ public function check($name) { if ($this->__active === true && $this->__start()) { return parent::check($name); } return false; } /** * Returns last error encountered in a session * * In your view: `$session->error();` * * @return string last error * @access public * @link http://book.cakephp.org/view/1466/Methods */ public function error() { if ($this->__active === true && $this->__start()) { return parent::error(); } return false; } /** * Used to render the message set in Controller::Session::setFlash() * * In your view: $session->flash('somekey'); * Will default to flash if no param is passed * * @param string $key The [Message.]key you are rendering in the view. * @return boolean|string Will return the value if $key is set, or false if not set. * @access public * @link http://book.cakephp.org/view/1466/Methods * @link http://book.cakephp.org/view/1467/flash */ public function flash($key = 'flash') { $out = false; if ($this->__active === true && $this->__start()) { if (parent::check('Message.' . $key)) { $flash = parent::read('Message.' . $key); if ($flash['element'] == 'default') { if (!empty($flash['params']['class'])) { $class = $flash['params']['class']; } else { $class = 'message'; } $out = '
' . $flash['message'] . '
'; } elseif ($flash['element'] == '' || $flash['element'] == null) { $out = $flash['message']; } else { $view =& ClassRegistry::getObject('view'); $tmpVars = $flash['params']; $tmpVars['message'] = $flash['message']; $out = $view->element($flash['element'], $tmpVars); } parent::delete('Message.' . $key); } } return $out; } /** * Used to check is a session is valid in a view * * @return boolean */ public function valid() { if ($this->__active === true && $this->__start()) { return parent::valid(); } } /** * Override CakeSession::write(). * This method should not be used in a view * * @return boolean */ public function write() { trigger_error(__('You can not write to a Session from the view'), E_USER_WARNING); } /** * Determine if Session has been started * and attempt to start it if not * * @return boolean true if Session is already started, false if * Session could not be started * @access private */ function __start() { if (!$this->started()) { return $this->start(); } return true; } }