diff --git a/setup/applications.php b/setup/applications.php
index 9baa28dc5d..bd216e9673 100644
--- a/setup/applications.php
+++ b/setup/applications.php
@@ -12,10 +12,12 @@
/* $Id$ */
$DEBUG = False;
- // TODO: We allow a user to hose their setup here, need to make use
- // of dependencies so they are warned that they are pulling the rug
- // out from under other apps. e.g. if they select to uninstall the api
- // this will happen without further warning.
+ /*
+ TODO: We allow a user to hose their setup here, need to make use
+ of dependencies so they are warned that they are pulling the rug
+ out from under other apps. e.g. if they select to uninstall the api
+ this will happen without further warning.
+ */
$phpgw_info = array();
$GLOBALS['phpgw_info']['flags'] = array(
@@ -142,12 +144,8 @@
echo '
' . $setup_info[$appname]['title'] . ' ' . lang('hooks deregistered') . '.';
}
- $dropped = False;
- $dropped = $phpgw_setup->drop_langs($appname);
- if($dropped)
- {
- echo '
' . $setup_info[$appname]['title'] . ' ' . lang('Translations removed') . '.';
- }
+ $terror = $phpgw_setup->process_drop_langs($terror);
+ echo '
' . $setup_info[$appname]['title'] . ' ' . lang('Translations removed') . '.';
}
while (list($appname,$key) = @each($install))
@@ -180,7 +178,7 @@
echo '
' . $setup_info[$appname]['title'] . ' ' . lang('hooks registered') . '.';
}
}
- $phpgw_setup->add_langs($appname);
+ $terror = $phpgw_setup->process_add_langs($terror);
echo '
' . $setup_info[$appname]['title'] . ' ' . lang('Translations added') . '.';
}
@@ -199,6 +197,9 @@
{
echo '
' . $setup_info[$appname]['title'] . ' ' . lang('upgraded') . '.';
}
+
+ $terror = $phpgw_setup->process_upgrade_langs($terror);
+ echo '
' . $setup_info[$appname]['title'] . ' ' . lang('Translations upgraded') . '.';
}
//$setup_tpl->set_var('goback',
diff --git a/setup/inc/class.setup_lang.inc.php b/setup/inc/class.setup_lang.inc.php
index f5794c5744..75e867ad65 100644
--- a/setup/inc/class.setup_lang.inc.php
+++ b/setup/inc/class.setup_lang.inc.php
@@ -107,7 +107,7 @@
return $ret;
}
- /* Following functions are called for app (un)install in applications.php only */
+ /* Following functions are called for app (un)install */
/*!
@function get_langs
@@ -148,9 +148,13 @@
@abstract process an application's lang files, calling get_langs() to see what langs the admin installed already
@param $appname app_name of application to process
*/
- function add_langs($appname)
+ function add_langs($appname,$force_en=False)
{
$langs = $this->get_langs();
+ if($force_en && !isinarray('en',$langs))
+ {
+ $langs[] = 'en';
+ }
$GLOBALS['phpgw_setup']->db->transaction_begin();
@@ -165,7 +169,7 @@
while (list($null,$line) = @each($raw_file))
{
- list($message_id,$app_name,$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));
/* echo '
APPNAME:' . $app_name . ' PHRASE:' . $message_id; */
$app_name = $GLOBALS['phpgw_setup']->db->db_addslashes(chop($app_name));
diff --git a/setup/inc/class.setup_process.inc.php b/setup/inc/class.setup_process.inc.php
index 55af6ef87c..07ff90f58d 100755
--- a/setup/inc/class.setup_process.inc.php
+++ b/setup/inc/class.setup_process.inc.php
@@ -54,8 +54,10 @@
@abstract 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
*/
- function process_pass($setup_info,$method='new',$DEBUG=False)
+ function process_pass($setup_info,$method='new',$DEBUG=False,$force_en=False)
{
if (!$method)
{
@@ -76,15 +78,15 @@
{
$passing = array();
if ($DEBUG) { echo '
process_pass(): #' . $i . ' for ' . $method . ' processing' . "\n"; }
- // Check current versions and dependencies
+ /* Check current versions and dependencies */
$setup_info = $this->get_db_versions($setup_info);
$setup_info = $this->compare_versions($setup_info);
- //var_dump($setup_info);exit;
+ // var_dump($setup_info);exit;
$setup_info = $this->check_depends($setup_info);
//if($i==2) { var_dump($passed);exit; }
- // stuff the rest of the apps, but only those with available upgrades
- while(list($key,$value) = each($setup_info))
+ /* stuff the rest of the apps, but only those with available upgrades */
+ while(list($key,$value) = @each($setup_info))
{
if (($value['name'] != 'phpgwapi') && ($value['status'] == 'U'))
{
@@ -93,34 +95,38 @@
$pass[$value['name']] = $setup_info[$value['name']];
}
}
- // Now if we are on the 2nd or more passes, add api in
- //if (!$pass['phpgwapi'])
- //{
- // $pass['phpgwapi'] = $setup_info['phpgwapi'];
- //}
+ /*
+ Now if we are on the 2nd or more passes, add api in
+ if (!$pass['phpgwapi'])
+ {
+ $pass['phpgwapi'] = $setup_info['phpgwapi'];
+ }
+ */
}
switch ($method)
{
case 'new':
- // Create tables and insert new records for each app in this list
+ /* Create tables and insert new records for each app in this list */
$passing = $this->process_current($pass,$DEBUG);
$passing = $this->process_default_records($passing,$DEBUG);
+ $passing = $this->process_add_langs($passing,$DEBUG,$force_en);
break;
case 'upgrade':
- // Run upgrade scripts on each app in the list
+ /* Run upgrade scripts on each app in the list */
$passing = $this->process_upgrade($pass,$DEBUG);
+ $passing = $this->process_upgrade_langs($passing,$DEBUG);
//echo var_dump($pass);exit;
break;
default:
- // What the heck are you doing?
+ /* What the heck are you doing? */
return False;
break;
}
$pass = array();
- reset($passing);
- while(list($key,$value) = each($passing))
+ @reset($passing);
+ while(list($key,$value) = @each($passing))
{
if($value['status'] == 'C')
{
@@ -161,7 +167,7 @@
// now return the list
@reset($passed);
- while(list($key,$value) = each($passed))
+ while(list($key,$value) = @each($passed))
{
$setup_info[$value['name']] = $passed[$value['name']];
}
@@ -190,7 +196,7 @@
}
@reset($setup_info);
- while (list($key,$null) = each($setup_info))
+ while (list($key,$null) = @each($setup_info))
{
if ($setup_info[$key]['tables'])
{
@@ -227,7 +233,7 @@
$this->oProc->m_bDeltaOnly = False;
@reset($setup_info);
- while (list($key,$null) = each($setup_info))
+ while (list($key,$null) = @each($setup_info))
{
$enabled = False;
$appname = $setup_info[$key]['name'];
@@ -308,7 +314,7 @@
$oProc = $this->oProc;
@reset($setup_info);
- while (list($key,$null) = each($setup_info))
+ while (list($key,$null) = @each($setup_info))
{
$appname = $setup_info[$key]['name'];
$appdir = PHPGW_SERVER_ROOT . SEP . $appname . SEP . 'setup' . SEP;
@@ -330,6 +336,72 @@
return ($setup_info);
}
+ /*!
+ @function process_add_langs
+ @abstract process application lang files and uninstall
+ @param $setup_info array of application info from setup.inc.php files, etc.
+ */
+ function process_add_langs($setup_info,$DEBUG=False,$force_en=False)
+ {
+ @reset($setup_info);
+ while (list($key,$null) = @each($setup_info))
+ {
+ $appname = $setup_info[$key]['name'];
+ /* This is in the setup_lang class */
+ $this->add_langs($appname,$force_en);
+ if($DEBUG)
+ {
+ echo '
process_add_langs(): Translations added for ' . $appname . "\n";
+ }
+ }
+ // Done, return current status
+ return ($setup_info);
+ }
+
+ /*!
+ @function process_drop_langs
+ @abstract process application lang files and install
+ @param $setup_info array of application info from setup.inc.php files, etc.
+ */
+ function process_drop_langs($setup_info,$DEBUG=False)
+ {
+ @reset($setup_info);
+ while (list($key,$null) = @each($setup_info))
+ {
+ $appname = $setup_info[$key]['name'];
+ /* This is in the setup_lang class */
+ $this->drop_langs($appname);
+ if($DEBUG)
+ {
+ echo '
process_drop_langs(): Translations removed for ' . $appname . "\n";
+ }
+ }
+ // Done, return current status
+ return ($setup_info);
+ }
+
+ /*!
+ @function process_upgrade_langs
+ @abstract process application lang files and reinstall
+ @param $setup_info array of application info from setup.inc.php files, etc.
+ */
+ function process_upgrade_langs($setup_info,$DEBUG=False)
+ {
+ @reset($setup_info);
+ while (list($key,$null) = @each($setup_info))
+ {
+ $appname = $setup_info[$key]['name'];
+ /* These are in the setup_lang class */
+ $this->drop_langs($appname);
+ $this->add_langs($appname);
+ if($DEBUG)
+ {
+ echo '
process_upgrade_langs(): Translations reinstalled for ' . $appname . "\n";
+ }
+ }
+ // Done, return current status
+ return ($setup_info);
+ }
/*!
@function process_test_data
@abstract process test_data.inc.php in each application/setup dir for developer tests
@@ -346,7 +418,7 @@
$oProc = $this->oProc;
@reset($setup_info);
- while (list($key,$null) = each($setup_info))
+ while (list($key,$null) = @each($setup_info))
{
$appname = $setup_info[$key]['name'];
$appdir = PHPGW_SERVER_ROOT . SEP . $appname . SEP . 'setup' . SEP;
@@ -380,7 +452,7 @@
}
@reset($setup_info);
- while (list($key,$null) = each($setup_info))
+ while (list($key,$null) = @each($setup_info))
{
$appname = $setup_info[$key]['name'];
$appdir = PHPGW_SERVER_ROOT . SEP . $appname . SEP . 'setup' . SEP;
@@ -428,7 +500,7 @@
@reset($setup_info);
- while (list($key,$null) = each($setup_info))
+ while (list($key,$null) = @each($setup_info))
{
// if upgrade required, or if we are running again after an upgrade or dependency failure
if ($DEBUG) { echo '
process_upgrade(): Incoming : appname: '.$setup_info[$key]['name'] . ' status: ' . $setup_info[$key]['status']; }
diff --git a/setup/index.php b/setup/index.php
index cb45cfe004..8bba9651a4 100644
--- a/setup/index.php
+++ b/setup/index.php
@@ -10,10 +10,12 @@
\**************************************************************************/
/* $Id$ */
-
- // Idea: This is so I don't forget. When they are preforming a new install, after config,
- // forward them right to index.php. Create a session for them and have a nice little intro
- // page explaining what to do from there (ie, create there own account)
+
+ /*
+ Idea: This is so I don't forget. When they are preforming a new install, after config,
+ forward them right to index.php. Create a session for them and have a nice little intro
+ page explaining what to do from there (ie, create there own account)
+ */
$DEBUG = False;
$phpgw_info = array();
@@ -246,7 +248,8 @@
$setup_info = $phpgw_setup->process_droptables($setup_info);
break;
case 'new':
- $setup_info = $phpgw_setup->process_pass($setup_info,'new',$DEBUG);
+ /* process all apps and langs(last param True) */
+ $setup_info = $phpgw_setup->process_pass($setup_info,'new',$DEBUG,True);
$included = True;
include('lang.php');
$GLOBALS['phpgw_info']['setup']['currentver']['phpgwapi'] = 'oldversion';