| 1 | <?php
 | 
  
    | 2 | /**
 | 
  
    | 3 |  *
 | 
  
    | 4 |  * @category        admin
 | 
  
    | 5 |  * @package         start
 | 
  
    | 6 |  * @author          Ryan Djurovich, WebsiteBaker Project
 | 
  
    | 7 |  * @copyright       2009-2013, WebsiteBaker Org. e.V.
 | 
  
    | 8 |  * @link            http://www.websitebaker.org/
 | 
  
    | 9 |  * @license         http://www.gnu.org/licenses/gpl.html
 | 
  
    | 10 |  * @platform        WebsiteBaker 2.8.x
 | 
  
    | 11 |  * @requirements    PHP 5.2.2 and higher
 | 
  
    | 12 |  * @version         $Id: upgradePermissions.php 1907 2013-06-07 02:30:42Z Luisehahne $
 | 
  
    | 13 |  * @filesource      $HeadURL: svn://isteam.dynxs.de/wb-archiv/branches/2.8.x/wb/admin/groups/upgradePermissions.php $
 | 
  
    | 14 |  * @lastmodified    $Date: 2013-06-07 04:30:42 +0200 (Fri, 07 Jun 2013) $
 | 
  
    | 15 |  *
 | 
  
    | 16 |  */
 | 
  
    | 17 | 
 | 
  
    | 18 | /* -------------------------------------------------------- */
 | 
  
    | 19 | // Must include code to stop this file being accessed directly
 | 
  
    | 20 | if(!defined('WB_URL')) {
 | 
  
    | 21 | 	require_once(dirname(dirname(dirname(__FILE__))).'/framework/globalExceptionHandler.php');
 | 
  
    | 22 | 	throw new IllegalFileException();
 | 
  
    | 23 | }
 | 
  
    | 24 | /* -------------------------------------------------------- */
 | 
  
    | 25 | 
 | 
  
    | 26 | /**
 | 
  
    | 27 |  *
 | 
  
    | 28 |  *
 | 
  
    | 29 |  * @access public getSystemDefaultPermissions()
 | 
  
    | 30 |  * @param none
 | 
  
    | 31 |  * @return array System Default Permissions
 | 
  
    | 32 |  *
 | 
  
    | 33 |  */
 | 
  
    | 34 | function getSystemDefaultPermissions ()
 | 
  
    | 35 | {
 | 
  
    | 36 | 	$retVal = array(
 | 
  
    | 37 | 		'access' => 0,
 | 
  
    | 38 | 		'addons' => 0,
 | 
  
    | 39 | 		'admintools' => 0,
 | 
  
    | 40 | 		'admintools_view' => 0,
 | 
  
    | 41 | 		'groups' => 0,
 | 
  
    | 42 | 		'groups_add' => 0,
 | 
  
    | 43 | 		'groups_delete' => 0,
 | 
  
    | 44 | 		'groups_modify' => 0,
 | 
  
    | 45 | 		'groups_view' => 0,
 | 
  
    | 46 | 		'languages' => 0,
 | 
  
    | 47 | 		'languages_install' => 0,
 | 
  
    | 48 | 		'languages_uninstall' => 0,
 | 
  
    | 49 | 		'languages_view' => 0,
 | 
  
    | 50 | 		'media' => 0,
 | 
  
    | 51 | 		'media_create' => 0,
 | 
  
    | 52 | 		'media_delete' => 0,
 | 
  
    | 53 | 		'media_rename' => 0,
 | 
  
    | 54 | 		'media_upload' => 0,
 | 
  
    | 55 | 		'media_view' => 0,
 | 
  
    | 56 | 		'modules' => 0,
 | 
  
    | 57 | 		'modules_install' => 0,
 | 
  
    | 58 | 		'modules_uninstall' => 0,
 | 
  
    | 59 | 		'modules_view' => 0,
 | 
  
    | 60 |         'modules_advanced' => 0,
 | 
  
    | 61 | 		'pages' => 0,
 | 
  
    | 62 | 		'pages_add' => 0,
 | 
  
    | 63 | 		'pages_add_l0' => 0,
 | 
  
    | 64 | 		'pages_delete' => 0,
 | 
  
    | 65 | 		'pages_intro' => 0,
 | 
  
    | 66 | 		'pages_modify' => 0,
 | 
  
    | 67 | 		'pages_settings' => 0,
 | 
  
    | 68 | 		'pages_view' => 0,
 | 
  
    | 69 | 		'preferences' => 1,
 | 
  
    | 70 | 		'preferences_view' => 1,
 | 
  
    | 71 | 		'settings' => 0,
 | 
  
    | 72 | 		'settings_basic' => 0,
 | 
  
    | 73 | 		'settings_advanced' => 0,
 | 
  
    | 74 | 		'settings_view' => 0,
 | 
  
    | 75 | 		'templates' => 0,
 | 
  
    | 76 | 		'templates_install' => 0,
 | 
  
    | 77 | 		'templates_uninstall' => 0,
 | 
  
    | 78 | 		'templates_view' => 0,
 | 
  
    | 79 | 		'users' => 0,
 | 
  
    | 80 | 		'users_add' => 0,
 | 
  
    | 81 | 		'users_delete' => 0,
 | 
  
    | 82 | 		'users_modify' => 0,
 | 
  
    | 83 | 		'users_view' => 0
 | 
  
    | 84 | 	);
 | 
  
    | 85 | 	return $retVal;
 | 
  
    | 86 | }
 | 
  
    | 87 | 
 | 
  
    | 88 | /* *****************************************************************************
 | 
  
    | 89 |  * Prepare $module_permissions for workout
 | 
  
    | 90 |  * @access public
 | 
  
    | 91 |  * @param object $admin: admin-object
 | 
  
    | 92 |  * @return array:
 | 
  
    | 93 |  */
 | 
  
    | 94 | 	function set_module_permissions ($admin)
 | 
  
    | 95 | 	{
 | 
  
    | 96 | 		// Get template permissions
 | 
  
    | 97 | 		$modules = array('');
 | 
  
    | 98 | 		$dirs = scan_current_dir(WB_PATH.'/modules');
 | 
  
    | 99 | 
 | 
  
    | 100 | 		if(is_array($admin->get_post('module_permissions')))
 | 
  
    | 101 | 		{
 | 
  
    | 102 | 			$modules = $admin->get_post('module_permissions');
 | 
  
    | 103 | 		}
 | 
  
    | 104 | // foldername validation
 | 
  
    | 105 |  		array_walk($dirs['path'],'check_dir' );
 | 
  
    | 106 | // delete empty items
 | 
  
    | 107 | 		foreach($dirs['path'] AS $key=>$val) {
 | 
  
    | 108 | 			if(empty($dirs['path'][$key])) { unset($dirs['path'][$key]); }
 | 
  
    | 109 | 		}
 | 
  
    | 110 | // list of unckecked modules directories
 | 
  
    | 111 | 		$modules = array_diff ( $dirs['path'], $modules );
 | 
  
    | 112 | // reindex
 | 
  
    | 113 | 		$modules = array_merge($modules);
 | 
  
    | 114 | 		return $modules;
 | 
  
    | 115 | 	}
 | 
  
    | 116 | 
 | 
  
    | 117 | /* *****************************************************************************
 | 
  
    | 118 |  * Prepare $template_permissions for workout
 | 
  
    | 119 |  * @access public
 | 
  
    | 120 |  * @param object $admin: admin-object
 | 
  
    | 121 |  * @return array:
 | 
  
    | 122 |  */
 | 
  
    | 123 | 	function set_template_permissions ($admin)
 | 
  
    | 124 | 	{
 | 
  
    | 125 | 		// Get template permissions
 | 
  
    | 126 | 		$templates = array();
 | 
  
    | 127 | 		$dirs = scan_current_dir(WB_PATH.'/templates');
 | 
  
    | 128 | 		if(is_array($admin->get_post('template_permissions')))
 | 
  
    | 129 | 		{
 | 
  
    | 130 | 			foreach($admin->get_post('template_permissions') AS $selected_name)
 | 
  
    | 131 | 			{
 | 
  
    | 132 | 				if( file_exists( WB_PATH.'/templates/'.$selected_name.'/info.php') && in_array ($selected_name, $dirs['path']) )
 | 
  
    | 133 | 				{
 | 
  
    | 134 | 					$templates[] = $selected_name;
 | 
  
    | 135 | 				}
 | 
  
    | 136 | 			}
 | 
  
    | 137 | 		}
 | 
  
    | 138 | 		$templates = (sizeof($templates) > 0) ? array_diff($dirs['path'], $templates) : $dirs['path'];
 | 
  
    | 139 | 		// return $template_permissions = implode(',', $templates);
 | 
  
    | 140 | 		return $templates;
 | 
  
    | 141 | 	}
 | 
  
    | 142 | 
 | 
  
    | 143 | /* *****************************************************************************
 | 
  
    | 144 |  * Prepare $system_permissions for save
 | 
  
    | 145 |  * @access public
 | 
  
    | 146 |  * @param
 | 
  
    | 147 |  * @return string: parsed HTML-content
 | 
  
    | 148 |  */
 | 
  
    | 149 | 	function set_system_permissions ($system_permissions = array())
 | 
  
    | 150 | 	{
 | 
  
    | 151 | 		// Implode system permissions
 | 
  
    | 152 | 		$imploded_system_permissions = '';
 | 
  
    | 153 | 		$system_permissions = !is_array($system_permissions) ? array() : $system_permissions;
 | 
  
    | 154 | 		foreach($system_permissions AS $key => $value)
 | 
  
    | 155 | 		{
 | 
  
    | 156 | 			if($value == true)
 | 
  
    | 157 | 			{
 | 
  
    | 158 | 				if($imploded_system_permissions == '')
 | 
  
    | 159 | 				{
 | 
  
    | 160 | 					$imploded_system_permissions = $key;
 | 
  
    | 161 | 				} else {
 | 
  
    | 162 | 					$imploded_system_permissions .= ','.$key;
 | 
  
    | 163 | 				}
 | 
  
    | 164 | 			}
 | 
  
    | 165 | 		}
 | 
  
    | 166 | 		return $imploded_system_permissions;
 | 
  
    | 167 | 	}
 | 
  
    | 168 | 
 | 
  
    | 169 | /* *****************************************************************************
 | 
  
    | 170 |  * array_walk callback functions
 | 
  
    | 171 |  */
 | 
  
    | 172 | 
 | 
  
    | 173 | 	if(!function_exists('check_dir'))
 | 
  
    | 174 | 	{
 | 
  
    | 175 | 		function check_dir(&$val, $key ) {
 | 
  
    | 176 | 			$RetVal = null;
 | 
  
    | 177 | 			$aArray[$key] = $val;
 | 
  
    | 178 | 			$RetVal = array_slice ($aArray,!preg_match('/^[a-z]{1}[a-z][a-z_\-0-9]{2,}$/i', $val ));
 | 
  
    | 179 | 			$RetVal = each ($RetVal);
 | 
  
    | 180 | 			$val = $RetVal['value'];
 | 
  
    | 181 | 		}
 | 
  
    | 182 | 	}
 | 
  
    | 183 | 
 | 
  
    | 184 | 
 | 
  
    | 185 | 	if(!function_exists('remove_underline')){
 | 
  
    | 186 | 		function remove_underline(& $val, $key, $vars = array())
 | 
  
    | 187 | 		{
 | 
  
    | 188 | 			$val = rtrim($val, ',');
 | 
  
    | 189 | 			$vars = explode ( '_', $val);
 | 
  
    | 190 | 			$val = $vars[0];
 | 
  
    | 191 | 		}
 | 
  
    | 192 | 	}
 | 
  
    | 193 | 
 | 
  
    | 194 | 	if(!function_exists('addons')){
 | 
  
    | 195 | 		function addons(& $val, $key, $vars = '')
 | 
  
    | 196 | 		{
 | 
  
    | 197 | 			$val = rtrim($val, '_');
 | 
  
    | 198 |             $val = ($val == 'modules_view') || ($val == 'templates_view') || ($val == 'languages_view') ? 'addons' : $val;
 | 
  
    | 199 | 		}
 | 
  
    | 200 | 	}
 | 
  
    | 201 | 
 | 
  
    | 202 | 	if(!function_exists('settings')){
 | 
  
    | 203 | 		function settings(& $val, $key, $vars = '')
 | 
  
    | 204 | 		{
 | 
  
    | 205 |             $val = ($val == 'settings_view') ? 'settings_basic' : $val;
 | 
  
    | 206 | //            $val  = ($val == 'settings_basic') || ($val == 'settings_advanced') ? 'settings_view' : $val1;
 | 
  
    | 207 | 		}
 | 
  
    | 208 | 	}
 | 
  
    | 209 | 
 | 
  
    | 210 | 	if(!function_exists('access')){
 | 
  
    | 211 | 		function access(& $val, $key, $vars = '')
 | 
  
    | 212 | 		{
 | 
  
    | 213 |             $val = ($val == 'groups_view') || ($val == 'users_view') ? 'access' : $val;
 | 
  
    | 214 | 		}
 | 
  
    | 215 | 	}
 | 
  
    | 216 | 	function convertArrayToString ($val=null)
 | 
  
    | 217 | 	{
 | 
  
    | 218 | 		$settings = '';
 | 
  
    | 219 | 		if(is_array($val))
 | 
  
    | 220 | 		{
 | 
  
    | 221 | 			foreach( $val as $key => $value )
 | 
  
    | 222 | 			{
 | 
  
    | 223 | 				$settings .= trim($value.',','\'');
 | 
  
    | 224 | 			}
 | 
  
    | 225 | 		} else {
 | 
  
    | 226 | 			$settings = $val;
 | 
  
    | 227 | 		}
 | 
  
    | 228 | 		return trim($settings,',');
 | 
  
    | 229 | 	}
 | 
  
    | 230 | 
 | 
  
    | 231 | 	function convertKeyArrayToString ($val=null)
 | 
  
    | 232 | 	{
 | 
  
    | 233 | 		$settings = '';
 | 
  
    | 234 | 		if(is_array($val))
 | 
  
    | 235 | 		{
 | 
  
    | 236 | 			foreach( $val as $key => $value )
 | 
  
    | 237 | 			{
 | 
  
    | 238 | 				$settings .= trim($key.',','\'');
 | 
  
    | 239 | 			}
 | 
  
    | 240 | 		} else {
 | 
  
    | 241 | 			$settings = $val;
 | 
  
    | 242 | 		}
 | 
  
    | 243 | 		return trim($settings,',');
 | 
  
    | 244 | 	}
 | 
  
    | 245 | 
 | 
  
    | 246 | // ---------------------------------------
 | 
  
    | 247 | 	function convertStringToArray ($val=null)
 | 
  
    | 248 | 	{
 | 
  
    | 249 | 		$array = array();
 | 
  
    | 250 | 		$settings = '';
 | 
  
    | 251 | 		if(!is_array($val)){
 | 
  
    | 252 | 			$settings = explode(',', $val);
 | 
  
    | 253 | 			foreach( $settings as $value )
 | 
  
    | 254 | 			{
 | 
  
    | 255 | 				$array[] = $value;
 | 
  
    | 256 | 			}
 | 
  
    | 257 | 			} else {
 | 
  
    | 258 | 				$array = $val;
 | 
  
    | 259 | 			}
 | 
  
    | 260 | 		return $array;
 | 
  
    | 261 | 	}
 | 
  
    | 262 | // ---------------------------------------
 | 
  
    | 263 | 	function convertStringToKeyArray ($val=null)
 | 
  
    | 264 | 	{
 | 
  
    | 265 | 		$array = array();
 | 
  
    | 266 | 		if(!is_array($val)){
 | 
  
    | 267 | 			$settings = explode(',', $val);
 | 
  
    | 268 | 			foreach( $settings as $value )
 | 
  
    | 269 | 			{
 | 
  
    | 270 | 				$array[$value] = 1;
 | 
  
    | 271 | 			}
 | 
  
    | 272 | 			} else {
 | 
  
    | 273 | 				$array = $val;
 | 
  
    | 274 | 			}
 | 
  
    | 275 | 		return $array;
 | 
  
    | 276 | 	}
 | 
  
    | 277 | 
 | 
  
    | 278 | // ---------------------------------------
 | 
  
    | 279 | // workout to upgrade the groups system_permissions
 | 
  
    | 280 | /**
 | 
  
    | 281 |  * get_system_permissions()
 | 
  
    | 282 |  *
 | 
  
    | 283 |  * @return
 | 
  
    | 284 |  */
 | 
  
    | 285 |  function get_system_permissions ($admin, $SystemPermissions = null )
 | 
  
    | 286 | {
 | 
  
    | 287 | 	$retVal = null;
 | 
  
    | 288 | 	$aValidAll = array();
 | 
  
    | 289 | 	$aValidView = array();
 | 
  
    | 290 | 	$aValidBlock = array();
 | 
  
    | 291 | 	$aValidAddons = array();
 | 
  
    | 292 | 	$aValidAccess = array();
 | 
  
    | 293 | 	$aValidSettings = array();
 | 
  
    | 294 | 	$aPermissions = array();
 | 
  
    | 295 | 	$sValueType = '';
 | 
  
    | 296 | 	$sTempPermissions = '';
 | 
  
    | 297 | 	if($SystemPermissions==null) { return false; }
 | 
  
    | 298 | 
 | 
  
    | 299 | // be sure is the right string for working inside
 | 
  
    | 300 | 	if(is_string($SystemPermissions)) {
 | 
  
    | 301 | 		$SystemPermissions = convertStringToKeyArray($SystemPermissions);
 | 
  
    | 302 | 	}
 | 
  
    | 303 | 	if(is_array($SystemPermissions)&& sizeof($SystemPermissions)>0) {
 | 
  
    | 304 | 		$aPermissions = convertStringToKeyArray($SystemPermissions);
 | 
  
    | 305 | 		$sTempPermissions = convertKeyArrayToString($aPermissions).',';
 | 
  
    | 306 | 	}
 | 
  
    | 307 | // workout setting preferences
 | 
  
    | 308 | 	if($admin->is_group_match('preferences_view',$sTempPermissions))
 | 
  
    | 309 | 	{
 | 
  
    | 310 | 		$aPermissions[]    = 'preferences';
 | 
  
    | 311 | 		$sTempPermissions .= 'preferences,';
 | 
  
    | 312 | 	}
 | 
  
    | 313 | // workout setting admintools
 | 
  
    | 314 | 	if($admin->is_group_match('admintools_view',$sTempPermissions))
 | 
  
    | 315 | 	{
 | 
  
    | 316 | 		$aPermissions[]    = 'admintools';
 | 
  
    | 317 | 		$sTempPermissions .= 'admintools,';
 | 
  
    | 318 | 	}
 | 
  
    | 319 | // search all data with *_view, if not found delete the permission block
 | 
  
    | 320 | 	$patternView = '/[a-z]+_view/i';
 | 
  
    | 321 | 	if(preg_match_all($patternView, $sTempPermissions, $array ))
 | 
  
    | 322 | 	{
 | 
  
    | 323 | // build new Permissions kist, remove invaild entries, needed to disable checknoxes
 | 
  
    | 324 | 		array_walk($array[0], 'remove_underline');
 | 
  
    | 325 | 		$sValueType = array_unique($array[0]);
 | 
  
    | 326 | 		foreach($sValueType as $key => $view )
 | 
  
    | 327 | 		{
 | 
  
    | 328 | //build new permission string
 | 
  
    | 329 | 		$regex = "/(($view)[a-z_0-9]*)\,/i";
 | 
  
    | 330 | 		preg_match_all ($regex, $sTempPermissions, $aMatch);
 | 
  
    | 331 | 		$aValidBlock = $aMatch[1];
 | 
  
    | 332 | 		$aValidAll = array_merge($aValidAll,$aValidBlock);
 | 
  
    | 333 | 		}
 | 
  
    | 334 | // set all missing/needed entries
 | 
  
    | 335 | 		$aValidAddons = $aValidAll;
 | 
  
    | 336 | 		$aValidAccess = $aValidAll;
 | 
  
    | 337 | 		$aValidSettings = $aValidAll;
 | 
  
    | 338 | 		array_walk($aValidAddons,   'addons');
 | 
  
    | 339 | 		array_walk($aValidAccess,   'access');
 | 
  
    | 340 | 		array_walk($aValidSettings, 'settings');
 | 
  
    | 341 | // merge all arays and set to POST ready for save and change to advanced modus
 | 
  
    | 342 | 		$aSystem = array_merge_recursive( $sValueType, $aValidAll, $aValidBlock, $aValidSettings, $aValidAddons, $aValidAccess);
 | 
  
    | 343 | 		$retVal = array_unique($aSystem);
 | 
  
    | 344 | 		natsort($retVal);
 | 
  
    | 345 | // set correct index key
 | 
  
    | 346 | 		$retVal = array_merge($retVal);
 | 
  
    | 347 | // convert to right format
 | 
  
    | 348 | 		$retVal = array_fill_keys($retVal, 1);
 | 
  
    | 349 | 	}
 | 
  
    | 350 | 
 | 
  
    | 351 | 	$_POST['system_permissions'] = $retVal;
 | 
  
    | 352 | 	return $retVal;
 | 
  
    | 353 | }
 | 
  
    | 354 | // ---------------------------------------
 | 
  
    | 355 | //print '<pre style="text-align: left;"><strong>function '.__FUNCTION__.'( '.''.' );</strong>  basename: '.basename(__FILE__).'  line: '.__LINE__.' -> <br />';
 | 
  
    | 356 | //print_r( $_POST ); print '</pre>';
 | 
  
    | 357 | 
 | 
  
    | 358 | /**
 | 
  
    | 359 |  * setSystemCheckboxes()
 | 
  
    | 360 |  *
 | 
  
    | 361 |  * @param mixed $tpl
 | 
  
    | 362 |  * @param mixed $permissions
 | 
  
    | 363 |  * @return
 | 
  
    | 364 |  */
 | 
  
    | 365 | function setSystemCheckboxes( &$tpl, $admin, $permissions = null )
 | 
  
    | 366 | {
 | 
  
    | 367 | 	$array = array();
 | 
  
    | 368 | 	$aSytemArray = getSystemDefaultPermissions();
 | 
  
    | 369 | 	if(!is_array($permissions))
 | 
  
    | 370 | 	{
 | 
  
    | 371 | 		$array = convertStringToKeyArray($permissions);
 | 
  
    | 372 | 	} else {
 | 
  
    | 373 | 		$array = $permissions;
 | 
  
    | 374 | 	}
 | 
  
    | 375 | 
 | 
  
    | 376 | 	if ( true == (isset( $_POST['advanced_action']) && (( $_POST['advanced_action'] == 'no') || strpos( $_POST['advanced_action'], ">>") > 0 ) ) )
 | 
  
    | 377 | 	{
 | 
  
    | 378 | 	// set adbanced modus
 | 
  
    | 379 | 		$tpl->parse('hidden_advanced_permission_list', '', true);
 | 
  
    | 380 | 		$array = !is_array($array) ? array() : $array;
 | 
  
    | 381 | 		$aPermissions = isset($_POST['system_permissions']) ? $_POST['system_permissions'] : array();
 | 
  
    | 382 |  		foreach($array AS $key => $value)
 | 
  
    | 383 | 		{
 | 
  
    | 384 | 	//		if(strpos($key,'_view')) { continue; }
 | 
  
    | 385 | 		$checked='';
 | 
  
    | 386 | 			if(array_key_exists($key, $aPermissions)) { 
 | 
  
    | 387 | 			 continue; 
 | 
  
    | 388 |              }
 | 
  
    | 389 | 			$tpl->set_var('SYS_NAME', "system_permissions[$key]" );
 | 
  
    | 390 | 			$tpl->set_var('SYS_VALUE', 1 );
 | 
  
    | 391 | 			$tpl->parse('hidden_advanced_permission_list', 'show_cmd_hidden_advanced_permission_list_block', true);
 | 
  
    | 392 | 		}
 | 
  
    | 393 | 
 | 
  
    | 394 | 	} else {
 | 
  
    | 395 | 	// set basic modus
 | 
  
    | 396 | 		$tpl->set_var('SYS_NAME', "none" );
 | 
  
    | 397 | 		$tpl->set_var('SYS_VALUE', '' );
 | 
  
    | 398 | 		$tpl->parse('hidden_permission_list', 'show_cmd_hidden_permission_list_block', true);
 | 
  
    | 399 | 		$array = !is_array($array) ? array() : $array;
 | 
  
    | 400 | 		foreach($array AS $key => $value)
 | 
  
    | 401 | 		{
 | 
  
    | 402 | 		$checked='';
 | 
  
    | 403 | 			if(strpos($key,'_view')) { 
 | 
  
    | 404 | 			 continue; 
 | 
  
    | 405 |              }
 | 
  
    | 406 | 			$tpl->set_var('SYS_NAME', "system_permissions[$key]" );
 | 
  
    | 407 | 			$tpl->set_var('SYS_VALUE', 1 );
 | 
  
    | 408 | 			$tpl->parse('hidden_permission_list', 'show_cmd_hidden_permission_list_block', true);
 | 
  
    | 409 | 		}
 | 
  
    | 410 | 	}
 | 
  
    | 411 | 	reset($array);
 | 
  
    | 412 | 	// set checked
 | 
  
    | 413 | 	foreach($array AS $key => $value)
 | 
  
    | 414 | 	{
 | 
  
    | 415 | 		$checked='';
 | 
  
    | 416 |         if( $key != '' )
 | 
  
    | 417 | 		{
 | 
  
    | 418 |             $checked = 'checked="checked"';
 | 
  
    | 419 | 		}
 | 
  
    | 420 | 		$tpl->set_var('VALUE', 1);
 | 
  
    | 421 | 		$tpl->set_var(($key.'_checked'), $checked);
 | 
  
    | 422 | 	}
 | 
  
    | 423 | 
 | 
  
    | 424 | // clean html
 | 
  
    | 425 |     $result = array_diff_key($aSytemArray, $array);
 | 
  
    | 426 | 	foreach($result AS $key => $value)
 | 
  
    | 427 | 	{
 | 
  
    | 428 | 		$tpl->set_var('VALUE', 1);
 | 
  
    | 429 | 		$tpl->set_var(($key.'_checked'), '');
 | 
  
    | 430 | 	}
 | 
  
    | 431 | 
 | 
  
    | 432 | 	return $array;
 | 
  
    | 433 | }
 | 
  
    | 434 | 
 | 
  
    | 435 | /**
 | 
  
    | 436 |  * upgrade_group_system_permissions()
 | 
  
    | 437 |  *
 | 
  
    | 438 |  * @return void
 | 
  
    | 439 |  */
 | 
  
    | 440 | function upgrade_group_system_permissions ( )
 | 
  
    | 441 | {
 | 
  
    | 442 | 	global $admin;
 | 
  
    | 443 | 	$database = WbDatabase::getInstance();
 | 
  
    | 444 | 	$aGroups = array();
 | 
  
    | 445 | 	$sTempPermissions = '';
 | 
  
    | 446 | 	$aTempPermissions = array();
 | 
  
    | 447 | 	$aAllowedPermissions = array(
 | 
  
    | 448 | 	'admintools','groups','languages','media','modules','pages','preferences','settings','templates','users'
 | 
  
    | 449 | 	);
 | 
  
    | 450 | 	$aPermissions = $aMatches = array();
 | 
  
    | 451 | 	$sql  = 'SELECT `group_id`,`name`,`system_permissions` FROM `'.TABLE_PREFIX.'groups` ';
 | 
  
    | 452 | //	$sql .= 'WHERE `group_id` != 1 ';
 | 
  
    | 453 | 	$sql .= 'ORDER BY `group_id` ';
 | 
  
    | 454 | 	if($oRes = $database->query($sql) )
 | 
  
    | 455 | 	{
 | 
  
    | 456 | 		while( $aPage = $oRes->fetchRow(MYSQL_ASSOC) )
 | 
  
    | 457 | 		{
 | 
  
    | 458 | 			$sTempPermissions = convertKeyArrayToString (getSystemDefaultPermissions()).',';
 | 
  
    | 459 | 			$sPermissions = $aPage['group_id']!= 1 ? $aPage['system_permissions'].',' : $sTempPermissions;
 | 
  
    | 460 | // check if old groups system_permissions format, there was no prferences
 | 
  
    | 461 | 			if( !preg_match_all( '/(preferences[a-z_0-9]*)\,/iU', $sPermissions, $aMatches) )
 | 
  
    | 462 | 			{
 | 
  
    | 463 | // fetch all known permission entries to set the permission_view
 | 
  
    | 464 | 				foreach($aAllowedPermissions as $PermissionFound)
 | 
  
    | 465 | 				{
 | 
  
    | 466 | 					$aMatches = array();
 | 
  
    | 467 | 					if( preg_match_all( "/(($PermissionFound)[a-z_0-9]*)\,/i", $sPermissions, $aMatches) )
 | 
  
    | 468 | 					{
 | 
  
    | 469 | 						$val1 = $admin->is_group_match("$PermissionFound".'_view',$sPermissions);
 | 
  
    | 470 | 						$val2 = $admin->is_group_match("$PermissionFound",$sPermissions);
 | 
  
    | 471 | 						if(!$val1 && $val2)
 | 
  
    | 472 | 						{
 | 
  
    | 473 | 							$sPermissions .= $PermissionFound.'_view,';
 | 
  
    | 474 | 						}
 | 
  
    | 475 | 					}
 | 
  
    | 476 | 					$aTempPermissions = explode(',',$sPermissions);
 | 
  
    | 477 | 					if(!$admin->is_group_match('preferences_view',$sPermissions))
 | 
  
    | 478 | 					{
 | 
  
    | 479 | 						$sPermissions .= 'preferences,preferences_view,';
 | 
  
    | 480 | 					}
 | 
  
    | 481 | 				}
 | 
  
    | 482 | 			}
 | 
  
    | 483 | // upgrade all groups system permission
 | 
  
    | 484 | 			$aTempPermissions = convertStringToArray(trim($sPermissions,','));
 | 
  
    | 485 | 			natsort($aTempPermissions);
 | 
  
    | 486 | // reindex
 | 
  
    | 487 | 			$aTempPermissions = array_merge(($aTempPermissions));
 | 
  
    | 488 | 			$retVal = array_fill_keys($aTempPermissions, 1);
 | 
  
    | 489 | 			$aPermissions[$aPage['name']] = get_system_permissions($admin, $retVal);
 | 
  
    | 490 | 			$aGroups[$aPage['name']] = convertKeyArrayToString($aPermissions[$aPage['name']]);
 | 
  
    | 491 | // and update DB
 | 
  
    | 492 | 			$sql  = 'UPDATE `'.TABLE_PREFIX.'groups` SET ';
 | 
  
    | 493 | 			$sql .= '`system_permissions` =\''.$aGroups[$aPage['name']].'\' ';
 | 
  
    | 494 | 			$sql .= 'WHERE `name` = \''.$aPage['name'].'\' ';
 | 
  
    | 495 | 			if(!$database->query($sql) )
 | 
  
    | 496 | 			{
 | 
  
    | 497 | 			}
 | 
  
    | 498 | 		}
 | 
  
    | 499 | 	}
 | 
  
    | 500 | 	return !$database->is_error();
 | 
  
    | 501 | }
 |