private function createSettings() { $settings = new MeasurableSettings($this->idSite, MobileAppType::ID); $settings->addSetting($this->createSetting('test2')); $settings->addSetting($this->createSetting('test3')); return $settings; }
public function configureMeasurableSettings(MeasurableSettings $settings) { $appId = new MeasurableSetting('app_id', 'App-ID'); $appId->validate = function ($value) { if (strlen($value) > 100) { throw new \Exception('Only 100 characters are allowed'); } }; $settings->addSetting($appId); }
public function getSettingValue($name) { $settings = new MeasurableSettings($this->id, $this->getType()); $setting = $settings->getSetting($name); if (!empty($setting)) { return $setting->getValue(); // Calling `getValue` makes sure we respect read permission of this setting } throw new Exception(sprintf('Setting %s does not exist', $name)); }
public function testGetSettingValue_shouldReturnValue_IfSettingExistsAndIsReadable() { $setting = new MeasurableSettings($this->idSite, Measurable::getTypeFor($this->idSite)); $setting->getSetting($this->settingName)->setValue('mytest'); $value = $this->measurable->getSettingValue($this->settingName); $this->assertNull($value); $setting->save(); // actually save value $value = $this->measurable->getSettingValue($this->settingName); $this->assertSame('mytest', $value); }
public function getMeasurableTypeSettings() { $idSite = Common::getRequestVar('idSite', 0, 'int'); $idType = Common::getRequestVar('idType', '', 'string'); if ($idSite >= 1) { Piwik::checkUserHasAdminAccess($idSite); } else { if ($idSite === 0) { Piwik::checkUserHasSomeAdminAccess(); } else { throw new Exception('Invalid idSite parameter. IdSite has to be zero or higher'); } } $view = new View('@SitesManager/measurable_type_settings'); $propSettings = new MeasurableSettings($idSite, $idType); $view->settings = $propSettings->getSettingsForCurrentUser(); return $view->render(); }
private function updateMeasurableSettings($idSite, $settings) { $idType = Site::getTypeFor($idSite); $measurableSettings = new MeasurableSettings($idSite, $idType); foreach ($measurableSettings->getSettingsForCurrentUser() as $measurableSetting) { $name = $measurableSetting->getName(); if (!empty($settings[$name])) { $measurableSetting->setValue($settings[$name]); } // we do not clear existing settings if the value is missing. // There can be so many settings added by random plugins one would always clear some settings. } $measurableSettings->save(); }