From 6264736bde2539643af80a7c27cc80954ac2d7d9 Mon Sep 17 00:00:00 2001 From: Andrew McMillan Date: Wed, 28 Apr 2010 14:10:26 +1200 Subject: [PATCH] Display a list of tickets granted by this principal. --- inc/ui/principal-edit.php | 62 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 61 insertions(+), 1 deletion(-) diff --git a/inc/ui/principal-edit.php b/inc/ui/principal-edit.php index 127adc87..5ad4b097 100644 --- a/inc/ui/principal-edit.php +++ b/inc/ui/principal-edit.php @@ -22,7 +22,10 @@ $delete_collection_confirmation_required = null; $delete_principal_confirmation_required = null; function handle_subaction( $subaction ) { - global $session, $c, $id, $editor, $delete_collection_confirmation_required, $delete_principal_confirmation_required; + global $session, $c, $id, $editor; + global $delete_collection_confirmation_required; + global $delete_principal_confirmation_required; + global $delete_ticket_confirmation_required; dbg_error_log('admin-principal-edit',':handle_action: Action %s', $subaction ); @@ -74,6 +77,30 @@ function handle_subaction( $subaction ) { } break; + case 'delete_ticket': + dbg_error_log('admin-principal-edit',':handle_action: Deleting ticket "%s" for principal %d', $_GET['ticket_id'], $id ); + if ( $session->AllowedTo('Admin') + || ($id > 0 && $session->principal_id == $id) ) { + if ( $session->CheckConfirmationHash('GET', 'confirm') ) { + dbg_error_log('admin-principal-edit',':handle_action: Allowed to delete ticket "%s" for principal %d', $_GET['ticket_id'], $id ); + $qry = new AwlQuery('DELETE FROM access_ticket WHERE ticket_id=?;', $_GET['ticket_id'] ); + if ( $qry->Exec() ) { + $c->messages[] = i18n('Access ticket deleted'); + return true; + } + else { + $c->messages[] = i18n('There was an error writing to the database.'); + return false; + } + } + else { + $c->messages[] = i18n('Please confirm deletion of access ticket - see below'); + $delete_ticket_confirmation_required = $session->BuildConfirmationHash('GET', 'confirm'); + return false; + } + } + break; + default: return false; } @@ -614,6 +641,39 @@ EOTEMPLATE; } + $browser = new Browser(translate('Access Tickets')); + + $browser->AddColumn( 'ticket_id', translate('ID'), '', '' ); + $browser->AddColumn( 'target', translate('Target'), '', '', 'COALESCE(d.dav_name,c.dav_name)' ); + $browser->AddColumn( 'expires', translate('Expires'), '', ''); + $browser->AddColumn( 'privs', translate('Privileges'), '', '', "privileges_list(privileges)" ); + $delurl = $c->base_url . '/admin.php?action=edit&t=principal&id='.$id.'&ticket_id=##URL:ticket_id##&subaction=delete_ticket'; + $browser->AddColumn( 'delete', translate('Action'), 'center', '', "'".translate('Delete')."'" ); + + $browser->SetOrdering( 'target', 'A' ); + + $browser->SetJoins( 'access_ticket t LEFT JOIN collection c ON (target_collection_id=collection_id) LEFT JOIN caldav_data d ON (target_resource_id=dav_id)' ); + $browser->SetWhere( 'dav_owner_id = '.intval($editor->Value('principal_id')) ); + +// $browser->AddRow( array( 'target' => ''.translate('Create Ticket').'' )); + + $browser->RowFormat( '', '', '#even' ); + + $browser->DoQuery(); + $page_elements[] = $browser; + + if ( isset($delete_ticket_confirmation_required) ) { + $html = '
'; + $html .= sprintf('%s "%s" %s %s', + translate('Deleting Ticket:'), $_GET['ticket_id'], $_SERVER['REQUEST_URI'], + $delete_ticket_confirmation_required, + translate('Confirm Deletion of the Ticket'), + translate('The access ticket will be deleted.') ); + $html .= "
\n"; + $page_elements[] = $html; + } + + $browser = new Browser(translate('Principal Collections')); $browser->AddColumn( 'collection_id', translate('ID'), 'right', '##collection_link##' );