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; }
/** * Set setting value according to its type. * * @param string $value * @param Setting $setting */ protected function setSettingValue($value, Setting $setting) { switch ($setting->getType()) { case NodeTypeField::DOCUMENTS_T: if ($value !== null && $value->getError() == UPLOAD_ERR_OK && $value->isValid()) { $document = new Document(); $document->setFilename($value->getClientOriginalName()); $document->setMimeType($value->getMimeType()); $this->getService('em')->persist($document); $this->getService('em')->flush(); $value->move(Document::getFilesFolder() . '/' . $document->getFolder(), $document->getFilename()); $setting->setValue($document->getId()); } break; default: $setting->setValue($value); break; } }