summaryrefslogtreecommitdiff
path: root/rt/lib/RT/SavedSearches.pm
diff options
context:
space:
mode:
authorivan <ivan>2008-03-02 04:11:51 +0000
committerivan <ivan>2008-03-02 04:11:51 +0000
commit8103c1fc1b2c27a6855feadf26f91b980a54bc52 (patch)
tree631dd45606c37c00d9026e14ecc3ee3700b4b51c /rt/lib/RT/SavedSearches.pm
parent9c68254528b6f2c7d8c1921b452fa56064783782 (diff)
import rt 3.6.6
Diffstat (limited to 'rt/lib/RT/SavedSearches.pm')
-rw-r--r--rt/lib/RT/SavedSearches.pm54
1 files changed, 19 insertions, 35 deletions
diff --git a/rt/lib/RT/SavedSearches.pm b/rt/lib/RT/SavedSearches.pm
index 262bfa8..0b5ac97 100644
--- a/rt/lib/RT/SavedSearches.pm
+++ b/rt/lib/RT/SavedSearches.pm
@@ -2,7 +2,7 @@
#
# COPYRIGHT:
#
-# This software is Copyright (c) 1996-2005 Best Practical Solutions, LLC
+# This software is Copyright (c) 1996-2007 Best Practical Solutions, LLC
# <jesse@bestpractical.com>
#
# (Except where explicitly superseded by other copyright notices)
@@ -22,7 +22,9 @@
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301 or visit their web page on the internet at
+# http://www.gnu.org/copyleft/gpl.html.
#
#
# CONTRIBUTION SUBMISSION POLICY:
@@ -43,7 +45,6 @@
# those contributions and any derivatives thereof.
#
# END BPS TAGGED BLOCK }}}
-
=head1 NAME
RT::SavedSearches - a pseudo-collection for SavedSearch objects.
@@ -162,40 +163,23 @@ sub _GetObject {
my $self = shift;
my $privacy = shift;
- my ($obj_type, $obj_id) = split(/\-/, $privacy);
- unless ($obj_type eq 'RT::User' || $obj_type eq 'RT::Group') {
- $RT::Logger->error("Tried to load a search belonging to an $obj_type, which is neither a user nor a group");
- return undef;
- }
+ return RT::SavedSearch->new($self->CurrentUser)->_GetObject($privacy);
+}
- my $object;
- eval "
- require $obj_type;
- \$object = $obj_type->new(\$self->CurrentUser);
- \$object->Load($obj_id);
- ";
- unless (ref($object) eq $obj_type) {
- $RT::Logger->error("Could not load object of type $obj_type with ID $obj_id");
- return undef;
- }
-
- # Do not allow the loading of a user object other than the current
- # user, or of a group object of which the current user is not a member.
-
- if ($obj_type eq 'RT::User'
- && $object->Id != $self->CurrentUser->UserObj->Id()) {
- $RT::Logger->error('Requested user ' . $object->Id
- . 'is not current user');
- return undef;
- }
- if ($obj_type eq 'RT::Group'
- && !$object->HasMemberRecursively($self->CurrentUser->PrincipalObj)) {
- $RT::Logger->error('Current user does not belong to requested group '
- . $object->Id);
- return undef;
- }
+### Internal methods
+
+# _PrivacyObjects: returns a list of objects that can be used to load saved searches from.
+
+sub _PrivacyObjects {
+ my $self = shift;
+ my $CurrentUser = $self->CurrentUser;
+
+ my $groups = RT::Groups->new($CurrentUser);
+ $groups->LimitToUserDefinedGroups;
+ $groups->WithMember( PrincipalId => $CurrentUser->Id,
+ Recursively => 1 );
- return $object;
+ return ( $CurrentUser->UserObj, @{ $groups->ItemsArrayRef() } );
}
eval "require RT::SavedSearches_Vendor";