rowID; //CALL TO API FOR Role Permissions $api_url = '/v2/role_access_permissions/role_id='.$role_id; $permissions = ioServer($api_url,''); //Decode Payload if (!empty($permissions)){$permissions = json_decode($permissions);}else{$permissions = null;} //CALL TO API FOR All Access Elements (no paging) $api_url = '/v2/access_elements/all='; $all_access_elements = ioServer($api_url,''); //Decode Payload if (!empty($all_access_elements)){$all_access_elements = json_decode($all_access_elements);}else{$all_access_elements = null;} // Create lookup array for existing permissions $permission_lookup = []; if (!empty($permissions)){ foreach ($permissions as $perm){ $permission_lookup[$perm->access_id] = $perm; } } //CALL TO API FOR User Role Assignments $api_url = '/v2/user_role_assignments/role_id='.$role_id; $assignments = ioServer($api_url,''); //Decode Payload if (!empty($assignments)){$assignments = json_decode($assignments);}else{$assignments = null;} //------------------------------ // Handle POST for inline edit //------------------------------ if (isset($_POST['save_permissions']) && $update_allowed_edit === 1) { // Update role info (name, description, status) $role_data = json_encode([ 'rowID' => $role_id, 'name' => $_POST['name'] ?? '', 'description' => $_POST['description'] ?? '', 'is_active' => $_POST['is_active'] ?? 1 ], JSON_UNESCAPED_UNICODE); ioServer('/v2/user_roles', $role_data); // Process permission updates $posted_permissions = $_POST['permissions'] ?? []; // For each access element, update or create permission foreach ($all_access_elements as $element) { $access_id = $element->rowID; $has_permission = isset($posted_permissions[$access_id]); $existing_permission = $permission_lookup[$access_id] ?? null; if ($has_permission) { // Get CRUD values $can_create = isset($posted_permissions[$access_id]['C']) ? 1 : 0; $can_read = isset($posted_permissions[$access_id]['R']) ? 1 : 0; $can_update = isset($posted_permissions[$access_id]['U']) ? 1 : 0; $can_delete = isset($posted_permissions[$access_id]['D']) ? 1 : 0; if ($existing_permission) { // Update existing permission $data = json_encode([ 'rowID' => $existing_permission->rowID, 'role_id' => $role_id, 'access_id' => $access_id, 'can_create' => $can_create, 'can_read' => $can_read, 'can_update' => $can_update, 'can_delete' => $can_delete ], JSON_UNESCAPED_UNICODE); } else { // Insert new permission $data = json_encode([ 'role_id' => $role_id, 'access_id' => $access_id, 'can_create' => $can_create, 'can_read' => $can_read, 'can_update' => $can_update, 'can_delete' => $can_delete ], JSON_UNESCAPED_UNICODE); } ioServer('/v2/role_access_permissions', $data); } else { // If no permission checkboxes selected but had existing permission, delete it if ($existing_permission) { $data = json_encode([ 'rowID' => $existing_permission->rowID, 'delete' => 'delete' ], JSON_UNESCAPED_UNICODE); ioServer('/v2/role_access_permissions', $data); } } } // Redirect to refresh header('Location: index.php?page=user_role&rowID='.$role_id.'&success_msg=2'); exit; } //------------------------------ //Variables //------------------------------ $status_text = ($responses->is_active == 1) ? ($enabled ?? 'Active') : ($disabled ?? 'Inactive'); $status_class = ($responses->is_active == 1) ? 'id1' : 'id0'; // Handle success messages if (isset($_GET['success_msg'])) { if ($_GET['success_msg'] == 1) { $success_msg = ($message_role_1 ?? 'Role created successfully'); } if ($_GET['success_msg'] == 2) { $success_msg = ($message_role_2 ?? 'Role updated successfully'); } if ($_GET['success_msg'] == 3) { $success_msg = ($message_role_3 ?? 'Role deleted successfully'); } } template_header(($user_role_title ?? 'User Role'), 'user_role', 'view'); $view = '
'.$success_msg.'