Project

General

Profile

1
<?php
2
/**
3
 * @category        admin
4
 * @package         groups
5
 * @author          WebsiteBaker Project. Independend-Software-Team
6
 * @copyright       2009-2013, WebsiteBaker Org. e.V.
7
 * @link            http://www.websitebaker.org/
8
 * @license         http://www.gnu.org/licenses/gpl.html
9
 * @platform        WebsiteBaker 2.8.x
10
 * @requirements    PHP 5.2.2 and higher
11
 * @version         $Id: groups_mask.inc.php 2098 2014-02-11 01:37:03Z darkviper $
12
 * @filesource      $HeadURL: svn://isteam.dynxs.de/wb-archiv/branches/2.8.x/wb/admin/groups/groups_mask.inc.php $
13
 * @lastmodified    $Date: 2014-02-11 02:37:03 +0100 (Tue, 11 Feb 2014) $
14
 * @description     all basic actions of this module, called by dispatcher only.
15
 */
16

    
17
/* -------------------------------------------------------- */
18
// Must include code to stop this file being accessed directly
19
if(!defined('WB_URL')) {
20
	require_once(dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php');
21
	throw new IllegalFileException();
22
}
23
/* -------------------------------------------------------- */
24

    
25
/*
26
print '<pre style="text-align: left;"><strong>function '.__FUNCTION__.'( '.'frm_modify_group'.' );</strong>  basename: '.basename(__FILE__).'  line: '.__LINE__.' -> <br />';
27
print_r( $_POST ); print '</pre>'; // flush ();sleep(10); die();
28
*/
29

    
30
/* *****************************************************************************
31
 * Show groupsmask to edit group
32
 * @access public
33
 * @param object $admin: admin-object
34
 * @param int $user_id: ID from group to modify or 0 for a new group
35
 * @return string: parsed HTML-content
36
 */
37
	function show_groupmask($admin, $group_id = 0)
38
	{
39
//		global $TEXT, $MESSAGE, $HEADING, $MENU;
40

    
41
		$database = WbDatabase::getInstance();
42

    
43
//		$oLang->setLanguage(dirname(__FILE__).'/languages/', LANGUAGE, DEFAULT_LANGUAGE);
44
		include_once('upgradePermissions.php');
45
		include_once(WB_PATH.'/framework/functions.php');
46
	// Create new template object for the modify/remove menu
47
		$tpl = new Template(dirname($admin->correct_theme_source('groups_form.htt')),'keep');
48
		$tpl->set_file('page', 'groups_form.htt');
49
		$tpl->debug = false; // false, true
50

    
51
        $oLang = Translate::getInstance();
52
        $oLang->enableAddon('admin\\groups');
53
        $tpl->set_var($oLang->getLangArray());
54

    
55
		$tpl->set_block('page', 'main_block', 'main');
56
		$tpl->set_block('main_block', 'show_cmd_permission_block', 'show_cmd_permission');
57
		$tpl->set_var('FTAN', $admin->getFTAN());
58
		$rec_group = array();
59
// admin settings
60
//		$system_settings = getSystemDefaultPermissions();
61
//		$aSystemDefaultSettings = getSystemDefaultPermissions();
62
		if( $group_id > 1 ) // load groupdata from db
63
		{
64
			// only read the first time from db to set checkboxes
65
			if( $admin->get_post('frm_modify_group') == null )
66
			{
67
				$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'groups` ';
68
				$sql .= 'WHERE `group_id` = '.(int)$group_id;
69
				// $group_id = 0; // reset to 0 if error occures
70
				if( ($res_group = $database->query($sql)) != false )
71
				{
72
					if( ($rec_group = $res_group->fetchRow(MYSQL_ASSOC)) != false )
73
					{
74
						$group_id = $rec_group['group_id'];
75
		// Explode system permissions
76
						$system_permissions = explode(',', $rec_group['system_permissions']);
77
		// Explode module permissions
78
		 				$module_permissions = explode(',', $rec_group['module_permissions']);
79
		// Explode template permissions
80
						$template_permissions = explode(',', $rec_group['template_permissions']);
81
					}
82
				}
83

    
84
			$tpl->set_var(array(
85
						'SUBMIT_TITLE' =>  ($admin->get_permission('groups_modify') == true) ? $oLang->TEXT_SAVE : $oLang->TEXT_BACK,
86
						'ACTION_HIDDEN' => ($admin->get_permission('groups_modify') == true) ? 'action_modify' : 'action_cancel',
87
						'ACTION_HANDLE' => ($admin->get_permission('groups_modify') == true) ? 'action_save' : 'action_cancel',
88
						'GROUP_ID' => $rec_group['group_id'],
89
						'GROUP_NAME' => $rec_group['name'],
90
						'FORM_NAME_GROUPMASK' => 'frm_modify_group',
91
						'GROUPNAME_DISABLED' => '',
92
					));
93
			} else {
94
				// set changed checkboxes and prepare db data
95
 				$module_permissions = set_module_permissions($admin);
96
 				$template_permissions = set_template_permissions($admin);
97
				$rec_group['group_id'] = $group_id;
98
				$rec_group['name'] = $admin->add_slashes($admin->get_post('name'));
99
				$rec_group['module_permissions']   = convertArrayToString($module_permissions);
100
				$rec_group['template_permissions'] = convertArrayToString($template_permissions);
101

    
102
				$tpl->set_var(array(
103
							'SUBMIT_TITLE' =>  ($admin->get_permission('groups_modify') == true) ? $oLang->TEXT_SAVE : $oLang->TEXT_BACK,
104
							'ACTION_HANDLE' => ($admin->get_permission('groups_modify') == true) ? 'action_save' : 'action_cancel',
105
							'ACTION_HIDDEN' => ($admin->get_permission('groups_modify') == true) ? 'action_modify' : 'action_cancel',
106
							'TEXT_GROUPS_NAME' => $oLang->TEXT_GROUP.': ',
107
							'FORM_NAME_GROUPMASK' => 'frm_modify_group',
108
	//						'GROUPNAME_DISABLED' => ' readonly="readonly"',
109
	//						'GROUPNAME_INPUT_DISABLED' => ' input_text_disabled no_input'
110
							'GROUP_NAME' => $rec_group['name'],
111
							'GROUPNAME_DISABLED' => '',
112
							'GROUPNAME_INPUT_DISABLED' => ''
113
							));
114
			}
115
		} else {
116
// set default no rights
117
			$system_permissions = array('preferences' => 1,'preferences_view' => 1);
118
//		$system_permissions = array();
119
//		$system_permissions = isset($_POST['system_permissions']) ? $_POST['system_permissions'] : $system_permissions;
120
			$module_permissions = array();
121
			$template_permissions = array();
122
	// create a empty group-record with permissions masks and advanced button handle
123
	// check for existing groupname and junp to start handling, do the same in save
124
	// set changed checkboxes and prepare db data
125
			$module_permissions = set_module_permissions($admin);
126
			$template_permissions = set_template_permissions($admin);
127
			$rec_group['group_id'] = intval($admin->get_post('group_id'));
128
			$rec_group['name'] = $admin->add_slashes($admin->get_post('name'));
129
			$rec_group['module_permissions'] = $module_permissions;
130
			$rec_group['template_permissions'] = $template_permissions;
131

    
132
			$tpl->set_var(array(
133
						'SUBMIT_TITLE' =>  ($admin->get_permission('groups_add') == true) ? $oLang->TEXT_ADD : $oLang->TEXT_BACK,
134
						'ACTION_HANDLE' => ($admin->get_permission('groups_add') == true) ? 'action_save' : 'action_cancel',
135
						'ACTION_HIDDEN' => ($admin->get_permission('groups_add') == true) ? 'action_modify' : 'action_cancel',
136
						'TEXT_GROUPS_NAME' => '',
137
						'GROUP_NAME' => $rec_group['name'],
138
						'FORM_NAME_GROUPMASK' => 'frm_addnew_group',
139
						'GROUPNAME_DISABLED' => '',
140
						'GROUPNAME_INPUT_DISABLED' => ''
141
						));
142
//			$group_id = $rec_group['group_id'];
143
		}
144
// set changed checkboxes and prepare db data
145
		if( isset($_POST['system_permissions']) )
146
		{
147
			$system_permissions = get_system_permissions($admin,$_POST['system_permissions'] );
148
			$rec_group['system_permissions']   = set_system_permissions($_POST['system_permissions']);
149
		} else {
150
			$system_permissions = get_system_permissions($admin,$system_permissions);
151
			$rec_group['system_permissions']   = set_system_permissions($system_permissions);
152
		}
153
//print '<pre style="text-align: left;"><strong>function '.__FUNCTION__.'( '.'frm_modify_group'.' );</strong>  basename: '.basename(__FILE__).'  line: '.__LINE__.' -> <br />';
154
//print_r( $rec_group['system_permissions']  ); print '</pre>';
155
		$tpl->set_var(array(
156
					'GROUP_ID' => $rec_group['group_id'],
157
					'GROUP_NAME' => $rec_group['name'],
158
					'DISPLAY_ADD' => '',
159
					));
160
		$tpl->parse('show_cmd_permission', 'show_cmd_permission_block', true);
161
		// if the requested group doesn't exist, or $group_id contains 0 so it
162
		// will be shown a empty mask to add a new group
163
		// otherwise the $rec_group object contains existing data from requested group
164
		// $tpl->set_var('GROUP_ID', $group_id != 0 ? $admin->getIDKEY($group_id) : 0);
165
		$tpl->set_var('GROUP_ACTION_URL', $_SERVER['SCRIPT_NAME']);
166
        $header_extra = $oLang->TEXT_FILESYSTEM_PERMISSIONS.' ';
167
		if( ($admin->get_permission('groups_view') == true) )
168
		{
169
			$tpl->set_var('GROUPS_HEADER', $header_extra.$oLang->HEADING_VIEW_GROUP );
170
			if( ($admin->get_permission('groups_modify') == true) )
171
			{
172
			$tpl->set_var('GROUPS_HEADER', ($group_id == 0 ? $header_extra.$oLang->HEADING_ADD_GROUP : $header_extra.$oLang->HEADING_MODIFY_GROUP) );
173
			}
174
		}
175

    
176
// Insert language text and messages
177
		$tpl->set_var('MODULE_FUNCTION', '');
178
		$tpl->set_var($oLang->getLangArray());
179

    
180
// ------------------------
181
// Tell the browser whether or not to show advanced options
182
		$tpl->set_block('show_cmd_permission', 'show_cmd_manage_permission_block', 'permission_block');
183
//		$tpl->set_block('show_cmd_manage_permission_block', 'show_cmd_hidden_permission_list_block', 'hidden_permission_list');
184
		$tpl->set_block('show_cmd_permission', 'show_cmd_advanced_permission_block', 'advanced_permission_block');
185
// first set the var {hidden_permission_list} to empty
186
//		$tpl->parse('hidden_permission_list', '');
187
// Check and set system permissions boxes in main_block
188

    
189
			$tpl->parse('hidden_advanced_permission_list', '');
190
			$tpl->set_block('show_cmd_manage_permission_block', 'show_cmd_hidden_permission_list_block', 'hidden_permission_list');
191
			setSystemCheckboxes( $tpl, $admin, isset($_POST['system_permissions']) ? $_POST['system_permissions'] : $rec_group['system_permissions'] );
192
			$tpl->set_var('DISPLAY_ADVANCED', '');
193
			$tpl->set_var('DISPLAY_BASIC', '');
194
			$tpl->set_var('FILESYSTEM_PERMISSIONS', $oLang->TEXT_FILESYSTEM_PERMISSIONS.' ');
195

    
196
			$tpl->parse('advanced_permission_block', 'show_cmd_advanced_permission_block', true);
197
			$tpl->parse('permission_block', 'show_cmd_manage_permission_block', true);
198

    
199
// ------------------------
200

    
201
		$tpl->set_var('HEADER_MODULE_FUNCTION', '<h6>'.$oLang->TEXT_MODULE_PERMISSIONS.'</h6>');
202
// Insert values into pages module list
203
		$tpl->set_block('show_cmd_permission', 'pages_module_list_block', 'module_list');
204
		$sql  = 'SELECT `directory`,`name`,`function` FROM `'.TABLE_PREFIX.'addons` ';
205
		$sql .= 'WHERE `type` = \'module\' AND `function` <> \'tool\' ';
206
		$sql .= '';
207
		$sql .= 'ORDER BY `function`, `name`';
208
		if(($res_pages = $database->query($sql)) && ($res_pages->numRows() > 0) )
209
		{
210
        	$tmp_header = '';
211
			while($addon = $res_pages->fetchRow(MYSQL_ASSOC))
212
			{
213
				if(file_exists(WB_PATH.'/modules/'.$addon['directory'].'/info.php'))
214
				{
215
                    if( $tmp_header != $addon['function'])
216
					{
217
						$tpl->set_var('MODULE_FUNCTION', '<h6>'.strtoupper($addon['function']).'</h6>');
218
					} else {
219
						$tpl->set_var('MODULE_FUNCTION', '');
220
					}
221

    
222
					$tpl->set_var('MOD_VALUE', $addon['directory']);
223
					$tpl->set_var('MOD_NAME', $addon['name']);
224
					if(!is_numeric(array_search($addon['directory'], $module_permissions)) )
225
					{
226
						$tpl->set_var('MOD_CHECKED', ' checked="checked"');
227
					} else {
228
	 					$tpl->set_var('MOD_CHECKED', '');
229
					}
230
					$tpl->parse('module_list', 'pages_module_list_block', true);
231
		        }
232
				$tmp_header = $addon['function'];
233
			}
234
		}
235

    
236
		$tpl->set_var('HEADER_MODULE_FUNCTION', '<h6>'.$oLang->TEXT_MODULE_PERMISSIONS.'</h6>');
237
		// Insert values into pages module list
238
		$tpl->set_block('show_cmd_permission', 'tools_module_list_block', 'tools_list');
239
		$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'addons` ';
240
		$sql .= 'WHERE `type` = \'module\' AND `function` = \'tool\' ';
241
		$sql .= 'ORDER BY `name`';
242
		if(($res_pages = $database->query($sql)) && ($res_pages->numRows() > 0) )
243
		{
244
        	$tmp_header = '';
245
			while($addon = $res_pages->fetchRow(MYSQL_ASSOC))
246
			{
247
				if(file_exists(WB_PATH.'/modules/'.$addon['directory'].'/info.php'))
248
				{
249
                    if( $tmp_header != $addon['function'])
250
					{
251
						$tpl->set_var('MODULE_FUNCTION', '<h6>'.strtoupper($addon['function']).'</h6>');
252
					} else {
253
						$tpl->set_var('MODULE_FUNCTION', '');
254
					}
255
					$tpl->set_var('ADM_VALUE', $addon['directory']);
256
					$tpl->set_var('ADM_NAME', $addon['name']);
257
					if(!is_numeric(array_search($addon['directory'], $module_permissions)) )
258
					{
259
						$tpl->set_var('ADM_CHECKED', ' checked="checked"');
260
					} else {
261
	 					$tpl->set_var('ADM_CHECKED', '');
262
					}
263

    
264
					$tpl->parse('tools_list', 'tools_module_list_block', true);
265
		        }
266
				$tmp_header = $addon['function'];
267
			}
268
		}
269
		$tpl->set_var('HEADER_TEMPLATE_FUNCTION', '<h6>'.$oLang->TEXT_TEMPLATE_PERMISSIONS.'</h6>');
270
		// Insert values into pages module list
271
		$tpl->set_block('show_cmd_permission', 'template_list_block', 'template_list');
272
		$sql  = 'SELECT * FROM `'.TABLE_PREFIX.'addons` ';
273
		$sql .= 'WHERE `type` = \'template\' ';
274
		$sql .= 'ORDER BY `function`,`name`';
275
		if(($res_pages = $database->query($sql)) && ($res_pages->numRows() > 0) )
276
		{
277
        	$tmp_header = '';
278
			while($addon = $res_pages->fetchRow(MYSQL_ASSOC))
279
			{
280
				if(file_exists(WB_PATH.'/templates/'.$addon['directory'].'/info.php'))
281
				{
282
                    if( $tmp_header != $addon['function'])
283
					{
284
						$tpl->set_var('TEMPLATE_FUNCTION', '<h6>'.strtoupper($addon['function']).'</h6>');
285
					} else {
286
						$tpl->set_var('TEMPLATE_FUNCTION', '');
287
					}
288
					$tpl->set_var('TMP_VALUE', $addon['directory']);
289
					$tpl->set_var('TMP_NAME', $addon['name']);
290
					if(!is_numeric(array_search($addon['directory'], $template_permissions)) )
291
					{
292
						$tpl->set_var('TMP_CHECKED', ' checked="checked"');
293
					} else {
294
	 					$tpl->set_var('TMP_CHECKED', '');
295
					}
296

    
297
					$tpl->parse('template_list', 'template_list_block', true);
298
		        }
299
				$tmp_header = $addon['function'];
300
			}
301
		}
302

    
303
// ------------------------
304
	// Parse template object
305
		$tpl->parse('main', 'main_block', false);
306
		$output = $tpl->finish($tpl->parse('output', 'page'));
307
		unset($tpl);
308
		return $output;
309
	}
(3-3/6)