/**
  * 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;
 }