diff options
Diffstat (limited to 'rt/share/html/NoAuth/iCal/dhandler')
-rw-r--r-- | rt/share/html/NoAuth/iCal/dhandler | 122 |
1 files changed, 0 insertions, 122 deletions
diff --git a/rt/share/html/NoAuth/iCal/dhandler b/rt/share/html/NoAuth/iCal/dhandler deleted file mode 100644 index 0eeeb20b1..000000000 --- a/rt/share/html/NoAuth/iCal/dhandler +++ /dev/null @@ -1,122 +0,0 @@ -%# BEGIN BPS TAGGED BLOCK {{{ -%# -%# COPYRIGHT: -%# -%# This software is Copyright (c) 1996-2009 Best Practical Solutions, LLC -%# <jesse@bestpractical.com> -%# -%# (Except where explicitly superseded by other copyright notices) -%# -%# -%# LICENSE: -%# -%# This work is made available to you under the terms of Version 2 of -%# the GNU General Public License. A copy of that license should have -%# been provided with this software, but in any event can be snarfed -%# from www.gnu.org. -%# -%# This work 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 -%# General Public License for more details. -%# -%# 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., 51 Franklin Street, Fifth Floor, Boston, MA -%# 02110-1301 or visit their web page on the internet at -%# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html. -%# -%# -%# CONTRIBUTION SUBMISSION POLICY: -%# -%# (The following paragraph is not intended to limit the rights granted -%# to you to modify and distribute this software under the terms of -%# the GNU General Public License and is only of importance to you if -%# you choose to contribute your changes and enhancements to the -%# community by submitting them to Best Practical Solutions, LLC.) -%# -%# By intentionally submitting any modifications, corrections or -%# derivatives to this work, or any other work intended for use with -%# Request Tracker, to Best Practical Solutions, LLC, you confirm that -%# you are the copyright holder for those contributions and you grant -%# Best Practical Solutions, LLC a nonexclusive, worldwide, irrevocable, -%# royalty-free, perpetual, license to use, copy, create derivative -%# works based on those contributions, and sublicense and distribute -%# those contributions and any derivatives thereof. -%# -%# END BPS TAGGED BLOCK }}} -<%init> -use Data::ICal; -use Data::ICal::Entry::Event; -use Encode (); - -my $path = $m->dhandler_arg; - -my $notfound = sub { - $r->headers_out->{'Status'} = '404 Not Found'; - $m->clear_and_abort; -}; - -$notfound->() unless $path =~ m!^([^/]+)/([^/]+)/(.*)(\.(ical|ics))?!; - -my ($name, $auth, $search) = ($1, $2, $3); -# Unescape parts -$_ =~ s/\%([0-9a-z]{2})/chr(hex($1))/gei for $name, $search; -# convert to perl strings -$_ = Encode::decode_utf8( $_ ) for $name, $search; - -my $user = RT::User->new( $RT::SystemUser ); -$user->Load( $name ); -$notfound->() unless $user->id; - -$notfound->() unless $user->ValidateAuthString( $auth, $search ); - -my $cu = RT::CurrentUser->new; -$cu->Load($user); -my $tickets = RT::Tickets->new( $cu ); -$tickets->FromSQL($search); - -$r->headers_out->{'Content-Type'} = 'text/calendar; charset=utf-8'; - -my $feed = Data::ICal->new(); -$feed->add_properties('x-wr-calname' => ["RT due dates" => {value => "TEXT"}]); -$feed->add_properties('x-wr-caldesc' => ["Due dates for RT tickets: $search" => {value => "TEXT"}]); -$feed->add_properties('calscale' => ['gregorian']); -$feed->add_properties('method' => ['publish']); -$feed->add_properties('prodid' => ["-//" . RT->Config->Get('rtname') ."//"]); - -while (my $t = $tickets->Next) { - next unless $t->DueObj->Unix > 0; - - my $starttime = $t->StartsObj->Unix > 0 ? $t->StartsObj : $t->CreatedObj; - - my $now = RT::Date->new( $cu ); $now->SetToNow; - my $start = Data::ICal::Entry::Event->new; - my $end = Data::ICal::Entry::Event->new; - $_->add_properties( - url => RT->Config->Get('WebURL') . "?q=".$t->id, - organizer => $t->OwnerObj->Name, - dtstamp => $now->iCal, - created => $t->CreatedObj->iCal, - 'last-modified' => $t->LastUpdatedObj->iCal, - ) for $start, $end; - - $start->add_properties( - summary => "Start: ".$t->Subject, - dtstart => [$starttime->iCal( Time => 0 ) => { value => 'DATE' }], - dtend => [$starttime->iCal( Time => 0 ) => { value => 'DATE'}], - ); - $end->add_properties( - summary => "Due: ".$t->Subject, - dtstart => [$t->DueObj->iCal( Time => 0 ) => { value => 'DATE' }], - dtend => [$t->DueObj->iCal( Time => 0 ) => { value => 'DATE' }], - ); - - $feed->add_entry($start); - $feed->add_entry($end); -} - -$m->clear_buffer; -$m->out($feed->as_string); -$m->abort; -</%init> |