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
2010-09-25 11:08:37 +02:00
// support of Mac or iPhone trying to autodetect CalDAV or CardDAV support
// if EGroupware is not installed in the docroot, you need either this code in the index.php there,
// or an uncoditional redirect to this file or copy groupdav.htaccess to your docroot as .htaccess
if ( $_SERVER [ 'REQUEST_METHOD' ] == 'PROPFIND' || $_SERVER [ 'REQUEST_METHOD' ] == 'OPTIONS' )
{
header ( 'Location: groupdav.php/' );
exit ;
}
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:11:11 +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:11:11 +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 );
2011-07-10 14:05:59 +02:00
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
2014-02-13 14:18:48 +01:00
// until home works again, we redirect to default_app from prefs (if set and not home) or calendar, if allowed, or first app found
if ( $app == 'home' )
{
$app = $GLOBALS [ 'egw_info' ][ 'user' ][ 'preferences' ][ 'common' ][ 'default_app' ];
if ( ! $app || $app == 'home' ) $app = isset ( $GLOBALS [ 'egw_info' ][ 'user' ][ 'apps' ][ 'calendar' ]) ? 'calendar' : key ( $GLOBALS [ 'egw_info' ][ 'user' ][ 'apps' ]);
egw :: redirect ( egw_framework :: index ( $app , $app ));
}
2011-07-10 14:05:59 +02:00
if ( $app == 'home' && ! $api_requested && ! ( $windowed && $_GET [ 'cd' ] == 'yes' && ! html :: $ua_mobile ))
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 )
{
2014-02-05 08:56:09 +01:00
egw :: redirect ( egw_framework :: index ( $GLOBALS [ 'egw_info' ][ 'user' ][ 'preferences' ][ 'common' ][ 'default_app' ]), $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
}