Skip to content
Snippets Groups Projects
inject_bokeh_url.php 2.46 KiB
<?php
if(!isset($argv[1])) {
  echo "\nFatal Error : Missing Bokeh folder name to inject.\n\n";
  exit;
}

$prefix = $argv[1];

require_once 'console.php';

$injector = function($value) use($prefix) {
  if(false === strpos($value, '/userfiles/'))
    return $value;

  if (false === strpos($value, $prefix))
    $value = str_replace('//', '/', '/' . $prefix . '/' . $value);

  if ('//' == substr($value, 0, 2))
    $value = substr($value, 1);

  return $value;
};


// profils
echo "\nStarting inject : " . $prefix;
echo "\n\nPhase profil\n";

foreach (Class_Profil::findTopProfils() as $profile) {
  echo '.';
  $config = $profile->getCfgSiteAsArray();
  $changed = false;
  foreach(['header_img',
           'favicon',
           'logo_gauche_img',
           'logo_droite_img',
           'header_css',
           'header_js'] as $name) {
    if((!isset($config[$name])) || (!$config[$name]))
      continue;

    $old_value = $config[$name];
    $config[$name] = $injector($old_value);

    if($old_value != $config[$name])
      $changed = true;
  }

  if ($changed)
    $profile->setCfgSite($config)->save();
}

foreach (Class_Profil::findAllBy(['parent_id not' => null]) as $profile) {
  echo '.';

  $config = $profile->getCfgSiteAsArray();

  if((!isset($config['page_css'])) || (!$config['page_css']))
    continue;

  $old_value = $config['page_css'];
  $config['page_css'] = $injector($old_value);

  if($old_value != $config['page_css'])
    $profile->setCfgSite($config)->save();
}

Class_Profil::clearCache();

//domains

echo "\n\nPhase domain\n";
foreach(Class_Catalogue::findAllBy(['where' => 'url_img like "%/userfiles/%"']) as $domain) {
  echo '.';
  $old_value = $domain->getUrlImg();
  $new_url = $injector($old_value);

  if($old_value != $new_url)
    $domain->setUrlImg($new_url)->save();
}

Class_Catalogue::clearCache();

// articles

echo "\n\nPhase article\n";
$injector = function($value) use ($prefix) {
  $pattern = '/=(["\'])[^"\']*\/userfiles\/([^"\']*)/i';
  return str_replace('/userfiles/userfiles/',
                     '/userfiles/',
                     preg_replace($pattern, '=$1/' . $prefix . '/userfiles/$2', $value));
};

foreach(Class_Article::findAllBy(['where' => 'concat(description,contenu) like "%/userfiles/%"'])
        as $article) {
  echo '.';
  $article->setDescription($injector($article->getDescription()))
          ->setContenu($injector($article->getContenu()))
          ->save();
}

Class_Article::clearCache();

echo "\n\nInjection terminated\n";