| Server IP : 172.67.201.108 / Your IP : 216.73.216.11 Web Server : Apache/2.4.68 (Amazon Linux) OpenSSL/3.5.5 System : Linux ip-172-31-69-123.ec2.internal 6.1.176-223.369.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jul 24 13:34:27 UTC 2026 x86_64 User : ec2-user ( 1000) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/tgnewdev/admin/rpt/ |
Upload File : |
<?php include('mod/_mod_security.php'); ?>
<?php
$criteria = '';
$filter = '';
if (($_POST['oba_predefined_range'] ?? '') === 'Current Month') :
$_POST['oba_date_start'] = date('Y-m-d', strtotime('first day of this month'));
$_POST['oba_date_end'] = date('Y-m-d', strtotime('last day of this month'));
elseif (($_POST['oba_predefined_range'] ?? '') === 'Last Month') :
$_POST['oba_date_start'] = date('Y-m-d', strtotime('first day of last month'));
$_POST['oba_date_end'] = date('Y-m-d', strtotime('last day of last month'));
elseif (($_POST['oba_predefined_range'] ?? '') === 'Last Week') :
$_POST['oba_date_start'] = date('Y-m-d', strtotime('monday last week'));
$_POST['oba_date_end'] = date('Y-m-d', strtotime('sunday last week'));
else :
if (empty($_POST['oba_date_start'])) :
$_POST['oba_date_start'] = date('Y-m-d', strtotime('monday last week'));
endif;
if (empty($_POST['oba_date_end'])) :
$_POST['oba_date_end'] = date('Y-m-d', strtotime('sunday last week'));
endif;
endif;
switch ($_POST['oba_sort_rank'] ?? '') :
case 'Show Name':
$sort_rank = 'os.name ASC';
$filter .= '<br> Primary Sort/Rank: ' . 'Show Name';
break;
case 'Location':
$sort_rank = 'ol.name ASC';
$filter .= '<br> Primary Sort/Rank: ' . 'Location';
break;
case 'Views - Rank':
$sort_rank = 'view_count DESC';
$filter .= '<br> Primary Sort/Rank: ' . 'Views - Rank';
break;
case 'Clicks - Rank':
$sort_rank = 'click_count DESC';
$filter .= '<br> Primary Sort/Rank: ' . 'Clicks - Rank';
break;
default:
$sort_rank = 'view_count DESC';
$filter .= '<br> Primary Sort/Rank: ' . 'Views - Rank';
endswitch;
switch ($_POST['oba_sort_rank2'] ?? '') :
case 'Show Name':
$sort_rank .= ', os.name ASC';
$filter .= '<br> Seondary Sort/Rank: ' . 'Show Name';
break;
case 'Location':
$sort_rank .= ', ol.name ASC';
$filter .= '<br> Seondary Sort/Rank: ' . 'Location';
break;
case 'Views - Rank':
$sort_rank .= ', view_count DESC';
$filter .= '<br> Seondary Sort/Rank: ' . 'Views - Rank';
break;
case 'Clicks - Rank':
$sort_rank .= ', click_count DESC';
$filter .= '<br> Seondary Sort/Rank: ' . 'Clicks - Rank';
break;
default:
$sort_rank .= ' ';
$filter .= '<br> Seondary Sort/Rank: ' . 'None';
endswitch;
if (!empty($_POST['oba_date_start']) && is_date($_POST['oba_date_start'])) :
$criteria .= " AND a.create_date >= " . nzdate($_POST['oba_date_start']) . " ";
$filter .= '<br> Analytics start date: ' . nzdate_display($_POST['oba_date_start']);
endif;
if (!empty($_POST['oba_date_end']) && is_date($_POST['oba_date_end'])) :
$criteria .= " AND a.create_date <= " . nzdatetime($_POST['oba_date_end'] . ' 23:59:59') . " ";
$filter .= '<br> Analytics end date: ' . nzdate_display($_POST['oba_date_end']);
endif;
if (!empty($_POST['oba_location_id'])) :
$criteria .= " AND ol.id = " . nz($_POST['oba_location_id'], '0') . " ";
$filter .= '<br> Location: ' . lookup_db_field('obw_locations', 'id', $_POST['oba_location_id'], 'name');
endif;
$slug_start_position = strlen(APP_BASE_USER_SITE_SECURE . 'events/') + 1;
$sql = "SELECT
os.id,
os.name,
os.slug,
os.start_date,
os.end_date,
os.create_date,
os.obw_location_id,
ol.name AS location_name,
ol.slug AS location_slug,
COUNT(DISTINCT CASE WHEN a.category = 'page_view' AND a.action = 'view' THEN a.id ELSE NULL END) AS view_count,
COUNT(DISTINCT CASE WHEN a.category = 'outbound_ticket_link' AND a.action = 'click' THEN a.id ELSE NULL END) AS click_count
FROM obw_shows os
LEFT JOIN obw_locations ol ON (os.obw_location_id = ol.id)
LEFT JOIN analytics a ON (a.reference_type = 'off_broadway_show' AND a.reference_id = os.id)
WHERE os.status = 1
$criteria
GROUP BY os.id, os.name
ORDER BY $sort_rank
";
//error_log($sql);
$result = $db->query($sql) or die('Database Error!');
$row_count = $result->rowCount();
if ($row_count <= 0) :
echo 'No data for report!';
exit();
endif;
$rpt = get_report_class($_POST['output_format']);
$rpt->set_report_title('Off Broadway Analytics by Show');
$rpt->report_start();
$rpt->header_start();
if (!empty($filter)) :
$rpt->header_row_start();
$rpt->header_cell_add('Filters: '.$filter, ['colspan'=>'8', 'class'=>'large']);
$rpt->header_row_end();
endif;
$rpt->header_row_start();
$rpt->header_cell_add('Show Name', ['width'=>'250']);
$rpt->header_cell_add('Location', ['width'=>'250']);
$rpt->header_cell_add('Posted Date', ['width'=>'120']);
$rpt->header_cell_add('Open Date', ['width'=>'120']);
$rpt->header_cell_add('Close Date', ['width'=>'120']);
$rpt->header_cell_add('Views', ['width'=>'100']);
$rpt->header_cell_add('Clicks', ['width'=>'100']);
$rpt->header_cell_add('% Clicks', ['width'=>'110']);
$rpt->header_row_end();
$rpt->header_end();
$rpt->data_start();
$rows = $result->fetchAll(PDO::FETCH_OBJ);
$total_events = array_sum(array_column($rows, 'event_count'));
$total_views = array_sum(array_column($rows, 'view_count'));
$total_clicks = array_sum(array_column($rows, 'click_count'));
$rpt->data_row_start();
$rpt->data_cell_add('Total shows', ['style' => 'font-size:125%; font-weight:bold;']);
$rpt->data_cell_add($row_count, ['align'=>'right', 'style' => 'font-size:125%; font-weight:bold;']);
$rpt->data_cell_add('');
$rpt->data_cell_add('');
$rpt->data_cell_add('');
$rpt->data_cell_add($total_views, ['align'=>'right', 'style' => 'font-size:125%; font-weight:bold;']);
$rpt->data_cell_add($total_clicks, ['align'=>'right', 'style' => 'font-size:125%; font-weight:bold;']);
$rpt->data_cell_add(number_format($total_views > 0 ? (($total_clicks / $total_views) * 100) : 0, 2), ['align'=>'right', 'style' => 'font-size:125%; font-weight:bold;']);
$rpt->data_row_end();
foreach ($rows as $row) :
$rpt->data_row_start();
$rpt->data_cell_add('<a href="' . APP_BASE_USER_SITE_SECURE . 'off-broadway/' . $row->slug . '" target="_blank">' . $row->name . '</a>');
$rpt->data_cell_add(!empty($row->location_name) ? '<a href="' . APP_BASE_USER_SITE_SECURE . 'off-broadway/locations/' . $row->location_slug . '" target="_blank">' . $row->location_name . '</a>' : $row->submitted_location);
$rpt->data_cell_add(nzdate_display($row->create_date));
$rpt->data_cell_add(nzdate_display($row->start_date));
$rpt->data_cell_add(nzdate_display($row->end_date));
$rpt->data_cell_add($row->view_count, ['align'=>'right']);
$rpt->data_cell_add($row->click_count, ['align'=>'right']);
$rpt->data_cell_add(number_format($row->view_count > 0 ? (($row->click_count / $row->view_count) * 100) : 0, 2), ['align'=>'right']);
$rpt->data_row_end();
endforeach;
$rpt->data_row_start();
$rpt->data_cell_add('Total shows', ['style' => 'font-size:125%; font-weight:bold;']);
$rpt->data_cell_add($row_count, ['align'=>'right', 'style' => 'font-size:125%; font-weight:bold;']);
$rpt->data_cell_add('');
$rpt->data_cell_add('');
$rpt->data_cell_add('');
$rpt->data_cell_add($total_views, ['align'=>'right', 'style' => 'font-size:125%; font-weight:bold;']);
$rpt->data_cell_add($total_clicks, ['align'=>'right', 'style' => 'font-size:125%; font-weight:bold;']);
$rpt->data_cell_add(number_format($total_views > 0 ? (($total_clicks / $total_views) * 100) : 0, 2), ['align'=>'right', 'style' => 'font-size:125%; font-weight:bold;']);
$rpt->data_row_end();
$rpt->data_end();
$rpt->report_end();
$rpt->output_report();