getConfig()->getData($this->getUser()->isAdmin()); $fieldDefs = $this->getMetadata()->get('entityDefs.Settings.fields'); foreach ($fieldDefs as $field => $d) { if ($d['type'] == 'password') { unset($data[$field]); } } if ($this->getContainer()->get('portal')) { foreach ($this->getContainer()->get('portal')->getSettingsAttributeList() as $attribute) { $data[$attribute] = $this->getContainer()->get('portal')->get($attribute); } if (empty($data['language'])) { $data['language'] = $this->getConfig()->get('language'); } if (empty($data['theme'])) { $data['theme'] = $this->getConfig()->get('theme'); } } return $data; } public function actionRead($params, $data) { return $this->getConfigData(); } public function actionUpdate($params, $data, $request) { return $this->actionPatch($params, $data, $request); } public function actionPatch($params, $data, $request) { if (!$this->getUser()->isAdmin()) { throw new Forbidden(); } if (!$request->isPut() && !$request->isPatch()) { throw new BadRequest(); } if (isset($data['useCache']) && $data['useCache'] != $this->getConfig()->get('useCache')) { $this->getContainer()->get('dataManager')->clearCache(); } $this->getConfig()->setData($data, $this->getUser()->isAdmin()); $result = $this->getConfig()->save(); if ($result === false) { throw new Error('Cannot save settings'); } /** Rebuild for Currency Settings */ if (isset($data['baseCurrency']) || isset($data['currencyRates'])) { $this->getContainer()->get('dataManager')->rebuildDatabase(array()); } /** END Rebuild for Currency Settings */ return $this->getConfigData(); } }