. * */ namespace Vvveb\Component; use function Vvveb\siteSettings; use Vvveb\Sql\SiteSQL; use Vvveb\System\Component\ComponentBase; use Vvveb\System\Event; use function Vvveb\url; class Site extends ComponentBase { public static $defaultOptions = [ 'site_id' => null, 'language_id' => null, ]; protected $options = []; public $cacheExpire = 0; //seconds function cacheKey() { //disable caching return false; } function results() { $results = siteSettings($this->options['site_id'], $this->options['language_id']); if (! $results) { $results = ['logo'=>'logo.png', 'logo-sticky' => 'logo.png', 'logo-dark' => 'logo-white.png', 'logo-dark-sticky' => 'logo-white.png', 'favicon' => 'favicon.ico']; $publicPath = \Vvveb\publicUrlPath() . 'media'; foreach ($results as $key => &$value) { $value = "$publicPath/$value"; } } $urlOptions = []; if ($this->options['default_language'] != $this->options['language']) { $urlOptions = ['language' => $this->options['language']]; } else { } $results['url'] = (V_SUBDIR_INSTALL ? V_SUBDIR_INSTALL : '') . '/'; //url('index/index'); $results['full-url'] = SITE_URL; //url('index/index', $urlOptions + ['host' => '*.*.*']); $results['site_id'] = $this->options['site_id']; list($results) = Event :: trigger(__CLASS__,__FUNCTION__, $results); return $results; } //called by editor on page save for each component on page //this method is called from admin app static function editorSave($id, $fields, $type = 'site') { $sites = new SiteSQL(); $result = []; $site = $sites->get(['site_id' => $id]); if ($site) { $settings = json_decode($site['settings'], true); $publicPath = \Vvveb\publicUrlPath() . 'media/'; foreach ($fields as $field) { $name = $field['name']; $value = $field['value']; if ($name == 'favicon' || $name == 'webbanner' || strpos($name, 'logo') !== false) { $value = str_replace($publicPath,'', $value); } $settings[$name] = $value; } $site = []; $data['site_id'] = $id; $site['settings'] = json_encode($settings); $data['site'] = $site; $result = $sites->edit($data); } } }