& elements/search.html,
'title' => $title,
'name_singular' => 'message',
'query' => $query,
'count_query' => $count_query,
'header' => [
'Date',
'Type',
'Destination',
'Status',
'', #error
],
'fields' => [
sub {
my $date = $_[0]->_date;
$date ? time2str('%Y-%m-%d %T',$_[0]->_date) : ''
},
sub {
ucfirst($_[0]->msgtype) || $_[0]->msgname
},
sub {
join('
',
map { encode_entities($_->format) }
Email::Address->parse($_[0]->env_to)
)
},
'status',
sub { encode_entities($_[0]->error) },
],
'sort_fields' => [ '_date',
'msgtype',
'env_to',
'status',
'error',
],
'align' => 'rllcl',
'links' => [],
'link_onclicks' => [
$sub_popup_link,
$sub_popup_link,
$sub_popup_link,
'',
'',
],
'color' => [ '',
$typecolor,
'',
$statuscolor,
$statuscolor,
],
'html_init' => $html_init,
'really_disable_download' => 1,
'order_by' => '_date DESC',
&>
<%init>
#hmm...
die "access denied"
unless $FS::CurrentUser::CurrentUser->access_right('View email logs');
my $conf = new FS::Conf;
my $title = 'Outgoing Message Log';
#here is the agent virtualization
my $agentnums_sql = $FS::CurrentUser::CurrentUser->agentnums_sql(
'table' => 'cust_main',
'null_right' => [ 'View system logs', 'Configuration' ],
);
my @where = ( $agentnums_sql );
if ( $cgi->param('status') =~ /^(\w+)$/ ) {
push @where, "status = '$1'";
}
if ( $cgi->param('msgtype') =~ /^(\w+)$/ ) {
push @where, "msgtype = '$1'";
}
if ( $cgi->param('custnum') =~ /^(\d+)$/ ) {
push @where, "cust_msg.custnum = $1";
}
my ($beginning, $ending) = FS::UI::Web::parse_beginning_ending($cgi, '');
push @where, "(_date >= $beginning AND _date <= $ending)";
my $order_by = '_date';
if ( $cgi->param('order_by') =~ /^(\w+)$/ ) {
$order_by = $1;
}
my $where = ' WHERE '. join(' AND ', @where);
my $join_cust_main = ' LEFT JOIN cust_main USING ( custnum ) ';
my $query = {
'table' => 'cust_msg',
'select' => join(', ',
'cust_msg.*',
'msg_template.msgname',
),
'addl_from' => ' LEFT JOIN msg_template USING ( msgnum ) '. $join_cust_main,
'hashref' => {},
'extra_sql' => $where,
'order_by' => "ORDER BY $order_by",
};
my $count_query = "SELECT COUNT(*) FROM cust_msg $join_cust_main $where";
my $sub_popup_link = sub {
my $custmsgnum = $_[0]->custmsgnum;
include('/elements/popup_link_onclick.html',
'action' => $p. 'view/cust_msg.html?' . $custmsgnum,
'actionlabel' => 'Message detail',
'width' => 680,
'height' => 550,
);
};
my %color = (
'failed' => 'FF0000',
'sent' => '',
'invoice' => '00CC00',
'receipt' => '0000CC',
'admin' => 'CC0000',
'' => '000000',
);
my $statuscolor = sub { $color{$_[0]->status} };
my $typecolor = sub { $color{$_[0]->msgtype} };
my $html_init = qq!