/** @test */ public function storingDataInEmptyArrayByNamespaceSetsData() { $testArray = []; $testArray = NamespaceUtility::saveDataInNamespaceTree('key1.key2.key3', $testArray, 'test2'); $refArray['key1']['key2']['key3'] = 'test2'; $this->assertEquals($testArray, $refArray); }
/** * Get an argument array out of a string * * @param string $argumentString * @return array */ public function getArgumentArray($argumentString) { $argumentArray = array(); $argumentChunks = GeneralUtility::trimExplode(',', $argumentString); foreach ($argumentChunks as $argument) { if (strstr($argument, ':')) { list($key, $value) = GeneralUtility::trimExplode(':', $argument); $argumentArray = NamespaceUtility::saveDataInNamespaceTree($key, $argumentArray, $value); } else { $key = $argument; $argumentArray[$key] = false; } } return $argumentArray; }
/** * Persists a given object to session * * @param Tx_PtExtbase_State_Session_SessionPersistableInterface $object * @throws Exception if session hash has been already calculated and session data has changed */ public function persistToSession(Tx_PtExtbase_State_Session_SessionPersistableInterface $object) { $sessionNamespace = $object->getObjectNamespace(); if ($this->sessionAdapaterClass == self::STORAGE_ADAPTER_DB && $this->sessionHash != null && $this->sessionHash != md5(serialize($this->sessionData))) { throw new Exception('Session Hash already calculated and current sessiondata changed!! 1293004344' . $sessionNamespace . ': Calc:' . $this->sessionHash . ' NEW: ' . md5(serialize($this->sessionData))); } Tx_PtExtbase_Assertions_Assert::isNotEmptyString($sessionNamespace, ['message' => 'Object namespace must not be empty! 1278436822']); $objectData = $object->_persistToSession(); if ($this->sessionData == null) { $this->sessionData = []; } if ($objectData) { $this->sessionData = NamespaceUtility::saveDataInNamespaceTree($sessionNamespace, $this->sessionData, $objectData); } // Remove session values, if object data is null or empty array if ($objectData === null || count($objectData) == 0) { $this->sessionData = NamespaceUtility::removeDataFromNamespaceTree($sessionNamespace, $this->sessionData); } }