diff options
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/dumpschema.sh | 97 | ||||
-rwxr-xr-x | bin/exportgettext.sh | 233 | ||||
-rwxr-xr-x | bin/importgettext.sh | 196 | ||||
-rwxr-xr-x | bin/makedoc.sh | 26 |
4 files changed, 0 insertions, 552 deletions
diff --git a/bin/dumpschema.sh b/bin/dumpschema.sh deleted file mode 100755 index 6d5cde723..000000000 --- a/bin/dumpschema.sh +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/env php -<?php -/* - +-----------------------------------------------------------------------+ - | bin/dumpschema.sh | - | | - | This file is part of the Roundcube Webmail client | - | Copyright (C) 2005-2009, The Roundcube Dev Team | - | | - | Licensed under the GNU General Public License version 3 or | - | any later version with exceptions for skins & plugins. | - | See the README file for a full license statement. | - | | - | PURPOSE: | - | Dumps database schema in XML format using MDB2_Schema | - | | - +-----------------------------------------------------------------------+ - | Author: Thomas Bruederli <roundcube@gmail.com> | - +-----------------------------------------------------------------------+ -*/ - -define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' ); - -require INSTALL_PATH.'program/include/clisetup.php'; - -/** callback function for schema dump **/ -function print_schema($dump) -{ - foreach ((array)$dump as $part) - echo $dump . "\n"; -} - -$config = new rcube_config(); - -// don't allow public access if not in devel_mode -if (!$config->get('devel_mode') && $_SERVER['REMOTE_ADDR']) { - header("HTTP/1.0 401 Access denied"); - die("Access denied!"); -} - -$options = array( - 'use_transactions' => false, - 'log_line_break' => "\n", - 'idxname_format' => '%s', - 'debug' => false, - 'quote_identifier' => true, - 'force_defaults' => false, - 'portability' => false, -); - -$dsnw = $config->get('db_dsnw'); -$dsn_array = MDB2::parseDSN($dsnw); - -// set options for postgres databases -if ($dsn_array['phptype'] == 'pgsql') { - $options['disable_smart_seqname'] = true; - $options['seqname_format'] = '%s'; -} - -$schema =& MDB2_Schema::factory($dsnw, $options); -$schema->db->supported['transactions'] = false; - - -// send as text/xml when opened in browser -if ($_SERVER['REMOTE_ADDR']) - header('Content-Type: text/xml'); - - -if (PEAR::isError($schema)) { - $error = $schema->getMessage() . ' ' . $schema->getUserInfo(); -} -else { - $dump_config = array( - // 'output_mode' => 'file', - 'output' => 'print_schema', - ); - - $definition = $schema->getDefinitionFromDatabase(); - $definition['charset'] = 'utf8'; - - if (PEAR::isError($definition)) { - $error = $definition->getMessage() . ' ' . $definition->getUserInfo(); - } - else { - $operation = $schema->dumpDatabase($definition, $dump_config, MDB2_SCHEMA_DUMP_STRUCTURE); - if (PEAR::isError($operation)) { - $error = $operation->getMessage() . ' ' . $operation->getUserInfo(); - } - } -} - -$schema->disconnect(); - -if ($error && !$_SERVER['REMOTE_ADDR']) - fputs(STDERR, $error); - -?> diff --git a/bin/exportgettext.sh b/bin/exportgettext.sh deleted file mode 100755 index b220b2242..000000000 --- a/bin/exportgettext.sh +++ /dev/null @@ -1,233 +0,0 @@ -#!/usr/bin/env php -<?php -/* - +-----------------------------------------------------------------------+ - | bin/exportgettext.sh | - | | - | This file is part of the Roundcube Webmail client | - | Copyright (C) 2011, The Roundcube Dev Team | - | Licensed under the GNU General Public License | - | | - | PURPOSE: | - | Export PHP-based localization files to PO files for gettext | - +-----------------------------------------------------------------------+ - | Author: Thomas Bruederli <roundcube@gmail.com> | - +-----------------------------------------------------------------------+ -*/ - -define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' ); -require INSTALL_PATH.'program/include/clisetup.php'; - -if ($argc < 2) { - die("Usage: " . basename($argv[0]) . " SRCDIR DESTDIR\n"); -} - -$srcdir = unslashify(realpath($argv[1])); -$destdir = unslashify($argv[2]); -$layout = 'launchpad'; # or 'narro'; -$langcode_map = array( - 'hy_AM' => 'hy', - 'ar_SA' => 'ar', - 'az_AZ' => 'az', - 'bg_BG' => 'bg', - 'bs_BA' => 'bs', - 'ca_ES' => 'ca', - 'cs_CZ' => 'cs', - 'cy_GB' => 'cy', - 'da_DK' => 'da', - 'et_EE' => 'et', - 'el_GR' => 'el', - 'eu_ES' => 'eu', - 'fa_IR' => 'fa', - 'ga_IE' => 'ga', - 'ka_GE' => 'ka', - 'gl_ES' => 'gl', - 'he_IL' => 'he', - 'hi_IN' => 'hi', - 'hr_HR' => 'hr', - 'ja_JP' => 'ja', - 'ko_KR' => 'ko', - 'km_KH' => 'km', - 'ms_MY' => 'ms', - 'mr_IN' => 'mr', - 'ml_IN' => 'ml', - 'pl_PL' => 'pl', - 'si_LK' => 'si', - 'sl_SI' => 'sl', - 'sq_AL' => 'sq', - 'sr_CS' => 'sr', - 'sv_SE' => 'sv', - 'uk_UA' => 'uk', - 'vi_VN' => 'vi', -); - - -// converting roundcube localization dir -if (is_dir($srcdir.'/en_US')) { - load_en_US($srcdir.'/en_US'); - - foreach (glob($srcdir.'/*') as $locdir) { - if (is_dir($locdir)) { - $lang = basename($locdir); - //echo "$locdir => $destdir$lang\n"; - convert_dir($locdir, $destdir . ($layout != 'launchpad' ? $lang : '')); - } - } -} -// converting single localization directory -else if (is_dir($srcdir)) { - if (is_file($srcdir.'/en_US.inc')) // plugin localization - load_en_US($srcdir.'/en_US.inc'); - else - load_en_US(realpath($srcdir.'/../en_US')); // single language - convert_dir($srcdir, $destdir); -} -// converting a single file -else if (is_file($srcdir)) { - //load_en_US(); - convert_file($srcdir, $destdir); -} - - -/** - * Load en_US localization which is used to build msgids - */ -function load_en_US($fn) -{ - $texts = array(); - - if (is_dir($fn)) { - foreach (glob($fn.'/*.inc') as $ifn) { - include($ifn); - $texts = array_merge($texts, (array)$labels, (array)$messages); - } - } - else if (is_file($fn)) { - include($fn); - $texts = array_merge($texts, (array)$labels, (array)$messages); - } - - $GLOBALS['en_US'] = $texts; -} - -/** - * Convert all .inc files in the given src directory - */ -function convert_dir($indir, $outdir) -{ - global $layout; - - if (!is_dir($outdir)) // attempt to create destination dir - mkdir($outdir, 0777, true); - - foreach (glob($indir.'/*.inc') as $fn) { - $filename = basename($fn); - - // create subdir for each template (launchpad rules) - if ($layout == 'launchpad' && preg_match('/^(labels|messages)/', $filename, $m)) { - $lang = end(explode('/', $indir)); - $destdir = $outdir . '/' . $m[1]; - if (!is_dir($destdir)) - mkdir($destdir, 0777, true); - $outfn = $destdir . '/' . $lang . '.po'; - } - else { - $outfn = $outdir . '/' . preg_replace('/\.[a-z0-9]+$/i', '', basename($fn)) . '.po'; - } - - convert_file($fn, $outfn); - } -} - -/** - * Convert the given Roundcube localization file into a gettext .po file - */ -function convert_file($fn, $outfn) -{ - global $layout, $langcode_map; - - $basename = basename($fn); - $srcname = str_replace(INSTALL_PATH, '', $fn); - $product = preg_match('!plugins/(\w+)!', $srcname, $m) ? 'roundcube-plugin-' . $m[1] : 'roundcubemail'; - $lang = preg_match('!/([a-z]{2}(_[A-Z]{2})?)[./]!', $outfn, $m) ? $m[1] : ''; - $labels = $messages = $seen = array(); - - if (is_dir($outfn)) - $outfn .= '/' . $basename . '.po'; - - // launchpad requires the template file to have the same name as the directory - if (strstr($outfn, '/en_US') && $layout == 'launchpad') { - $a = explode('/', $outfn); - array_pop($a); - $templ = end($a); - $a[] = $templ . '.pot'; - $outfn = join('/', $a); - $is_pot = true; - } - // launchpad is very picky about file names - else if ($layout == 'launchpad' && preg_match($regex = '!/([a-z]{2})_([A-Z]{2})!', $outfn, $m)) { - if ($shortlang = $langcode_map[$lang]) - $outfn = preg_replace($regex, '/'.$shortlang, $outfn); - else if ($m[1] == strtolower($m[2])) - $outfn = preg_replace($regex, '/\1', $outfn); - } - - include($fn); - $texts = array_merge($labels, $messages); - - // write header - $header = <<<EOF -# Converted from Roundcube PHP localization files -# Copyright (C) 2011 The Roundcube Dev Team -# This file is distributed under the same license as the Roundcube package. -# -#: %s -msgid "" -msgstr "" -"Project-Id-Version: %s\\n" -"Report-Msgid-Bugs-To: \\n" -"%s: %s\\n" -"Last-Translator: \\n" -"Language-Team: Translations <hello@roundcube.net>\\n" -"Language: %s\\n" -"Content-Type: text/plain; charset=UTF-8\\n" -"Content-Transfer-Encoding: 8bit\\n" -EOF; - - $out = sprintf($header, $srcname, $product, $is_pot ? "POT-Creation-Date" : "PO-Revision-Date", date('c'), $shortlang ? $shortlang : $lang); - $out .= "\n"; - - $messages = array(); - foreach ((array)$texts as $label => $msgstr) { - $msgid = $is_pot ? $msgstr : ($GLOBALS['en_US'][$label] ?: $label); - $messages[$msgid][] = $label; - } - - foreach ($messages as $msgid => $labels) { - $out .= "\n"; - foreach ($labels as $label) - $out .= "#: $srcname:$label\n"; - $msgstr = $texts[$label]; - $out .= 'msgid ' . gettext_quote($msgid) . "\n"; - $out .= 'msgstr ' . gettext_quote(!$is_pot ? $msgstr : '') . "\n"; - } - - if ($outfn == '-') - echo $out; - else { - echo "$fn\t=>\t$outfn\n"; - file_put_contents($outfn, $out); - } -} - -function gettext_quote($str) -{ - $out = ""; - $lines = explode("\n", wordwrap(stripslashes($str))); - $last = count($lines) - 1; - foreach ($lines as $i => $line) - $out .= '"' . addcslashes($line, '"') . ($i < $last ? ' ' : '') . "\"\n"; - return rtrim($out); -} - -?> diff --git a/bin/importgettext.sh b/bin/importgettext.sh deleted file mode 100755 index 285f5680f..000000000 --- a/bin/importgettext.sh +++ /dev/null @@ -1,196 +0,0 @@ -#!/usr/bin/env php -<?php -/* - +-----------------------------------------------------------------------+ - | bin/importgettext.sh | - | | - | This file is part of the Roundcube Webmail client | - | Copyright (C) 2011, The Roundcube Dev Team | - | Licensed under the GNU General Public License | - | | - | PURPOSE: | - | Import localizations from gettext PO format | - +-----------------------------------------------------------------------+ - | Author: Thomas Bruederli <roundcube@gmail.com> | - +-----------------------------------------------------------------------+ -*/ - -define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' ); -require INSTALL_PATH.'program/include/clisetup.php'; - -if ($argc < 2) { - die("Usage: " . basename($argv[0]) . " SRCDIR\n"); -} - -$srcdir = unslashify(realpath($argv[1])); - -if (is_dir($srcdir)) { - $out = import_dir($srcdir); -} -else if (is_file($srcdir)) { - $out = import_file($srcdir); -} - -// write output files -foreach ($out as $outfn => $texts) { - $lang = preg_match('!/([a-z]{2}(_[A-Z]{2})?)[./]!', $outfn, $m) ? $m[1] : ''; - $varname = strpos($outfn, 'messages.inc') !== false ? 'messages' : 'labels'; - - $header = <<<EOF -<?php - -/* - +-----------------------------------------------------------------------+ - | localization/%s/%-51s| - | | - | Language file of the Roundcube Webmail client | - | Copyright (C) %s, The Roundcube Dev Team | - | Licensed under the GNU General Public License | - | | - +-----------------------------------------------------------------------+ - | Author: %-62s| - +-----------------------------------------------------------------------+ -*/ - -$%s = array(); - -EOF; - - $author = preg_replace('/\s*<Unknown>/i', '', $texts['_translator']); - $output = sprintf($header, $lang, $varname.'.inc', date('Y'), $author, $varname); - - foreach ($texts as $label => $value) { - if (is_array($value)) { var_dump($outfn, $label, $value); exit; } - if ($label[0] != '_' && strlen($value)) - $output .= sprintf("\$%s['%s'] = '%s';\n", $varname, $label, strtr(addcslashes($value, "'"), array("\r" => '', "\n" => '\n'))); - } - - $output .= "\n"; - $dir = dirname($outfn); - @mkdir($dir, 0755, true); - if (file_put_contents($outfn, $output)) - echo "-> $outfn\n"; -} - - -/** - * Convert all .po files in the given src directory - */ -function import_dir($indir) -{ - $out = array(); - foreach (glob($indir.'/*.po') as $fn) { - $out = array_merge_recursive($out, import_file($fn)); - } - return $out; -} - -/** - * Convert the given .po file into a Roundcube localization array - */ -function import_file($fn) -{ - $out = array(); - $lines = file($fn); - $language = ''; - $translator = ''; - - // get language code from file name - if (preg_match('/-([a-z_]+).po$/i', $fn, $m)) - $language = expand_langcode($m[1]); - - $is_header = true; - $msgid = null; - $msgstr = ''; - $dests = array(); - foreach ($lines as $i => $line) { - $line = trim($line); - - // parse header - if ($is_header && $line[0] == '"') { - list($key, $val) = explode(": ", preg_replace('/\\\n$/', '', trim($line, '"')), 2); - switch (strtolower($key)) { - case 'language': - $language = expand_langcode($val); - break; - case 'last-translator': - $translator = $val; - break; - } - } - - // empty line - if ($line == '') { - if ($msgid && $dests) { - foreach ($dests as $dest) { - list($file, $label) = explode(':', $dest); - $out[$file][$label] = $msgstr; - $out[$file]['_translator'] = $translator; - } - } - - $msgid = null; - $msgstr = ''; - $dests = array(); - } - - // meta line - if ($line[0] == '#') { - $value = trim(substr($line, 2)); - if ($line[1] == ':') - $dests[] = str_replace('en_US', $language, $value); - } - else if (strpos($line, 'msgid') === 0) { - $msgid = gettext_decode(substr($line, 6)); - - if (!empty($msgid)) - $is_header = false; - } - else if (strpos($line, 'msgstr') === 0) { - $msgstr = gettext_decode(substr($line, 7)); - } - else if ($msgid && $line[0] == '"') { - $msgstr .= gettext_decode($line); - } - else if ($msgid !== null && $line[0] == '"') { - $msgid .= gettext_decode($line); - } - } - - if ($msgid && $dests) { - foreach ($dests as $dest) { - list($file, $label) = explode(':', $dest); - $out[$file][$label] = $msgstr; - $out[$file]['_translator'] = $translator; - } - } - - return $language ? $out : array(); -} - - -function gettext_decode($str) -{ - return stripslashes(trim($str, '"')); -} - -/** - * Translate two-chars language codes to our internally used language identifiers - */ -function expand_langcode($lang) -{ - static $rcube_language_aliases, $rcube_languages; - - if (!$rcube_language_aliases) - include(INSTALL_PATH . 'program/localization/index.inc'); - - if ($rcube_language_aliases[$lang]) - return $rcube_language_aliases[$lang]; - else if (strlen($lang) == 2 && !isset($rcube_languages[$lang])) - return strtolower($lang) . '_' . strtoupper($lang); - else - return $lang; -} - - -?> diff --git a/bin/makedoc.sh b/bin/makedoc.sh deleted file mode 100755 index 2a34254cb..000000000 --- a/bin/makedoc.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -TITLE="Roundcube Webmail" -PACKAGES="Core" - -INSTALL_PATH="`dirname $0`/.." -PATH_PROJECT=$INSTALL_PATH/program/include -PATH_FRAMEWORK=$INSTALL_PATH/program/lib/Roundcube -PATH_DOCS=$INSTALL_PATH/doc/phpdoc -BIN_PHPDOC="`/usr/bin/which phpdoc`" - -if [ ! -x "$BIN_PHPDOC" ] -then - echo "phpdoc not found: $BIN_PHPDOC" - exit 1 -fi - -OUTPUTFORMAT=HTML -CONVERTER=frames -TEMPLATE=earthli -PRIVATE=off - -# make documentation -$BIN_PHPDOC -d $PATH_PROJECT,$PATH_FRAMEWORK -t $PATH_DOCS -ti "$TITLE" -dn $PACKAGES \ --o $OUTPUTFORMAT:$CONVERTER:$TEMPLATE -pp $PRIVATE - |