/** * Constructor. */ public function __construct(array $config = []) { $this->base_config = $this->config = new Data($config); $schemes = $this->base_config->get('schemes', []); if (!is_array($schemes)) { $schemes = [$schemes]; } foreach ($schemes as $index => $scheme) { $scheme = preg_quote($scheme); $schemes[$index] = preg_replace_callback('~((?:\\\\\\*){1,2})(.[^\\\\]?|$)~', function ($match) { // Remove control characters $separator = preg_replace('~[^\\p{L}]~i', '', $match[2]); $star = strlen(str_replace('\\', '', $match[1])); if (ctype_alnum($separator)) { $replace = '.*?'; } else { $separator = strlen($separator) == 0 ? substr($match[2], -1) : $separator; $replace = strlen($match[2]) > 0 ? "[^{$separator} ]+" : '[^\\"\\&\\?\\. ]+'; } // Wrap one star result in parenthesis $replace = $star > 1 ? $replace : "({$replace})"; return $replace . $match[2]; }, $scheme); } $this->base_config->set('schemes', $schemes); }
/** * Set value of given variable in the data array * * @param string $name * * @return mixed */ public function setData($name = null, $value = '') { if (!$name) { return false; } $this->data->set($name, $value); return true; }
/** * Toggle the gpm.releases setting */ protected function taskGpmRelease() { if (!$this->authorizeTask('configuration', ['admin.configuration', 'admin.super'])) { return false; } // Default release state $release = 'stable'; $reload = false; // Get the testing release value if set if ($this->post['release'] == 'testing') { $release = 'testing'; } $config = $this->grav['config']; $current_release = $config->get('system.gpm.releases'); // If the releases setting is different, save it in the system config if ($current_release != $release) { $data = new Data\Data($config->get('system')); $data->set('gpm.releases', $release); // Get the file location $file = CompiledYamlFile::instance($this->grav['locator']->findResource("config://system.yaml")); $data->file($file); // Save the configuration $data->save(); $config->reload(); $reload = true; } $this->admin->json_response = ['status' => 'success', 'reload' => $reload]; return true; }
/** * @throws \ErrorException */ protected function enableResponsiveness(Data $config) { /** * if you enable responsiveness, you need use some container for video * @see http://css-tricks.com/NetMag/FluidWidthVideo/Article-FluidWidthVideo.php */ if (!$config->get('container.element')) { throw new \ErrorException('"Responsive" option requires using some container for video. Please, set "container.element" option or disable responsiveness.'); } $containerClasses = explode(' ', $config->get('container.html_attr.class', '')); $containerClasses = array_map('trim', $containerClasses); $containerClasses[] = 'plugin-videoembed-container-fluid'; $containerClasses = array_unique($containerClasses); $config->set('container.html_attr.class', implode(' ', $containerClasses)); $assets = (array) $config->get('assets', []); $assets[] = 'plugin://videoembed/css/videombed-responsive.css'; $config->set('assets', array_unique($assets)); }