/** * Deserializes a json file into a readable ArrayCollection of setting. * * @param string $jsonString * * @return Doctrine\Common\Collections\ArrayCollection */ public static function deserialize($jsonString) { if ($jsonString == "") { throw new \Exception('File is empty.'); } $collection = new ArrayCollection(); $groups = json_decode($jsonString, true); foreach ($groups as $group) { if (!empty($group['name'])) { $newGroup = new SettingGroup(); $newGroup->setName($group['name']); if (isset($group['inMenu'])) { $newGroup->setInMenu($group['inMenu']); } if (!empty($group['settings'])) { foreach ($group['settings'] as $setting) { // do not use !empty on type as it can be 0. if (!empty($setting['name']) && isset($setting['type'])) { $newSetting = new Setting(); $newSetting->setName($setting['name']); $newSetting->setType($setting['type']); if ($setting['type'] == NodeTypeField::DATETIME_T) { $dt = new \DateTime($setting['value']['date'], new \DateTimeZone($setting['value']['timezone'])); $newSetting->setValue($dt); } else { $newSetting->setValue($setting['value']); } $newSetting->setVisible($setting['visible']); $newGroup->addSetting($newSetting); $newSetting->setSettingGroup($newGroup); } } } $collection[] = $newGroup; } } return $collection; }