public function setPluginSettings() { Piwik::checkUserIsNotAnonymous(); Json::sendHeaderJSON(); $nonce = Common::getRequestVar('nonce', null, 'string'); if (!Nonce::verifyNonce(static::SET_PLUGIN_SETTINGS_NONCE, $nonce)) { return json_encode(array('result' => 'error', 'message' => Piwik::translate('General_ExceptionNonceMismatch'))); } $pluginsSettings = SettingsManager::getPluginSettingsForCurrentUser(); try { foreach ($pluginsSettings as $pluginName => $pluginSetting) { foreach ($pluginSetting->getSettingsForCurrentUser() as $setting) { $value = $this->findSettingValueFromRequest($pluginName, $setting->getKey()); if (!is_null($value)) { $setting->setValue($value); } } } foreach ($pluginsSettings as $pluginSetting) { $pluginSetting->save(); } } catch (Exception $e) { $message = html_entity_decode($e->getMessage(), ENT_QUOTES, 'UTF-8'); return json_encode(array('result' => 'error', 'message' => $message)); } Nonce::discardNonce(static::SET_PLUGIN_SETTINGS_NONCE); return json_encode(array('result' => 'success')); }
private function getPluginNamesHavingSettingsForCurrentUser() { return array_keys(SettingsManager::getPluginSettingsForCurrentUser()); }