2000-09-06 23:54:20 +02:00
< ? php
2010-06-02 11:20:55 +02:00
/**
* EGroupware index page
*
* Starts all applications using $_GET [ menuaction ]
*
* @ link http :// www . egroupware . org
* @ license http :// opensource . org / licenses / gpl - license . php GPL - GNU General Public License
* @ package api
* @ version $Id $
*/
2001-07-09 19:33:19 +02:00
2009-04-28 18:06:18 +02:00
// forward for not existing or empty header to setup
if ( ! file_exists ( 'header.inc.php' ) || ! filesize ( 'header.inc.php' ))
{
Header ( 'Location: setup/index.php' );
exit ;
}
2003-05-18 17:18:02 +02:00
2009-04-28 18:06:18 +02:00
if ( isset ( $_GET [ 'hasupdates' ]) && $_GET [ 'hasupdates' ] == 'yes' )
{
$hasupdates = True ;
}
2001-07-11 07:12:27 +02:00
2009-04-28 18:06:18 +02:00
/*
This is the menuaction driver for the multi - layered design
*/
if ( isset ( $_GET [ 'menuaction' ]) && preg_match ( '/^[A-Za-z0-9_]+\.[A-Za-z0-9_]+\.[A-Za-z0-9_]+$/' , $_GET [ 'menuaction' ]))
{
list ( $app , $class , $method ) = explode ( '.' , $_GET [ 'menuaction' ]);
if ( ! $app || ! $class || ! $method )
2001-04-08 08:54:42 +02:00
{
2001-07-09 19:33:19 +02:00
$invalid_data = True ;
2001-04-08 08:54:42 +02:00
}
2009-04-28 18:06:18 +02:00
}
else
{
$app = 'home' ;
$invalid_data = True ;
}
2010-09-22 12:16:32 +02:00
//error_log(__METHOD__."$app,$class,$method");
2009-04-28 18:06:18 +02:00
if ( $app == 'phpgwapi' )
{
$app = 'home' ;
$api_requested = True ;
}
2001-11-01 05:09:13 +01:00
2009-04-28 18:06:18 +02:00
$GLOBALS [ 'egw_info' ] = array (
'flags' => array (
'noheader' => True ,
'nonavbar' => True ,
'currentapp' => $app
)
);
include ( './header.inc.php' );
2010-09-22 12:16:32 +02:00
// check if users are supposed to change their password every x sdays, then check if password is of old age or the devil-admin reset the users password
// and forced the user to change his password on next login.
auth :: check_password_age ( $app , $class , $method );
/* if ((( $GLOBALS [ 'egw_info' ][ 'server' ][ 'change_pwd_every_x_days' ] &&
egw_time :: to ( 'now' , 'ts' ) - ( $GLOBALS [ 'egw_info' ][ 'server' ][ 'change_pwd_every_x_days' ] * 86400 ) > $GLOBALS [ 'egw_info' ][ 'user' ][ 'account_lastpwd_change' ]
) || $GLOBALS [ 'egw_info' ][ 'user' ][ 'account_lastpwd_change' ] == 666 ) &&
( $GLOBALS [ 'egw_info' ][ 'user' ][ 'apps' ][ 'preferences' ] || $GLOBALS [ 'egw_info' ][ 'user' ][ 'apps' ][ 'password' ]) &&
! ( $app == 'preferences' && $class == 'uipassword' && $method == 'change' ))
{
error_log ( __METHOD__ . ' Password of ' . $GLOBALS [ 'egw_info' ][ 'user' ][ 'account_lid' ] . ' (' . $GLOBALS [ 'egw_info' ][ 'user' ][ 'account_fullname' ] . ') is of old age.' . array2string ( array (
'ts' => $GLOBALS [ 'egw_info' ][ 'user' ][ 'account_lastpwd_change' ],
'date' => egw_time :: to ( $GLOBALS [ 'egw_info' ][ 'user' ][ 'account_lastpwd_change' ]))));
if ( $GLOBALS [ 'egw_info' ][ 'user' ][ 'account_lastpwd_change' ] == 666 )
{
$message = lang ( 'an admin required that you must change your password upon login.' );
}
else
{
$message = lang ( 'it has been more then %1 days since you changed your password' , $GLOBALS [ 'egw_info' ][ 'server' ][ 'change_pwd_every_x_days' ]);
}
if ( $GLOBALS [ 'egw_info' ][ 'user' ][ 'apps' ][ 'password' ]) egw :: redirect_link ( '/preferences/password.php' , array ( 'message' => $message ));
egw :: redirect_link ( '/index.php' , array ( 'menuaction' => 'preferences.uipassword.change' , 'message' => $message ));
}
*/
2009-10-16 11:55:12 +02:00
// user changed timezone
if ( isset ( $_GET [ 'tz' ]))
{
egw_time :: setUserPrefs ( $_GET [ 'tz' ]); // throws exception, if tz is invalid
$GLOBALS [ 'egw' ] -> preferences -> add ( 'common' , 'tz' , $_GET [ 'tz' ]);
$GLOBALS [ 'egw' ] -> preferences -> save_repository ();
if (( $referer = common :: get_referer ()))
{
egw :: redirect_link ( $referer );
}
}
2009-04-28 18:06:18 +02:00
// Check if we are using windows or normal webpage
$windowed = false ;
$tpl_info = EGW_SERVER_ROOT . '/phpgwapi/templates/' . basename ( $GLOBALS [ 'egw_info' ][ 'user' ][ 'preferences' ][ 'common' ][ 'template_set' ]) . '/setup/setup.inc.php' ;
2010-06-02 11:20:55 +02:00
if ( ! file_exists ( $tpl_info ))
{
$tpl_info = EGW_SERVER_ROOT . '/' . basename ( $GLOBALS [ 'egw_info' ][ 'user' ][ 'preferences' ][ 'common' ][ 'template_set' ]) . '/setup/setup.inc.php' ;
}
2009-04-28 18:06:18 +02:00
if ( @ file_exists ( $tpl_info ))
{
2010-06-02 11:20:55 +02:00
include_once ( $tpl_info );
if ( $GLOBALS [ 'egw_info' ][ 'template' ][ $GLOBALS [ 'egw_info' ][ 'user' ][ 'preferences' ][ 'common' ][ 'template_set' ]][ 'windowed' ])
{
$windowed = true ;
}
2009-04-28 18:06:18 +02:00
}
2005-06-29 23:05:30 +02:00
2010-06-07 08:46:38 +02:00
if ( $app == 'home' && ! $api_requested && ! ( $windowed && $_GET [ 'cd' ] == 'yes' ))
2009-04-28 18:06:18 +02:00
{
if ( $GLOBALS [ 'egw_info' ][ 'server' ][ 'force_default_app' ] && $GLOBALS [ 'egw_info' ][ 'server' ][ 'force_default_app' ] != 'user_choice' )
2001-11-01 05:09:13 +01:00
{
2009-04-28 18:06:18 +02:00
$GLOBALS [ 'egw_info' ][ 'user' ][ 'preferences' ][ 'common' ][ 'default_app' ] = $GLOBALS [ 'egw_info' ][ 'server' ][ 'force_default_app' ];
}
if ( $GLOBALS [ 'egw_info' ][ 'user' ][ 'preferences' ][ 'common' ][ 'default_app' ] && ! $hasupdates )
{
2010-06-02 11:20:55 +02:00
egw :: redirect ( egw_framework :: index ( $GLOBALS [ 'egw_info' ][ 'user' ][ 'preferences' ][ 'common' ][ 'default_app' ]));
2009-04-28 18:06:18 +02:00
}
else
{
2010-06-02 11:20:55 +02:00
egw :: redirect_link ( '/home/index.php' );
2009-04-28 18:06:18 +02:00
}
2010-06-02 11:20:55 +02:00
}
2009-04-28 18:06:18 +02:00
if ( $windowed && $_GET [ 'cd' ] == 'yes' )
{
$GLOBALS [ 'egw_info' ][ 'flags' ] = array (
'noheader' => False ,
'nonavbar' => False ,
'currentapp' => 'eGroupWare'
);
2010-06-02 11:20:55 +02:00
common :: egw_header ();
common :: egw_footer ();
2009-04-28 18:06:18 +02:00
}
else
{
if ( $api_requested )
2001-07-04 05:00:05 +02:00
{
2009-04-28 18:06:18 +02:00
$app = 'phpgwapi' ;
}
2005-06-15 13:16:27 +02:00
2009-04-28 18:06:18 +02:00
$obj = CreateObject ( $app . '.' . $class );
if (( is_array ( $obj -> public_functions ) && $obj -> public_functions [ $method ]) && ! $invalid_data )
{
$obj -> $method ();
unset ( $app );
unset ( $class );
unset ( $method );
unset ( $invalid_data );
unset ( $api_requested );
2001-07-04 05:00:05 +02:00
}
2005-07-08 07:00:14 +02:00
else
{
2009-04-28 18:06:18 +02:00
if ( ! $app || ! $class || ! $method || $invalid_data )
2005-06-15 13:16:27 +02:00
{
2009-04-28 18:06:18 +02:00
if ( @ is_object ( $GLOBALS [ 'egw' ] -> log ))
2005-06-15 13:16:27 +02:00
{
2009-04-28 18:06:18 +02:00
$GLOBALS [ 'egw' ] -> log -> message ( array (
'text' => 'W-BadmenuactionVariable, menuaction missing or corrupt: %1' ,
'p1' => $menuaction ,
'line' => __LINE__ ,
'file' => __FILE__
));
2005-06-15 13:16:27 +02:00
}
2009-04-28 18:06:18 +02:00
}
2005-07-08 07:00:14 +02:00
2009-04-28 18:06:18 +02:00
if ( ! is_array ( $GLOBALS [ $class ] -> public_functions ) || ! $GLOBALS [ $class ] -> public_functions [ $method ] && $method )
{
2005-07-08 07:00:14 +02:00
if ( @ is_object ( $GLOBALS [ 'egw' ] -> log ))
2003-11-14 03:37:20 +01:00
{
2009-04-28 18:06:18 +02:00
$GLOBALS [ 'egw' ] -> log -> message ( array (
'text' => 'W-BadmenuactionVariable, attempted to access private method: %1' ,
'p1' => $method ,
'line' => __LINE__ ,
'file' => __FILE__
));
2003-11-14 03:37:20 +01:00
}
}
2009-04-28 18:06:18 +02:00
if ( @ is_object ( $GLOBALS [ 'egw' ] -> log ))
2003-11-14 03:37:20 +01:00
{
2009-04-28 18:06:18 +02:00
$GLOBALS [ 'egw' ] -> log -> commit ();
2001-08-05 12:13:54 +02:00
}
2009-04-28 18:06:18 +02:00
$GLOBALS [ 'egw' ] -> redirect_link ( '/home/index.php' );
}
if ( ! isset ( $GLOBALS [ 'egw_info' ][ 'nofooter' ]))
{
2010-06-02 11:20:55 +02:00
common :: egw_footer ();
2003-08-28 16:16:30 +02:00
}
2009-04-28 18:06:18 +02:00
}