KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.4.62
System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64
User : www ( 80)
PHP Version : 8.3.8
Disable Function : NONE
Directory :  /domains/compasssysweb/calendar/CalciumDir39/Operation/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /domains/compasssysweb/calendar/CalciumDir39/Operation/AdminDeleteEvents.pm
# Copyright 1999-2003, Fred Steinberg, Brown Bear Software

# Delete all Events in a Date Range
package AdminDeleteEvents;
use strict;
use CGI;

use Calendar::Date;
use Calendar::GetHTML;

use vars ('@ISA');
@ISA = ('Operation');

sub perform {
    my $self = shift;
    my ($save, $cancel) = $self->getParams (qw (Save Cancel));
    my ($calName) = $self->calendarName;

    my $preferences = $self->prefs;
    my $i18n        = $self->I18N;

    my $cgi = new CGI;

    if ($cancel) {
        print $self->redir ($self->makeURL({Op => 'AdminPage'}));
        return;
    }

    my $message;

    if ($save) {
        my ($fromYear, $fromMonth, $fromDay) =
                                        @{$self->{params}}{qw (FromYearPopup
                                                               FromMonthPopup
                                                               FromDayPopup)};
        my ($toYear, $toMonth, $toDay) =
                                        @{$self->{params}}{qw (ToYearPopup
                                                               ToMonthPopup
                                                               ToDayPopup)};
        my $errorMessage;
        if (!Date->valid ($fromYear, $fromMonth, $fromDay)) {
            $errorMessage = $i18n->get ('<br>Invalid <b>From</b> Date');
        }
        if (!Date->valid ($toYear, $toMonth, $toDay)) {
            $errorMessage = $i18n->get ('<br>Invalid <b>To</b> Date');
        }
        if ($errorMessage) {
            GetHTML->errorPage ($i18n,
                                header  => $i18n->get('Error deleting events'),
                                message => $errorMessage);
            $self->{audit_error} = 'bad date';
            return;
        }
        my $fromDate = Date->new ($fromYear, $fromMonth, $fromDay);
        my $toDate   = Date->new ($toYear, $toMonth, $toDay);
        my $ids = $self->db->deleteEventsInRange ($fromDate, $toDate);
        $self->{audit_formsaved}++;
        $self->{audit_count} = @$ids + 0;
        $self->{audit_from} = $fromDate;
        $self->{audit_to}   = $toDate;
        $message = $i18n->get ('Number of events deleted') . ': ' .
                   $self->{audit_count};
    }

    print $cgi->header;
    print $cgi->start_html ('-title' =>
                                   $i18n->get ('Delete Events in a Range') .
                                   ": $calName",
                            '-bgcolor' => 'white');

    print '<center>';
    print GetHTML->AdminHeader (I18N    => $i18n,
                                cal     => $calName,
                                section => 'Delete Events');
    print '<br>';

    print $cgi->h2 ({size => +2}, $message) if $message;

    print $i18n->get ('<b>All</b> events between the specified dates ' .
                      'will be deleted.');
    print '</center>';

    my $script = <<'    END_JAVASCRIPT';
    :    <SCRIPT LANGUAGE="JavaScript">
    :    <!-- start
    :    // Make sure dates are OK (or cancel pressed)
    :    function submitCheck (theForm, baseYear) {
    :        if (theForm.Cancel.pressed) {
    :            return true;
    :        }
    :        fromMonth = theForm.FromMonthPopup.selectedIndex;
    :        fromDay   = theForm.FromDayPopup.selectedIndex + 1;
    :        fromYear  = theForm.FromYearPopup.selectedIndex + baseYear;
    :        toMonth   = theForm.ToMonthPopup.selectedIndex;
    :        toDay     = theForm.ToDayPopup.selectedIndex + 1;
    :        toYear    = theForm.ToYearPopup.selectedIndex + baseYear;
    :        fromDate = new Date (fromYear, fromMonth, fromDay);
    :        toDate   = new Date (toYear,   toMonth,   toDay);
    :        gotMonth = fromDate.getMonth();
    :        gotDay   = fromDate.getDate();
    :        if (gotMonth != fromMonth || gotDay != fromDay) {
    :            alert ('From Date is invalid.');
    :            return false;
    :        }
    :        gotMonth = toDate.getMonth();
    :        gotDay   = toDate.getDate();
    :        if (gotMonth != toMonth || gotDay != toDay) {
    :            alert ('To Date is invalid.');
    :            return false;
    :        }
    :        if (fromDate.valueOf() > toDate.valueOf()) {
    :            alert ('To Date cannot be before From Date.');
    :            return false;
    :        }
    :        return true;
    :    }
    :    // End -->
    :    </SCRIPT>
    END_JAVASCRIPT
    $script =~ s/^\s*:\s*//mg;
    print $script;

    my ($yearStart, $earliestDate);
    $yearStart = Date->new;
    $yearStart->month(1);
    $yearStart->day(1);
    $earliestDate = Date->new ($yearStart);
    $earliestDate->addYears(-10);

    print $cgi->startform (-onSubmit =>
                                  "return submitCheck(this, $earliestDate)");

    my $fromPopup = GetHTML->datePopup ($i18n,
                                        {name     => 'From',
                                         default  => $yearStart,
                                         start    => $earliestDate,
                                         numYears => 20});
    my $toPopup   = GetHTML->datePopup ($i18n,
                                        {name     => 'To',
                                         default  => Date->new - 1,
                                         start    => $earliestDate,
                                         numYears => 20});
    print $cgi->table ($cgi->Tr ($cgi->td ($cgi->b ($i18n->get ('From:'))),
                                 $cgi->td ($fromPopup)),
                       $cgi->Tr ($cgi->td ($cgi->b ($i18n->get ('To:'))),
                                 $cgi->td ($toPopup)));

    print '<center><br>';
    print $i18n->get ('Repeating Events will be deleted if the repeat ' .
                      'period both starts and ends within the specified ' .
                      'range.');
    print '</center><hr>';

    print $cgi->submit (-name  => 'Save',
                        -value => $i18n->get ('Delete Events'));
    print '&nbsp;';
    print $cgi->submit (-name    => 'Cancel',
                        -value   => $i18n->get ('Cancel'),
                        -onClick => 'this.pressed = true');
    print '&nbsp;';
    print $cgi->reset  (-value => $i18n->get ('Reset Dates'));

    print $cgi->hidden (-name => 'Op',          -value => 'AdminDeleteEvents');
    print $cgi->hidden (-name => 'CalendarName', -value => $calName);

    print $cgi->endform;
    print $cgi->end_html;
}

sub auditString {
    my ($self, $short) = @_;
    return unless $self->{audit_formsaved};

    my $line = $self->SUPER::auditString ($short);
    return ($line . ' ' . $self->{audit_error}) if $self->{audit_error};

    $line . " $self->{audit_from}-$self->{audit_to} " .
            "$self->{audit_count} events";
}

1;

Anon7 - 2021