mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 11:28:25 +00:00
Allow '' to be a valid key for Hash, and Session
By removing a bunch of empty() guards we can make '' behave like all the other key names. This does change the existing behavior/tests around '' key, but I think that is ok given the need to manipulate ''. Refs #9632
This commit is contained in:
parent
40c32e8bdf
commit
816801902e
4 changed files with 39 additions and 10 deletions
|
@ -230,9 +230,12 @@ class CakeSession {
|
||||||
* @return bool True if variable is there
|
* @return bool True if variable is there
|
||||||
*/
|
*/
|
||||||
public static function check($name) {
|
public static function check($name) {
|
||||||
if (empty($name) || !static::_hasSession() || !static::start()) {
|
if (!static::_hasSession() || !static::start()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (isset($_SESSION[$name])) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return Hash::get($_SESSION, $name) !== null;
|
return Hash::get($_SESSION, $name) !== null;
|
||||||
}
|
}
|
||||||
|
@ -380,9 +383,6 @@ class CakeSession {
|
||||||
* session not started, or provided name not found in the session, false on failure.
|
* session not started, or provided name not found in the session, false on failure.
|
||||||
*/
|
*/
|
||||||
public static function read($name = null) {
|
public static function read($name = null) {
|
||||||
if (empty($name) && $name !== null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (!static::_hasSession() || !static::start()) {
|
if (!static::_hasSession() || !static::start()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -418,7 +418,7 @@ class CakeSession {
|
||||||
* @return bool True if the write was successful, false if the write failed
|
* @return bool True if the write was successful, false if the write failed
|
||||||
*/
|
*/
|
||||||
public static function write($name, $value = null) {
|
public static function write($name, $value = null) {
|
||||||
if (empty($name) || !static::start()) {
|
if (!static::start()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -307,9 +307,9 @@ class CakeSessionTest extends CakeTestCase {
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function testWriteEmptyKey() {
|
public function testWriteEmptyKey() {
|
||||||
$this->assertFalse(TestCakeSession::write('', 'graham'));
|
$this->assertTrue(TestCakeSession::write('', 'graham'));
|
||||||
$this->assertFalse(TestCakeSession::write('', ''));
|
$this->assertTrue(TestCakeSession::write('', ''));
|
||||||
$this->assertFalse(TestCakeSession::write(''));
|
$this->assertTrue(TestCakeSession::write(''));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -403,6 +403,17 @@ class CakeSessionTest extends CakeTestCase {
|
||||||
$this->assertFalse(TestCakeSession::check('Clearing'));
|
$this->assertFalse(TestCakeSession::check('Clearing'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* test delete
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testDeleteEmptyString() {
|
||||||
|
TestCakeSession::write('', 'empty string');
|
||||||
|
$this->assertTrue(TestCakeSession::delete(''));
|
||||||
|
$this->assertFalse(TestCakeSession::check(''));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* testClear method
|
* testClear method
|
||||||
*
|
*
|
||||||
|
@ -500,6 +511,10 @@ class CakeSessionTest extends CakeTestCase {
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function testReadingSavedEmpty() {
|
public function testReadingSavedEmpty() {
|
||||||
|
TestCakeSession::write('', 'empty string');
|
||||||
|
$this->assertTrue(TestCakeSession::check(''));
|
||||||
|
$this->assertEquals('empty string', TestCakeSession::read(''));
|
||||||
|
|
||||||
TestCakeSession::write('SessionTestCase', 0);
|
TestCakeSession::write('SessionTestCase', 0);
|
||||||
$this->assertEquals(0, TestCakeSession::read('SessionTestCase'));
|
$this->assertEquals(0, TestCakeSession::read('SessionTestCase'));
|
||||||
|
|
||||||
|
@ -511,7 +526,7 @@ class CakeSessionTest extends CakeTestCase {
|
||||||
$this->assertFalse(TestCakeSession::read('SessionTestCase'));
|
$this->assertFalse(TestCakeSession::read('SessionTestCase'));
|
||||||
|
|
||||||
TestCakeSession::write('SessionTestCase', null);
|
TestCakeSession::write('SessionTestCase', null);
|
||||||
$this->assertEquals(null, TestCakeSession::read('SessionTestCase'));
|
$this->assertNull(TestCakeSession::read('SessionTestCase'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -229,6 +229,20 @@ class HashTest extends CakeTestCase {
|
||||||
$this->assertEquals($data[1]['Article'], $result);
|
$this->assertEquals($data[1]['Article'], $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test that get() can extract '' key data.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function testGetEmptyKey()
|
||||||
|
{
|
||||||
|
$data = array(
|
||||||
|
'' => 'some value'
|
||||||
|
);
|
||||||
|
$result = Hash::get($data, '');
|
||||||
|
$this->assertSame($data[''], $result);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test get() with an invalid path
|
* Test get() with an invalid path
|
||||||
*
|
*
|
||||||
|
|
|
@ -43,7 +43,7 @@ class Hash {
|
||||||
* @link http://book.cakephp.org/2.0/en/core-utility-libraries/hash.html#Hash::get
|
* @link http://book.cakephp.org/2.0/en/core-utility-libraries/hash.html#Hash::get
|
||||||
*/
|
*/
|
||||||
public static function get(array $data, $path, $default = null) {
|
public static function get(array $data, $path, $default = null) {
|
||||||
if (empty($data) || $path === '' || $path === null) {
|
if (empty($data) || $path === null) {
|
||||||
return $default;
|
return $default;
|
||||||
}
|
}
|
||||||
if (is_string($path) || is_numeric($path)) {
|
if (is_string($path) || is_numeric($path)) {
|
||||||
|
|
Loading…
Reference in a new issue