setup_html::show_header()   B
last analyzed

Complexity

Conditions 9
Paths 16

Size

Total Lines 73
Code Lines 48

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 9
eloc 48
nc 16
nop 4
dl 0
loc 73
rs 7.5789
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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
The variable $domains seems to be never defined.
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