From 970a92297e98f0dd58d029bf170d96cc829425e4 Mon Sep 17 00:00:00 2001
From: Ralf Becker line='$line' DB-Type='{$GLOBALS['egw_setup']->db->Type}', eGroupWare system_charset='{$GLOBALS['egw_setup']->system_charset}', DB charset was '{$GLOBALS['egw_setup']->db_charset_was}' $table.$col $type CHARACTER SET $charset $default $null '.nl2br($alter_table)." SQL Error: ".nl2br($alter_table)."".print_r(db_backup::csv_split($line),true)."
\n";
+*/
\ No newline at end of file
diff --git a/phpgwapi/inc/class.egw.inc.php b/phpgwapi/inc/class.egw.inc.php
index 6c2f5fd858..345946df22 100644
--- a/phpgwapi/inc/class.egw.inc.php
+++ b/phpgwapi/inc/class.egw.inc.php
@@ -164,6 +164,20 @@
register_shutdown_function(array($this->common, 'egw_final'));
$this->db->connect(); // we need to re-connect
+ // Set the DB's client charset if a system-charset is set
+ $this->db->select($this->config_table,'config_value',array(
+ 'config_app' => 'phpgwapi',
+ 'config_name' => 'system_charset',
+ ),__LINE__,__FILE__);
+ if ($this->db->next_record() && $this->db->f(0))
+ {
+ $this->db->Link_ID->SetCharSet($this->db->f(0));
+ }
+
+ if ($GLOBALS['egw_info']['system']['system_charset'])
+ {
+ $this->db->Link_ID->SetCharSet($GLOBALS['egw_info']['system']['system_charset']);
+ }
foreach(array('translation','hooks','auth','accounts','acl','session','preferences','applications','contenthistory','contacts') as $class)
{
if (is_object($this->$class->db))
diff --git a/phpgwapi/inc/class.schema_proc.inc.php b/phpgwapi/inc/class.schema_proc.inc.php
index 8a92014775..d2b48050ca 100644
--- a/phpgwapi/inc/class.schema_proc.inc.php
+++ b/phpgwapi/inc/class.schema_proc.inc.php
@@ -20,7 +20,8 @@
/**
* eGW's ADOdb based schema-processor
*
- * @class schema_proc
+ * @package phpgwapi
+ * @subpackage db
* @author RalfBecker-AT-outdoor-training.de and others
* @license GPL
*/
@@ -36,6 +37,8 @@
);
var $sType; // type of the database, set by the the constructor
var $max_varchar_length = 255; // maximum length of a varchar column, everything above get converted to text
+
+ var $system_charset;
/**
* Constructor of schema-processor
@@ -65,6 +68,14 @@
$this->max_varchar_length = 8000;
break;
}
+ if (is_object($GLOBALS['egw_setup']))
+ {
+ $this->system_charset =& $GLOBALS['egw_setup']->system_charset;
+ }
+ elseif (isset($GLOBALS['egw_info']['server']['system_charset']))
+ {
+ $this->system_charset = $GLOBALS['egw_info']['server']['system_charset'];
+ }
}
/**
@@ -80,8 +91,14 @@
{
$this->debug_message('schema_proc::CreateTable(%1,%2)',False,$sTableName, $aTableDef);
}
+ // for mysql 4.0+ we set the charset for the table
+ if ($this->system_charset && substr($this->sType,0,5) == 'mysql' &&
+ (float) $this->m_odb->ServerInfo['version'] >= 4.0 && $this->m_odb->Link_ID->charset2mysql[$this->system_charset])
+ {
+ $set_table_charset = array($this->sType => 'CHARACTER SET '.$this->m_odb->Link_ID->charset2mysql[$this->system_charset]);
+ }
// creating the table
- $aSql = $this->dict->CreateTableSQL($sTableName,$ado_cols = $this->_egw2adodb_columndef($aTableDef));
+ $aSql = $this->dict->CreateTableSQL($sTableName,$ado_cols = $this->_egw2adodb_columndef($aTableDef),$set_table_charset);
if (!($retVal = $this->ExecuteSQLArray($aSql,2,'CreateTableSQL(%1,%2) sql=%3',False,$sTableName,$ado_cols,$aSql)))
{
return $retVal;
@@ -570,7 +587,7 @@
* Creates all tables for one application
*
* @param array $aTables array of eGW table-definitions
- * @param boolean $bOutputHTML should we give diagnostics, default False
+ * @param boolean $bOutputHTML=false should we give diagnostics, default False
* @return boolean True on success, False if an (fatal) error occured
*/
function ExecuteScripts($aTables, $bOutputHTML=False)
@@ -661,12 +678,12 @@
* if the row exists db::update is called else a new row with $date merged with $where gets inserted (data has precedence)
* @param int $line line-number to pass to query
* @param string $file file-name to pass to query
- * @param string $app string with name of app, this need to be set in setup anyway!!!
+ * @param string $app=false string with name of app, this need to be set in setup anyway!!!
* @return ADORecordSet or false, if the query fails
*/
- function insert($table,$data,$where,$line,$file,$app)
+ function insert($table,$data,$where,$line,$file,$app=False,$use_prepared_statement=false)
{
- return $this->m_odb->insert($table,$data,$where,$line,$file,$app);
+ return $this->m_odb->insert($table,$data,$where,$line,$file,$app,$use_prepared_statement);
}
/**
diff --git a/phpgwapi/inc/class.translation_sql.inc.php b/phpgwapi/inc/class.translation_sql.inc.php
index ec1ab83a10..2df370b9dc 100644
--- a/phpgwapi/inc/class.translation_sql.inc.php
+++ b/phpgwapi/inc/class.translation_sql.inc.php
@@ -25,10 +25,10 @@
/* $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
+ // in this length, our column is varchar 128
if (!defined('MAX_MESSAGE_ID_LENGTH'))
{
- define('MAX_MESSAGE_ID_LENGTH',230);
+ define('MAX_MESSAGE_ID_LENGTH',128);
}
// some constanst for pre php4.3
if (!defined('PHP_SHLIB_SUFFIX'))
@@ -46,6 +46,9 @@
var $loaded_apps = array();
var $line_rejected = array();
var $lang_array = array();
+ var $lang_table = 'egw_lang';
+ var $languages_table = 'egw_languages';
+ var $config_table = 'egw_config';
/**
* Constructor, sets up a copy of the db-object, gets the system-charset and tries to load the mbstring extension
@@ -58,9 +61,6 @@
}
$this->db = is_object($GLOBALS['egw']->db) ? $GLOBALS['egw']->db : $GLOBALS['egw_setup']->db;
$this->db->set_app('phpgwapi');
- $this->lang_table = 'phpgw_lang';
- $this->languages_table = 'phpgw_languages';
- $this->config_table = 'egw_config';
if (!isset($GLOBALS['egw_setup']))
{
@@ -272,7 +272,7 @@
{
if (!is_array($this->langs))
{
- $this->db->query("SELECT DISTINCT l.lang,lx.lang_name FROM phpgw_lang l,phpgw_languages lx WHERE l.lang = lx.lang_id",__LINE__,__FILE__);
+ $this->db->query("SELECT DISTINCT l.lang,lx.lang_name FROM $this->lang_table l,$this->languages_table lx WHERE l.lang = lx.lang_id",__LINE__,__FILE__);
if (!$this->db->num_rows())
{
return False;
@@ -300,7 +300,7 @@
{
$distinct = $this->db->capabilities['distinct_on_text'] ? 'DISTINCT' : '';
- $this->db->query("SELECT $distinct l.lang,lx.lang_name,l.content AS charset FROM phpgw_lang l,phpgw_languages lx WHERE l.lang = lx.lang_id AND l.message_id='charset'",__LINE__,__FILE__);
+ $this->db->query("SELECT $distinct l.lang,lx.lang_name,l.content AS charset FROM $this->lang_table l,$this->languages_table lx WHERE l.lang = lx.lang_id AND l.message_id='charset'",__LINE__,__FILE__);
if (!$this->db->num_rows())
{
return False;
@@ -451,7 +451,7 @@
$addlang = False;
if ($upgrademethod == 'addonlynew')
{
- //echo "
Test: addonlynew - select count(*) from phpgw_lang where lang='".$lang."'";
+ //echo "
Test: addonlynew - select count(*) from egw_lang where lang='".$lang."'";
$this->db->select($this->lang_table,'COUNT(*)',array(
'lang' => $lang,
),__LINE__,__FILE__);
@@ -475,7 +475,7 @@
$setup_info = $GLOBALS['egw_setup']->detection->get_db_versions($setup_info);
$raw = array();
$apps = $only_app ? array($only_app) : array_keys($setup_info);
- // Visit each app/setup dir, look for a phpgw_lang file
+ // Visit each app/setup dir, look for a egw_lang file
foreach($apps as $app)
{
$appfile = EGW_SERVER_ROOT . SEP . $app . SEP . 'setup' . SEP . 'phpgw_' . strtolower($lang) . '.lang';
@@ -562,7 +562,7 @@
{
if($message_id && $content)
{
- // echo "
adding - insert into phpgw_lang values ('$message_id','$app_name','$lang','$content')";
+ // echo "
adding - insert into egw_lang values ('$message_id','$app_name','$lang','$content')";
$result = $this->db->insert($this->lang_table,array(
'message_id' => $message_id,
'app_name' => $app_name,
@@ -572,7 +572,7 @@
if ((int)$result <= 0)
{
- echo "
Error inserting record: phpgw_lang values ('$message_id','$app_name','$lang','$content')";
+ echo "
Error inserting record: egw_lang values ('$message_id','$app_name','$lang','$content')";
}
}
}
diff --git a/phpgwapi/setup/default_records.inc.php b/phpgwapi/setup/default_records.inc.php
index 695d94f99d..096ee52c5d 100644
--- a/phpgwapi/setup/default_records.inc.php
+++ b/phpgwapi/setup/default_records.inc.php
@@ -1,195 +1,195 @@
query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('aa','Afar')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ab','Abkhazian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('af','Afrikaans')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('am','Amharic')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ar','Arabic')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('as','Assamese')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ay','Aymara')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('az','Azerbaijani')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ba','Bashkir')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('be','Byelorussian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('bg','Bulgarian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('bh','Bihari')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('bi','Bislama')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('bn','Bengali / Bangla')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('bo','Tibetan')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('br','Breton')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ca','Catalan')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('co','Corsican')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('cs','Czech')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('cy','Welsh')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('da','Danish')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('de','German')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('dz','Bhutani')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('el','Greek')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('en','English / US')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('eo','Esperanto')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('es-es','Español')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('et','Estonian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('eu','Basque')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('fa','Persian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('fi','Finnish')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('fj','Fiji')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('fo','Faeroese')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('fr','French')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('fy','Frisian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ga','Irish')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('gd','Gaelic / Scots Gaelic')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('gl','Galician')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('gn','Guarani')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('gu','Gujarati')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ha','Hausa')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('hi','Hindi')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('hr','Croatian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('hu','Hungarian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('hy','Armenian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ia','Interlingua')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ie','Interlingue')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ik','Inupiak')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('in','Indonesian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('is','Icelandic')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('it','Italian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('iw','Hebrew')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ja','Japanese')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ji','Yiddish')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('jw','Javanese')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ka','Georgian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('kk','Kazakh')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('kl','Greenlandic')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('km','Cambodian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('kn','Kannada')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ko','Korean')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ks','Kashmiri')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ku','Kurdish')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ky','Kirghiz')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('la','Latin')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ln','Lingala')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('lo','Laothian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('lt','Lithuanian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('lv','Latvian / Lettish')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('mg','Malagasy')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('mi','Maori')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('mk','Macedonian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ml','Malayalam')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('mn','Mongolian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('mo','Moldavian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('mr','Marathi')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ms','Malay')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('mt','Maltese')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('my','Burmese')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('na','Nauru')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ne','Nepali')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('nl','Dutch')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('no','Norwegian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('oc','Occitan')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('om','Oromo / Afan')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('or','Oriya')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('pa','Punjabi')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('pl','Polish')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ps','Pashto / Pushto')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('pt','Portuguese')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('pt-br','Brazil')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('qu','Quechua')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('rm','Rhaeto-Romance')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('rn','Kirundi')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ro','Romanian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ru','Russian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('rw','Kinyarwanda')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('sa','Sanskrit')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('sd','Sindhi')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('sg','Sangro')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('sh','Serbo-Croatian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('si','Singhalese')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('sk','Slovak')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('sl','Slovenian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('sm','Samoan')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('sn','Shona')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('so','Somali')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('sq','Albanian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('sr','Serbian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ss','Siswati')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('st','Sesotho')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('su','Sudanese')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('sv','Swedish')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('sw','Swahili')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ta','Tamil')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('te','Tegulu')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('tg','Tajik')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('th','Thai')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ti','Tigrinya')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('tk','Turkmen')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('tl','Tagalog')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('tn','Setswana')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('to','Tonga')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('tr','Turkish')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ts','Tsonga')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('tt','Tatar')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('tw','Twi')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('uk','Ukrainian')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('ur','Urdu')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('uz','Uzbek')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('vi','Vietnamese')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('vo','Volapuk')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('wo','Wolof')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('xh','Xhosa')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('yo','Yoruba')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('zh','Chinese(simplified)')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('zt','Chinese(Taiwan)')");
- $oProc->query("INSERT INTO phpgw_languages (lang_id, lang_name) VALUES ('zu','Zulu')");
+/* $Id$ */
+foreach(array(
+ 'aa' => 'Afar',
+ 'ab' => 'Abkhazian',
+ 'af' => 'Afrikaans',
+ 'am' => 'Amharic',
+ 'ar' => 'Arabic',
+ 'as' => 'Assamese',
+ 'ay' => 'Aymara',
+ 'az' => 'Azerbaijani',
+ 'ba' => 'Bashkir',
+ 'be' => 'Byelorussian',
+ 'bg' => 'Bulgarian',
+ 'bh' => 'Bihari',
+ 'bi' => 'Bislama',
+ 'bn' => 'Bengali / Bangla',
+ 'bo' => 'Tibetan',
+ 'br' => 'Breton',
+ 'ca' => 'Catalan',
+ 'co' => 'Corsican',
+ 'cs' => 'Czech',
+ 'cy' => 'Welsh',
+ 'da' => 'Danish',
+ 'de' => 'German',
+ 'dz' => 'Bhutani',
+ 'el' => 'Greek',
+ 'en' => 'English / US',
+ 'eo' => 'Esperanto',
+ 'es-es' => 'Español',
+ 'et' => 'Estonian',
+ 'eu' => 'Basque',
+ 'fa' => 'Persian',
+ 'fi' => 'Finnish',
+ 'fj' => 'Fiji',
+ 'fo' => 'Faeroese',
+ 'fr' => 'French',
+ 'fy' => 'Frisian',
+ 'ga' => 'Irish',
+ 'gd' => 'Gaelic / Scots Gaelic',
+ 'gl' => 'Galician',
+ 'gn' => 'Guarani',
+ 'gu' => 'Gujarati',
+ 'ha' => 'Hausa',
+ 'hi' => 'Hindi',
+ 'hr' => 'Croatian',
+ 'hu' => 'Hungarian',
+ 'hy' => 'Armenian',
+ 'ia' => 'Interlingua',
+ 'ie' => 'Interlingue',
+ 'ik' => 'Inupiak',
+ 'in' => 'Indonesian',
+ 'is' => 'Icelandic',
+ 'it' => 'Italian',
+ 'iw' => 'Hebrew',
+ 'ja' => 'Japanese',
+ 'ji' => 'Yiddish',
+ 'jw' => 'Javanese',
+ 'ka' => 'Georgian',
+ 'kk' => 'Kazakh',
+ 'kl' => 'Greenlandic',
+ 'km' => 'Cambodian',
+ 'kn' => 'Kannada',
+ 'ko' => 'Korean',
+ 'ks' => 'Kashmiri',
+ 'ku' => 'Kurdish',
+ 'ky' => 'Kirghiz',
+ 'la' => 'Latin',
+ 'ln' => 'Lingala',
+ 'lo' => 'Laothian',
+ 'lt' => 'Lithuanian',
+ 'lv' => 'Latvian / Lettish',
+ 'mg' => 'Malagasy',
+ 'mi' => 'Maori',
+ 'mk' => 'Macedonian',
+ 'ml' => 'Malayalam',
+ 'mn' => 'Mongolian',
+ 'mo' => 'Moldavian',
+ 'mr' => 'Marathi',
+ 'ms' => 'Malay',
+ 'mt' => 'Maltese',
+ 'my' => 'Burmese',
+ 'na' => 'Nauru',
+ 'ne' => 'Nepali',
+ 'nl' => 'Dutch',
+ 'no' => 'Norwegian',
+ 'oc' => 'Occitan',
+ 'om' => 'Oromo / Afan',
+ 'or' => 'Oriya',
+ 'pa' => 'Punjabi',
+ 'pl' => 'Polish',
+ 'ps' => 'Pashto / Pushto',
+ 'pt' => 'Portuguese',
+ 'pt-br' => 'Brazil',
+ 'qu' => 'Quechua',
+ 'rm' => 'Rhaeto-Romance',
+ 'rn' => 'Kirundi',
+ 'ro' => 'Romanian',
+ 'ru' => 'Russian',
+ 'rw' => 'Kinyarwanda',
+ 'sa' => 'Sanskrit',
+ 'sd' => 'Sindhi',
+ 'sg' => 'Sangro',
+ 'sh' => 'Serbo-Croatian',
+ 'si' => 'Singhalese',
+ 'sk' => 'Slovak',
+ 'sl' => 'Slovenian',
+ 'sm' => 'Samoan',
+ 'sn' => 'Shona',
+ 'so' => 'Somali',
+ 'sq' => 'Albanian',
+ 'sr' => 'Serbian',
+ 'ss' => 'Siswati',
+ 'st' => 'Sesotho',
+ 'su' => 'Sudanese',
+ 'sv' => 'Swedish',
+ 'sw' => 'Swahili',
+ 'ta' => 'Tamil',
+ 'te' => 'Tegulu',
+ 'tg' => 'Tajik',
+ 'th' => 'Thai',
+ 'ti' => 'Tigrinya',
+ 'tk' => 'Turkmen',
+ 'tl' => 'Tagalog',
+ 'tn' => 'Setswana',
+ 'to' => 'Tonga',
+ 'tr' => 'Turkish',
+ 'ts' => 'Tsonga',
+ 'tt' => 'Tatar',
+ 'tw' => 'Twi',
+ 'uk' => 'Ukrainian',
+ 'ur' => 'Urdu',
+ 'uz' => 'Uzbek',
+ 'vi' => 'Vietnamese',
+ 'vo' => 'Volapuk',
+ 'wo' => 'Wolof',
+ 'xh' => 'Xhosa',
+ 'yo' => 'Yoruba',
+ 'zh' => 'Chinese(simplified)',
+ 'zt' => 'Chinese(Taiwan)',
+ 'zu' => 'Zulu',
+) as $id => $name)
+{
+ $oProc->insert($GLOBALS['egw_setup']->languages_table,array('lang_name' => $name),array('lang_id' => $id),__LINE__,__FILLE_);
+}
- foreach(array(
- 'sessions_checkip' => 'True',
- 'image_type' => '1',
- 'asyncservice' => 'fallback',
- ) as $name => $value)
- {
- $oProc->insert($GLOBALS['egw_setup']->config_table,array(
- 'config_value' => $value,
- ),array(
- 'config_app' => 'phpgwapi',
- 'config_name' => $name,
- ),__FILE__,__LINE__);
- }
+foreach(array(
+ 'sessions_checkip' => 'True',
+ 'image_type' => '1',
+ 'asyncservice' => 'fallback',
+) as $name => $value)
+{
+ $oProc->insert($GLOBALS['egw_setup']->config_table,array(
+ 'config_value' => $value,
+ ),array(
+ 'config_app' => 'phpgwapi',
+ 'config_name' => $name,
+ ),__LINE__,__FILE__);
+}
- $oProc->query("INSERT INTO phpgw_interserv(server_name,server_host,server_url,trust_level,trust_rel,server_mode) VALUES ('eGW demo',NULL,'http://www.egroupware.org/egroupware/xmlrpc.php',99,0,'xmlrpc')");
+$oProc->query("INSERT INTO phpgw_interserv(server_name,server_host,server_url,trust_level,trust_rel,server_mode) VALUES ('eGW demo',NULL,'http://www.egroupware.org/egroupware/xmlrpc.php',99,0,'xmlrpc')");
- // where is this empty directory for?
- $oProc->query ("INSERT INTO phpgw_vfs (owner_id, createdby_id, modifiedby_id, created, modified, size, mime_type, deleteable, comment, app, directory, name, link_directory, link_name) VALUES (0,0,0,'1970-01-01',NULL,NULL,'Directory','Y',NULL,NULL,'/','', NULL, NULL)");
-
- $oProc->query ("INSERT INTO phpgw_vfs (owner_id, createdby_id, modifiedby_id, created, modified, size, mime_type, deleteable, comment, app, directory, name, link_directory, link_name) VALUES (0,0,0,'1970-01-01',NULL,NULL,'Directory','Y',NULL,NULL,'/','home', NULL, NULL)");
+// insert the VFS basedir /home
+$oProc->query ("INSERT INTO egw_vfs (owner_id, createdby_id, modifiedby_id, created, modified, size, mime_type, deleteable, comment, app, directory, name, link_directory, link_name) VALUES (0,0,0,'1970-01-01',NULL,NULL,'Directory','Y',NULL,NULL,'/','', NULL, NULL)");
+$oProc->query ("INSERT INTO egw_vfs (owner_id, createdby_id, modifiedby_id, created, modified, size, mime_type, deleteable, comment, app, directory, name, link_directory, link_name) VALUES (0,0,0,'1970-01-01',NULL,NULL,'Directory','Y',NULL,NULL,'/','home', NULL, NULL)");
- /*************************************************************************\
- * Default Records for VFS v2 *
- \*************************************************************************/
- if ($GLOBALS['DEBUG'])
- {
- echo "
\ninitiating to create the default records for VFS SQL2...";
- }
-
- include PHPGW_INCLUDE_ROOT.'/phpgwapi/setup/default_records_mime.inc.php';
+/*************************************************************************\
+ * Default Records for VFS v2 *
+\*************************************************************************/
+if ($GLOBALS['DEBUG'])
+{
+ echo "
\ninitiating to create the default records for VFS SQL2...";
+}
- $oProc->query("INSERT INTO phpgw_vfs2_files (mime_id,owner_id,createdby_id,size,directory,name)
- SELECT mime_id,0,0,4096,'/','' FROM phpgw_vfs2_mimetypes WHERE mime='Directory'");
+include EGW_INCLUDE_ROOT.'/phpgwapi/setup/default_records_mime.inc.php';
- if ($GLOBALS['DEBUG'])
- {
- echo " DONE!";
- }
- /*************************************************************************/
+$oProc->query("INSERT INTO phpgw_vfs2_files (mime_id,owner_id,createdby_id,size,directory,name)
+ SELECT mime_id,0,0,4096,'/' => '' FROM phpgw_vfs2_mimetypes WHERE mime='Directory'");
-
-?>
+if ($GLOBALS['DEBUG'])
+{
+ echo " DONE!";
+}
+/*************************************************************************/
diff --git a/phpgwapi/setup/setup.inc.php b/phpgwapi/setup/setup.inc.php
index cd725c4d10..b43a0aefcc 100755
--- a/phpgwapi/setup/setup.inc.php
+++ b/phpgwapi/setup/setup.inc.php
@@ -14,7 +14,7 @@
/* Basic information about this app */
$setup_info['phpgwapi']['name'] = 'phpgwapi';
$setup_info['phpgwapi']['title'] = 'API';
- $setup_info['phpgwapi']['version'] = '1.0.1.014';
+ $setup_info['phpgwapi']['version'] = '1.0.1.019';
$setup_info['phpgwapi']['versions']['current_header'] = '1.28';
$setup_info['phpgwapi']['enable'] = 3;
$setup_info['phpgwapi']['app_order'] = 1;
@@ -29,8 +29,8 @@
$setup_info['phpgwapi']['tables'][] = 'phpgw_app_sessions';
$setup_info['phpgwapi']['tables'][] = 'phpgw_access_log';
$setup_info['phpgwapi']['tables'][] = 'phpgw_hooks';
- $setup_info['phpgwapi']['tables'][] = 'phpgw_languages';
- $setup_info['phpgwapi']['tables'][] = 'phpgw_lang';
+ $setup_info['phpgwapi']['tables'][] = 'egw_languages';
+ $setup_info['phpgwapi']['tables'][] = 'egw_lang';
$setup_info['phpgwapi']['tables'][] = 'phpgw_nextid';
$setup_info['phpgwapi']['tables'][] = 'phpgw_categories';
$setup_info['phpgwapi']['tables'][] = 'phpgw_addressbook';
@@ -76,3 +76,7 @@
+
+
+
+
diff --git a/phpgwapi/setup/tables_current.inc.php b/phpgwapi/setup/tables_current.inc.php
index b468addbd4..28805c2abd 100644
--- a/phpgwapi/setup/tables_current.inc.php
+++ b/phpgwapi/setup/tables_current.inc.php
@@ -138,7 +138,7 @@
'fk' => array(),
'uc' => array()
),
- 'phpgw_languages' => array(
+ 'egw_languages' => array(
'fd' => array(
'lang_id' => array('type' => 'varchar','precision' => '5','nullable' => False),
'lang_name' => array('type' => 'varchar','precision' => '50','nullable' => False)
@@ -148,11 +148,11 @@
'ix' => array(),
'uc' => array()
),
- 'phpgw_lang' => array(
+ 'egw_lang' => array(
'fd' => array(
'lang' => array('type' => 'varchar','precision' => '5','nullable' => False,'default' => ''),
- 'app_name' => array('type' => 'varchar','precision' => '100','nullable' => False,'default' => 'common'),
- 'message_id' => array('type' => 'varchar','precision' => '255','nullable' => False,'default' => ''),
+ 'app_name' => array('type' => 'varchar','precision' => '32','nullable' => False,'default' => 'common'),
+ 'message_id' => array('type' => 'varchar','precision' => '128','nullable' => False,'default' => ''),
'content' => array('type' => 'text')
),
'pk' => array('lang','app_name','message_id'),
@@ -328,7 +328,7 @@
'vfs_comment' => array('type' => 'varchar','precision' => '255'),
'vfs_app' => array('type' => 'varchar','precision' => '25'),
'vfs_directory' => array('type' => 'varchar','precision' => '255'),
- 'vfs_name' => array('type' => 'varchar','precision' => '128','nullable' => False),
+ 'vfs_name' => array('type' => 'varchar','precision' => '64','nullable' => False),
'vfs_link_directory' => array('type' => 'varchar','precision' => '255'),
'vfs_link_name' => array('type' => 'varchar','precision' => '128'),
'vfs_version' => array('type' => 'varchar','precision' => '30','nullable' => False,'default' => '0.0.0.0'),
@@ -336,7 +336,7 @@
),
'pk' => array('vfs_file_id'),
'fk' => array(),
- 'ix' => array(array('vfs_directory','vfs_name','vfs_mime_type')),
+ 'ix' => array(array('vfs_directory','vfs_name')),
'uc' => array()
),
'phpgw_history_log' => array(
@@ -407,14 +407,14 @@
'owner_id' => array('type' => 'int','precision' => '4','nullable' => False),
'createdby_id' => array('type' => 'int','precision' => '4'),
'modifiedby_id' => array('type' => 'int','precision' => '4'),
- 'created' => array('type' => 'timestamp','default' => '1970-01-01 00:00:00','nullable' => False),
- 'modified' => array('type' => 'timestamp','nullable' => True),
+ 'created' => array('type' => 'timestamp','nullable' => False,'default' => '1970-01-01 00:00:00'),
+ 'modified' => array('type' => 'timestamp'),
'size' => array('type' => 'int','precision' => '8'),
'deleteable' => array('type' => 'char','precision' => '1','default' => 'Y'),
'comment' => array('type' => 'varchar','precision' => '255'),
'app' => array('type' => 'varchar','precision' => '25'),
'directory' => array('type' => 'varchar','precision' => '255'),
- 'name' => array('type' => 'varchar','precision' => '128','nullable' => False),
+ 'name' => array('type' => 'varchar','precision' => '64','nullable' => False),
'link_directory' => array('type' => 'varchar','precision' => '255'),
'link_name' => array('type' => 'varchar','precision' => '128'),
'version' => array('type' => 'varchar','precision' => '30','nullable' => False,'default' => '0.0.0.0'),
@@ -424,7 +424,7 @@
'proper_id' => array('type' => 'varchar','precision' => '45')
),
'pk' => array('file_id'),
- 'fk' => array('mime_id' => array('phpgw_vfs2_mimetypes' => 'mime_id')),
+ 'fk' => array(),
'ix' => array(array('directory','name')),
'uc' => array()
),
@@ -508,15 +508,15 @@
),
'egw_contentmap' => array(
'fd' => array(
- 'map_id' => array('type' => 'varchar','precision' => '255','nullable' => False),
- 'map_guid' => array('type' => 'varchar','precision' => '200','nullable' => False),
- 'map_locuid' => array('type' => 'varchar','precision' => '200','nullable' => False),
+ 'map_id' => array('type' => 'varchar','precision' => '128','nullable' => False),
+ 'map_guid' => array('type' => 'varchar','precision' => '128','nullable' => False),
+ 'map_locuid' => array('type' => 'int','precision' => '8','nullable' => False),
'map_timestamp' => array('type' => 'timestamp','nullable' => False),
'map_expired' => array('type' => 'bool','nullable' => False)
),
- 'pk' => array(array('map_id','map_guid','map_locuid')),
+ 'pk' => array('map_id','map_guid','map_locuid'),
'fk' => array(),
- 'ix' => array(array('map_id','map_locuid'),'map_expired'),
+ 'ix' => array('map_expired',array('map_id','map_locuid')),
'uc' => array()
),
'egw_syncmldevinfo' => array(
@@ -565,5 +565,5 @@
'fk' => array(),
'ix' => array(array('link_app1','link_id1','link_lastmod'),array('link_app2','link_id2','link_lastmod')),
'uc' => array()
- ),
+ )
);
diff --git a/phpgwapi/setup/tables_update.inc.php b/phpgwapi/setup/tables_update.inc.php
index 1d3d82d7d6..9d2d167280 100644
--- a/phpgwapi/setup/tables_update.inc.php
+++ b/phpgwapi/setup/tables_update.inc.php
@@ -605,3 +605,171 @@
$GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.0.1.014';
return $GLOBALS['setup_info']['phpgwapi']['currentver'];
}
+
+ $test[] = '1.0.1.014';
+ function phpgwapi_upgrade1_0_1_014()
+ {
+ // index was to big for mysql with charset utf8 (max 1000byte = 333 utf8 chars)
+ $GLOBALS['egw_setup']->oProc->AlterColumn('phpgw_lang','app_name',array(
+ 'type' => 'varchar',
+ 'precision' => '32',
+ 'nullable' => False,
+ 'default' => 'common'
+ ));
+ $GLOBALS['egw_setup']->oProc->AlterColumn('phpgw_lang','message_id',array(
+ 'type' => 'varchar',
+ 'precision' => '128',
+ 'nullable' => False,
+ 'default' => ''
+ ));
+ $GLOBALS['egw_setup']->oProc->RenameTable('phpgw_lang','egw_lang');
+ $GLOBALS['egw_setup']->lang_table = 'egw_lang';
+ $GLOBALS['egw_setup']->oProc->RenameTable('phpgw_languages','egw_languages');
+ $GLOBALS['egw_setup']->languages_table = 'egw_languages';
+
+ $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.0.1.015';
+ return $GLOBALS['setup_info']['phpgwapi']['currentver'];
+ }
+
+
+ $test[] = '1.0.1.015';
+ function phpgwapi_upgrade1_0_1_015()
+ {
+ // index was to big for mysql with charset utf8 (max 1000byte = 333 utf8 chars)
+ /* done by RefreshTable() anyway
+ $GLOBALS['egw_setup']->oProc->AlterColumn('egw_contentmap','map_id',array(
+ 'type' => 'varchar',
+ 'precision' => '128',
+ 'nullable' => False
+ ));*/
+ /* done by RefreshTable() anyway
+ $GLOBALS['egw_setup']->oProc->AlterColumn('egw_contentmap','map_guid',array(
+ 'type' => 'varchar',
+ 'precision' => '128',
+ 'nullable' => False
+ ));*/
+ /* done by RefreshTable() anyway
+ $GLOBALS['egw_setup']->oProc->AlterColumn('egw_contentmap','map_locuid',array(
+ 'type' => 'int',
+ 'precision' => '8',
+ 'nullable' => False
+ ));*/
+ $GLOBALS['egw_setup']->oProc->RefreshTable('egw_contentmap',array(
+ 'fd' => array(
+ 'map_id' => array('type' => 'varchar','precision' => '128','nullable' => False),
+ 'map_guid' => array('type' => 'varchar','precision' => '128','nullable' => False),
+ 'map_locuid' => array('type' => 'int','precision' => '8','nullable' => False),
+ 'map_timestamp' => array('type' => 'timestamp','nullable' => False),
+ 'map_expired' => array('type' => 'bool','nullable' => False)
+ ),
+ 'pk' => array('map_id','map_guid','map_locuid'),
+ 'fk' => array(),
+ 'ix' => array('map_expired',array('map_id','map_locuid')),
+ 'uc' => array()
+ ));
+
+ $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.0.1.016';
+ return $GLOBALS['setup_info']['phpgwapi']['currentver'];
+ }
+
+
+ $test[] = '1.0.1.016';
+ function phpgwapi_upgrade1_0_1_016()
+ {
+ // index was to big for mysql with charset utf8 (max 1000byte = 333 utf8 chars)
+ $GLOBALS['egw_setup']->oProc->AlterColumn('phpgw_vfs2_files','name',array(
+ 'type' => 'varchar',
+ 'precision' => '64',
+ 'nullable' => False
+ ));
+
+ $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.0.1.017';
+ return $GLOBALS['setup_info']['phpgwapi']['currentver'];
+ }
+
+
+ $test[] = '1.0.1.017';
+ function phpgwapi_upgrade1_0_1_017()
+ {
+ // index was to big for mysql with charset utf8 (max 1000byte = 333 utf8 chars)
+ /* done by RefreshTable() anyway
+ $GLOBALS['egw_setup']->oProc->AlterColumn('egw_vfs','vfs_name',array(
+ 'type' => 'varchar',
+ 'precision' => '64',
+ 'nullable' => False
+ ));*/
+ $GLOBALS['egw_setup']->oProc->RefreshTable('egw_vfs',array(
+ 'fd' => array(
+ 'vfs_file_id' => array('type' => 'auto','nullable' => False),
+ 'vfs_owner_id' => array('type' => 'int','precision' => '4','nullable' => False),
+ 'vfs_createdby_id' => array('type' => 'int','precision' => '4'),
+ 'vfs_modifiedby_id' => array('type' => 'int','precision' => '4'),
+ 'vfs_created' => array('type' => 'date','nullable' => False,'default' => '1970-01-01'),
+ 'vfs_modified' => array('type' => 'date'),
+ 'vfs_size' => array('type' => 'int','precision' => '4'),
+ 'vfs_mime_type' => array('type' => 'varchar','precision' => '64'),
+ 'vfs_deleteable' => array('type' => 'char','precision' => '1','default' => 'Y'),
+ 'vfs_comment' => array('type' => 'varchar','precision' => '255'),
+ 'vfs_app' => array('type' => 'varchar','precision' => '25'),
+ 'vfs_directory' => array('type' => 'varchar','precision' => '255'),
+ 'vfs_name' => array('type' => 'varchar','precision' => '64','nullable' => False),
+ 'vfs_link_directory' => array('type' => 'varchar','precision' => '255'),
+ 'vfs_link_name' => array('type' => 'varchar','precision' => '128'),
+ 'vfs_version' => array('type' => 'varchar','precision' => '30','nullable' => False,'default' => '0.0.0.0'),
+ 'vfs_content' => array('type' => 'text')
+ ),
+ 'pk' => array('vfs_file_id'),
+ 'fk' => array(),
+ 'ix' => array(array('vfs_directory','vfs_name')),
+ 'uc' => array()
+ ));
+
+ $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.0.1.018';
+ return $GLOBALS['setup_info']['phpgwapi']['currentver'];
+ }
+
+
+ $test[] = '1.0.1.018';
+ function phpgwapi_upgrade1_0_1_018()
+ {
+ // This update fixes charset in mysql4+ tables, if the default client charset does not match the eGW system-charset.
+ // It is necessary as update, as we now set the system_charset as client charset, which causes the existing input to be returned wrong.
+
+
+ // We have to shorten the felamimail columns first, as this update would fail, because it's run before the felamimail update
+ // (shortening them twice, does no harm) !!!
+ if ($GLOBALS['egw_setup']->table_exist(array('phpgw_felamimail_cache')))
+ {
+ $GLOBALS['egw_setup']->oProc->AlterColumn('phpgw_felamimail_cache','fmail_accountname',array(
+ 'type' => 'varchar',
+ 'precision' => '128',
+ 'nullable' => False
+ ));
+ $GLOBALS['egw_setup']->oProc->AlterColumn('phpgw_felamimail_cache','fmail_foldername',array(
+ 'type' => 'varchar',
+ 'precision' => '128',
+ 'nullable' => False
+ ));
+ $GLOBALS['egw_setup']->oProc->AlterColumn('phpgw_felamimail_folderstatus','fmail_accountname',array(
+ 'type' => 'varchar',
+ 'precision' => '128',
+ 'nullable' => False
+ ));
+ $GLOBALS['egw_setup']->oProc->AlterColumn('phpgw_felamimail_folderstatus','fmail_foldername',array(
+ 'type' => 'varchar',
+ 'precision' => '128',
+ 'nullable' => False
+ ));
+ }
+ if (substr($GLOBALS['egw_setup']->db->Type,0,5) == 'mysql' && $GLOBALS['egw_setup']->system_charset && $GLOBALS['egw_setup']->db_charset_was &&
+ $GLOBALS['egw_setup']->system_charset != $GLOBALS['egw_setup']->db_charset_was)
+ {
+ include(EGW_SERVER_ROOT.'/setup/fix_mysql_charset.php');
+
+ // now the DB is fixed we can set the charset
+ $GLOBALS['egw_setup']->db->Link_ID->SetCharSet($GLOBALS['egw_setup']->system_charset);
+ }
+ $GLOBALS['setup_info']['phpgwapi']['currentver'] = '1.0.1.019';
+ return $GLOBALS['setup_info']['phpgwapi']['currentver'];
+ }
+?>
diff --git a/setup/fix_mysql_charset.php b/setup/fix_mysql_charset.php
new file mode 100644
index 0000000000..0a90295566
--- /dev/null
+++ b/setup/fix_mysql_charset.php
@@ -0,0 +1,177 @@
+ array(
+ 'noheader' => True,
+ 'nonavbar' => True,
+ 'currentapp' => 'home',
+ 'noapi' => True
+ ));
+ include('./inc/functions.inc.php');
+ // Authorize the user to use setup app and load the database
+ // Does not return unless user is authorized
+ if (!$GLOBALS['egw_setup']->auth('Config') || @$_POST['cancel'])
+ {
+ Header('Location: index.php');
+ exit;
+ }
+ $GLOBALS['egw_setup']->loaddb();
+
+ $tpl_root = $GLOBALS['egw_setup']->html->setup_tpl_dir('setup');
+ $setup_tpl = CreateObject('phpgwapi.Template',$tpl_root);
+ $setup_tpl->set_file(array(
+ 'T_head' => 'head.tpl',
+ 'T_footer' => 'footer.tpl',
+ ));
+ $GLOBALS['egw_setup']->html->show_header('',False,'config',$GLOBALS['egw_setup']->ConfigDomain . '(' . $GLOBALS['egw_domain'][$GLOBALS['egw_setup']->ConfigDomain]['db_type'] . ')');
+ echo ''.'Fix mysql DB to match the eGroupWare system_charset'."
\n";
+ $running_standalone = true;
+
+ echo "
continuing ...
\n"; + continue; + } + foreach($fulltext_back as $idx_name => $idx_cols) + { + $alter_table_back[] = " ADD FULLTEXT `$idx_name` (`".implode('`,`',$idx_cols)."`)"; + } + if (count($alter_table_back)) + { + $alter_table_back = "ALTER TABLE $table\n".implode(",\n",$alter_table_back); + + /*if ($running_standalone)*/ echo ''.nl2br($alter_table_back)."
\n"; + if (!$db->query($alter_table_back,__LINE__,__FILE__)) + { + echo "SQL Error: ".nl2br($alter_table_back)."
\n"; + echo "{$this->db->Type} Error: {$this->db->Errno} ({$this->db->Error})\n"; + echo "continuing ...
\n"; + continue; + } + } + ++$tables_modified; + } + } +} +if ($running_standalone) +{ + echo "$tables_modified tables changed to our system_charset {$GLOBALS['egw_setup']->system_charset}($mysql_system_charset)
\n"; + + $GLOBALS['egw_setup']->html->show_footer(); +} diff --git a/setup/inc/class.setup.inc.php b/setup/inc/class.setup.inc.php index 1b98c2a131..f87631c390 100644 --- a/setup/inc/class.setup.inc.php +++ b/setup/inc/class.setup.inc.php @@ -32,8 +32,8 @@ var $acl_table = 'egw_acl'; var $accounts_table = 'egw_accounts'; var $prefs_table = 'phpgw_preferences'; - var $lang_table = 'phpgw_lang'; - var $languages_table = 'phpgw_languages'; + var $lang_table = 'egw_lang'; + var $languages_table = 'egw_languages'; var $hooks_table = 'phpgw_hooks'; var $cats_table = 'phpgw_categories'; var $oProc; @@ -97,7 +97,21 @@ ),__LINE__,__FILE__); if ($this->db->next_record() && $this->db->f(0)) { - $this->db->Link_ID->SetCharSet($this->db->f(0)); + $this->system_charset = $this->db->f(0); + $this->db_charset_was = $this->db->Link_ID->GetCharSet(); // needed for the update + + // we can NOT set the DB charset for mysql, if the api version < 1.0.1.019, as it would mess up the DB content!!! + if (substr($this->db->Type,0,5) == 'mysql') // we need to check the api version + { + $this->db->select($this->applications_table,'app_version',array( + 'app_name' => 'phpgwapi', + ),__LINE__,__FILE__); + $api_version = $this->db->next_record() ? $this->db->f(0) : false; + } + if (!$api_version || !$this->alessthanb($api_version,'1.0.1.019')) + { + $this->db->Link_ID->SetCharSet($this->system_charset); + } } $this->db->Halt_On_Error = 'yes'; // setting the default again } @@ -395,9 +409,13 @@ /** * Clear system/user level cache so as to have it rebuilt with the next access + * + * AFAIK this code is not used anymore -- RalfBecker 2005/11/04 */ function clear_session_cache() { + return; // AFAIK this code is not used anymore -- RalfBecker 2005/11/04 + $tables = Array(); $tablenames = $this->db->table_names(); foreach($tablenames as $key => $val) @@ -485,11 +503,6 @@ return False; } - if($this->alessthanb($setup_info['phpgwapi']['currentver'],'0.9.10pre8') && ($setup_info['phpgwapi']['currentver'] != '')) - { - $this->applications_table = 'applications'; - } - if(@$GLOBALS['DEBUG']) { echo 'setup::set_table_names: $name = '{$this->$name}'
\n"; } } diff --git a/setup/inc/class.setup_detection.inc.php b/setup/inc/class.setup_detection.inc.php index d4d16ab900..2adab1842b 100755 --- a/setup/inc/class.setup_detection.inc.php +++ b/setup/inc/class.setup_detection.inc.php @@ -45,7 +45,7 @@ $GLOBALS['egw_setup']->set_table_names(); - if($GLOBALS['egw_setup']->applications_table) + if($GLOBALS['egw_setup']->table_exist(array($GLOBALS['egw_setup']->applications_table))) { /* one of these tables exists. checking for post/pre beta version */ if($GLOBALS['egw_setup']->applications_table != 'applications') diff --git a/setup/inc/class.setup_process.inc.php b/setup/inc/class.setup_process.inc.php index edbe0771d4..229ba7d25e 100755 --- a/setup/inc/class.setup_process.inc.php +++ b/setup/inc/class.setup_process.inc.php @@ -51,12 +51,13 @@ /** * the mother of all multipass upgrade parental loop functions * - * @param $setup_info array of application info from setup.inc.php files - * @param $type optional, defaults to new(install), could also be 'upgrade' - * @param $DEBUG optional, print debugging info - * @param $force_en optional, install english language files + * @param array $setup_info array of application info from setup.inc.php files + * @param string $type='new' defaults to new(install), could also be 'upgrade' + * @param boolean $DEBUG=false print debugging info + * @param boolean $force_en=false install english language files + * @param string $system_charset=null charset to use */ - function pass($setup_info,$method='new',$DEBUG=False,$force_en=False,$system_charset=false) + function pass($setup_info,$method='new',$DEBUG=False,$force_en=False,$system_charset=null) { if(!$method) { @@ -294,8 +295,8 @@ /** * process current table setup in each application/setup dir * - * @param $appinfo array of application info from setup.inc.php files, etc. - * This duplicates the old newtables behavior, using schema_proc + * @param array $setup_info array of application info from setup.inc.php files, etc. + * @param boolean $DEBUG=false */ function current($setup_info,$DEBUG=False) { @@ -626,23 +627,7 @@ return False; } - $ret = $GLOBALS['egw_setup']->oProc->GenerateScripts($tables,$DEBUG); - if($ret) - { - $oret = $GLOBALS['egw_setup']->oProc->ExecuteScripts($tables,$DEBUG); - if($oret) - { - return True; - } - else - { - return False; - } - } - else - { - return False; - } + return $GLOBALS['egw_setup']->oProc->ExecuteScripts($tables,$DEBUG); } /** diff --git a/setup/inc/class.setup_translation.inc.php b/setup/inc/class.setup_translation.inc.php index f68ba7b952..d73edf2628 100644 --- a/setup/inc/class.setup_translation.inc.php +++ b/setup/inc/class.setup_translation.inc.php @@ -25,7 +25,7 @@ if (!defined('MAX_MESSAGE_ID_LENGTH')) { - define('MAX_MESSAGE_ID_LENGTH',230); + define('MAX_MESSAGE_ID_LENGTH',128); } class setup_translation diff --git a/setup/index.php b/setup/index.php index 81f1391db6..b1ef113a08 100644 --- a/setup/index.php +++ b/setup/index.php @@ -324,6 +324,7 @@ // Set the DB's client charset if a system-charset is set if ($_REQUEST['system_charset']) { + $GLOBALS['egw_setup']->system_charset = $_REQUEST['system_charset']; $GLOBALS['egw_setup']->db->Link_ID->SetCharSet($_REQUEST['system_charset']); } $setup_info = $GLOBALS['egw_setup']->process->pass($setup_info,'new',$_REQUEST['debug'],True,$_REQUEST['system_charset']); @@ -334,7 +335,7 @@ // create a backup, before upgrading the tables if ($_POST['backup']) { - $db_backup = CreateObject('phpgwapi.db_backup'); + $db_backup =& CreateObject('phpgwapi.db_backup'); if (is_resource($f = $db_backup->fopen_backup())) { echo ''.lang('backup started, this might take a view minutes ...')."
\n".str_repeat(' ',4096); @@ -384,7 +385,7 @@ function check_dir($dir,&$msg,$check_in_docroot=false) { - if (!@is_dir($dir)) + if (!@is_dir($dir) && !(@is_writeable(dirname($dir)) && @mkdir($dir,0700,true))) { $msg = lang('does not exist'); return false; @@ -445,6 +446,11 @@ function check_dir($dir,&$msg,$check_in_docroot=false) { $config[$GLOBALS['egw_setup']->db->f(0)] = $GLOBALS['egw_setup']->db->f(1); } + $config_msg = ''; + if (!check_dir($config['temp_dir'],$error_msg)) + { + $config_msg = lang("Your temporary directory '%1' %2",$config['temp_dir'],$error_msg); + } // set and create the default backup_dir if (@is_writeable($config['files_dir']) && !isset($config['backup_dir']) && $config['file_store_contents'] == 'filesystem') { @@ -459,11 +465,6 @@ function check_dir($dir,&$msg,$check_in_docroot=false) ),__LINE__,__FILE__); } } - $config_msg = ''; - if (!check_dir($config['temp_dir'],$error_msg)) - { - $config_msg = lang("Your temporary directory '%1' %2",$config['temp_dir'],$error_msg); - } if (!check_dir($config['files_dir'],$error_msg,true)) { $config_msg .= ($config_msg?"