<& 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!
!. '
From '. include('/elements/input-date-field.html', { 'name' => 'beginning', 'value' => scalar($cgi->param('beginning')) } ). ' To '. include('/elements/input-date-field.html', { 'name' => 'ending', 'value' => (scalar($cgi->param('ending')) || ''), 'noinit' => 1, } ). ' Status '. include('/elements/select.html', 'field' => 'status', 'curr_value' => scalar($cgi->param('status')) || '', 'options' => [ '', 'failed', 'sent', ], 'labels' => { '' => '(any)', 'failed' => 'failed', 'sent' => 'sent', }, ) . ' Type '. include('/elements/select.html', 'field' => 'msgtype', 'curr_value' => scalar($cgi->param('msgtype')) || '', 'options' => [ '', 'invoice', 'receipt', 'admin', 'report' ], 'labels' => { '' => '(any)', 'invoice' => 'Invoices', 'receipt' => 'Receipts', 'admin' => 'Admin notices', 'report' => 'Reports', }, ) . '

';