idSite = (int) $idSite; } /** * @inheritdoc */ public function getStorageId() { return 'SitesTable_' . $this->idSite; } /** * Saves (persists) the current setting values in the database. * @param array $values */ public function save($values) { $model = $this->getModel(); foreach ($values as $key => $value) { if (!in_array($key, $this->allowedNames)) { unset($values[$key]); continue; } if (is_array($value) && in_array($key, $this->commaSeparatedArrayFields)) { $values[$key] = implode(',', $value); } elseif (is_bool($value)) { $values[$key] = (int) $value; } } if (!empty($values['urls']) && is_array($values['urls'])) { $values['main_url'] = $this->processAdditionalUrls($values['urls']); } unset($values['urls']); $model->updateSite($values, $this->idSite); Site::clearCacheForSite($this->idSite); } public function load() { if (!empty($this->idSite)) { $site = Site::getSite($this->idSite); $urls = $this->getModel(); $site['urls'] = $urls->getSiteUrlsFromId($this->idSite); foreach ($this->commaSeparatedArrayFields as $field) { if (!empty($site[$field]) && is_string($site[$field])) { $site[$field] = explode(',', $site[$field]); } } return $site; } return null; } /** * @param string[] $urls */ private function processAdditionalUrls(array $urls): string { $model = $this->getModel(); $urls = array_unique($urls); $mainUrl = array_shift($urls); $model->deleteSiteAliasUrls($this->idSite); foreach ($urls as $url) { $model->insertSiteUrl($this->idSite, $url); } return $mainUrl; } private function getModel(): Model { return new Model(); } public function delete() { } }