Ejemplo n.º 1
0
 /**
  * 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);
 }
Ejemplo n.º 2
0
 /**
  * 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;
 }
Ejemplo n.º 3
0
 /**
  * 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));
 }