PluginProbe
SellKit – Funnel builder and checkout optimizer for WooCommerce to sell more, faster / trunk
SellKit – Funnel builder and checkout optimizer for WooCommerce to sell more, faster vtrunk
2.6.0 trunk 1.1.0 1.1.4 1.2.1 1.2.2 1.2.3 1.2.5 1.2.9 1.3.1 1.3.2 1.5.0 1.5.1 1.5.4 1.5.7 1.5.8 1.5.9 1.6.2 1.6.5 1.6.8 1.7.2 1.7.4 1.7.5 1.7.9 1.8.1 All 42 releases
sellkit / includes / admin / components / analytics / funnel / summary.php

summary.php in SellKit – Funnel builder and checkout optimizer for WooCommerce to sell more, faster trunk, at includes/admin/components/analytics/funnel/summary.php

97 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Sellkit\Admin\Components\Analytics\Funnel;
4
5 use Sellkit\Admin\Components\Analytics;
6 use Sellkit\Database;
7
8 defined( 'ABSPATH' ) || die();
9
10 /**
11 * Components class.
12 *
13 * @since 1.1.0
14 * @SuppressWarnings(PHPMD.NPathComplexity)
15 */
16 class Summary {
17
18 /**
19 * All valid discounts.
20 *
21 * @var $data array Discounts.
22 */
23 public $data;
24
25 /**
26 * Class instance.
27 *
28 * @since 1.1.0
29 * @var Summary
30 */
31 private static $instance = null;
32
33 /**
34 * Gets class instance.
35 *
36 * @since 1.1.0
37 * @return Summary
38 */
39 public static function get_instance() {
40 if ( null === self::$instance ) {
41 self::$instance = new self();
42 }
43
44 return self::$instance;
45 }
46
47 /**
48 * Class constructor.
49 *
50 * @since 1.1.0
51 */
52 public function __construct() {
53 $this->set_alert_details();
54 }
55
56 /**
57 * Set discount details.
58 *
59 * @since 1.1.0
60 */
61 public function set_alert_details() {
62 global $wpdb;
63
64 $funnel_id = sellkit_htmlspecialchars( INPUT_GET, 'target_id' );
65
66 $start_date = time() - ( 60 * 60 * 24 * Analytics::$date_range );
67
68 $sellkit_prefix = Database::DATABASE_PREFIX;
69 $funnel_table = "{$wpdb->prefix}{$sellkit_prefix}applied_funnel";
70
71 // phpcs:disable
72 $query_result = $wpdb->get_results(
73 $wpdb->prepare( "SELECT SUM(visit) as visit, SUM(unique_visit) as unique_visit
74 , SUM(revenue) as revenue, SUM(orders) as orders, SUM(upsell_revenue) as upsell_revenue
75 , SUM(is_started_number) as total_started, SUM(is_finished_number) as total_finished
76 FROM {$funnel_table}
77 where applied_at > {$start_date} and funnel_id " . Analytics::target_id_condition( $funnel_id ) . " %d", $funnel_id ),
78 ARRAY_A );
79
80 $this->data['visit'] = ! empty( $query_result[0]['visit'] ) ? $query_result[0]['visit'] : 0;
81 $this->data['unique_visit'] = ! empty( $query_result[0]['unique_visit'] ) ? $query_result[0]['unique_visit'] : 0;
82 $this->data['revenue'] = ! empty( $query_result[0]['revenue'] ) ? $query_result[0]['revenue'] : 0;
83 $this->data['orders'] = ! empty( $query_result[0]['orders'] ) ? $query_result[0]['orders'] : 0;
84 $this->data['upsell_revenue'] = ! empty( $query_result[0]['upsell_revenue'] ) ? round( $query_result[0]['upsell_revenue'], 2 ) : 0;
85 $total_leave = $query_result[0]['total_started'] - $query_result[0]['total_finished'];
86 $bounce_rate = ! empty( $query_result[0]['total_started'] ) ? ( $total_leave * 100 ) / $query_result[0]['total_started'] : 0;
87 $this->data['bounce_rate'] = ( ! empty( $bounce_rate ) && $bounce_rate > 0 ) ? floatval( number_format( $bounce_rate , 2 ) ) : 0;
88 $conversion_rate = empty( $query_result[0]['total_started'] ) ? 0 : ( $query_result[0]['total_finished'] / $query_result[0]['total_started'] ) * 100;
89 $this->data['conversion_rate'] = ! empty( $conversion_rate ) ? floatval( number_format( $conversion_rate , 2 ) ) : 0;
90 $average_order_value = empty( $this->data['orders'] ) ? 0 : $this->data['revenue'] / $this->data['orders'];
91 $this->data['average_order_value'] = ! empty( $average_order_value ) ? floatval( number_format( $average_order_value , 2 ) ) : 0;
92 // phpcs:enable
93
94 $this->data['target_title'] = sellkit_decode_entity_title( get_the_title( $funnel_id ) );
95 }
96 }
97