D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
lampp
/
lib
/
php
/
HTML
/
QuickForm2
/
Controller
/
Filename :
SessionContainer.php
back
Copy
<?php /** * Object wrapping around session variable used to store controller data * * PHP version 5 * * LICENSE: * * Copyright (c) 2006-2014, Alexey Borzov <avb@php.net>, * Bertrand Mansion <golgote@mamasam.com> * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * The names of the authors may not be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @category HTML * @package HTML_QuickForm2 * @author Alexey Borzov <avb@php.net> * @author Bertrand Mansion <golgote@mamasam.com> * @license http://opensource.org/licenses/bsd-license.php New BSD License * @link http://pear.php.net/package/HTML_QuickForm2 */ /** * Object wrapping around session variable used to store controller data * * This is a bit less fragile than allowing to directly manipulate the array * as was done in old HTML_QuickForm_Controller package * * @category HTML * @package HTML_QuickForm2 * @author Alexey Borzov <avb@php.net> * @author Bertrand Mansion <golgote@mamasam.com> * @license http://opensource.org/licenses/bsd-license.php New BSD License * @version Release: 2.0.2 * @link http://pear.php.net/package/HTML_QuickForm2 */ class HTML_QuickForm2_Controller_SessionContainer { /** * A reference to a key in $_SESSION superglobal array * @var array */ protected $data; /** * Class constructor * * Initializes a variable in $_SESSION array, its name is based upon the * name of the Controller passed here * * @param HTML_QuickForm2_Controller $controller */ public function __construct(HTML_QuickForm2_Controller $controller) { $name = sprintf( HTML_QuickForm2_Controller::KEY_CONTAINER, $controller->getId() ); if (empty($_SESSION[$name])) { $_SESSION[$name] = array( 'datasources' => array(), 'values' => array(), 'valid' => array() ); } $this->data =& $_SESSION[$name]; } /** * Stores the page submit values * * @param string $pageId Page ID * @param array $values Page submit values */ public function storeValues($pageId, array $values) { $this->data['values'][$pageId] = $values; } /** * Returns the page values kept in session * * @param string $pageId Page ID * * @return array */ public function getValues($pageId) { return array_key_exists($pageId, $this->data['values']) ? $this->data['values'][$pageId]: array(); } /** * Stores the page validation status * * @param string $pageId Page ID * @param bool $status Whether the page is valid */ public function storeValidationStatus($pageId, $status) { $this->data['valid'][$pageId] = (bool)$status; } /** * Returns the page validation status kept in session * * @param string $pageId Page ID * * @return bool */ public function getValidationStatus($pageId) { return array_key_exists($pageId, $this->data['valid']) ? $this->data['valid'][$pageId]: null; } /** * Stores the controller data sources * * @param array $datasources A new data source list * * @throws HTML_QuickForm2_InvalidArgumentException if given array * contains something that is not a valid data source */ public function storeDatasources(array $datasources) { foreach ($datasources as $ds) { if (!$ds instanceof HTML_QuickForm2_DataSource) { throw new HTML_QuickForm2_InvalidArgumentException( 'Array should contain only DataSource instances' ); } } $this->data['datasources'] = $datasources; } /** * Returns the controller data sources * * @return array */ public function getDatasources() { return $this->data['datasources']; } /** * Stores some user-supplied parameter alongside controller data * * It is sometimes useful to pass some additional user data between pages * of the form, thus this method. Data added by this method will be removed * alongside all the other data by * {@link HTML_QuickForm2_Controller::destroySessionContainer()} * * @param string $name Parameter name * @param string $value Parameter value */ public function storeOpaque($name, $value) { if (!array_key_exists('opaque', $this->data)) { $this->data['opaque'] = array(); } $this->data['opaque'][$name] = $value; } /** * Returns a user-supplied parameter * * @param string $name Parameter name * * @return mixed */ public function getOpaque($name) { return (array_key_exists('opaque', $this->data) && array_key_exists($name, $this->data['opaque'])) ? $this->data['opaque'][$name]: null; } }