Packaging script voor drupal met nl, fr (& de?) vertalingen.

Op de laatste meeting ging ik zien of we op de nieuwe site drupal met reeds de nl en fr vertalingen in kunnen laten downloaden. De oplossing die ik zie is van via een module de nodige zaken te downloaden en te packagen en dit aan een node te hangen.

Dit is de code, het download de drupal distrib en de laatste nl vertaling en maakt er een .tar.gz van. Natuurlijk moet er nog gecheckt wordt of het een nieuwe versie is en zo maar het is het concept dat ik hier wil tonen. Zou dit iets zijn voor op de nieuwe drupal site?

Een probleem kan zijn dat er system() calls nodig zijn en dat allow_url_fopen moet aanstaan. Laat de nieuwe server dit toe?

<?php
function _drupalbe_get_module_version($module) {
$url = sprintf('http://updates.drupal.org/release-history/%s/6.x', urlencode($module));
$xml = file_get_contents($url);
$doc = new DOMDocument();
$doc->loadXML($xml);
$xpath = new DOMXPath($doc);
$major = $xpath->query('//releases/release[1]/version_major')
->item(0)
->nodeValue;
$minor = $xpath->query('//releases/release[1]/version_patch')
->item(0)
->nodeValue;
return array($major, $minor);
}

function drupalbe_cron() {
//var_dump(_drupalbe_get_module_version('drupal'));
//if( > variable_get('drupalbe_download_patch_version', 0)
_drupalbe_build_package();

}

function _drupalbe_download($url, $target) {
$stream = fopen($url, 'rb');
file_put_contents($target, $stream);
fclose($stream);
}

function _drupalbe_build_package() {
$tmp_dir = sys_get_temp_dir() . '/drupalbe'; // . mt_rand();
mkdir($tmp_dir);

$drupal_version = _drupalbe_get_module_version('drupal');
$drupal_dir = $tmp_dir . '/drupal-' . implode('.', $drupal_version);
$nl_version = _drupalbe_get_module_version('nl');

$url = sprintf('http://ftp.drupal.org/files/projects/drupal-%s.tar.gz', implode('.', $drupal_version));
_drupalbe_download($url, $tmp_dir . '/drupal.tgz');

// PHP does not have built-in tar libraries.
system("tar xfz $tmp_dir/drupal.tgz -C $tmp_dir");

$url = sprintf('http://ftp.drupal.org/files/projects/nl-6.x-%s.tar.gz', implode('.', $nl_version));
_drupalbe_download($url, $drupal_dir . '/nl.tgz');

system("tar xfz $drupal_dir/nl.tgz -C $drupal_dir", $result);
unlink($drupal_dir . '/nl.tgz');

$cmd = "tar cfz $tmp_dir/drupal-" . implode('.', $drupal_version) . ".tar.gz -C $tmp_dir drupal-" . implode('.', $drupal_version);
var_dump($cmd);
system($cmd);

//system('rm -rf ' . $tmp_dir);
}
?>

Auteur: 
Jax@drupal.org
Bookmark and Share

Drupal is een geregistreerd merk van Dries Buytaert. | Powered by Pantheon.

Drupal.be/Drupal.nl is de website van de Nederlandstalige Drupalgemeenschap.