output_css(); $data = $this->get_broadcast_timing( $bid ); if ( empty( $data ) ) { echo "

No Broadcast details found.

"; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped exit; } $start_time = ! empty( $data['start_time'] ) ? "Start time: " . $data['start_time'] : ''; if ( empty( $start_time ) ) { echo "

Broadcast not started yet.

"; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped exit; } $end_time = ! empty( $data['start_time'] ) ? "End time: " . $data['end_time'] : ''; if ( empty( $end_time ) ) { echo "

Broadcast is not finished yet.

"; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped exit; } $total_sent = ! empty( $data['sent'] ) ? "Total sent: " . $data['sent'] : ''; if ( empty( $total_sent ) ) { echo "

No emails sent yet.

"; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped exit; } $total_time = strtotime( $data['end_time'] ) - strtotime( $data['start_time'] ); $per_sec = ( $total_time > 0 && $data['sent'] > 0 ) ? absint( $data['sent'] ) / $total_time : $data['sent']; echo '
'; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo "$start_time
"; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo "$end_time
"; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo "$total_sent
"; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo "Total time in secs: "; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo ( ! empty( $total_time ) ) ? $total_time : 1; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo "
"; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped if ( ! empty( $total_time ) && ( $total_time > 60 ) ) { echo "Total time in mins: " . intval( $total_time / 60 ) . "
"; } echo "Emails in one second: $per_sec"; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo "

Per second breakup

"; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped $data = $this->get_broadcast_details( $bid ); echo '
'; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo "
Date Time
Count
"; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped $diff_start = ''; $diff_array = []; foreach ( $data as $v ) { if ( ! empty( $diff_start ) && ! empty( $v['created_at'] ) ) { $startd = strtotime( $diff_start ); $endd = strtotime( $v['created_at'] ); $diff = $startd - $endd; if ( ! empty( $diff ) && ( $diff > 1 ) ) { $startd = $startd - 1; $endd = $endd + 1; $resdata = [ 'difference' => $diff - 1, 'end_time' => '-', ]; if ( $startd !== $endd ) { $resdata['end_time'] = date( 'Y-m-d H:i:s', $startd ); $resdata['start_time'] = date( 'Y-m-d H:i:s', $endd ); } else { $resdata['start_time'] = date( 'Y-m-d H:i:s', $startd ); } $diff_array[] = $resdata; } } $diff_start = $v['created_at']; echo "
{$v['created_at']}
{$v['count']}
"; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } echo '
'; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo '
'; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped if ( ! empty( $diff_array ) ) { echo ''; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo ""; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped foreach ( $diff_array as $v ) { echo ""; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } echo '
Start TimeEnd TimeTime ( in sec )
{$v['start_time']}{$v['end_time']}{$v['difference']}
'; //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped } echo '
'; exit; } public function get_broadcast_timing( $oid ) { global $wpdb; $query = "SELECT MAX( created_at ) as end_time, MIN( created_at ) as start_time, COUNT( ID ) as sent FROM {$wpdb->prefix}bwfan_engagement_tracking WHERE `oid` = %d and `type` = %d"; return $wpdb->get_row( $wpdb->prepare( $query, $oid, 2 ), ARRAY_A ); //phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL } public function get_broadcast_details( $oid ) { global $wpdb; $limit = isset( $_GET['limit'] ) ? (int) $_GET['limit'] : 100; $page = isset( $_GET['apage'] ) ? (int) $_GET['apage'] : 0; $offset = ( 0 !== $page ) ? ( $page - 1 ) * $limit : 0; $limit_query = " LIMIT 0, 100"; if ( ! empty( $limit ) ) { $limit_query = " LIMIT {$offset}, {$limit}"; } $query = "SELECT `created_at`, count(`created_at`) as `count` FROM `{$wpdb->prefix}bwfan_engagement_tracking` WHERE `type` = %d AND `oid` = %d GROUP BY `created_at` ORDER BY `created_at` DESC $limit_query"; return $wpdb->get_results( $wpdb->prepare( $query, 2, $oid ), ARRAY_A ); //phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL } public function output_css() { ?>