patch from <tibolist-at-free.fr>:

code logic was wrong and it was using an API method that is
also buggy => in file /egw/phpwgapi/inc/class.common.inc.php the method
cmp_version_long().


1) the code logic:
it get versions for the current app and for the api from file
(app/setup/setup.inc.php) and from DB.
it loops over this 2 apps (app, and api), and set a $_current to true or
false. this variable value is defined by the last app check in the loop
(the API) => then if your API version is up to date, your application
version is also. which was wrong for me. Well in the attached file i
change the code logic.
This commit is contained in:
Ralf Becker 2005-04-27 07:56:44 +00:00
parent b97d8b5eeb
commit 483ad2cec4

View File

@ -1,29 +1,30 @@
<?php <?php
/**************************************************************************\ /**************************************************************************\
* eGroupWare - Admin * * eGroupWare - Admin *
* http://www.egroupware.org * * http://www.egroupware.org *
* This application written by Miles Lott <milos@groupwhere.org> * * This application written by Miles Lott <milos@groupwhere.org> *
* -------------------------------------------- * * 04/27/2005 Fixed by Olivier TITECA-BEAUPORT <oliviert@maphilo.com> *
* This program is free software; you can redistribute it and/or modify it * * -------------------------------------------- *
* under the terms of the GNU General Public License as published by the * * This program is free software; you can redistribute it and/or modify it *
* Free Software Foundation; either version 2 of the License, or (at your * * under the terms of the GNU General Public License as published by the *
* option) any later version. * * Free Software Foundation; either version 2 of the License, or (at your *
\**************************************************************************/ * option) any later version. *
\**************************************************************************/
/* $Id$ */ /* $Id$ */
/* Check currentapp and API upgrade status */ /* Check currentapp and API upgrade status */
if($GLOBALS['phpgw_info']['flags']['currentapp'] != 'home' && if($GLOBALS['phpgw_info']['flags']['currentapp'] != 'home' &&
$GLOBALS['phpgw_info']['flags']['currentapp'] != 'welcome' && $GLOBALS['phpgw_info']['flags']['currentapp'] != 'welcome' &&
(isset($GLOBALS['phpgw_info']['server']['checkappversions']) && (isset($GLOBALS['phpgw_info']['server']['checkappversions']) &&
$GLOBALS['phpgw_info']['server']['checkappversions'])) $GLOBALS['phpgw_info']['server']['checkappversions']))
{ {
if((isset($GLOBALS['phpgw_info']['user']['apps']['admin']) && if((isset($GLOBALS['phpgw_info']['user']['apps']['admin']) &&
$GLOBALS['phpgw_info']['user']['apps']['admin']) || $GLOBALS['phpgw_info']['user']['apps']['admin']) ||
$GLOBALS['phpgw_info']['server']['checkappversions'] == 'All') $GLOBALS['phpgw_info']['server']['checkappversions'] == 'All')
{ {
$_current = False; $_returnhtml = array();
$app_name = $GLOBALS['phpgw_info']['flags']['currentapp']; $app_name = $GLOBALS['phpgw_info']['flags']['currentapp'];
$GLOBALS['phpgw']->db->query("SELECT app_name,app_version FROM phpgw_applications WHERE app_name='$app_name' OR app_name='phpgwapi'",__LINE__,__FILE__); $GLOBALS['phpgw']->db->query("SELECT app_name,app_version FROM phpgw_applications WHERE app_name='$app_name' OR app_name='phpgwapi'",__LINE__,__FILE__);
while($GLOBALS['phpgw']->db->next_record()) while($GLOBALS['phpgw']->db->next_record())
@ -34,44 +35,56 @@
if(file_exists($_versionfile)) if(file_exists($_versionfile))
{ {
include($_versionfile); include($_versionfile);
/* echo '<br>' . $_versionfile . ','; */
$_file_version = $setup_info[$app_name]['version']; $_file_version = $setup_info[$app_name]['version'];
$_app_title = $setup_info[$app_name]['title'];
unset($setup_info); unset($setup_info);
if($app_name == 'phpgwapi') if(amorethanb($_file_version, $_db_version))
{ {
$api_str = '<br>' . lang('The API requires an upgrade'); if($app_name == 'phpgwapi' )
{
$_returnhtml[$app_name] = lang('The API requires an upgrade');
} }
/* echo $app_name . ',' . $_db_version . ',' . $_file_version; */ else
if(!$GLOBALS['phpgw']->common->cmp_version_long($_db_version,$_file_version))
{ {
$_current = True; $_returnhtml[$app_name] = lang('This application requires an upgrade') . ": \n <br/>" . lang('Please run setup to become current') . '.' . "\n";
if($app_name == 'phpgwapi') }
}
else
{ {
$api_str = '<br>' . lang('The API is current'); if($app_name == 'phpgwapi' )
{
$_returnhtml[$app_name] = lang('The API is current');
}
else
{
$_returnhtml[$app_name] = lang('This application is current') . "\n";
} }
} }
unset($_file_version); unset($_file_version);
unset($_app_title); }
else
{
// if setup.inc.php do not exist for the app, we assume that the app is current
if($app_name == 'phpgwapi' )
{
$_returnhtml[$app_name] = lang('The API is current');
}
else
{
$_returnhtml[$app_name] = lang('This application is current') . "\n";
}
} }
unset($_db_version); unset($_db_version);
unset($_versionfile); unset($_versionfile);
} }
if(!$_current)
{
echo '<center>'; echo '<center>';
echo $api_str; foreach ($_returnhtml as $_html)
echo '<br>' . lang('This application requires an upgrade') . ':' . "\n";
echo '<br>' . lang('Please run setup to become current') . '.' . "\n";
echo '</center>';
}
else
{ {
echo '<center>'; echo '<br/>'.$_html;
echo $api_str;
echo '<br>' . lang('This application is current') . "\n";
echo '</center>';
}
} }
echo '<center/>';
unset($_returnhtml);
unset($_html);
} }
}