EGroupware /
egroupware
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
| 1 | <?php |
||
| 2 | /** |
||
| 3 | * EGroupware index page |
||
| 4 | * |
||
| 5 | * Starts all Egw\Applications using $_GET[menuaction] |
||
| 6 | * |
||
| 7 | * @link http://www.egroupware.org |
||
| 8 | * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License |
||
| 9 | * @package api |
||
| 10 | * @version $Id$ |
||
| 11 | */ |
||
| 12 | |||
| 13 | use EGroupware\Api; |
||
| 14 | use EGroupware\Api\Framework; |
||
| 15 | use EGroupware\Api\Egw; |
||
| 16 | |||
| 17 | // support of Mac or iPhone trying to autodetect CalDAV or CardDAV support |
||
| 18 | // if EGroupware is not installed in the docroot, you need either this code in the index.php there, |
||
| 19 | // or an uncoditional redirect to this file or copy groupdav.htaccess to your docroot as .htaccess |
||
| 20 | if ($_SERVER['REQUEST_METHOD'] == 'PROPFIND' || $_SERVER['REQUEST_METHOD'] == 'OPTIONS') |
||
| 21 | { |
||
| 22 | header('Location: groupdav.php/'); |
||
| 23 | exit; |
||
| 24 | } |
||
| 25 | |||
| 26 | // forward for not existing or empty header to setup |
||
| 27 | if(!file_exists('header.inc.php') || !filesize('header.inc.php')) |
||
| 28 | { |
||
| 29 | Header('Location: setup/index.php'); |
||
| 30 | exit; |
||
| 31 | } |
||
| 32 | |||
| 33 | if(isset($_GET['hasupdates']) && $_GET['hasupdates'] == 'yes') |
||
| 34 | { |
||
| 35 | $hasupdates = True; |
||
| 36 | } |
||
| 37 | |||
| 38 | /* |
||
| 39 | This is the menuaction driver for the multi-layered design |
||
| 40 | */ |
||
| 41 | if(isset($_GET['menuaction']) && preg_match('/^[A-Za-z0-9_]+\.[A-Za-z0-9_\\\\]+\.[A-Za-z0-9_]+$/',$_GET['menuaction'])) |
||
| 42 | { |
||
| 43 | list($app,$class,$method) = explode('.',$_GET['menuaction']); |
||
| 44 | |||
| 45 | // check if autoloadable class belongs to given app |
||
| 46 | View Code Duplication | if (substr($class, 0, 11) == 'EGroupware\\') |
|
| 47 | { |
||
| 48 | list(,$app_from_class) = explode('\\', strtolower($class)); |
||
| 49 | } |
||
| 50 | elseif(strpos($class, '_') !== false) |
||
| 51 | { |
||
| 52 | list($app_from_class) = explode('_', $class); |
||
| 53 | } |
||
| 54 | if(!$app || !$class || !$method || isset($app_from_class) && |
||
| 55 | isset($GLOBALS['egw_info']['apps'][$app_from_class]) && $app_from_class != $app) |
||
| 56 | { |
||
| 57 | $invalid_data = True; |
||
| 58 | } |
||
| 59 | } |
||
| 60 | else |
||
| 61 | { |
||
| 62 | $app = 'api'; |
||
| 63 | $invalid_data = True; |
||
| 64 | } |
||
| 65 | //error_log(__METHOD__."$app,$class,$method"); |
||
| 66 | if($app == 'phpgwapi') |
||
| 67 | { |
||
| 68 | $app = 'api'; |
||
| 69 | $api_requested = True; |
||
| 70 | } |
||
| 71 | |||
| 72 | $GLOBALS['egw_info'] = array( |
||
| 73 | 'flags' => array( |
||
| 74 | 'noheader' => True, |
||
| 75 | 'nonavbar' => True, |
||
| 76 | 'currentapp' => $app |
||
| 77 | ) |
||
| 78 | ); |
||
| 79 | include('./header.inc.php'); |
||
| 80 | |||
| 81 | // user changed timezone |
||
| 82 | if (isset($_GET['tz'])) |
||
| 83 | { |
||
| 84 | Api\DateTime::setUserPrefs($_GET['tz']); // throws exception, if tz is invalid |
||
| 85 | |||
| 86 | $GLOBALS['egw']->preferences->add('common','tz',$_GET['tz']); |
||
| 87 | $GLOBALS['egw']->preferences->save_repository(); |
||
| 88 | |||
| 89 | if (($referer = Api\Header\Referer::get())) |
||
| 90 | { |
||
| 91 | Egw::redirect_link($referer); |
||
| 92 | } |
||
| 93 | } |
||
| 94 | |||
| 95 | // Check if we are using windows or normal webpage |
||
| 96 | $windowed = false; |
||
| 97 | $tpl_info = EGW_SERVER_ROOT . '/phpgwapi/templates/' . basename($GLOBALS['egw_info']['user']['preferences']['common']['template_set']) . '/setup/setup.inc.php'; |
||
| 98 | View Code Duplication | if (!file_exists($tpl_info)) |
|
| 99 | { |
||
| 100 | $tpl_info = EGW_SERVER_ROOT.'/'.basename($GLOBALS['egw_info']['user']['preferences']['common']['template_set']) . '/setup/setup.inc.php'; |
||
| 101 | } |
||
| 102 | if(@file_exists($tpl_info)) |
||
| 103 | { |
||
| 104 | include_once($tpl_info); |
||
| 105 | if($GLOBALS['egw_info']['template'][$GLOBALS['egw_info']['user']['preferences']['common']['template_set']]['windowed']) |
||
| 106 | { |
||
| 107 | $windowed = true; |
||
| 108 | } |
||
| 109 | } |
||
| 110 | |||
| 111 | |||
| 112 | if($app == 'api' && !$class && !$api_requested && !($windowed && $_GET['cd'] == 'yes' && !Api\Header\UserAgent::mobile()) && $GLOBALS['egw_info']['user']['preferences']['common']['template_set'] == 'idots') |
||
| 113 | { |
||
| 114 | if ($GLOBALS['egw_info']['server']['force_default_app'] && $GLOBALS['egw_info']['server']['force_default_app'] != 'user_choice') |
||
| 115 | { |
||
| 116 | $GLOBALS['egw_info']['user']['preferences']['common']['default_app'] = $GLOBALS['egw_info']['server']['force_default_app']; |
||
| 117 | } |
||
| 118 | if($GLOBALS['egw_info']['user']['preferences']['common']['default_app'] && !$hasupdates) |
||
| 119 | { |
||
| 120 | Egw::redirect(Framework::index($GLOBALS['egw_info']['user']['preferences']['common']['default_app']),$GLOBALS['egw_info']['user']['preferences']['common']['default_app']); |
||
| 121 | } |
||
| 122 | else |
||
| 123 | { |
||
| 124 | Egw::redirect_link('/home/index.php?cd=yes'); |
||
| 125 | } |
||
| 126 | } |
||
| 127 | |||
| 128 | if($windowed && $_GET['cd'] == 'yes') |
||
| 129 | { |
||
| 130 | $GLOBALS['egw_info']['flags'] = array( |
||
| 131 | 'noheader' => False, |
||
| 132 | 'nonavbar' => False, |
||
| 133 | 'currentapp' => 'eGroupWare' |
||
| 134 | ); |
||
| 135 | echo $GLOBALS['egw']->framework->header(); |
||
| 136 | echo $GLOBALS['egw']->framework->footer(); |
||
| 137 | } |
||
| 138 | else |
||
| 139 | { |
||
| 140 | if($api_requested) |
||
| 141 | { |
||
| 142 | $app = 'phpgwapi'; |
||
| 143 | } |
||
| 144 | |||
| 145 | if (class_exists($class)) |
||
| 146 | { |
||
| 147 | $obj = new $class; |
||
| 148 | } |
||
| 149 | else |
||
| 150 | { |
||
| 151 | $obj = CreateObject($app.'.'.$class); |
||
|
0 ignored issues
–
show
|
|||
| 152 | } |
||
| 153 | if((is_array($obj->public_functions) && $obj->public_functions[$method]) && !$invalid_data) |
||
| 154 | { |
||
| 155 | $obj->$method(); |
||
| 156 | unset($app); |
||
| 157 | unset($class); |
||
| 158 | unset($method); |
||
| 159 | unset($invalid_data); |
||
| 160 | unset($api_requested); |
||
| 161 | } |
||
| 162 | else |
||
| 163 | { |
||
| 164 | if(!$app || !$class || !$method || $invalid_data) |
||
| 165 | { |
||
| 166 | View Code Duplication | if(@is_object($GLOBALS['egw']->log)) |
|
| 167 | { |
||
| 168 | $GLOBALS['egw']->log->message(array( |
||
| 169 | 'text' => 'W-BadmenuactionVariable, menuaction missing or corrupt: %1', |
||
| 170 | 'p1' => $menuaction, |
||
| 171 | 'line' => __LINE__, |
||
| 172 | 'file' => __FILE__ |
||
| 173 | )); |
||
| 174 | } |
||
| 175 | } |
||
| 176 | |||
| 177 | if(!is_array($GLOBALS[$class]->public_functions) || !$GLOBALS[$class]->public_functions[$method] && $method) |
||
| 178 | { |
||
| 179 | View Code Duplication | if(@is_object($GLOBALS['egw']->log)) |
|
| 180 | { |
||
| 181 | $GLOBALS['egw']->log->message(array( |
||
| 182 | 'text' => 'W-BadmenuactionVariable, attempted to access private method: %1', |
||
| 183 | 'p1' => $method, |
||
| 184 | 'line' => __LINE__, |
||
| 185 | 'file' => __FILE__ |
||
| 186 | )); |
||
| 187 | } |
||
| 188 | } |
||
| 189 | if(@is_object($GLOBALS['egw']->log)) |
||
| 190 | { |
||
| 191 | $GLOBALS['egw']->log->commit(); |
||
| 192 | } |
||
| 193 | |||
| 194 | $GLOBALS['egw']->redirect_link('/home/index.php'); |
||
| 195 | } |
||
| 196 | |||
| 197 | if(!isset($GLOBALS['egw_info']['nofooter'])) |
||
| 198 | { |
||
| 199 | echo $GLOBALS['egw']->framework->footer(); |
||
| 200 | } |
||
| 201 | } |
||
| 202 |
This function has been deprecated. The supplier of the file has supplied an explanatory message.
The explanatory message should give you some clue as to whether and when the function will be removed from the class and what other function to use instead.