[Rt-devel] Two patches

Todd Chapman todd at chaka.net
Thu May 18 17:22:22 EDT 2006


The first patch fixes a broken regexp.

The second simplifies the logic for Queue::AddWatcher.
Lett CurrentUserHasRight calls are potentially made too.
(yes, I know it is cached)

Why all then parens around arguments to return?

-Todd

-------------- next part --------------
=== html/Ticket/Elements/Tabs
==================================================================
--- html/Ticket/Elements/Tabs	(revision 6963)
+++ html/Ticket/Elements/Tabs	(local)
@@ -213,13 +213,13 @@
                    title     => loc('Show Results'),
                    separator => 1,
                    subtabs   => $searchtabs };
-  if ($current_tab =~  "Search/Results.html") {
+  if ($current_tab =~  m{Search/Results.html}) {
     $current_tab = "Search/Results.html$args";
   }
   $tabs->{"j"} = { path      => "Search/Bulk.html$args",
                    title     => loc('Bulk Update'),
                    };
-  if ($current_tab =~  "Search/Bulk.html") {
+  if ($current_tab =~  m{Search/Bulk.html}) {
     $current_tab = "Search/Bulk.html$args";
   }
 }
-------------- next part --------------
=== lib/RT/Queue_Overlay.pm
==================================================================
--- lib/RT/Queue_Overlay.pm	(revision 6963)
+++ lib/RT/Queue_Overlay.pm	(local)
@@ -648,44 +648,31 @@
     );
 
     # {{{ Check ACLS
+    return ( $self->_AddWatcher(%args) )
+        if $self->CurrentUserHasRight('ModifyQueueWatchers');
+
     #If the watcher we're trying to add is for the current user
     if ( $self->CurrentUser->PrincipalId  eq $args{'PrincipalId'}) {
         #  If it's an AdminCc and they don't have 
         #   'WatchAsAdminCc' or 'ModifyTicket', bail
         if ( $args{'Type'} eq 'AdminCc' ) {
-            unless ( $self->CurrentUserHasRight('ModifyQueueWatchers')
-                or $self->CurrentUserHasRight('WatchAsAdminCc') ) {
-                return ( 0, $self->loc('Permission Denied'))
-            }
+                return ( $self->_AddWatcher(%args) )
+                    if $self->CurrentUserHasRight('WatchAsAdminCc');
         }
 
         #  If it's a Requestor or Cc and they don't have
         #   'Watch' or 'ModifyTicket', bail
-        elsif ( ( $args{'Type'} eq 'Cc' ) or ( $args{'Type'} eq 'Requestor' ) ) {
-
-            unless ( $self->CurrentUserHasRight('ModifyQueueWatchers')
-                or $self->CurrentUserHasRight('Watch') ) {
-                return ( 0, $self->loc('Permission Denied'))
-            }
+        elsif ( $args{'Type'} eq 'Cc' or $args{'Type'} eq 'Requestor' ) {
+                return ( $self->_AddWatcher(%args) )
+                    if $self->CurrentUserHasRight('Watch');
         }
-     else {
+        else {
             $RT::Logger->warning( "$self -> AddWatcher got passed a bogus type");
             return ( 0, $self->loc('Error in parameters to Queue->AddWatcher') );
         }
     }
 
-    # If the watcher isn't the current user 
-    # and the current user  doesn't have 'ModifyQueueWatcher'
-    # bail
-    else {
-        unless ( $self->CurrentUserHasRight('ModifyQueueWatchers') ) {
-            return ( 0, $self->loc("Permission Denied") );
-        }
-    }
-
-    # }}}
-
-    return ( $self->_AddWatcher(%args) );
+    return ( 0, $self->loc("Permission Denied") );
 }
 
 #This contains the meat of AddWatcher. but can be called from a routine like


More information about the Rt-devel mailing list