public static function setUpBeforeClass() { static::$entityCollection = array(); $settings = static::settingsProvider(); foreach ($settings as $setting) { $s = new Setting(); $s->setName($setting[0]); $s->setValue($setting[1]); Kernel::getService('em')->persist($s); static::$entityCollection[] = $s; } Kernel::getService('em')->flush(); }
/** * 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; }
/** * Get role by name, and create it if does not exist. * @param string $name * * @return RZ\Roadiz\Core\Entities\Role */ protected function getSetting($name) { $setting = $this->entityManager->getRepository('RZ\\Roadiz\\Core\\Entities\\Setting')->findOneBy(['name' => $name]); if (null === $setting) { $setting = new Setting(); $setting->setName($name); $this->entityManager->persist($setting); $this->entityManager->flush(); } return $setting; }