EGroupware /
egroupware
| 1 | <?php |
||
| 2 | /** |
||
| 3 | * EGroupware Setup |
||
| 4 | * |
||
| 5 | * @link http://www.egroupware.org |
||
| 6 | * @package setup |
||
| 7 | * @author Tony Puglisi (Angles) <[email protected]> |
||
| 8 | * @author Miles Lott <[email protected]> |
||
| 9 | * @author Ralf Becker <RalfBecker-AT-outdoor-training.de> |
||
| 10 | * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License |
||
| 11 | * @version $Id$ |
||
| 12 | */ |
||
| 13 | |||
| 14 | use EGroupware\Api; |
||
| 15 | |||
| 16 | /** |
||
| 17 | * Some static helper functions to generate html stuff in setup |
||
| 18 | */ |
||
| 19 | class setup_html |
||
| 20 | { |
||
| 21 | /** |
||
| 22 | * generate header.inc.php file output - NOT a generic html header function |
||
| 23 | * |
||
| 24 | */ |
||
| 25 | static function generate_header() |
||
| 26 | { |
||
| 27 | // PHP will automatically replace any dots in incoming |
||
| 28 | // variable names with underscores. |
||
| 29 | |||
| 30 | $GLOBALS['header_template']->set_file(array('header' => 'header.inc.php.template')); |
||
| 31 | $GLOBALS['header_template']->set_block('header','domain','domain'); |
||
| 32 | $var = Array(); |
||
| 33 | |||
| 34 | $deletedomain = $_POST['deletedomain']; |
||
| 35 | $domains = $_POST['domains']; |
||
| 36 | |||
| 37 | foreach($domains as $k => $v) |
||
| 38 | { |
||
| 39 | if(is_array($deletedomain) && isset($deletedomain[$k])) |
||
| 40 | { |
||
| 41 | continue; |
||
| 42 | } |
||
| 43 | $variableName = str_replace('.','_',$k); |
||
| 44 | $dom = $_POST['setting_'.$variableName]; |
||
| 45 | $GLOBALS['header_template']->set_var('DB_DOMAIN',$v); |
||
| 46 | foreach($dom as $x => $y) |
||
| 47 | { |
||
| 48 | if(strtoupper($x) == 'CONFIG_PASS') |
||
| 49 | { |
||
| 50 | $GLOBALS['header_template']->set_var(strtoupper($x),md5($y)); |
||
| 51 | } |
||
| 52 | else |
||
| 53 | { |
||
| 54 | $GLOBALS['header_template']->set_var(strtoupper($x),$y); |
||
| 55 | } |
||
| 56 | } |
||
| 57 | /* Admin did not type a new password, so use the old one from the hidden field, |
||
| 58 | * which is already md5 encoded. |
||
| 59 | */ |
||
| 60 | if($dom['config_password'] && !$dom['config_pass']) |
||
| 61 | { |
||
| 62 | /* Real == hidden */ |
||
| 63 | $GLOBALS['header_template']->set_var('CONFIG_PASS',$dom['config_password']); |
||
| 64 | } |
||
| 65 | /* If the admin didn't select a db_port, set to the default */ |
||
| 66 | if(!$dom['db_port']) |
||
| 67 | { |
||
| 68 | $GLOBALS['header_template']->set_var('DB_PORT',$GLOBALS['default_db_ports'][$dom['db_type']]); |
||
| 69 | } |
||
| 70 | $GLOBALS['header_template']->parse('domains','domain',True); |
||
| 71 | } |
||
| 72 | |||
| 73 | $GLOBALS['header_template']->set_var('domain',''); |
||
| 74 | |||
| 75 | $setting = $_POST['setting']; |
||
| 76 | foreach($setting as $k => $v) |
||
| 77 | { |
||
| 78 | if(strtoupper($k) == 'HEADER_ADMIN_PASSWORD') |
||
| 79 | { |
||
| 80 | $var[strtoupper($k)] = md5($v); |
||
| 81 | } |
||
| 82 | else |
||
| 83 | { |
||
| 84 | $var[strtoupper($k)] = $v; |
||
| 85 | } |
||
| 86 | } |
||
| 87 | /* Admin did not type a new header password, so use the old one from the hidden field, |
||
| 88 | * which is already md5 encoded. |
||
| 89 | */ |
||
| 90 | if($var['HEADER_ADMIN_PASS'] && empty($setting['HEADER_ADMIN_PASSWORD'])) |
||
| 91 | { |
||
| 92 | /* Real == hidden */ |
||
| 93 | $var['HEADER_ADMIN_PASSWORD'] = $var['HEADER_ADMIN_PASS']; |
||
| 94 | } |
||
| 95 | $GLOBALS['header_template']->set_var($var); |
||
| 96 | return $GLOBALS['header_template']->parse('out','header'); |
||
| 97 | } |
||
| 98 | |||
| 99 | static function setup_tpl_dir($app_name='setup') |
||
| 100 | { |
||
| 101 | /* hack to get tpl dir */ |
||
| 102 | if (is_dir(EGW_SERVER_ROOT)) |
||
| 103 | { |
||
| 104 | $srv_root = EGW_SERVER_ROOT . '/' . $app_name . '/'; |
||
| 105 | } |
||
| 106 | else |
||
| 107 | { |
||
| 108 | $srv_root = ''; |
||
| 109 | } |
||
| 110 | |||
| 111 | $tpl_typical = 'templates/default'; |
||
| 112 | $tpl_root = "$srv_root" ."$tpl_typical"; |
||
| 113 | return $tpl_root; |
||
| 114 | } |
||
| 115 | |||
| 116 | static function show_header($title='',$nologoutbutton=False, $logoutfrom='config', $configdomain='') |
||
| 117 | { |
||
| 118 | // add a content-type header to overwrite an existing default charset in apache (AddDefaultCharset directiv) |
||
| 119 | header('Content-type: text/html; charset='.$GLOBALS['egw_setup']->system_charset); |
||
| 120 | |||
| 121 | $GLOBALS['setup_tpl']->set_var('charset',$GLOBALS['egw_setup']->system_charset); |
||
| 122 | $style = array( |
||
| 123 | 'th_bg' => '#486591', |
||
| 124 | 'th_text' => '#FFFFFF', |
||
| 125 | 'row_on' => '#DDDDDD', |
||
| 126 | 'row_off' => '#EEEEEE', |
||
| 127 | 'banner_bg' => '#4865F1', |
||
| 128 | 'msg' => '#FF0000', |
||
| 129 | ); |
||
| 130 | $GLOBALS['setup_tpl']->set_var($style); |
||
| 131 | if ($nologoutbutton) |
||
| 132 | { |
||
| 133 | $GLOBALS['setup_tpl']->set_block('T_head','loged_in'); |
||
| 134 | $GLOBALS['setup_tpl']->set_var('loged_in',''); |
||
| 135 | } |
||
| 136 | else |
||
| 137 | { |
||
| 138 | $btn_logout = '<a href="index.php?FormLogout=' . $logoutfrom . '" class="link">' . lang('Logout').'</a>'; |
||
| 139 | $check_install = '<a class="textsidebox" href="check_install.php">'.lang('Check installation').'</a>'; |
||
| 140 | $register_hooks = '<a class="textsidebox" href="applications.php?hooks=1">'.lang('Clear cache and register hooks').'</a>'; |
||
| 141 | } |
||
| 142 | |||
| 143 | $GLOBALS['setup_tpl']->set_var('lang_setup', lang('setup')); |
||
| 144 | $GLOBALS['setup_tpl']->set_var('page_title',$title); |
||
| 145 | if ($configdomain == '') |
||
| 146 | { |
||
| 147 | $GLOBALS['setup_tpl']->set_var('configdomain',''); |
||
| 148 | } |
||
| 149 | else |
||
| 150 | { |
||
| 151 | $GLOBALS['setup_tpl']->set_var('configdomain',' - ' . lang('Domain') . ': ' . $configdomain); |
||
| 152 | } |
||
| 153 | |||
| 154 | if(basename($_SERVER['SCRIPT_FILENAME']) != 'index.php') |
||
| 155 | { |
||
| 156 | $index_btn = '<a href="index.php" class="link">' . lang('Setup Main Menu') . '</a>'; |
||
| 157 | $index_img = '<img src="../api/templates/default/images/bullet.png" />'; |
||
| 158 | } |
||
| 159 | |||
| 160 | $GLOBALS['setup_tpl']->set_var('lang_version',lang('version')); |
||
| 161 | if (!isset($GLOBALS['setup_info']) || !isset($GLOBALS['setup_info']['api']) || |
||
| 162 | !isset($GLOBALS['setup_info']['api']['versions']) || !isset($GLOBALS['setup_info']['api']['versions']['maintenance_release'])) |
||
| 163 | { |
||
| 164 | include(EGW_SERVER_ROOT.'/api/setup/setup.inc.php'); |
||
| 165 | } |
||
| 166 | else |
||
| 167 | { |
||
| 168 | $setup_info = $GLOBALS['setup_info']; |
||
| 169 | } |
||
| 170 | $GLOBALS['setup_tpl']->set_var('pgw_ver', $nologoutbutton ? |
||
| 171 | (double)$setup_info['api']['version'] : // without login only show main version, not maintenance release |
||
| 172 | $setup_info['api']['versions']['maintenance_release']); |
||
| 173 | |||
| 174 | $GLOBALS['setup_tpl']->set_var(array( |
||
| 175 | 'logoutbutton' => $btn_logout, |
||
| 176 | 'indexbutton' => $index_btn, |
||
| 177 | 'indeximg' => $index_img, |
||
| 178 | 'check_install' => $check_install, |
||
| 179 | 'register_hooks'=> $register_hooks, |
||
| 180 | 'main_menu' => lang('Setup Main Menu'), |
||
| 181 | 'user_login' => lang('Back to user login'), |
||
| 182 | 'help_menu' => lang('Help and support'), |
||
| 183 | 'documentation' => lang('Documentation'), |
||
| 184 | 'commercial_support' => lang('Commercial support'), |
||
| 185 | 'community_forum' => lang('Community forum'), |
||
| 186 | )); |
||
| 187 | |||
| 188 | $GLOBALS['setup_tpl']->pparse('out','T_head'); |
||
| 189 | } |
||
| 190 | |||
| 191 | static function show_footer() |
||
| 192 | { |
||
| 193 | $GLOBALS['setup_tpl']->pparse('out','T_footer'); |
||
| 194 | unset($GLOBALS['setup_tpl']); |
||
| 195 | } |
||
| 196 | |||
| 197 | static function show_alert_msg($alert_word='Setup alert',$alert_msg='setup alert (generic)') |
||
| 198 | { |
||
| 199 | $GLOBALS['setup_tpl']->set_var('V_alert_word',$alert_word); |
||
| 200 | $GLOBALS['setup_tpl']->set_var('V_alert_msg',$alert_msg); |
||
| 201 | $GLOBALS['setup_tpl']->pparse('out','T_alert_msg'); |
||
| 202 | } |
||
| 203 | |||
| 204 | static function make_frm_btn_simple($pre_frm_blurb='',$frm_method='post',$frm_action='',$input_type='submit',$input_value='',$post_frm_blurb='') |
||
| 205 | { |
||
| 206 | /* a simple form has simple components */ |
||
| 207 | $simple_form = $pre_frm_blurb ."\n" |
||
| 208 | . '<form method="' . $frm_method . '" action="' . $frm_action . '">' . "\n" |
||
| 209 | . '<input type="' . $input_type . '" value="' . $input_value . '" />' . "\n" |
||
| 210 | . '</form>' . "\n" |
||
| 211 | . $post_frm_blurb . "\n"; |
||
| 212 | return $simple_form; |
||
| 213 | } |
||
| 214 | |||
| 215 | static function make_href_link_simple($pre_link_blurb='',$href_link='',$href_text='default text',$post_link_blurb='') |
||
| 216 | { |
||
| 217 | /* a simple href link has simple components */ |
||
| 218 | $simple_link = $pre_link_blurb |
||
| 219 | . '<a href="' . $href_link . '">' . $href_text . '</a> ' |
||
| 220 | . $post_link_blurb . "\n"; |
||
| 221 | return $simple_link; |
||
| 222 | } |
||
| 223 | |||
| 224 | static function login_form() |
||
| 225 | { |
||
| 226 | /* begin use TEMPLATE login_main.tpl */ |
||
| 227 | $GLOBALS['setup_tpl']->set_var('ConfigLoginMSG',@$GLOBALS['egw_info']['setup']['ConfigLoginMSG']); |
||
| 228 | $GLOBALS['setup_tpl']->set_var('HeaderLoginMSG',@$GLOBALS['egw_info']['setup']['HeaderLoginMSG']); |
||
| 229 | $GLOBALS['setup_tpl']->set_var('lang_header_username',lang('Header Username')); |
||
| 230 | $GLOBALS['setup_tpl']->set_var('lang_header_password',lang('Header Password')); |
||
| 231 | $GLOBALS['setup_tpl']->set_var('lang_header_login',lang('Header Admin Login')); |
||
| 232 | $GLOBALS['setup_tpl']->set_var('lang_config_login',lang('Setup/Config Admin Login')); |
||
| 233 | $GLOBALS['setup_tpl']->set_var('lang_config_username',lang('Config Username')); |
||
| 234 | $GLOBALS['setup_tpl']->set_var('lang_config_password',lang('Config Password')); |
||
| 235 | $GLOBALS['setup_tpl']->set_var('lang_domain',lang('Domain')); |
||
| 236 | |||
| 237 | $GLOBALS['setup_tpl']->set_var('lang_select',self::lang_select()); |
||
| 238 | |||
| 239 | if ($GLOBALS['egw_info']['setup']['stage']['header'] == '10') |
||
| 240 | { |
||
| 241 | /* |
||
| 242 | Begin use SUB-TEMPLATE login_stage_header, |
||
| 243 | fills V_login_stage_header used inside of login_main.tpl |
||
| 244 | */ |
||
| 245 | if (count($GLOBALS['egw_domain']) > 1) |
||
| 246 | { |
||
| 247 | foreach(array_keys($GLOBALS['egw_domain']) as $domain) |
||
| 248 | { |
||
| 249 | $domains .= "<option value=\"$domain\" ".($domain == @$GLOBALS['egw_info']['setup']['LastDomain'] ? ' selected="selected"' : '').">$domain</option>\n"; |
||
|
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
Loading history...
|
|||
| 250 | } |
||
| 251 | $GLOBALS['setup_tpl']->set_var('domains',$domains); |
||
| 252 | |||
| 253 | // use BLOCK B_multi_domain inside of login_stage_header |
||
| 254 | $GLOBALS['setup_tpl']->parse('V_multi_domain','B_multi_domain'); |
||
| 255 | // in this case, the single domain block needs to be nothing |
||
| 256 | $GLOBALS['setup_tpl']->set_var('V_single_domain',''); |
||
| 257 | } |
||
| 258 | else |
||
| 259 | { |
||
| 260 | reset($GLOBALS['egw_domain']); |
||
| 261 | $default_domain = key($GLOBALS['egw_domain']); |
||
| 262 | $GLOBALS['setup_tpl']->set_var('default_domain_zero',$default_domain); |
||
| 263 | |||
| 264 | /* Use BLOCK B_single_domain inside of login_stage_header */ |
||
| 265 | $GLOBALS['setup_tpl']->parse('V_single_domain','B_single_domain'); |
||
| 266 | /* in this case, the multi domain block needs to be nothing */ |
||
| 267 | $GLOBALS['setup_tpl']->set_var('V_multi_domain',''); |
||
| 268 | } |
||
| 269 | /* |
||
| 270 | End use SUB-TEMPLATE login_stage_header |
||
| 271 | put all this into V_login_stage_header for use inside login_main |
||
| 272 | */ |
||
| 273 | $GLOBALS['setup_tpl']->parse('V_login_stage_header','T_login_stage_header'); |
||
| 274 | } |
||
| 275 | else |
||
| 276 | { |
||
| 277 | /* begin SKIP SUB-TEMPLATE login_stage_header */ |
||
| 278 | $GLOBALS['setup_tpl']->set_var('V_multi_domain',''); |
||
| 279 | $GLOBALS['setup_tpl']->set_var('V_single_domain',''); |
||
| 280 | $GLOBALS['setup_tpl']->set_var('V_login_stage_header',''); |
||
| 281 | } |
||
| 282 | /* |
||
| 283 | end use TEMPLATE login_main.tpl |
||
| 284 | now out the login_main template |
||
| 285 | */ |
||
| 286 | $GLOBALS['setup_tpl']->pparse('out','T_login_main'); |
||
| 287 | } |
||
| 288 | |||
| 289 | static function lang_select($onChange=False,$ConfigLang='') |
||
| 290 | { |
||
| 291 | if (empty($ConfigLang)) |
||
| 292 | { |
||
| 293 | $ConfigLang = setup::get_lang(true); // true use Accept-Language header |
||
| 294 | } |
||
| 295 | return Api\Html::select('ConfigLang', $ConfigLang, Api\Translation::get_available_langs(false), true, |
||
| 296 | $onChange ? ' onchange="this.form.submit();"' : ''); |
||
| 297 | } |
||
| 298 | |||
| 299 | static function get_template_list() |
||
| 300 | { |
||
| 301 | $d = dir(EGW_SERVER_ROOT . '/phpgwapi/templates'); |
||
| 302 | |||
| 303 | $list = array(); |
||
| 304 | while($entry = $d->read()) |
||
| 305 | { |
||
| 306 | if ($entry != 'CVS' && $entry != '.' && $entry != '..') |
||
| 307 | { |
||
| 308 | $list[$entry]['name'] = $entry; |
||
| 309 | $f = EGW_SERVER_ROOT . '/phpgwapi/templates/' . $entry . '/details.inc.php'; |
||
| 310 | if (file_exists ($f)) |
||
| 311 | { |
||
| 312 | include($f); |
||
| 313 | $list[$entry]['title'] = 'Use ' . $GLOBALS['egw_info']['template'][$entry]['title'] . 'interface'; |
||
| 314 | } |
||
| 315 | else |
||
| 316 | { |
||
| 317 | $list[$entry]['title'] = $entry; |
||
| 318 | } |
||
| 319 | } |
||
| 320 | } |
||
| 321 | $d->close(); |
||
| 322 | reset ($list); |
||
| 323 | return $list; |
||
| 324 | } |
||
| 325 | |||
| 326 | static function list_themes() |
||
| 327 | { |
||
| 328 | $dh = dir(EGW_SERVER_ROOT . '/phpgwapi/themes'); |
||
| 329 | while ($file = $dh->read()) |
||
| 330 | { |
||
| 331 | if (preg_match('/'."\.theme$".'/i', $file)) |
||
| 332 | { |
||
| 333 | $list[] = substr($file,0,strpos($file,'.')); |
||
| 334 | } |
||
| 335 | } |
||
| 336 | $dh->close(); |
||
| 337 | reset ($list); |
||
| 338 | return $list; |
||
| 339 | } |
||
| 340 | } |
||
| 341 |