IntKey::class, 'logo' => Image::class, 'name' => Varchar::class, 'gln' => EAN13::class, 'billcare' => Integer::class, 'address' => Address::class, // Modules - todo: normalize in additional table 'bcModule' => Integer::class, 'xmlModule' => Boolean::class, 'ekarusModule' => Boolean::class, 'popModule' => Boolean::class, 'qrModule' => Boolean::class, 'dpModule' => Boolean::class, 'tpModule' => Boolean::class, ], ...$superFields); } public function __get(string $field) { switch ($field) { case 'isSpitex': return $this->isSpitex(); case 'logo': return $this->logo(); } return parent::__get($field); } public function name() { return $this->name; } public function logo() { $logo = $this->data['logo']; if (! $logo->isReadable()) { $logo->in('logo_leer/logo_leer.jpg'); } return $logo; } public function isSpitex(): bool { return true; } /** * Activate / Deactivate Modules * @todo put moduels in a separate table. Do not use the fields directly to change state, to ease * migration * @param modules 'field' => true|false */ public function modules(Array $modules) { foreach ($modules as $module => $value) { $this->{$module.'Module'} = $value; } } public function isModuleActive(string $module): bool { return $this->{$module.'Module'}; } public function areModulesActive(array $modules): bool { $areActive = true; foreach ($modules as $module) { if (!$this->{$module.'Module'} === true) { $areActive = false; } } return $areActive; } } /* jEdit buffer local properties {{{ * :folding=explicit:collapseFolds=1: }}}*/