[otrs-cvs] CVS: Calendar/Kernel/System CalendarEvent.pm,1.8,1.9

cvs-log at otrs.org cvs-log at otrs.org
Wed Oct 4 23:04:50 CEST 2006


Update of /home/cvs/Calendar/Kernel/System
In directory lancelot:/tmp/cvs-serv19527/Kernel/System

Modified Files:
	CalendarEvent.pm 
Log Message:
added sequence feature

Index: CalendarEvent.pm
===================================================================
RCS file: /home/cvs/Calendar/Kernel/System/CalendarEvent.pm,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -r1.8 -r1.9
*** CalendarEvent.pm	1 Feb 2006 17:27:16 -0000	1.8
--- CalendarEvent.pm	4 Oct 2006 20:04:48 -0000	1.9
***************
*** 1,5 ****
  # --
  # Kernel/System/CalendarEvent.pm - manage all calendar events
! # Copyright (C) 2001-2006 Martin Edenhofer <martin+code at otrs.org>
  # --
  # $Id$
--- 1,5 ----
  # --
  # Kernel/System/CalendarEvent.pm - manage all calendar events
! # Copyright (C) 2001-2006 OTRS GmbH, http://otrs.org/
  # --
  # $Id$
***************
*** 13,16 ****
--- 13,17 ----
  
  use strict;
+ use Date::Pcalc qw(:all);
  use Kernel::System::Email;
  
***************
*** 39,43 ****
      my %DBParam = ();
      # check needed stuff
!     foreach (qw(Title StartTime EndTime State UserIDs)) {
        if (!defined ($Param{$_})) {
          $Self->{LogObject}->Log(Priority => 'error', Message => "Need $_!");
--- 40,44 ----
      my %DBParam = ();
      # check needed stuff
!     foreach (qw(Title StartTime EndTime SequenceEndTime State UserIDs)) {
        if (!defined ($Param{$_})) {
          $Self->{LogObject}->Log(Priority => 'error', Message => "Need $_!");
***************
*** 50,63 ****
      }
      # db quote
!     foreach (qw(Title Content StartTime EndTime State)) {
          $DBParam{$_} = $Self->{DBObject}->Quote($Param{$_});
      }
      # sql
      my $SQL = "INSERT INTO calendar_event ".
!        " (title, content, start_time, end_time, owner_id, event_status) ".
         " VALUES ".
         " ('$DBParam{Title}', '$DBParam{Content}', '$DBParam{StartTime}', ".
!        " '$DBParam{EndTime}', $Self->{UserID}, '$DBParam{State}')";
! 
      if ($Self->{DBObject}->Do(SQL => $SQL)) {
          my $EventID;
--- 51,64 ----
      }
      # db quote
!     foreach (qw(Title Content StartTime EndTime SequenceEndTime SequenceType Reminder State)) {
          $DBParam{$_} = $Self->{DBObject}->Quote($Param{$_});
      }
      # sql
      my $SQL = "INSERT INTO calendar_event ".
!        " (title, content, start_time, end_time, sequence_end_time, sequence_type, reminder, owner_id, event_status) ".
         " VALUES ".
         " ('$DBParam{Title}', '$DBParam{Content}', '$DBParam{StartTime}', ".
!        " '$DBParam{EndTime}', '$DBParam{SequenceEndTime}', '$DBParam{SequenceType}', ".
!        " '$DBParam{Reminder}', $Self->{UserID}, '$DBParam{State}')";
      if ($Self->{DBObject}->Do(SQL => $SQL)) {
          my $EventID;
***************
*** 132,136 ****
      my %DBParam = ();
      # check needed stuff
!     foreach (qw(EventID Title StartTime EndTime State UserIDs)) {
        if (!defined ($Param{$_})) {
          $Self->{LogObject}->Log(Priority => 'error', Message => "Need $_!");
--- 133,137 ----
      my %DBParam = ();
      # check needed stuff
!     foreach (qw(EventID Title StartTime EndTime SequenceEndTime SequenceType State UserIDs)) {
        if (!defined ($Param{$_})) {
          $Self->{LogObject}->Log(Priority => 'error', Message => "Need $_!");
***************
*** 143,147 ****
      }
      # db quote
!     foreach (qw(Title Content StartTime EndTime State)) {
          $DBParam{$_} = $Self->{DBObject}->Quote($Param{$_});
      }
--- 144,148 ----
      }
      # db quote
!     foreach (qw(Title Content StartTime EndTime SequenceEndTime SequenceType Reminder State)) {
          $DBParam{$_} = $Self->{DBObject}->Quote($Param{$_});
      }
***************
*** 155,163 ****
          " start_time = '$DBParam{StartTime}', ".
          " end_time = '$DBParam{EndTime}', ".
          " owner_id = $Self->{UserID}, ".
          " event_status = '$DBParam{State}' ".
          " WHERE ".
          " id = $DBParam{EventID}";
- 
      if ($Self->{DBObject}->Do(SQL => $SQL)) {
          $Self->{DBObject}->Do(
--- 156,166 ----
          " start_time = '$DBParam{StartTime}', ".
          " end_time = '$DBParam{EndTime}', ".
+         " sequence_type = '$DBParam{SequenceType}', ".
+         " sequence_end_time = '$DBParam{SequenceEndTime}', ".
+         " reminder = '$DBParam{Reminder}', ".
          " owner_id = $Self->{UserID}, ".
          " event_status = '$DBParam{State}' ".
          " WHERE ".
          " id = $DBParam{EventID}";
      if ($Self->{DBObject}->Do(SQL => $SQL)) {
          $Self->{DBObject}->Do(
***************
*** 313,317 ****
      }
      # sql for event
!     my $SQL = "SELECT title, content, start_time, end_time, owner_id, event_status ".
          " FROM calendar_event WHERE id = $Param{EventID}";
      $Self->{DBObject}->Prepare(SQL => $SQL);
--- 316,320 ----
      }
      # sql for event
!     my $SQL = "SELECT title, content, start_time, end_time, sequence_end_time, sequence_type, reminder, owner_id, event_status ".
          " FROM calendar_event WHERE id = $Param{EventID}";
      $Self->{DBObject}->Prepare(SQL => $SQL);
***************
*** 322,327 ****
          $Data{StartTime} = $Row[2];
          $Data{EndTime} = $Row[3];
!         $Data{UserID} = $Row[4];
!         $Data{State} = $Row[5];
      }
      if (!$Data{EventID}) {
--- 325,333 ----
          $Data{StartTime} = $Row[2];
          $Data{EndTime} = $Row[3];
!         $Data{SequenceEndTime} = $Row[4];
!         $Data{SequenceType} = $Row[5] || 'SequenceType::None';
!         $Data{Reminder} = $Row[6];
!         $Data{UserID} = $Row[7];
!         $Data{State} = $Row[8];
      }
      if (!$Data{EventID}) {
***************
*** 354,357 ****
--- 360,371 ----
          SystemTime => $EndTime,
      );
+     if ($Data{SequenceEndTime} && $Data{SequenceEndTime} !~ /^0000/) {
+         my $SequenceEndTime = $Self->{TimeObject}->TimeStamp2SystemTime(
+             String => $Data{SequenceEndTime},
+         );
+         ($Data{SequenceEndSec}, $Data{SequenceEndMinute}, $Data{SequenceEndHour}, $Data{SequenceEndDay}, $Data{SequenceEndMonth}, $Data{SequenceEndYear}) = $Self->{TimeObject}->SystemTime2Date(
+             SystemTime => $SequenceEndTime,
+         );
+     }
  
      return (%User,%Data);
***************
*** 362,365 ****
--- 376,380 ----
      my %Param = @_;
      my @EventIDs = ();
+     my %Used = ();
      # check needed stuff
      foreach (qw(StartTime EndTime)) {
***************
*** 369,404 ****
        }
      }
!     # db quote
!     foreach (qw(StartTime EndTime)) {
!         $Param{$_} = $Self->{DBObject}->Quote($Param{$_});
!     }
!     # sql
!     my $SQL = "SELECT e.id FROM calendar_event e, calendar_event_involved ei ".
!         " WHERE ".
!         " e.id = ei.event_id AND ".
!         " ((e.start_time >= '$Param{StartTime}' AND e.end_time <= '$Param{EndTime}') ".
!         " OR ".
!         " (e.start_time >= '$Param{StartTime}' AND e.start_time <= '$Param{EndTime}') ".
!         " OR ".
!         " (e.end_time >= '$Param{StartTime}' AND e.end_time <= '$Param{EndTime}') ".
!         " OR ".
!         " (e.start_time <= '$Param{StartTime}' AND e.end_time >= '$Param{EndTime}')) ";
!     if ($Param{UserIDs} && @{$Param{UserIDs}}) {
!         $SQL .= " AND ei.user_id IN (";
!         my $Count = 0;
!         foreach (@{$Param{UserIDs}}) {
!             if ($Count) {
!                 $SQL .= ", ";
              }
!             $SQL .= "$_";
!             $Count++;
          }
!         $SQL .= ")";
!     }
!     $SQL .= " ORDER BY e.start_time";
  #print STDERR "SQL: $SQL\n";
!     $Self->{DBObject}->Prepare(SQL => $SQL);
!     while (my @Row = $Self->{DBObject}->FetchrowArray()) {
!         push (@EventIDs, $Row[0]);
      }
      return @EventIDs;
--- 384,596 ----
        }
      }
!     my $StartSystemTime = $Self->{TimeObject}->TimeStamp2SystemTime(
!         String => $Param{StartTime},
!     );
!     my $EndSystemTime = $Self->{TimeObject}->TimeStamp2SystemTime(
!         String => $Param{EndTime},
!     );
!     my ($SSec, $SMin, $SHour, $SDay, $SMonth, $SYear) = $Self->{TimeObject}->SystemTime2Date(
!         SystemTime => $StartSystemTime,
!     );
!     my ($ESec, $EMin, $EHour, $EDay, $EMonth, $EYear) = $Self->{TimeObject}->SystemTime2Date(
!         SystemTime => $EndSystemTime,
!     );
!     my $Delta = Delta_Days($SYear, $SMonth, $SDay, $EYear, $EMonth, $EDay);
! 
!     foreach (0..$Delta) {
!         my ($Year1, $Month1, $Day1) = Add_Delta_Days($SYear, $SMonth, $SDay, $_);
!         my ($Year2, $Month2, $Day2) = Add_Delta_Days($SYear, $SMonth, $SDay, $_);
!         if ($_ == 0) {
!             $Param{StartTime} = "$Year1-$Month1-$Day1 $SHour:$SMin:$SSec";
!         }
!         else {
!             $Param{StartTime} = "$Year1-$Month1-$Day1 00:00:00";
!         }
!         if ($_ == $Delta) {
!             $Param{EndTime} = "$Year2-$Month2-$Day2 $EHour:$EMin:$ESec";
!         }
!         else {
!             $Param{EndTime} = "$Year2-$Month2-$Day2 23:59:59";
!         }
!         # db quote
!         foreach (qw(StartTime EndTime)) {
!             $Param{$_} = $Self->{DBObject}->Quote($Param{$_});
!         }
!         # sql
!         my $SQL = "SELECT e.id, e.title, e.content, e.start_time, e.end_time, e.event_status ".
!             " FROM calendar_event e ";
!         if ($Param{UserIDs} && @{$Param{UserIDs}}) {
!             $SQL .= " , calendar_event_involved ei ";
!         }
!         $SQL .= " WHERE ".
! #            " FROM calendar_event e, calendar_event_involved ei ".
! #            " WHERE ".
! #            " e.id = ei.event_id AND ".
!             " ((e.start_time >= '$Param{StartTime}' AND e.end_time <= '$Param{EndTime}') ".
!             " OR ".
!             " (e.start_time >= '$Param{StartTime}' AND e.start_time <= '$Param{EndTime}') ".
!             " OR ".
!             " (e.end_time >= '$Param{StartTime}' AND e.end_time <= '$Param{EndTime}') ".
!             " OR ".
!             " (e.start_time <= '$Param{StartTime}' AND e.end_time >= '$Param{EndTime}')) ";
!         if ($Param{UserIDs} && @{$Param{UserIDs}}) {
! #            $SQL .= " AND ei.user_id IN (";
!             $SQL .= " AND e.id = ei.event_id AND ei.user_id IN (";
!             my $Count = 0;
!             foreach (@{$Param{UserIDs}}) {
!                 if ($Count) {
!                     $SQL .= ", ";
!                 }
!                 $SQL .= "$_";
!                 $Count++;
              }
!             $SQL .= ")";
          }
!         $SQL .= " ORDER BY e.start_time";
  #print STDERR "SQL: $SQL\n";
!         $Self->{DBObject}->Prepare(SQL => $SQL);
!         while (my @Row = $Self->{DBObject}->FetchrowArray()) {
!             if (!$Used{$Row[0]}) {
!                 my %Event = (
!                     EventID => $Row[0],
!                     Title => $Row[1] || '-',
!                     Content => $Row[2],
!                     StartTime => $Row[3],
!                     EndTime => $Row[4],
!                     State => $Row[5],
!                 );
!                 my $StartTime = $Self->{TimeObject}->TimeStamp2SystemTime(
!                     String => $Event{StartTime},
!                 );
!                 my $EndTime = $Self->{TimeObject}->TimeStamp2SystemTime(
!                     String => $Event{EndTime},
!                 );
!                 ($Event{StartSec}, $Event{StartMinute}, $Event{StartHour}, $Event{StartDay}, $Event{StartMonth}, $Event{StartYear}) = $Self->{TimeObject}->SystemTime2Date(
!                     SystemTime => $StartTime,
!                 );
!                 ($Event{EndSec}, $Event{EndMinute}, $Event{EndHour}, $Event{EndDay}, $Event{EndMonth}, $Event{EndYear}) = $Self->{TimeObject}->SystemTime2Date(
!                     SystemTime => $EndTime,
!                 );
!                 push (@EventIDs, \%Event);
!                 $Used{$Row[0]} = 1;
!             }
!         }
!         my $SystemTime = $Self->{TimeObject}->TimeStamp2SystemTime(
!             String => $Param{StartTime},
!         );
!         my ($SSec, $SMin, $SHour, $SDay, $SMonth, $SYear) = $Self->{TimeObject}->SystemTime2Date(
!             SystemTime => $SystemTime,
!         );
! 
!         $SQL = "SELECT e.id, e.sequence_type, e.title, e.content, e.start_time, e.end_time, e.event_status ";
! #            " FROM calendar_event e, calendar_event_involved ei ".
! #            " WHERE ".
! #            " e.id = ei.event_id AND ".
!         $SQL .= " FROM calendar_event e ";
!         if ($Param{UserIDs} && @{$Param{UserIDs}}) {
!             $SQL .= " , calendar_event_involved ei ";
!         }
!         $SQL .= " WHERE ".
!             " ((e.start_time >= '$Param{StartTime}' AND e.sequence_end_time <= '$Param{EndTime}') ".
!             " OR ".
!             " (e.start_time >= '$Param{StartTime}' AND e.start_time <= '$Param{EndTime}') ".
!             " OR ".
!             " (e.sequence_end_time >= '$Param{StartTime}' AND e.sequence_end_time <= '$Param{EndTime}') ".
!             " OR ".
!             " (e.start_time <= '$Param{StartTime}' AND e.sequence_end_time >= '$Param{EndTime}')) ";
!         if ($Param{UserIDs} && @{$Param{UserIDs}}) {
! #            $SQL .= " AND ei.user_id IN (";
!             $SQL .= " AND e.id = ei.event_id AND ei.user_id IN (";
!             my $Count = 0;
!             foreach (@{$Param{UserIDs}}) {
!                 if ($Count) {
!                     $SQL .= ", ";
!                 }
!                 $SQL .= "$_";
!                 $Count++;
!             }
!             $SQL .= ")";
!         }
!         $SQL .= " ORDER BY e.start_time";
! #print STDERR "SQL: $SQL\n";
!         $Self->{DBObject}->Prepare(SQL => $SQL);
!         while (my @Row = $Self->{DBObject}->FetchrowArray()) {
!             if (!$Used{$Row[0]}) {
!                 my %Event = (
!                     EventID => $Row[0],
!                     Title => $Row[2] || '-',
!                     Content => $Row[3],
!                     StartTime => $Row[4],
!                     EndTime => $Row[5],
!                     State => $Row[6],
!                 );
!                 my $StartTime = $Self->{TimeObject}->TimeStamp2SystemTime(
!                     String => $Event{StartTime},
!                 );
!                 my $EndTime = $Self->{TimeObject}->TimeStamp2SystemTime(
!                     String => $Event{EndTime},
!                 );
!                 my $Total = $EndTime-$StartTime;
!                 my %EventOld = ();
!                 ($EventOld{StartSec}, $EventOld{StartMinute}, $EventOld{StartHour}, $EventOld{StartDay}, $EventOld{StartMonth}, $EventOld{StartYear}) = $Self->{TimeObject}->SystemTime2Date(
!                     SystemTime => $StartTime,
!                 );
!                 ($Event{StartSec}, $Event{StartMinute}, $Event{StartHour}, $Event{StartDay}, $Event{StartMonth}, $Event{StartYear}) = $Self->{TimeObject}->SystemTime2Date(
!                     SystemTime => $StartTime,
!                 );
!                 $Event{StartDay} = $SDay;
!                 $Event{StartMonth} = $SMonth;
!                 $Event{StartYear} = $SYear;
! 
!                 my $NewStartTime = $Self->{TimeObject}->TimeStamp2SystemTime(
!                     String => "$Event{StartYear}-$Event{StartMonth}-$Event{StartDay} $Event{StartHour}:$Event{StartMinute}:$Event{StartSec}",
!                 );
!                 my $NewEndTime = $NewStartTime+$Total;
!                 ($Event{EndSec}, $Event{EndMinute}, $Event{EndHour}, $Event{EndDay}, $Event{EndMonth}, $Event{EndYear}) = $Self->{TimeObject}->SystemTime2Date(
!                     SystemTime => $NewEndTime,
!                 );
!                 $Event{StartTime} = "$Event{StartYear}-$Event{StartMonth}-$Event{StartDay} $Event{StartHour}:$Event{StartMinute}:$Event{StartSec}";
!                 $Event{EndTime} = "$Event{EndYear}-$Event{EndMonth}-$Event{EndDay} $Event{EndHour}:$Event{EndMinute}:$Event{EndSec}";
! 
!                 if ($Row[1] eq 'Yearly' && $EventOld{StartMonth} == $SMonth && $EventOld{StartDay} == $SDay && (($NewStartTime >= $StartSystemTime && $NewEndTime <= $EndSystemTime) || ($NewStartTime >= $StartSystemTime && $NewStartTime <= $EndSystemTime) || ($NewEndTime >= $StartSystemTime && $NewEndTime <= $EndSystemTime) || ($NewStartTime <= $StartSystemTime && $NewEndTime >= $EndSystemTime))) {
! #                    $Event{StartYear}++;
! #                    my $NewStartTime = $Self->{TimeObject}->TimeStamp2SystemTime(
! #                        String => "$Event{StartYear}-$Event{StartMonth}-$Event{StartDay} $Event{StartHour}:$Event{StartMinute}:$Event{StartSec}",
! #                    );
! #                    my $NewEndTime = $NewStartTime+$Total;
! #                    if (($NewStartTime >= $StartSystemTime && $NewEndTime <= $EndSystemTime) || ($NewStartTime >= $StartSystemTime && $NewStartTime <= $EndSystemTime) || ($NewEndTime >= $StartSystemTime && $NewEndTime <= $EndSystemTime) || ($NewStartTime <= $StartSystemTime && $NewEndTime >= $EndSystemTime)) {
!                        push (@EventIDs, \%Event);
!                        $Used{$Row[0]} = 1;
! #                    }
!                 }
!                 elsif ($Row[1] =~ /^Weekly::(.+?)$/ && (($NewStartTime >= $StartSystemTime && $NewEndTime <= $EndSystemTime) || ($NewStartTime >= $StartSystemTime && $NewStartTime <= $EndSystemTime) || ($NewEndTime >= $StartSystemTime && $NewEndTime <= $EndSystemTime) || ($NewStartTime <= $StartSystemTime && $NewEndTime >= $EndSystemTime))) {
!                     my $CDow = $1;
!                     my $Dow = Day_of_Week_Abbreviation(Day_of_Week($SYear,$SMonth,$SDay));
!                     if ($Dow eq $CDow) {
!                         push (@EventIDs, \%Event);
!                         $Used{$Row[0]} = 1;
!                     }
!                 }
!                 elsif ($Row[1] =~ /^Monthly::(.+?)::(.+?)$/ && (($NewStartTime >= $StartSystemTime && $NewEndTime <= $EndSystemTime) || ($NewStartTime >= $StartSystemTime && $NewStartTime <= $EndSystemTime) || ($NewEndTime >= $StartSystemTime && $NewEndTime <= $EndSystemTime) || ($NewStartTime <= $StartSystemTime && $NewEndTime >= $EndSystemTime))) {
!                     my $CDow = $1;
!                     my $DowCount = $2;
!                     my $Days = Days_in_Month($SYear,$SMonth);
!                     my $Dow = Day_of_Week_Abbreviation(Day_of_Week($SYear,$SMonth,$SDay));
!                     if ($CDow eq $Dow) {
!                         my $Count = 0;
!                         foreach my $Day (1..$SDay) {
!                             my $Dow = Day_of_Week_Abbreviation(Day_of_Week($SYear,$SMonth,$Day));
!                             if ($CDow eq $Dow) {
!                                 $Count++;
!                             }
!                         }
!                         if ($Count == $DowCount) {
!                             push (@EventIDs, \%Event);
!                             $Used{$Row[0]} = 1;
!                         }
!                     }
!                 }
!             }
!         }
      }
      return @EventIDs;



More information about the cvs-log mailing list