Subversion Repositories VORC

Rev

Rev 50 | Rev 58 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
7 - 1
#!/usr/bin/perl
2
 
56 bgadell 3
# Redirect error messages to a log of my choosing. (it's annoying to filter for errors in the shared env)
4
my $error_log_path = $ENV{SERVER_NAME} eq "volunteers.rollercon.com" ? "/home3/rollerco/logs/" : "/tmp/";
5
close STDERR;
6
open STDERR, '>>', $error_log_path.'vorc_error.log' or warn "Failed to open redirected logfile ($0): $!";
7
#warn "Redirecting errors to ${error_log_path}vorc_error.log";
8
 
7 - 9
use strict;
8 - 10
use cPanelUserConfig;
7 - 11
use RollerCon;
50 bgadell 12
use CGI qw/param header start_html url/;
7 - 13
use CGI::Cookie;
50 bgadell 14
#use WebDB;
7 - 15
our $h = HTML::Tiny->new( mode => 'html' );
16
 
50 bgadell 17
my $cookie_string = authenticate (1) || die;
7 - 18
my ($EML, $PWD, $LVL) = split /&/, $cookie_string;
50 bgadell 19
#my $user = getUser($EML);
20
my $user = $ORCUSER;
21
#$user->{department} = convertDepartments $user->{department};
35 - 22
my $activated = max (values %{ $user->{department} });
7 - 23
my $RCAUTH_cookie = CGI::Cookie->new(-name=>'RCAUTH',-value=>"$cookie_string",-expires=>"+30m");
50 bgadell 24
my $DEPTS = getDepartments ();
7 - 25
 
50 bgadell 26
print header (-cookie=>$RCAUTH_cookie);
7 - 27
 
28
#foreach (sort keys %ENV) {
29
#	print "$_: $ENV{$_}\n<br>";
30
#}
31
 
32
#use DBI;
35 - 33
#my $dbh = WebDB->connect ();
50 bgadell 34
my $dbh = getRCDBH ();
7 - 35
 
36
use DateTime;
37
my $dt = DateTime->today;
38
$dt =~ s/T00\:00\:00$//;
39
 
50 bgadell 40
my @announcements;
41
push @announcements, $h->li ($h->a ({ href=>'__LINK__?'.$user->{discount_code} }, "THANK YOU! You've earned a discounted pass for next year. Click here to redeem.")) if $user->{discount_code};
56 bgadell 42
my ($announcement) = $dbh->selectrow_array ("select value from setting where setting.key = ?", undef, "ANNOUNCEMENT");
43
push @announcements, $h->li ($announcement) if $announcement;
50 bgadell 44
 
56 bgadell 45
 
7 - 46
my $schedule = getSchedule ($user->{RCid});
47
 
48
my @everyone;
49
my @printDEPTS = map { $DEPTS->{$_} } grep { $user->{department}->{$_} > 0 } grep { !/(ANN)|(OFF)/ } sort keys %{$user->{department}};
50
push @printDEPTS, "Officiating Lead" if $user->{department}->{"OFF"} > 1;
51
my $printDEPTS = join ", ", @printDEPTS;
52
push @everyone, $h->li ($h->a ({ href=>"/schedule/shifts.pl" }, "View and Sign Up for $printDEPTS Shifts")) if $printDEPTS;
53
push @everyone, $h->li ($h->a ({ href=>"/schedule/officiating_shifts.pl" }, "View and Sign Up for Officiating Shifts")) if $user->{department}->{OFF} > 0;
29 - 54
push @everyone, $h->li ($h->a ({ href=>"/schedule/announcer_shifts.pl" }, "View and Sign Up to Announce Games")) if $user->{department}->{ANN} > 0;
56 bgadell 55
push @everyone, $h->li ($h->a ({ href=>"/schedule/games.pl" }, "View Games"));
56
push @everyone, $h->li ($h->a ({ href=>"/schedule/personal_time.pl" }, "Block Personal Time"));
57
push @everyone, $h->li ($h->a ({ href=>"/schedule/view_user.pl?submit=Edit&RCid=$user->{RCid}" }, "Edit your profile"));
7 - 58
 
35 - 59
my @mvppass;
56 bgadell 60
if ($user->{mvp_pass}) {
61
	push @mvppass, $h->li ($h->a ({ href=>"/schedule/classes.pl" }, "View and Sign Up for MVP Classes"))
35 - 62
}
7 - 63
 
64
my @leads = ();
65
if ($LVL > 1) {
56 bgadell 66
	push @leads, $h->li ($h->a ({ href=>"/schedule/users.pl" }, "View Users in your Department(s)."));
7 - 67
	push @leads, $h->li ($h->a ({ href=>"/schedule/password_reset.pl" }, "Reset a Password."));
68
 
69
	# Officiating Leads:
70
	if ($user->{department}->{OFF} > 1) {
71
		unshift @leads, $h->li ($h->a ({ href=>"/schedule/scores.pl" }, "View / Update Game Scores"));
72
#		 push @leads, $h->li ($h->a ({ href=>"daily_print.pl" }, "Daily Print Report"));
73
		push @leads, $h->li (["What's happening right now on...", $h->ul ([
74
			$h->li ($h->a ({ href=>"right_now.pl?t=C1" }, "Track C1")),
75
			$h->li ($h->a ({ href=>"right_now.pl?t=C2" }, "Track C2")),
76
			$h->li ($h->a ({ href=>"right_now.pl?t=C3" }, "Track C3")),
77
			$h->li ($h->a ({ href=>"right_now.pl?t=C4" }, "Track C4")),
39 - 78
#			$h->li ($h->a ({ href=>"right_now.pl?t=B"  }, "Track B")),
7 - 79
		])]);
80
	}
81
}
82
 
83
my @managers;
84
if ($LVL >= 3) {
85
	my $manager_departments = join " or ", map { "department like '%$_-0%'" } grep { $user->{department}->{$_} > 2 } keys %{$user->{department}};
8 - 86
	if ($manager_departments) {
87
  	my ($count) = $dbh->selectrow_array ("select count(*) from official where $manager_departments");
88
  	my $counttxt = $count == 1 ? "is 1 user" : "are $count users";
56 bgadell 89
  	push @managers, $h->li ($h->a ({ href=>"users.pl?autoload=1&RCid=true&derby_name=true&email=true&real_name=true&access=true&department=true&added=true&filter-RCid=&filter-derby_name=&filter-email=&filter-real_name=&filter-access=0&filter-department=&filter-added=&sortby=derby_name&limit=25&page=1" }, "There $counttxt waiting to be activated")) if $count;
8 - 90
	}
91
 	push @managers, $h->li ($h->a ({ href=>"/schedule/log.pl" }, "Activity Log"));
29 - 92
  push @managers, $h->li ($h->a ({ href=>"/schedule/volhours.pl" }, "View Volunteer Hours by Department"));
39 - 93
 
94
  foreach (grep { $user->{department}->{$_} > 2 } keys %{$user->{department}}) {
95
    push @managers, $h->li ($h->a ({ href=>"/schedule/shifts.pl?autoload=1&dept=true&role=true&dayofweek=true&location=true&time=true&note=true&derby_name=true&filter-dept=$_&sortby=dayofweek&limit=All&page=1" }, "$DEPTS->{$_} Staff Schedule"));
96
  }
97
 
46 - 98
  if ($user->{department}->{VCI} > 2 or $user->{department}->{MVP} > 2 or $LVL > 4) {
56 bgadell 99
    push @managers, $h->li ($h->a ({ href=>"/schedule/classes.pl" }, "View MVP Classes"));
46 - 100
    push @managers, $h->li ($h->a ({ href=>"/schedule/mvp_class_report.pl", target=>"_new" }, "Daily MVP Class Report (for print)"));
101
    push @managers, $h->li ($h->a ({ href=>"/schedule/daily_print.pl", target=>"_new" }, "Daily Officiating Report (for print)"));
102
    push @managers, $h->li ($h->a ({ href=>"/schedule/daily_print_announcers.pl", target=>"_new" }, "Daily Announcers Report (for print)"));
103
    push @managers, $h->li ($h->a ({ href=>"/schedule/print_dept_by_day.pl", target=>"_new" }, "BETA: Daily Shift Report (for print)"));
104
  }
105
 
7 - 106
	# Shift Report: select dayofweek, count(RCid) as filled_shifts, count(*) - count(RCid) as open_shifts, count(*) as total_shifts from v_shift group by date order by date
107
}
108
 
16 - 109
my @sysadmins;
110
if ($LVL >= 5) {
111
  push @sysadmins, $h->li ($h->a ({ href=>"/schedule/bulk_upload.pl" }, "Upload a CSV of Department Shifts"));
34 - 112
 	push @sysadmins, $h->li ($h->a ({ href=>"/schedule/manage_shifts.pl" }, "Update department shift schedule"));
56 bgadell 113
  push @sysadmins, $h->li ($h->a ({ href=>"/schedule/classes.pl" }, "Manage MVP Classes"));
114
  push @sysadmins, $h->li ($h->a ({ href=>"/schedule/games.pl" }, "Manage Games"));
115
  push @sysadmins, $h->li ($h->a ({ href=>"/schedule/departments.pl" }, "Manage Department Settings"));
116
  push @sysadmins, $h->li ($h->a ({ href=>"/schedule/settings.pl" }, "System Settings"));
50 bgadell 117
 	push @sysadmins, $h->li ($h->a ({ href=>"/schedule/volhours_report.pl?limit=All" }, "YEAR END VOLUNTEER HOURS REPORT"));
35 - 118
 
56 bgadell 119
 	my ($signupcount) = $dbh->selectrow_array ("select count(*) from v_shift where dept = ? and RCid <> '' and year(date) = year(now())", undef, "CLA");
120
 	my ($mvpcount)    = $dbh->selectrow_array ("select count(*) from official where mvp_pass = true");
35 - 121
 
122
 	$mvpcount = 265 unless $mvpcount;
123
 
37 - 124
 	push @sysadmins, $h->li ($mvpcount." MVP Passholders have signed up for ".$signupcount." spots (".sprintf("%.2f", ($signupcount / ($mvpcount*6)) * 100)."\%).");
35 - 125
 
126
 	my ($active) = $dbh->selectrow_array ("select count(distinct RCid) as users from log where timestamp > (now() - interval 30 minute) and event not like 'Updated User Details%' and event not like 'Activated to work%'");
127
 	#my ($active) = $dbh->selectrow_array ("select * from official where last_login > (now() - interval 150 minute) order by last_login desc");
128
 	push @sysadmins, $h->li ("There seem to be about $active user session(s) right now.");
29 - 129
#  push @sysadmins, $h->li ($h->a ({ href=>"/schedule/volhours.pl" }, "View Volunteer Hours by Department"));
16 - 130
}
131
 
7 - 132
my @activity_log;
133
my $alog = $dbh->prepare("select timestamp, event from v_log where RCid = ? limit 10");
134
$alog->execute($user->{RCid});
135
while (my @logs = $alog->fetchrow_array) {
136
	my ($d, $t) = split /\s+/, $logs[0];
137
	push @activity_log, $h->li ({ class=>"shaded" }, join " ", @logs);
138
}
139
 
140
my @reference;
8 - 141
push @reference, $h->li ($h->a ({ href=>"/info.html" }, "Information about using this tool"));
7 - 142
push @reference, $h->li ($h->a ({ href=>"http://rollercon.com/help-wanted/officiating/" }, "RollerCon Officiating Details"));
143
 
144
printRCHeader("Home");
145
print $h->close ("table");
146
 
50 bgadell 147
print $h->form ({ name => "Req", action => url });
7 - 148
 
50 bgadell 149
print $h->div ({ class=>"index" }, [$h->p ({ class=>"heading" }, "Announcement:"), $h->ul ([ @announcements ]) ]) if (scalar @announcements);
150
 
35 - 151
print $h->div ({ class=>"index" }, [$h->p ({ class=>"heading" }, "Note:"), "<b>Your account is being reviewed.</b>", $h->br, "You won't have access to view or sign-up for things until you've been approved / added to a department.", $h->br, "Please watch your email for notifications." ]) unless $activated;
152
 
7 - 153
print $h->div ({ class=>"index" }, [$h->p ({ class=>"heading" }, "Your up-coming schedule (as of $dt):"), $schedule, $h->h5 ("[".$h->a ({ href=>"export_ics.pl?RCid=$user->{RCid}" }, "use this link for iCal")."]") ]) if $schedule;
154
 
35 - 155
print $h->div ({ class=>"index" }, [$h->p ({ class=>"heading" }, "MVP Pass Holders:"), $h->ul ([ @mvppass ]) ]) if (scalar @mvppass);
156
 
7 - 157
print $h->div ({ class=>"index" }, [$h->p ({ class=>"heading" }, "Things you can do:"), $h->ul ([ @everyone ]) ]);
158
 
159
print $h->div ({ class=>"index" }, [$h->p ({ class=>"heading" }, "Things you can do as a Lead:"), $h->ul ([ @leads ]) ]) if ($LVL > 1);
160
 
16 - 161
print $h->div ({ class=>"index" }, [$h->p ({ class=>"heading" }, "Things you can do as a Manager:"), $h->ul ([ @managers ]) ]) if ($LVL > 2);
7 - 162
 
16 - 163
print $h->div ({ class=>"index" }, [$h->p ({ class=>"heading" }, "Things you can do as a SysAdmin:"), $h->ul ([ @sysadmins ]) ]) if ($LVL >= 5);
164
 
8 - 165
print $h->div ({ class=>"index" }, [$h->p ({ class=>"heading" }, "Your Latest Activity:"), $h->ul ([ @activity_log ]), $h->h5 ($h->a ({ href=>"log.pl?excel=0&autoload=1&eventid=true&timestamp=true&event=true&RCid=true&derby_name=true&filter-timestamp=&filter-event=&filter-RCid=".$user->{RCid}."&filter-derby_name=&sortby=eventid&limit=25&page=1" }, "[Your entire log history]")) ]);
7 - 166
 
167
print $h->div ({ class=>"index" }, [$h->p ({ class=>"heading" }, "Reference:"), $h->ul ([ @reference ]) ]);
168
 
169
print $h->close ("body"), $h->close ("html");
170
 
50 bgadell 171