Overview

Packages

  • alpha::controller
  • alpha::controller::front
  • alpha::exceptions
  • alpha::model
  • alpha::model::types
  • alpha::tasks
  • alpha::tests
  • alpha::util
  • alpha::util::cache
  • alpha::util::codehighlight
  • alpha::util::convertors
  • alpha::util::feeds
  • alpha::util::filters
  • alpha::util::graphs
  • alpha::util::helpers
  • alpha::util::metrics
  • alpha::view
  • alpha::view::renderers
  • alpha::view::widgets

Classes

  • AlphaView
  • ArticleCommentView
  • ArticleView
  • DEnumView
  • PersonView
  • SequenceView
  • ViewState
  • Overview
  • Package
  • Class
  • Tree
  • Deprecated
  1: <?php
  2: 
  3: /**
  4:  * 
  5:  * A singleton class that maintains the view state in the session
  6:  * 
  7:  * @package alpha::view
  8:  * @since 1.0
  9:  * @author John Collins <dev@alphaframework.org>
 10:  * @version $Id: ViewState.inc 1497 2012-02-14 20:28:45Z alphadev $
 11:  * @license http://www.opensource.org/licenses/bsd-license.php The BSD License
 12:  * @copyright Copyright (c) 2012, John Collins (founder of Alpha Framework).  
 13:  * All rights reserved.
 14:  * 
 15:  * <pre>
 16:  * Redistribution and use in source and binary forms, with or 
 17:  * without modification, are permitted provided that the 
 18:  * following conditions are met:
 19:  * 
 20:  * * Redistributions of source code must retain the above 
 21:  *   copyright notice, this list of conditions and the 
 22:  *   following disclaimer.
 23:  * * Redistributions in binary form must reproduce the above 
 24:  *   copyright notice, this list of conditions and the 
 25:  *   following disclaimer in the documentation and/or other 
 26:  *   materials provided with the distribution.
 27:  * * Neither the name of the Alpha Framework nor the names 
 28:  *   of its contributors may be used to endorse or promote 
 29:  *   products derived from this software without specific 
 30:  *   prior written permission.
 31:  *   
 32:  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
 33:  * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
 34:  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
 35:  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
 36:  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
 37:  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
 38:  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
 39:  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
 40:  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
 41:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
 42:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
 43:  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
 44:  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 45:  * </pre>
 46:  *  
 47:  */
 48: class ViewState {
 49:     /**
 50:      * The name of the last selected tab by the user
 51:      * 
 52:      * @var string
 53:      * @since 1.0
 54:      */
 55:     protected $selectedTab;
 56:     
 57:     /**
 58:      * The amount of rows to expand the Markdown edit TextBox by
 59:      * 
 60:      * @var string
 61:      * @since 1.0
 62:      */
 63:     protected $markdownTextBoxRows;
 64:     
 65:     /**
 66:      * The view state object singleton
 67:      *
 68:      * @var ViewState
 69:      * @since 1.0
 70:      */
 71:     protected static $instance;
 72: 
 73:     /**
 74:      * Private constructor means the class cannot be instantiated from elsewhere
 75:      * 
 76:      * @since 1.0
 77:      */
 78:     private function __construct () {}
 79:     
 80:     /**
 81:      * Get the ViewState instance.  Loads from $_SESSION if its not already in memory, otherwise
 82:      * a new instance will be returned with empty properties.
 83:      * 
 84:      * @var ViewState
 85:      * @since 1.0
 86:      */
 87:     public static function getInstance() {
 88:         // if we don't already have the object in memory...
 89:         if (!isset(self::$instance)) {
 90:             // load from the session, otherwise return a new object
 91:             if(isset($_SESSION['ViewState'])) {
 92:                 return unserialize($_SESSION['ViewState']);
 93:             }else{
 94:                 self::$instance = new ViewState();
 95:                 return self::$instance;
 96:             }
 97:         }else{
 98:             return self::$instance;
 99:         }
100:     }
101:     
102:     /**
103:      * Get the attribute value indicated by the key
104:      * 
105:      * @param string $key
106:      * @throws IllegalArguementException
107:      * @return string
108:      * @since 1.0
109:      */
110:     public function get($key) {
111:         $attribute = new ReflectionProperty(get_class($this), $key);
112:         
113:         if($attribute != null)
114:             return $this->$key;
115:         else
116:             throw new IllegalArguementException('The property ['.$key.'] does not exist on the ['.get_class($this).'] class');
117:     }
118:     
119:     /**
120:      * Sets the attribute value indicated by the key.  The ViewState instance will be serialized and saved back to the $_SESSION.
121:      * 
122:      * @param string $key
123:      * @param string $value
124:      * @throws IllegalArguementException
125:      * @since 1.0
126:      */
127:     public function set($key, $value) {
128:         $attribute = new ReflectionProperty(get_class($this), $key);
129:         
130:         if($attribute != null) {
131:             $this->$key = $value;
132:             $_SESSION[get_class($this)] = serialize($this);
133:         }else{
134:             throw new IllegalArguementException('The property ['.$key.'] does not exist on the ['.get_class($this).'] class');
135:         }
136:     }
137: }
138: 
139: ?>
Alpha Framework API Documentation API documentation generated by ApiGen 2.8.0