getName()); } return $results; } public function allowedThemeNames() { $results = []; $directoryIterator = new \FilesystemIterator(dirname(dirname(__DIR__)) . '/resources/views/themes', \FilesystemIterator::SKIP_DOTS); /** @var \SplFileInfo $fileInfo */ foreach ($directoryIterator as $fileInfo) { if (!$fileInfo->isDir() || strtolower($fileInfo->getFilename()) == 'base') { continue; } $themeName = strtolower($fileInfo->getFilename()); $themeDisplayName = $themeName; $themeInfoFilename = sprintf('%s/theme.json', $fileInfo->getPathname()); if (file_exists($themeInfoFilename)) { $themeInfo = json_decode(file_get_contents($themeInfoFilename)); if ($themeInfo !== false && isset($themeInfo->name)) { $themeDisplayName = $themeInfo->name; } } $results[$themeName] = $themeDisplayName; } return $results; } public function defaults() { $currentAppName = $this->get('app_name', false); return array( 'albums_menu_parents_only' => false, 'albums_menu_number_items' => 10, 'allow_photo_comments' => false, 'allow_self_registration' => true, 'analytics_code' => '', 'app_name' => trans('global.app_name'), 'date_format' => $this->allowedDateFormats()[0], 'default_album_view' => $this->allowedAlbumViews()[0], 'enable_visitor_hits' => false, 'facebook_app_id' => '', 'facebook_app_secret' => '', 'google_app_id' => '', 'google_app_secret' => '', 'hotlink_protection' => false, 'items_per_page' => 12, 'items_per_page_admin' => 10, 'photo_comments_require_login' => true, 'photo_comments_thread_depth' => 3, 'public_statistics' => true, 'recaptcha_enabled_registration' => false, 'recaptcha_secret_key' => '', 'recaptcha_site_key' => '', 'remove_copyright' => false, 'require_email_verification' => true, 'restrict_original_download' => true, 'sender_address' => sprintf('hostmaster@%s', (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost')), 'sender_name' => (is_null($currentAppName) ? trans('global.app_name') : $currentAppName), 'smtp_server' => 'localhost', 'smtp_password' => '', 'smtp_port' => 25, 'smtp_username' => '', 'social_facebook_login' => false, 'social_google_login' => false, 'social_twitter_login' => false, 'social_user_profiles' => false, 'theme' => 'default', 'twitter_app_id' => '', 'twitter_app_secret' => '', ); } public function get($key, $defaultIfUnset = true) { $config = Configuration::where('key', $key)->first(); if (is_null($config)) { if ($defaultIfUnset) { $defaults = $this->defaults(); return (isset($defaults[$key]) ? $defaults[$key] : null); } return null; } return $config->value; } public function getAll() { $results = array(); foreach (Configuration::all() as $config) { $results[$config->key] = $config->value; } return $results; } public function getOrCreateModel($key) { $config = Configuration::where('key', $key)->first(); if (is_null($config) || $config === false) { $config = new Configuration(); $config->key = $key; $config->value = ''; $config->save(); } return $config; } public function isSocialMediaLoginEnabled() { return $this->get('social_facebook_login') || $this->get('social_twitter_login'); } }