PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.25
Advanced Ads – Ad Manager & AdSense v2.0.25
2.0.25 2.0.24 2.0.23 2.0.22 2.0.21 1.38.0 1.39.0 1.39.1 1.39.2 1.39.3 1.39.4 1.4.0 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 1.4.7 1.4.8 1.4.9 1.40.0 1.40.1 1.40.2 1.41.0 1.42.0 1.42.1 1.42.2 1.43.0 1.44.0 1.44.1 1.45.0 1.45.1 1.46.0 1.47.0 1.47.1 1.47.2 1.47.3 1.47.4 1.47.5 1.48.0 1.48.1 1.49.0 1.5.0 1.5.0.1 1.5.1 1.5.2 1.5.2.1 1.5.4 1.5.4.1 1.5.5 1.50.0 1.51.0 1.51.1 1.51.2 1.51.3 1.52.0 1.52.1 1.52.2 1.52.3 1.52.4 1.53.0 1.53.1 1.53.2 1.54.0 1.54.1 1.55.0 1.56.0 1.56.1 1.56.2 1.56.3 1.56.4 1.6 1.6.1 1.6.10 1.6.10.1 1.6.10.2 1.6.11 1.6.11.1 1.6.12 1.6.13 1.6.14 1.6.15 1.6.16 1.6.17 1.6.17.1 1.6.17.2 1.6.2 1.6.2.1 1.6.3 1.6.4 1.6.4.1 1.6.5 1.6.6 1.6.6.1 1.6.7 1.6.7.1 1.6.8 1.6.8.1 1.6.8.2 1.6.8.3 1.6.9 1.6.9.1 1.6.9.2 1.6.9.3 1.6.9.4 1.7 1.7.0.1 1.7.0.2 1.7.0.3 1.7.1 1.7.1.1 1.7.1.2 1.7.1.3 1.7.1.4 1.7.1.5 1.7.10 trunk 1.7.11 1.0.1 1.7.12 1.0.2 1.7.13 1.0.3 1.7.14 1.1.0 1.7.15 1.1.1 1.7.16 1.1.2 1.7.17 1.1.3 1.7.18 1.10 1.7.19 1.10.1 1.7.2 1.10.10 1.7.2.1 1.10.11 1.7.20 1.10.12 1.7.21 1.10.2 1.7.22 1.10.3 1.7.23 1.10.4 1.7.24 1.10.5 1.7.25 1.10.6 1.7.3 1.10.7 1.7.4 1.10.8 1.7.4.1 1.10.9 1.7.4.2 1.11 1.7.4.3 1.11.1 1.7.4.4 1.11.2 1.7.4.5 1.12 1.7.5 1.13 1.7.5.1 1.13.1 1.7.6 1.13.2 1.7.7 1.13.3 1.7.8 1.13.4 1.7.9 1.13.5 1.7.9.1 1.13.6 1.7.9.2 1.13.7 1.7.9.3 1.13.8 1.8 1.14 1.8.1 1.14.1 1.8.10 1.14.10 1.8.11 1.14.11 1.8.12 1.14.2 1.8.13 1.14.3 1.8.14 1.14.4 1.8.15 1.14.5 1.8.16 1.14.6 1.8.17 1.14.7 1.8.18 1.14.8 1.8.19 1.14.9 1.8.2 1.15 1.8.20 1.16 1.8.21 1.16.1 1.8.22 1.17 1.8.23 1.17.1 1.8.24 1.17.10 1.8.25 1.17.10-rc.1 1.8.26 1.17.11 1.8.27 1.17.12 1.8.28 1.17.12-rc.1 1.8.29 1.17.2 1.8.3 1.17.3 1.8.30 1.17.4 1.8.4 1.17.5 1.8.5 1.17.6 1.8.6 1.17.7 1.8.7 1.17.8 1.8.8 1.17.9 1.8.9 1.17.9-beta.1 1.9 1.18.0 2.0.0 1.19.0 2.0.1 1.19.1 2.0.10 1.2 2.0.11 1.2.1 2.0.12 1.2.2 2.0.13 1.2.3 2.0.14 1.2.4 2.0.15 1.2.5 2.0.16 1.2.6 2.0.17 1.2.7 2.0.18 1.20.0 2.0.19 1.20.0-rc.1 2.0.2 1.20.0-rc.2 2.0.20 1.20.1 2.0.3 1.20.2 2.0.4 1.20.3 2.0.5 1.21.0 2.0.6 1.21.1 2.0.7 1.22.0 2.0.8 1.22.1 2.0.9 1.22.2 1.23.0 1.23.1 1.23.2 1.24.0 1.24.1 1.24.2 1.25.0 1.25.1 1.26.0 1.27.0 1.28.0 1.29.0 1.29.1 1.3 1.3.1 1.3.10 1.3.11 1.3.12 1.3.13 1.3.14 1.3.15 1.3.16 1.3.17 1.3.18 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.7 1.3.8 1.3.9 1.30.0 1.30.1 1.30.2 1.30.2-rc.1 1.30.3 1.30.4 1.30.4-rc.1 1.30.5 1.31.0 1.31.1 1.32.0 1.32.0-rc.1 1.33.0 1.33.1 1.33.2 1.34.0 1.35.0 1.35.1 1.36.0 1.36.1 1.36.2 1.36.3 1.37.0 1.37.1 1.37.2
advanced-ads / modules / gadsense / includes / class-adsense-report.php
advanced-ads / modules / gadsense / includes Last commit date
types 1 year ago adsense-report-api.php 1 year ago class-ad-type-adsense.php 3 months ago class-adsense-report-data.php 1 year ago class-adsense-report.php 1 year ago class-gadsense-data.php 1 year ago class-mapi.php 1 year ago class-network-adsense.php 1 year ago
class-adsense-report.php
177 lines
1 <?php
2
3 /**
4 * Class Advanced_Ads_AdSense_Report
5 *
6 * Displays AdSense earnings on the ad overview page or the ad edit page.
7 */
8 class Advanced_Ads_AdSense_Report {
9
10 /**
11 * Domain name or ad unit to filter data with before display.
12 *
13 * @var string
14 */
15 private $filter;
16
17 /**
18 * Report type. 'unit' or 'domain'.
19 *
20 * @var string
21 */
22 private $type;
23
24 /**
25 * Object representing the current report data.
26 *
27 * @var AdSense_Report_Data
28 */
29 private $data_object;
30
31 /**
32 * Error from the last attempt to call Google.
33 *
34 * @var string
35 */
36 private $last_api_error_message;
37
38 /**
39 * Instance constructor.
40 *
41 * @param string $type report type.
42 * @param string $filter report filter.
43 */
44 public function __construct( $type = 'unit', $filter = '' ) {
45 $this->type = $type;
46
47 if ( 'domain' === $type && ! empty( $filter ) ) {
48 update_option( 'advanced-ads-adsense-dashboard-filter', $filter );
49 // Backward compatibility: "*" was used to display data for all domains if API version prior to 2.0.
50 if ( '*' === $filter ) {
51 $filter = '';
52 }
53 }
54
55 $this->filter = $filter;
56 $this->data_object = AdSense_Report_Data::get_data_from_options( $type );
57 }
58
59 /**
60 * Tries to get fresh data from Google.
61 *
62 * @return bool true if we got fresh data.
63 */
64 public function refresh_report() {
65 $api_helper = new Advanced_Ads_AdSense_Report_Api( $this->type );
66 $error = [];
67
68 if ( $api_helper->has_token() ) {
69 $response = $api_helper->call_google();
70 if ( true === $response['status'] ) {
71 $this->data_object->update_data_from_response( $response['response_body'] );
72
73 return true;
74 }
75 if ( isset( $response['msg'] ) ) {
76 $this->last_api_error_message = $response['msg'];
77
78 return false;
79 }
80 }
81
82 if ( $api_helper->has_token_error() ) {
83 $error = $api_helper->get_token_error();
84 }
85
86 if ( isset( $error['msg'] ) ) {
87 $this->last_api_error_message = $error['msg'];
88
89 return false;
90 }
91
92 if ( isset( $error['raw'] ) ) {
93 $this->last_api_error_message = $error['raw'];
94
95 return false;
96 }
97
98 if ( empty( $this->last_api_error_message ) ) {
99 $this->last_api_error_message = __( 'No valid tokens', 'advanced-ads' );
100 }
101
102 return false;
103 }
104
105 /**
106 * Retrieve the error message from the last API call.
107 *
108 * @return string Error message from the last API call.
109 */
110 public function get_last_api_error() {
111 if ( empty( $this->last_api_error_message ) ) {
112 return '';
113 }
114
115 return $this->last_api_error_message;
116 }
117
118 /**
119 * Returns the report data object.
120 *
121 * @return AdSense_Report_Data
122 */
123 public function get_data() {
124 return $this->data_object;
125 }
126
127 /**
128 * Build an return the HTML markup for display.
129 *
130 * @return string the final markup.
131 */
132 public function get_markup() {
133 if ( ! $this->get_data()->is_valid() ) {
134 return '<p style="text-align:center;"><span class="report-need-refresh spinner advads-ad-parameters-spinner advads-spinner"></span></p>';
135 }
136 ob_start();
137 $report_filter = $this->filter;
138 $report_domains = $this->data_object->get_domains();
139 $sums = $this->data_object->get_sums( $this->filter );
140 $earning_cells = '';
141 foreach ( $sums as $index => $sum ) {
142 $earning_cells .= $this->get_earning_cell( $sum, $index );
143 }
144
145 require_once GADSENSE_BASE_PATH . '/admin/views/adsense-report.php';
146 return ob_get_clean();
147 }
148
149 /**
150 * Build and return the HTML markup for a given period.
151 *
152 * @param float $sum the earning for that period.
153 * @param string $index the period identifier.
154 *
155 * @return string HTML of the individual cell.
156 */
157 private function get_earning_cell( $sum, $index ) {
158 $period_strings = [
159 'today' => esc_html__( 'Today', 'advanced-ads' ),
160 'yesterday' => esc_html__( 'Yesterday', 'advanced-ads' ),
161 /* translators: 1: The number of days. */
162 '7days' => sprintf( esc_html__( 'Last %1$d days', 'advanced-ads' ), 7 ),
163 'this_month' => esc_html__( 'This Month', 'advanced-ads' ),
164 /* translators: 1: The number of days. */
165 '28days' => sprintf( esc_html__( 'Last %1$d days', 'advanced-ads' ), 28 ),
166 ];
167
168 $markup = '<div class="advads-flex1 advads-stats-box"><div>' . $period_strings[ $index ] . '</div>';
169 $markup .= '<div class="advads-stats-box-main">';
170 $markup .= number_format_i18n( ceil( 100 * $sum ) / 100, 2 );
171 $markup .= ' ' . $this->get_data()->get_currency();
172 $markup .= '</div></div>';
173
174 return $markup;
175 }
176 }
177