limited the length of the message_id to 230 and defined a constant for it

This commit is contained in:
Ralf Becker 2003-04-02 17:46:37 +00:00
parent 456493f188
commit 6b1cfa855e
4 changed files with 78 additions and 44 deletions

View File

@ -161,8 +161,15 @@
{ {
$setup_info['depends'][$depkey]['status'] = True; $setup_info['depends'][$depkey]['status'] = True;
} }
else else // check if majors are equal and minors greater or equal
{ {
$major_depsvalue = $GLOBALS['phpgw_setup']->get_major($depsvalue);
list(,,,$minor_depsvalue) = explode('.',$depsvalue);
list(,,,$minor) = explode('.',$setup_info[$value['depends'][$depkey]['appname']]['currentver']);
if ($major == $major_depsvalue && $minor <= $minor_depsvalue)
{
$setup_info['depends'][$depkey]['status'] = True;
}
} }
} }
} }
@ -330,18 +337,18 @@
{ {
$GLOBALS['setup_info'] = $GLOBALS['phpgw_setup']->detection->get_db_versions($GLOBALS['setup_info']); $GLOBALS['setup_info'] = $GLOBALS['phpgw_setup']->detection->get_db_versions($GLOBALS['setup_info']);
} }
if($GLOBALS['phpgw_setup']->alessthanb($GLOBALS['setup_info']['phpgwapi']['currentver'], '0.9.15.002')) if($GLOBALS['phpgw_setup']->alessthanb($GLOBALS['setup_info']['phpgwapi']['currentver'], '0.9.14.501') ||
ereg('0\.9\.15\.00[01]{1,1}',$GLOBALS['setup_info']['phpgwapi']['currentver']))
{ {
$langtbl = 'lang'; $langtbl = 'lang';
$langstbl = 'languages'; $languagestbl = 'languages';
} }
else else
{ {
$langtbl = 'phpgw_lang'; $langtbl = 'phpgw_lang';
$langstbl = 'phpgw_languages'; $languagestbl = 'phpgw_languages';
} }
$GLOBALS['phpgw_setup']->db->query($q = "SELECT DISTINCT lang FROM $langtbl",__LINE__,__FILE__);
$GLOBALS['phpgw_setup']->db->query("SELECT DISTINCT lang FROM $langtbl",__LINE__,__FILE__);
if($GLOBALS['phpgw_setup']->db->num_rows() == 0) if($GLOBALS['phpgw_setup']->db->num_rows() == 0)
{ {
$GLOBALS['phpgw_info']['setup']['header_msg'] = 'Stage 3 (No languages installed)'; $GLOBALS['phpgw_info']['setup']['header_msg'] = 'Stage 3 (No languages installed)';
@ -356,7 +363,7 @@
reset($GLOBALS['phpgw_info']['setup']['installed_langs']); reset($GLOBALS['phpgw_info']['setup']['installed_langs']);
while(list($key, $value) = each($GLOBALS['phpgw_info']['setup']['installed_langs'])) while(list($key, $value) = each($GLOBALS['phpgw_info']['setup']['installed_langs']))
{ {
$sql = "SELECT lang_name FROM $langstbl WHERE lang_id = '".$value."'"; $sql = "SELECT lang_name FROM $languagestbl WHERE lang_id = '".$value."'";
$GLOBALS['phpgw_setup']->db->query($sql); $GLOBALS['phpgw_setup']->db->query($sql);
$GLOBALS['phpgw_setup']->db->next_record(); $GLOBALS['phpgw_setup']->db->next_record();
$GLOBALS['phpgw_info']['setup']['installed_langs'][$value] = $GLOBALS['phpgw_setup']->db->f('lang_name'); $GLOBALS['phpgw_info']['setup']['installed_langs'][$value] = $GLOBALS['phpgw_setup']->db->f('lang_name');

View File

@ -23,10 +23,14 @@
/* $Id$ */ /* $Id$ */
if (!defined('MAX_MESSAGE_ID_LENGTH'))
{
define('MAX_MESSAGE_ID_LENGTH',230);
}
class setup_translation class setup_translation
{ {
var $langarray; var $langarray;
var $langtbl = 'phpgw_lang';
/*! /*!
@function setup_lang @function setup_lang
@ -37,14 +41,6 @@
{ {
$ConfigLang = get_var('ConfigLang',Array('POST','COOKIE')); $ConfigLang = get_var('ConfigLang',Array('POST','COOKIE'));
/* TODO */
/*
if(@$GLOBALS['phpgw_setup']->alessthanb(@$GLOBALS['setup_info']['phpgwapi']['currentver'], '0.9.15.002'))
{
$this->langtbl = 'lang';
}
*/
if(!$ConfigLang) if(!$ConfigLang)
{ {
$lang = 'en'; $lang = 'en';
@ -77,7 +73,7 @@
fclose($fp); fclose($fp);
} }
} }
/*! /*!
@function translate @function translate
@abstract Translate phrase to user selected lang @abstract Translate phrase to user selected lang
@ -128,7 +124,7 @@
{ {
echo '<br>get_langs(): checking db...' . "\n"; echo '<br>get_langs(): checking db...' . "\n";
} }
$GLOBALS['phpgw_setup']->db->query("SELECT DISTINCT(lang) FROM $this->langtbl",__LINE__,__FILE__); $GLOBALS['phpgw_setup']->db->query("SELECT DISTINCT(lang) FROM phpgw_lang",__LINE__,__FILE__);
$langs = array(); $langs = array();
while($GLOBALS['phpgw_setup']->db->next_record()) while($GLOBALS['phpgw_setup']->db->next_record())
@ -153,11 +149,11 @@
{ {
echo '<br>drop_langs(): Working on: ' . $appname; echo '<br>drop_langs(): Working on: ' . $appname;
} }
$GLOBALS['phpgw_setup']->db->query("SELECT COUNT(message_id) FROM $this->langtbl WHERE app_name='$appname'",__LINE__,__FILE__); $GLOBALS['phpgw_setup']->db->query("SELECT COUNT(message_id) FROM phpgw_lang WHERE app_name='$appname'",__LINE__,__FILE__);
$GLOBALS['phpgw_setup']->db->next_record(); $GLOBALS['phpgw_setup']->db->next_record();
if($GLOBALS['phpgw_setup']->db->f(0)) if($GLOBALS['phpgw_setup']->db->f(0))
{ {
$GLOBALS['phpgw_setup']->db->query("DELETE FROM $this->langtbl WHERE app_name='$appname'",__LINE__,__FILE__); $GLOBALS['phpgw_setup']->db->query("DELETE FROM phpgw_lang WHERE app_name='$appname'",__LINE__,__FILE__);
return True; return True;
} }
return False; return False;
@ -202,13 +198,13 @@
while (list($null,$line) = @each($raw_file)) while (list($null,$line) = @each($raw_file))
{ {
list($message_id,$app_name,$GLOBALS['phpgw_setup']->db_lang,$content) = explode("\t",$line); list($message_id,$app_name,$GLOBALS['phpgw_setup']->db_lang,$content) = explode("\t",$line);
$message_id = $GLOBALS['phpgw_setup']->db->db_addslashes(chop($message_id)); $message_id = $GLOBALS['phpgw_setup']->db->db_addslashes(chop(substr($message_id,0,MAX_MESSAGE_ID_LENGTH)));
/* echo '<br>APPNAME:' . $app_name . ' PHRASE:' . $message_id; */ /* echo '<br>APPNAME:' . $app_name . ' PHRASE:' . $message_id; */
$app_name = $GLOBALS['phpgw_setup']->db->db_addslashes(chop($app_name)); $app_name = $GLOBALS['phpgw_setup']->db->db_addslashes(chop($app_name));
$GLOBALS['phpgw_setup']->db_lang = $GLOBALS['phpgw_setup']->db->db_addslashes(chop($GLOBALS['phpgw_setup']->db_lang)); $GLOBALS['phpgw_setup']->db_lang = $GLOBALS['phpgw_setup']->db->db_addslashes(chop($GLOBALS['phpgw_setup']->db_lang));
$content = $GLOBALS['phpgw_setup']->db->db_addslashes(chop($content)); $content = $GLOBALS['phpgw_setup']->db->db_addslashes(chop($content));
$GLOBALS['phpgw_setup']->db->query("SELECT COUNT(*) FROM $this->langtbl WHERE message_id='$message_id' and lang='" $GLOBALS['phpgw_setup']->db->query("SELECT COUNT(*) FROM phpgw_lang WHERE message_id='$message_id' and lang='"
. $GLOBALS['phpgw_setup']->db_lang . "'",__LINE__,__FILE__); . $GLOBALS['phpgw_setup']->db_lang . "'",__LINE__,__FILE__);
$GLOBALS['phpgw_setup']->db->next_record(); $GLOBALS['phpgw_setup']->db->next_record();
@ -218,10 +214,10 @@
{ {
if($DEBUG) if($DEBUG)
{ {
echo "<br>add_langs(): adding - INSERT INTO $this->langtbl VALUES ('$message_id','$app_name','" echo "<br>add_langs(): adding - INSERT INTO phpgw_lang VALUES ('$message_id','$app_name','"
. $GLOBALS['phpgw_setup']->db_lang . "','$content')"; . $GLOBALS['phpgw_setup']->db_lang . "','$content')";
} }
$GLOBALS['phpgw_setup']->db->query("INSERT INTO $this->langtbl VALUES ('$message_id','$app_name','" $GLOBALS['phpgw_setup']->db->query("INSERT INTO phpgw_lang VALUES ('$message_id','$app_name','"
. $GLOBALS['phpgw_setup']->db_lang . "','$content')",__LINE__,__FILE__); . $GLOBALS['phpgw_setup']->db_lang . "','$content')",__LINE__,__FILE__);
} }
} }

View File

@ -25,6 +25,13 @@
/* $Id$ */ /* $Id$ */
// define the maximal length of a message_id, all message_ids have to be unique
// in this length, our column is varchar 255, but addslashes might add some length
if (!defined('MAX_MESSAGE_ID_LENGTH'))
{
define('MAX_MESSAGE_ID_LENGTH',230);
}
class translation class translation
{ {
var $lang = array(); var $lang = array();
@ -103,7 +110,7 @@
$vars = array(); $vars = array();
} }
$ret = $key; $ret = $key;
$_key = strtolower($key); $_key = substr(strtolower($key),0,MAX_MESSAGE_ID_LENGTH);
if(!@isset($this->lang[$_key]) && !$this->loaded) if(!@isset($this->lang[$_key]) && !$this->loaded)
{ {
@ -140,4 +147,22 @@
$GLOBALS['phpgw']->db->next_record(); $GLOBALS['phpgw']->db->next_record();
} }
} }
/*!
@function get_installed_langs
@returns array of installed langs, in the form eg. 'de' => 'German'
*/
function get_installed_langs()
{
$GLOBALS['phpgw']->db->query("SELECT DISTINCT l.lang,ln.lang_name FROM phpgw_lang l,phpgw_languages ln WHERE l.lang = ln.lang_id",__LINE__,__FILE__);
if (!$GLOBALS['phpgw']->db->num_rows())
{
return False;
}
while ($GLOBALS['phpgw']->db->next_record())
{
$langs[$GLOBALS['phpgw']->db->f('lang')] = $GLOBALS['phpgw']->db->f('lang_name');
}
return $langs;
}
} }

View File

@ -42,6 +42,11 @@
$submit = True; $submit = True;
} }
if (!defined('MAX_MESSAGE_ID_LENGTH'))
{
define('MAX_MESSAGE_ID_LENGTH',230);
}
if (@$GLOBALS['HTTP_POST_VARS']['submit']) if (@$GLOBALS['HTTP_POST_VARS']['submit'])
{ {
$lang_selected = @$GLOBALS['HTTP_POST_VARS']['lang_selected']; $lang_selected = @$GLOBALS['HTTP_POST_VARS']['lang_selected'];
@ -66,7 +71,7 @@
//echo '<br>Test: dumpold'; //echo '<br>Test: dumpold';
$GLOBALS['phpgw_info']['server']['lang_ctimes'] = array(); $GLOBALS['phpgw_info']['server']['lang_ctimes'] = array();
} }
while (list($null,$lang) = each($lang_selected)) foreach($lang_selected as $lang)
{ {
//echo '<br>Working on: ' . $lang; //echo '<br>Working on: ' . $lang;
$addlang = False; $addlang = False;
@ -87,8 +92,8 @@
//echo '<br>Test: loop above file()'; //echo '<br>Test: loop above file()';
$setup_info = $GLOBALS['phpgw_setup']->detection->get_versions(); $setup_info = $GLOBALS['phpgw_setup']->detection->get_versions();
$setup_info = $GLOBALS['phpgw_setup']->detection->get_db_versions($setup_info); $setup_info = $GLOBALS['phpgw_setup']->detection->get_db_versions($setup_info);
$raw = $raw_file = array(); $raw = array();
// Visit each app/setup dir, look for a lang file // Visit each app/setup dir, look for a phpgw_lang file
while (list($key,$app) = each($setup_info)) while (list($key,$app) = each($setup_info))
{ {
$appfile = PHPGW_SERVER_ROOT . SEP . $app['name'] . SEP . 'setup' . SEP . 'phpgw_' . strtolower($lang) . '.lang'; $appfile = PHPGW_SERVER_ROOT . SEP . $app['name'] . SEP . 'setup' . SEP . 'phpgw_' . strtolower($lang) . '.lang';
@ -96,27 +101,29 @@
if($GLOBALS['phpgw_setup']->app_registered($app['name']) && file_exists($appfile)) if($GLOBALS['phpgw_setup']->app_registered($app['name']) && file_exists($appfile))
{ {
//echo '<br>Including: ' . $appfile; //echo '<br>Including: ' . $appfile;
$raw[] = file($appfile); $lines = file($appfile);
foreach($lines as $line)
{
list($message_id,$app_name,,$content) = explode("\t",$line);
$message_id = $GLOBALS['phpgw_setup']->db->db_addslashes(substr(chop($message_id),0,MAX_MESSAGE_ID_LENGTH));
$app_name = $GLOBALS['phpgw_setup']->db->db_addslashes(chop($app_name));
$content = $GLOBALS['phpgw_setup']->db->db_addslashes(chop($content));
$raw[$app_name][$message_id] = $content;
}
$GLOBALS['phpgw_info']['server']['lang_ctimes'][$lang][$app['name']] = filectime($appfile); $GLOBALS['phpgw_info']['server']['lang_ctimes'][$lang][$app['name']] = filectime($appfile);
} }
} }
@reset($raw); foreach($raw as $app_name => $ids)
while (list($a,$raw_file) = @each($raw))
{ {
while (list($_null,$line) = @each($raw_file)) foreach($ids as $message_id => $content)
{ {
$addit = False; $addit = False;
list($message_id,$app_name,$GLOBALS['phpgw_setup']->db_lang,$content) = explode("\t",$line);
$message_id = $GLOBALS['phpgw_setup']->db->db_addslashes(chop($message_id));
//echo '<br>APPNAME:' . $app_name . ' PHRASE:' . $message_id; //echo '<br>APPNAME:' . $app_name . ' PHRASE:' . $message_id;
$app_name = $GLOBALS['phpgw_setup']->db->db_addslashes(chop($app_name));
$GLOBALS['phpgw_setup']->db_lang = $GLOBALS['phpgw_setup']->db->db_addslashes(chop($GLOBALS['phpgw_setup']->db_lang));
$content = $GLOBALS['phpgw_setup']->db->db_addslashes(chop($content));
if ($upgrademethod == 'addmissing') if ($upgrademethod == 'addmissing')
{ {
//echo '<br>Test: addmissing'; //echo '<br>Test: addmissing';
$GLOBALS['phpgw_setup']->db->query("SELECT COUNT(*) FROM phpgw_lang WHERE message_id='".$message_id."' and lang='".$GLOBALS['phpgw_setup']->db_lang."' and (app_name='".$app_name."' or app_name='common')",__LINE__,__FILE__); $GLOBALS['phpgw_setup']->db->query("SELECT COUNT(*) FROM phpgw_lang WHERE message_id='$message_id' and lang='$lang' and (app_name='$app_name' or app_name='common')",__LINE__,__FILE__);
$GLOBALS['phpgw_setup']->db->next_record(); $GLOBALS['phpgw_setup']->db->next_record();
if ($GLOBALS['phpgw_setup']->db->f(0) == 0) if ($GLOBALS['phpgw_setup']->db->f(0) == 0)
@ -130,11 +137,11 @@
{ {
if($message_id && $content) if($message_id && $content)
{ {
//echo "<br>adding - insert into lang values ('".$message_id."','".$app_name."','".$GLOBALS['phpgw_setup']->db_lang."','".$content."')"; //echo "<br>adding - insert into phpgw_lang values ('$message_id','$app_name','$lang','$content')";
$result = $GLOBALS['phpgw_setup']->db->query("INSERT INTO phpgw_lang(message_id,app_name,lang,content) VALUES('".$message_id."','".$app_name."','".$GLOBALS['phpgw_setup']->db_lang."','".$content."')",__LINE__,__FILE__); $result = $GLOBALS['phpgw_setup']->db->query("INSERT INTO phpgw_lang (message_id,app_name,lang,content) VALUES('$message_id','$app_name','$lang','$content')",__LINE__,__FILE__);
if (intval($result) <= 0) if (intval($result) <= 0)
{ {
echo "<br>Error inserting record: phpgw_lang values ('".$message_id."','".$app_name."','".$GLOBALS['phpgw_setup']->db_lang."','".$content."')"; echo "<br>Error inserting record: phpgw_lang values ('$message_id','$app_name','$lang','$content')";
} }
} }
} }
@ -148,7 +155,6 @@
$GLOBALS['phpgw_setup']->db->query($query="INSERT INTO phpgw_config(config_app,config_name,config_value) VALUES ('phpgwapi','lang_ctimes','". $GLOBALS['phpgw_setup']->db->query($query="INSERT INTO phpgw_config(config_app,config_name,config_value) VALUES ('phpgwapi','lang_ctimes','".
addslashes(serialize($GLOBALS['phpgw_info']['server']['lang_ctimes']))."')",__LINE__,__FILE__); addslashes(serialize($GLOBALS['phpgw_info']['server']['lang_ctimes']))."')",__LINE__,__FILE__);
} }
if(!$included) if(!$included)
{ {
Header('Location: index.php'); Header('Location: index.php');
@ -189,7 +195,7 @@
} }
$select_box_desc = lang('Select which languages you would like to use'); $select_box_desc = lang('Select which languages you would like to use');
$select_box = ''; $select_box = '';
$GLOBALS['phpgw_setup']->db->query("select lang_id,lang_name from phpgw_languages where available='Yes'"); $GLOBALS['phpgw_setup']->db->query($q="select lang_id,lang_name from phpgw_languages where available='Yes'");
while ($GLOBALS['phpgw_setup']->db->next_record()) while ($GLOBALS['phpgw_setup']->db->next_record())
{ {
$id = $GLOBALS['phpgw_setup']->db->f('lang_id'); $id = $GLOBALS['phpgw_setup']->db->f('lang_id');