integrate RTx::Statistics package, part of merging spiritone RT changes (#1661)
[freeside.git] / rt / html / Developer / CronTool / index.html
1 % if ($@) {\r
2 <P><FONT Color="red"><% $@ %></FONT></P>\r
3 % }\r
4 % if (!$NoUI) {\r
5 <HR>\r
6 <FORM Action="index.html" Method="POST">\r
7 <TABLE>\r
8 % foreach my $class (qw( Search Condition Action )) {\r
9 <TR><TH>\r
10 <% loc($class) %>\r
11 </TH><TD>\r
12 <SELECT NAME="<% $class %>">\r
13 %  require File::Find;\r
14 %  my @modules;\r
15 %  File::Find::find(sub {\r
16 %    push @modules, $1 if /^(?!Generic|UserDefined)(\w+)\.pm$/i;\r
17 %  }, grep -d, map "$_/RT/$class", @INC);\r
18 <OPTION <% $ARGS{$class} ? '' : 'SELECTED' %>></OPTION>\r
19 %  foreach my $module (sort @modules) {\r
20 %    my $fullname = "RT::$class\::$module";\r
21     <OPTION VALUE="<% $fullname %>" <% ($fullname eq $ARGS{$class}) ? 'SELECTED' : '' %>><% $module %></OPTION>\r
22 %  }\r
23 </SELECT>\r
24 </TD><TH>\r
25 <&|/l&>Parameter</&>\r
26 </TH><TD>\r
27 <INPUT NAME="<% $class %>Arg" VALUE="<% $ARGS{$class.'Arg'} %>">\r
28 </TD></TR>\r
29 % }\r
30 <TR>\r
31 <TD COLSPAN="4" ALIGN="Right">\r
32 <LABEL>\r
33 <INPUT TYPE="CheckBox" NAME="Verbose" <% $Verbose ? 'CHECKED' : '' %>><&|/l&>Verbose</&>\r
34 </LABEL>\r
35 <INPUT TYPE="Submit" VALUE="<&|/l&>Run</&>">\r
36 </TD>\r
37 </TABLE>\r
38 </FORM>\r
39 <HR>\r
40 % }\r
41 <%INIT>\r
42 $m->print("<H1>", loc("Web CronTool"), "</H1>");\r
43 if ($Search) {\r
44     my $load_module = sub {\r
45         my $modname = $_[0];\r
46         $modname =~ s{::}{/}g;\r
47         require "$modname.pm" or die (\r
48             loc( "Failed to load module [_1]. ([_2])", $_[0], $@ ) . "\n"\r
49         );\r
50     };\r
51     $m->print(loc("Starting..."), "<UL>");\r
52     eval {\r
53         $load_module->($Search);\r
54         $load_module->($Action) if $Action;\r
55         $load_module->($Condition) if $Condition;\r
56 \r
57         if ($TemplateId and !$TemplateObj) {\r
58             $TemplateObj = RT::Template->new($RT::Nobody);\r
59             $TemplateObj->LoadById($TemplateId);\r
60         }\r
61 \r
62         my $tickets = RT::Tickets->new($RT::SystemUser);\r
63         my $search  = $Search->new( TicketsObj => $tickets, Argument => $SearchArg );\r
64         $search->Prepare;\r
65         my $tickets_found = $search->TicketsObj;\r
66 \r
67         #for each ticket we've found\r
68         while ( my $ticket = $tickets_found->Next ) {\r
69             $m->print("<LI>" . $ticket->Id . ": ") if $Verbose;\r
70             $m->print(loc("Checking...")) if $Verbose;\r
71 \r
72             # perform some more advanced check\r
73             if ($Condition) {\r
74                 my $ConditionObj = $Condition->new(\r
75                     TicketObj => $ticket,\r
76                     Argument  => $ConditionArg\r
77                 );\r
78 \r
79                 # if the condition doesn't apply, get out of here\r
80                 next unless ( $ConditionObj->IsApplicable );\r
81                 $m->print(loc("Condition matches...")) if $Verbose;\r
82             }\r
83 \r
84             if ($Action) {\r
85                 #prepare our action\r
86                 my $ActionObj = $Action->new(\r
87                     TicketObj => $ticket,\r
88                     TemplateObj => $TemplateObj,\r
89                     Argument  => $ActionArg\r
90                 );\r
91 \r
92                 #if our preparation, move onto the next ticket\r
93                 next unless ( $ActionObj->Prepare );\r
94                 $m->print(loc("Action prepared...")) if $Verbose;\r
95 \r
96                 #commit our action.\r
97                 next unless ( $ActionObj->Commit );\r
98                 $m->print(loc("Action committed.")) if $Verbose;\r
99             }\r
100         }\r
101     };\r
102     $m->print('</UL>', loc("Finished."));\r
103 }\r
104 </%INIT>\r
105 <%ARGS>\r
106 $Search => undef\r
107 $SearchArg => undef\r
108 $Condition => undef\r
109 $ConditionArg => undef\r
110 $Action => undef\r
111 $ActionArg => undef\r
112 $TemplateId => undef\r
113 $TemplateObj => undef\r
114 $Verbose => 1\r
115 $NoUI => 0\r
116 </%ARGS>\r