Cookies.php (3123B)
1 <?php 2 /** 3 * Slim - a micro PHP 5 framework 4 * 5 * @author Josh Lockhart <info@slimframework.com> 6 * @copyright 2011 Josh Lockhart 7 * @link http://www.slimframework.com 8 * @license http://www.slimframework.com/license 9 * @version 2.4.2 10 * @package Slim 11 * 12 * MIT LICENSE 13 * 14 * Permission is hereby granted, free of charge, to any person obtaining 15 * a copy of this software and associated documentation files (the 16 * "Software"), to deal in the Software without restriction, including 17 * without limitation the rights to use, copy, modify, merge, publish, 18 * distribute, sublicense, and/or sell copies of the Software, and to 19 * permit persons to whom the Software is furnished to do so, subject to 20 * the following conditions: 21 * 22 * The above copyright notice and this permission notice shall be 23 * included in all copies or substantial portions of the Software. 24 * 25 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 26 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 27 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 28 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 29 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 30 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 31 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 32 */ 33 namespace Slim\Http; 34 35 class Cookies extends \Slim\Helper\Set 36 { 37 /** 38 * Default cookie settings 39 * @var array 40 */ 41 protected $defaults = array( 42 'value' => '', 43 'domain' => null, 44 'path' => null, 45 'expires' => null, 46 'secure' => false, 47 'httponly' => false 48 ); 49 50 /** 51 * Set cookie 52 * 53 * The second argument may be a single scalar value, in which case 54 * it will be merged with the default settings and considered the `value` 55 * of the merged result. 56 * 57 * The second argument may also be an array containing any or all of 58 * the keys shown in the default settings above. This array will be 59 * merged with the defaults shown above. 60 * 61 * @param string $key Cookie name 62 * @param mixed $value Cookie settings 63 */ 64 public function set($key, $value) 65 { 66 if (is_array($value)) { 67 $cookieSettings = array_replace($this->defaults, $value); 68 } else { 69 $cookieSettings = array_replace($this->defaults, array('value' => $value)); 70 } 71 parent::set($key, $cookieSettings); 72 } 73 74 /** 75 * Remove cookie 76 * 77 * Unlike \Slim\Helper\Set, this will actually *set* a cookie with 78 * an expiration date in the past. This expiration date will force 79 * the client-side cache to remove its cookie with the given name 80 * and settings. 81 * 82 * @param string $key Cookie name 83 * @param array $settings Optional cookie settings 84 */ 85 public function remove($key, $settings = array()) 86 { 87 $settings['value'] = ''; 88 $settings['expires'] = time() - 86400; 89 $this->set($key, array_replace($this->defaults, $settings)); 90 } 91 }