#!/usr/bin/env php . */ // Abort if called from a web server if (isset($_SERVER) && array_key_exists('REQUEST_METHOD', $_SERVER)) { print "This script must be run from the command line\n"; exit(); } define('INSTALLDIR', dirname(__DIR__)); define('PUBLICDIR', INSTALLDIR . DIRECTORY_SEPARATOR . 'public'); function update_core($dir, $domain) { $old = getcwd(); chdir($dir); passthru(<<isDir() && !$item->isDot()) { $name = $item->getBasename(); if (file_exists("$dir/modules/$name/{$name}Module.php")) { $plugins[] = $name; } } } return $plugins; } function get_plugins($dir) { $plugins = array(); $dirs = new DirectoryIterator("$dir/plugins"); foreach ($dirs as $item) { if ($item->isDir() && !$item->isDot()) { $name = $item->getBasename(); if (file_exists("$dir/plugins/$name/{$name}Plugin.php")) { $plugins[] = $name; } } } return $plugins; } function get_module_sources($dir) { $files = array(); $dirs = new RecursiveDirectoryIterator($dir); $iter = new RecursiveIteratorIterator($dirs); foreach ($iter as $pathname => $item) { if ($item->isFile() && preg_match('/\.php$/', $item->getBaseName())) { $files[] = $pathname; } } return $files; } function get_plugin_sources($dir) { $files = array(); $dirs = new RecursiveDirectoryIterator($dir); $iter = new RecursiveIteratorIterator($dirs); foreach ($iter as $pathname => $item) { if ($item->isFile() && preg_match('/\.php$/', $item->getBaseName())) { $files[] = $pathname; } } return $files; } function module_using_gettext($dir) { $files = get_module_sources($dir); foreach ($files as $pathname) { // Check if the file is using our _m gettext wrapper $code = file_get_contents($pathname); if (preg_match('/\b_m\(/', $code)) { return true; } } return false; } function plugin_using_gettext($dir) { $files = get_plugin_sources($dir); foreach ($files as $pathname) { // Check if the file is using our _m gettext wrapper $code = file_get_contents($pathname); if (preg_match('/\b_m\(/', $code)) { return true; } } return false; } function update_module($basedir, $name) { $dir = "$basedir/modules/$name"; if (module_using_gettext($dir)) { do_update_module($dir, $name); return true; } else { return false; } } function update_plugin($basedir, $name) { $dir = "$basedir/plugins/$name"; if (plugin_using_gettext($dir)) { do_update_plugin($dir, $name); return true; } else { return false; } } $args = $_SERVER['argv']; array_shift($args); $all = false; $core = false; $allmodules = false; $modules = array(); $allplugins = false; $plugins = array(); if (count($args) == 0) { $all = true; } foreach ($args as $arg) { if ($arg == '--all') { $all = true; } elseif ($arg == "--core") { $core = true; } elseif ($arg == "--modules") { $allmodules = true; } elseif ($arg == "--plugins") { $allplugins = true; } elseif (substr($arg, 0, 9) == "--module=") { $modules[] = substr($arg, 9); } elseif (substr($arg, 0, 9) == "--plugin=") { $plugins[] = substr($arg, 9); } elseif ($arg == '--help') { echo "options: --all --core --plugins --plugin=Foo --modules --module=Foo\n\n"; exit(0); } } if ($all || $core) { echo "core..."; update_core(INSTALLDIR, 'statusnet'); echo " ok\n"; } if ($all || $allmodules) { $plugins = get_modules(INSTALLDIR); } if ($all || $allplugins) { $plugins = get_plugins(INSTALLDIR); } if ($modules) { foreach ($modules as $module) { echo "$module..."; if (update_module(INSTALLDIR, $plugin)) { echo " ok\n"; } else { echo " not localized\n"; } } } if ($plugins) { foreach ($plugins as $plugin) { echo "$plugin..."; if (update_plugin(INSTALLDIR, $plugin)) { echo " ok\n"; } else { echo " not localized\n"; } } }