<?php // // Copyright (C) 2004-2011 by Autodesk, Inc. // // This library is free software; you can redistribute it and/or // modify it under the terms of version 2.1 of the GNU Lesser // General Public License as published by the Free Software Foundation. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // try { include 'resizableadmin.php'; LoadSessionVars(); // Did the user logout? CheckForLogout(); // Are we cancelling? If so, there is nothing to do. CheckForCancel( 'grouprolemanagement.php' ); // Are we switching to another page? CheckForPageSwitch(); // Define Local Vars $menuCategory = ASSIGN_ROLES_MENU_ITEM; $menuItem = ASSIGN_ROLES_MENU_ITEM; $pageTitle = ASSIGN_ROLES_TITLE; $helpPage = 'HelpDocs/managing_roles.htm'; $pageName = 'GroupRoleManagementPage'; $formName = 'GroupRoleManagementForm'; $homePage = NULL; $selectedGroupID = 'SelectedGroup'; $highlightedGroup = NULL; $adminOnID = 'AdminOn'; $adminOnList = array(); $authorOnID = 'AuthorOn'; $authorOnList = array(); $groupUpdateID = 'GroupsToUpdate'; $groupUpdateList = array(); $groupRolesTable = array(); $confirmationMsg = ""; $errorMsg = ""; $pageSize = 25; $firstPageIndex = -1; $lastPageIndex = -1; $currPage = 1; $groups = array(); $groupCount = 0; $sortDirection= DEFAULT_SORT_DIRECTION; $sortDirectionID = SORT_DIRECTION_ID; // Get submitted data if ( !FirstTimeHere( $pageName ) ) { $groupUpdateList = array_key_exists( $groupUpdateID, $_POST ) ? $_POST[ $groupUpdateID ] : array(); $adminOnList = array_key_exists( $adminOnID, $_POST ) ? $_POST[ $adminOnID ] : array(); $authorOnList = array_key_exists( $authorOnID, $_POST ) ? $_POST[ $authorOnID ] : array(); } if ( array_key_exists( $sortDirectionID, $_GET ) ) $sortDirection = $_GET[$sortDirectionID]; else if ( array_key_exists( $sortDirectionID, $_POST ) ) $sortDirection = $_POST[$sortDirectionID]; SetGroupSortDirection( $sortDirection ); if ( array_key_exists( $selectedGroupID, $_GET ) ) $highlightedGroup = $_GET[$selectedGroupID]; // Save data, if requested. if ( CheckForSaveData() ) { // Update admin role. $groupsToGrant = new MgStringCollection(); $groupsToRevoke = new MgStringCollection(); $roleToUpdate = new MgStringCollection(); $roleToUpdate->Add( ADMIN_ROLE ); foreach( $groupUpdateList as $groupName ) { if ( in_array( $groupName, $adminOnList ) ) $groupsToGrant->Add( $groupName ) ; else $groupsToRevoke->Add( $groupName ); } $site->GrantRoleMembershipsToGroups( $roleToUpdate, $groupsToGrant ); $site->RevokeRoleMembershipsFromGroups( $roleToUpdate, $groupsToRevoke ); $confirmationMsg = $confSuccessfulRoleUpdate; // Update author role. $groupsToGrant->Clear(); $groupsToRevoke->Clear(); $roleToUpdate->SetItem( 0, AUTHOR_ROLE ); foreach( $groupUpdateList as $groupName ) { if ( in_array( $groupName, $authorOnList ) ) $groupsToGrant->Add( $groupName ) ; else $groupsToRevoke->Add( $groupName ); } $site->GrantRoleMembershipsToGroups( $roleToUpdate, $groupsToGrant ); $site->RevokeRoleMembershipsFromGroups( $roleToUpdate, $groupsToRevoke ); $confirmationMsg = $confSuccessfulRoleUpdate; } } catch ( MgException $e ) { CheckForFatalMgException( $e ); $errorMsg = $e->GetExceptionMessage(); } catch ( Exception $e ) { $errorMsg = $e->getMessage(); } // Load the display table. try { $groups = GetGroups(); $groupCount = sizeof( $groups ); $currPage = GetPageNumber( $groups, $selectedGroup, $pageSize ); GetPageRange( $currPage, $groupCount, $pageSize, $firstPageIndex, $lastPageIndex ); LoadGroupRolesTable( $groupRolesTable, $firstPageIndex, $lastPageIndex ); if ( !array_key_exists( $selectedGroup, $groupRolesTable ) && $groupCount > 0 ) $selectedGroup = $groups[ $firstPageIndex ]; // If not our first time here, use the submitted data if ( !FirstTimeHere( $pageName ) ) { foreach ( $groupRolesTable as $groupName => $val ) { if ( in_array( $groupName, $groupUpdateList ) ) { $val->adminOn = in_array( $groupName, $adminOnList ) ? true : false; $val->authorOn = in_array( $groupName, $authorOnList ) ? true : false; } } } } catch ( MgException $e ) { CheckForFatalMgException( $e ); if ( empty( $errorMsg ) ) $errorMsg = $e->GetExceptionMessage(); } catch ( Exception $e ) { if ( empty( $errorMsg ) ) $errorMsg = $e->getMessage(); } ?> <!-- PAGE DEFINITION --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <?php OutputHeader( $pageTitle ); ?> <body> <table cellspacing="0" cellpadding="0" border="0" class="main"> <tr> <?php DisplaySiteHeader( false, true, true, true, $formName, $homePage ); ?> </tr> <tr> <?php DisplayLefthandSash( $menuItem ); ?> <!-- Contents Area --> <?php BeginContentArea( $formName ); DisplayTitleBar( $pageTitle, $helpPage ); ?> <input type="hidden" name="<?php echo TABLE_PAGE_ID?>" value="<?php echo $currPage?>"> <input type="hidden" name="<?php echo $sortDirectionID?>" value="<?php echo $sortDirection?>"> <!-- Tabs --> <table cellspacing="0" cellpadding="0" class="TabTable"> <tr> <td class="DeselectedTab"><a href="userrolemanagement.php">Users</a></td> <td class="SelectedTab">Groups</td> <td class="NoTabs"> </td> </tr> <tr> <td class="TabTableBody" colspan="3"> <!-- Spacing --> <br> <?php DeclareHiddenVars( $pageName ); DisplaySaveCancelBar(); DisplayConfirmationMsg( $confirmationMsg ); DisplayErrorMsg( $errorMsg ); DisplayPaginationControl( $currPage, $groupCount, $pageSize, 'grouprolemanagement.php', NULL, $sortDirection ); // Toolbar $buttons = array(); $button = new ToolbarButtonRecord(); $button->label = "Edit Roles"; $button->icon = "images/edit.gif"; $button->action = "SetElementValue( '".NEXT_PAGE_ID."', 'assignroles.php' );"; $buttons[0] = $button; DisplayToolbar( $buttons, $formName ); ?> <!-- Role Table--> <table border="0" cellspacing="2" cellpadding="2" class="dataTable"> <tr> <?php $sortIcon = GetSortIcon( $sortDirection ); $sortDirectionStr = "SetElementValue( '".$sortDirectionID."', '".GetSortDirection( $sortDirection )."' );"; ?> <td class="dataHeader"><a href="#" onClick="<?php echo $sortDirectionStr?>SubmitForm('<?php echo $formName?>');">Group Name <img src="<?php echo $sortIcon?>"></a> </td> <td class="dataHeader">Administrator Role</td> <td class="dataHeader">Map Author Role</td> </tr> <?php foreach ( $groupRolesTable as $key => $val ) { ?> <tr> <?php $tdClass = ($key === $highlightedGroup) ? 'highlightedDataCell' : 'dataCell'; ?> <td class="<?php echo $tdClass ?>"> <input type="hidden" name="<?php echo $groupUpdateID.'[]'?>" value="<?php echo $key?>" > <?php if ( $key == MgGroup::Everyone ) echo $key; else echo '<a href="editgroup.php?'.$selectedGroupID.'='.$key.'">'.$key.'</a>'; ?> </td> <td class="<?php echo $tdClass ?>" align="center"><input name="<?php echo $adminOnID.'[]'?>" type="checkbox" value="<?php echo $key ?>" <?php if ($val->adminOn) { echo 'checked="checked"'; }?>></td> <td class="<?php echo $tdClass ?>" align="center"><input name="<?php echo $authorOnID.'[]'?>" type="checkbox" value="<?php echo $key ?>" <?php if ($val->authorOn) { echo 'checked="checked"'; }?>></td> </tr> <?php } ?> </table> <?php DisplayPaginationControl( $currPage, $groupCount, $pageSize, 'grouprolemanagement.php', NULL, $sortDirection ); ?> <?php DisplaySaveCancelBar(); EndContentArea( true, $formName, "" ); ?> </tr> </table> </td> <!-- End of Contents Area --> </tr> </table> </body> </html>