From 6b1cfa855e1b02b9fe49d7bf11f484fa0ba4686a Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Wed, 2 Apr 2003 17:46:37 +0000 Subject: [PATCH] limited the length of the message_id to 230 and defined a constant for it --- phpgwapi/inc/class.setup_detection.inc.php | 21 ++++++---- phpgwapi/inc/class.setup_translation.inc.php | 30 ++++++------- phpgwapi/inc/class.translation_sql.inc.php | 27 +++++++++++- setup/lang.php | 44 +++++++++++--------- 4 files changed, 78 insertions(+), 44 deletions(-) diff --git a/phpgwapi/inc/class.setup_detection.inc.php b/phpgwapi/inc/class.setup_detection.inc.php index 1d8691dadd..f69da08c5a 100644 --- a/phpgwapi/inc/class.setup_detection.inc.php +++ b/phpgwapi/inc/class.setup_detection.inc.php @@ -161,8 +161,15 @@ { $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']); } - 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'; - $langstbl = 'languages'; + $languagestbl = 'languages'; } else { $langtbl = 'phpgw_lang'; - $langstbl = 'phpgw_languages'; + $languagestbl = 'phpgw_languages'; } - - $GLOBALS['phpgw_setup']->db->query("SELECT DISTINCT lang FROM $langtbl",__LINE__,__FILE__); + $GLOBALS['phpgw_setup']->db->query($q = "SELECT DISTINCT lang FROM $langtbl",__LINE__,__FILE__); if($GLOBALS['phpgw_setup']->db->num_rows() == 0) { $GLOBALS['phpgw_info']['setup']['header_msg'] = 'Stage 3 (No languages installed)'; @@ -356,7 +363,7 @@ reset($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->next_record(); $GLOBALS['phpgw_info']['setup']['installed_langs'][$value] = $GLOBALS['phpgw_setup']->db->f('lang_name'); diff --git a/phpgwapi/inc/class.setup_translation.inc.php b/phpgwapi/inc/class.setup_translation.inc.php index 1f39537a67..8c85585bed 100644 --- a/phpgwapi/inc/class.setup_translation.inc.php +++ b/phpgwapi/inc/class.setup_translation.inc.php @@ -23,10 +23,14 @@ /* $Id$ */ + if (!defined('MAX_MESSAGE_ID_LENGTH')) + { + define('MAX_MESSAGE_ID_LENGTH',230); + } + class setup_translation { var $langarray; - var $langtbl = 'phpgw_lang'; /*! @function setup_lang @@ -37,14 +41,6 @@ { $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) { $lang = 'en'; @@ -77,7 +73,7 @@ fclose($fp); } } - + /*! @function translate @abstract Translate phrase to user selected lang @@ -128,7 +124,7 @@ { echo '
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(); while($GLOBALS['phpgw_setup']->db->next_record()) @@ -153,11 +149,11 @@ { echo '
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(); 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 False; @@ -202,13 +198,13 @@ while (list($null,$line) = @each($raw_file)) { 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 '
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)); - $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->next_record(); @@ -218,10 +214,10 @@ { if($DEBUG) { - echo "
add_langs(): adding - INSERT INTO $this->langtbl VALUES ('$message_id','$app_name','" + echo "
add_langs(): adding - INSERT INTO phpgw_lang VALUES ('$message_id','$app_name','" . $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__); } } diff --git a/phpgwapi/inc/class.translation_sql.inc.php b/phpgwapi/inc/class.translation_sql.inc.php index 9e7ba79449..9dc42ed334 100644 --- a/phpgwapi/inc/class.translation_sql.inc.php +++ b/phpgwapi/inc/class.translation_sql.inc.php @@ -25,6 +25,13 @@ /* $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 { var $lang = array(); @@ -103,7 +110,7 @@ $vars = array(); } $ret = $key; - $_key = strtolower($key); + $_key = substr(strtolower($key),0,MAX_MESSAGE_ID_LENGTH); if(!@isset($this->lang[$_key]) && !$this->loaded) { @@ -140,4 +147,22 @@ $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; + } } diff --git a/setup/lang.php b/setup/lang.php index b0fa95ed2b..3114d24708 100644 --- a/setup/lang.php +++ b/setup/lang.php @@ -42,6 +42,11 @@ $submit = True; } + if (!defined('MAX_MESSAGE_ID_LENGTH')) + { + define('MAX_MESSAGE_ID_LENGTH',230); + } + if (@$GLOBALS['HTTP_POST_VARS']['submit']) { $lang_selected = @$GLOBALS['HTTP_POST_VARS']['lang_selected']; @@ -66,7 +71,7 @@ //echo '
Test: dumpold'; $GLOBALS['phpgw_info']['server']['lang_ctimes'] = array(); } - while (list($null,$lang) = each($lang_selected)) + foreach($lang_selected as $lang) { //echo '
Working on: ' . $lang; $addlang = False; @@ -87,8 +92,8 @@ //echo '
Test: loop above file()'; $setup_info = $GLOBALS['phpgw_setup']->detection->get_versions(); $setup_info = $GLOBALS['phpgw_setup']->detection->get_db_versions($setup_info); - $raw = $raw_file = array(); - // Visit each app/setup dir, look for a lang file + $raw = array(); + // Visit each app/setup dir, look for a phpgw_lang file while (list($key,$app) = each($setup_info)) { $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)) { //echo '
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); } } - @reset($raw); - while (list($a,$raw_file) = @each($raw)) + foreach($raw as $app_name => $ids) { - while (list($_null,$line) = @each($raw_file)) + foreach($ids as $message_id => $content) { $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 '
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') { //echo '
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(); if ($GLOBALS['phpgw_setup']->db->f(0) == 0) @@ -130,11 +137,11 @@ { if($message_id && $content) { - //echo "
adding - insert into lang values ('".$message_id."','".$app_name."','".$GLOBALS['phpgw_setup']->db_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__); + //echo "
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','$lang','$content')",__LINE__,__FILE__); if (intval($result) <= 0) { - echo "
Error inserting record: phpgw_lang values ('".$message_id."','".$app_name."','".$GLOBALS['phpgw_setup']->db_lang."','".$content."')"; + echo "
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','". addslashes(serialize($GLOBALS['phpgw_info']['server']['lang_ctimes']))."')",__LINE__,__FILE__); } - if(!$included) { Header('Location: index.php'); @@ -189,7 +195,7 @@ } $select_box_desc = lang('Select which languages you would like to use'); $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()) { $id = $GLOBALS['phpgw_setup']->db->f('lang_id');