Portions created by the Initial Developer are Copyright (C) 2008-2016 the Initial Developer. All Rights Reserved. Contributor(s): Mark J Crane */ //includes require_once "root.php"; require_once "resources/require.php"; require_once "resources/check_auth.php"; //check permisions if (permission_exists('group_permissions') || if_group("superadmin")) { //access granted } else { echo "access denied"; exit; } //add multi-lingual support $language = new text; $text = $language->get(); //include the header $document['title'] = $text['title-group_permissions']; require_once "resources/header.php"; //include paging require_once "resources/paging.php"; //get the list of installed apps from the core and mod directories $config_list = glob($_SERVER["DOCUMENT_ROOT"] . PROJECT_PATH . "/*/*/app_config.php"); $x=0; foreach ($config_list as &$config_path) { include($config_path); $x++; } //if there are no permissions listed in v_group_permissions then set the default permissions $sql = "select count(*) from v_group_permissions "; $database = new database; $group_permission_count = $database->select($sql, null, 'column'); unset($sql); if ($group_permission_count == 0) { //no permissions found add the defaults foreach($apps as $app) { foreach ($app['permissions'] as $row) { foreach ($row['groups'] as $index => $group) { //add the record $array['group_permissions'][$index]['group_permission_uuid'] = uuid(); $array['group_permissions'][$index]['permission_name'] = $row['name']; $array['group_permissions'][$index]['group_name'] = $group; } if (is_array($array) && sizeof($array) != 0) { $database = new database; $database->app_name = 'groups'; $database->app_uuid = '2caf27b0-540a-43d5-bb9b-c9871a1e4f84'; $database->save($array); unset($array); } } } } //get the group uuid, lookup domain uuid (if any) and name $group_uuid = $_REQUEST['group_uuid']; $sql = "select domain_uuid, group_name from v_groups "; $sql .= "where group_uuid = :group_uuid "; $parameters['group_uuid'] = $group_uuid; $database = new database; $row = $database->select($sql, $parameters, 'row'); if (is_array($row) && sizeof($row) != 0) { $domain_uuid = $row["domain_uuid"]; $group_name = $row["group_name"]; } unset($sql, $parameters, $row); //get the permissions assigned to this group $sql = "select * from v_group_permissions "; $sql .= "where group_name = :group_name "; if (is_uuid($domain_uuid)) { $sql .= "and domain_uuid = :domain_uuid "; $parameters['domain_uuid'] = $domain_uuid; } else { $sql .= "and domain_uuid is null "; } $parameters['group_name'] = $group_name; $database = new database; $result = $database->select($sql, $parameters, 'all'); if (is_array($result) && sizeof($result) != 0) { foreach ($result as &$row) { $permissions_db[$row["permission_name"]] = "true"; } } unset($sql, $parameters, $result, $row); //show the db checklist //echo "
";
	//print_r($permissions_db);
	//echo "
"; //list all the permissions in the database foreach($apps as $app) { if (isset($app['permissions'])) foreach ($app['permissions'] as $row) { if ($permissions_db[$row['name']] == "true") { $permissions_db_checklist[$row['name']] = "true"; } else { $permissions_db_checklist[$row['name']] = "false"; } } } //show the db checklist //echo "
";
	//print_r($permissions_db_checklist);
	//echo "
"; //process the http post if (count($_POST)>0) { foreach($_POST['permissions_form'] as $permission) { $permissions_form[$permission] = "true"; } //list all the permissions foreach($apps as $app) { foreach ($app['permissions'] as $row) { if ($permissions_form[$row['name']] == "true") { $permissions_form_checklist[$row['name']] = "true"; } else { $permissions_form_checklist[$row['name']] = "false"; } } } //show the form db checklist //echo "
";
			//print_r($permissions_form_checklist);
			//echo "
"; //list all the permissions foreach($apps as $app) { foreach ($app['permissions'] as $row) { $permission = $row['name']; if ($permissions_db_checklist[$permission] == "true" && $permissions_form_checklist[$permission] == "true") { //matched do nothing } if ($permissions_db_checklist[$permission] == "false" && $permissions_form_checklist[$permission] == "false") { //matched do nothing } if ($permissions_db_checklist[$permission] == "true" && $permissions_form_checklist[$permission] == "false") { //delete the record $array['group_permissions'][0]['group_name'] = $group_name; $array['group_permissions'][0]['permission_name'] = $permission; $database = new database; $database->app_name = 'groups'; $database->app_uuid = '2caf27b0-540a-43d5-bb9b-c9871a1e4f84'; $database->delete($array); unset($array); foreach($apps as $app) { foreach ($app['permissions'] as $row) { if ($row['name'] == $permission) { $array['menu_item_groups'][0]['menu_item_uuid'] = $row['menu']['uuid']; $array['menu_item_groups'][0]['group_name'] = $group_name; $array['menu_item_groups'][0]['menu_uuid'] = 'b4750c3f-2a86-b00d-b7d0-345c14eca286'; $p = new permissions; $p->add('menu_item_group_delete', 'temp'); $database = new database; $database->app_name = 'groups'; $database->app_uuid = '2caf27b0-540a-43d5-bb9b-c9871a1e4f84'; $database->delete($array); unset($array); $p->delete('menu_item_group_delete', 'temp'); $sql = "select menu_item_parent_uuid from v_menu_items "; $sql .= "where menu_item_uuid = :menu_item_uuid "; $sql .= "and menu_uuid = 'b4750c3f-2a86-b00d-b7d0-345c14eca286' "; $parameters['menu_item_uuid'] = $row['menu']['uuid']; $database = new database; $menu_item_parent_uuid = $database->select($sql, $parameters, 'column'); unset($sql, $parameters); $sql = "select count(*) from v_menu_items as i, v_menu_item_groups as g "; $sql .= "where i.menu_item_uuid = g.menu_item_uuid "; $sql .= "and i.menu_uuid = 'b4750c3f-2a86-b00d-b7d0-345c14eca286' "; $sql .= "and i.menu_item_parent_uuid = :menu_item_parent_uuid "; $sql .= "and g.group_name = :group_name "; $parameters['menu_item_parent_uuid'] = $menu_item_parent_uuid; $parameters['group_name'] = $group_name; $database = new database; $result_count = $database->select($sql, $parameters, 'column'); if ($result_count == 0) { $array['menu_item_groups'][0]['menu_item_uuid'] = $menu_item_parent_uuid; $array['menu_item_groups'][0]['group_name'] = $group_name; $array['menu_item_groups'][0]['menu_uuid'] = 'b4750c3f-2a86-b00d-b7d0-345c14eca286'; $p = new permissions; $p->add('menu_item_group_delete', 'temp'); $database = new database; $database->app_name = 'groups'; $database->app_uuid = '2caf27b0-540a-43d5-bb9b-c9871a1e4f84'; $database->delete($array); unset($array); $p->delete('menu_item_group_delete', 'temp'); } unset($sql, $parameters, $result_count); } } } //set the permission to false in the permissions_db_checklist $permissions_db_checklist[$permission] = "false"; } if ($permissions_db_checklist[$permission] == "false" && $permissions_form_checklist[$permission] == "true") { //add the record $array['group_permissions'][0]['group_permission_uuid'] = uuid(); if (is_uuid($domain_uuid)) { $array['group_permissions'][0]['domain_uuid'] = $domain_uuid; } $array['group_permissions'][0]['permission_name'] = $permission; $array['group_permissions'][0]['group_name'] = $group_name; $database = new database; $database->app_name = 'groups'; $database->app_uuid = '2caf27b0-540a-43d5-bb9b-c9871a1e4f84'; $database->save($array); unset($array); foreach($apps as $app) { foreach ($app['permissions'] as $row) { if ($row['name'] == $permission) { $array['menu_item_groups'][0]['menu_uuid'] = 'b4750c3f-2a86-b00d-b7d0-345c14eca286'; $array['menu_item_groups'][0]['menu_item_uuid'] = $row['menu']['uuid']; $array['menu_item_groups'][0]['group_name'] = $group_name; $p = new permissions; $p->add('menu_item_group_add', 'temp'); $database = new database; $database->app_name = 'groups'; $database->app_uuid = '2caf27b0-540a-43d5-bb9b-c9871a1e4f84'; $database->save($array); unset($array); $p->delete('menu_item_group_add', 'temp'); $sql = "select menu_item_parent_uuid from v_menu_items "; $sql .= "where menu_item_uuid = :menu_item_uuid "; $sql .= "and menu_uuid = 'b4750c3f-2a86-b00d-b7d0-345c14eca286' "; $parameters['menu_item_uuid'] = $row['menu']['uuid']; $database = new database; $menu_item_parent_uuid = $database->select($sql, $parameters, 'column'); unset($sql, $parameters); $sql = "select count(*) from v_menu_item_groups "; $sql .= "where menu_item_uuid = :menu_item_uuid "; $sql .= "and group_name = :group_name "; $sql .= "and menu_uuid = 'b4750c3f-2a86-b00d-b7d0-345c14eca286' "; $parameters['menu_item_uuid'] = $menu_item_parent_uuid; $parameters['group_name'] = $group_name; $database = new database; $result_count = $database->select($sql, $parameters, 'column'); if ($result_count == 0) { $array['menu_item_groups'][0]['menu_uuid'] = 'b4750c3f-2a86-b00d-b7d0-345c14eca286'; $array['menu_item_groups'][0]['menu_item_uuid'] = $menu_item_parent_uuid; $array['menu_item_groups'][0]['group_name'] = $group_name; $p = new permissions; $p->add('menu_item_group_add', 'temp'); $database = new database; $database->app_name = 'groups'; $database->app_uuid = '2caf27b0-540a-43d5-bb9b-c9871a1e4f84'; $database->save($array); unset($array); $p->delete('menu_item_group_add', 'temp'); } unset($sql, $parameters, $result_count); } } } //set the permission to true in the permissions_db_checklist $permissions_db_checklist[$permission] = "true"; } } } message::add($text['message-update']); header("Location: groups.php"); return; } //copy group javascript echo "\n"; //prevent enter key submit on search field echo "\n"; //show the content echo "
\n"; echo "\n"; echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo "
"; echo " ".$text['header-group_permissions'].escape($group_name).""; echo "

"; echo "
\n"; echo " "; echo " \n"; echo " "; echo " \n"; echo "
\n"; echo " ".$text['description-group_permissions']."\n"; echo "
\n"; echo "

\n"; $c = 0; $row_style["0"] = "row_style0"; $row_style["1"] = "row_style1"; //list all the permissions foreach($apps as $app_index => $app) { //hide apps for which there are no permissions if (!is_array($app['permissions']) || sizeof($app['permissions']) == 0) { continue; } $app_name = $app['name']; $description = $app['description']['en-us']; //used to hide apps, even if permissions don't exist $array_apps_unique[] = str_replace(' ','_',strtolower($app['name'])); echo "
"; echo "".$app_name."
\n"; if ($description != '') { echo $description."
\n"; } echo "
"; echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; echo " \n"; foreach ($app['permissions'] as $permission_index => $row) { $checked = ($permissions_db_checklist[$row['name']] == "true") ? "checked='checked'" : null; echo "\n"; echo " \n"; echo " \n"; echo " \n"; echo "\n"; $c = ($c == 0) ? 1 : 0; //populate search/filter arrays $array_apps[] = str_replace(' ','_',strtolower($app['name'])); $array_apps_original[] = $app['name']; $array_permissions[] = $row['name']; $array_descriptions[] = str_replace('"','\"',$row['description']); $app_permissions[$app_index][] = "perm_".$app_index."_".$permission_index; } echo " \n"; echo " \n"; echo " \n"; echo "
".$text['label-permission_permissions']."".$text['label-permission_description']."
".escape($row['name'])."".escape($row['description'])." 
"; echo "
\n\n"; } //end foreach echo "
"; echo "
\n"; //check or uncheck all category checkboxes echo "\n"; //setting search script echo "\n"; //show the footer require_once "resources/footer.php"; ?>