PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 2.0.26
Advanced Ads – Ad Manager & AdSense v2.0.26
2.0.26 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 3 weeks ago adsense-report-api.php 3 weeks ago class-ad-type-adsense.php 3 weeks ago class-adsense-report-data.php 3 weeks ago class-adsense-report.php 3 weeks ago class-gadsense-data.php 3 weeks ago class-mapi.php 3 weeks ago class-network-adsense.php 3 weeks ago
class-adsense-report.php
184 lines
1 <?php // phpcs:ignore WordPress.Files.FileName
2
3 /**
4 * AdSense earnings report display.
5 *
6 * @package AdvancedAds
7 * @author Advanced Ads <info@wpadvancedads.com>
8 */
9
10 /**
11 * Class Advanced_Ads_AdSense_Report
12 *
13 * Displays AdSense earnings on the ad overview page or the ad edit page.
14 */
15 class Advanced_Ads_AdSense_Report {
16
17 /**
18 * Domain name or ad unit to filter data with before display.
19 *
20 * @var string
21 */
22 private $filter;
23
24 /**
25 * Report type. 'unit' or 'domain'.
26 *
27 * @var string
28 */
29 private $type;
30
31 /**
32 * Object representing the current report data.
33 *
34 * @var AdSense_Report_Data
35 */
36 private $data_object;
37
38 /**
39 * Error from the last attempt to call Google.
40 *
41 * @var string
42 */
43 private $last_api_error_message;
44
45 /**
46 * Instance constructor.
47 *
48 * @param string $type report type.
49 * @param string $filter report filter.
50 */
51 public function __construct( $type = 'unit', $filter = '' ) {
52 $this->type = $type;
53
54 if ( 'domain' === $type && ! empty( $filter ) ) {
55 update_option( 'advanced-ads-adsense-dashboard-filter', $filter );
56 // Backward compatibility: "*" was used to display data for all domains if API version prior to 2.0.
57 if ( '*' === $filter ) {
58 $filter = '';
59 }
60 }
61
62 $this->filter = $filter;
63 $this->data_object = AdSense_Report_Data::get_data_from_options( $type );
64 }
65
66 /**
67 * Tries to get fresh data from Google.
68 *
69 * @return bool true if we got fresh data.
70 */
71 public function refresh_report() {
72 $api_helper = new Advanced_Ads_AdSense_Report_Api( $this->type );
73 $error = [];
74
75 if ( $api_helper->has_token() ) {
76 $response = $api_helper->call_google();
77 if ( true === $response['status'] ) {
78 $this->data_object->update_data_from_response( $response['response_body'] );
79
80 return true;
81 }
82 if ( isset( $response['msg'] ) ) {
83 $this->last_api_error_message = $response['msg'];
84
85 return false;
86 }
87 }
88
89 if ( $api_helper->has_token_error() ) {
90 $error = $api_helper->get_token_error();
91 }
92
93 if ( isset( $error['msg'] ) ) {
94 $this->last_api_error_message = $error['msg'];
95
96 return false;
97 }
98
99 if ( isset( $error['raw'] ) ) {
100 $this->last_api_error_message = $error['raw'];
101
102 return false;
103 }
104
105 if ( empty( $this->last_api_error_message ) ) {
106 $this->last_api_error_message = __( 'No valid tokens', 'advanced-ads' );
107 }
108
109 return false;
110 }
111
112 /**
113 * Retrieve the error message from the last API call.
114 *
115 * @return string Error message from the last API call.
116 */
117 public function get_last_api_error() {
118 if ( empty( $this->last_api_error_message ) ) {
119 return '';
120 }
121
122 return $this->last_api_error_message;
123 }
124
125 /**
126 * Returns the report data object.
127 *
128 * @return AdSense_Report_Data
129 */
130 public function get_data() {
131 return $this->data_object;
132 }
133
134 /**
135 * Build an return the HTML markup for display.
136 *
137 * @return string the final markup.
138 */
139 public function get_markup() {
140 if ( ! $this->get_data()->is_valid() ) {
141 return '<p style="text-align:center;"><span class="report-need-refresh spinner advads-ad-parameters-spinner advads-spinner"></span></p>';
142 }
143 ob_start();
144 $report_filter = $this->filter;
145 $report_domains = $this->data_object->get_domains();
146 $sums = $this->data_object->get_sums( $this->filter );
147 $earning_cells = '';
148 foreach ( $sums as $index => $sum ) {
149 $earning_cells .= $this->get_earning_cell( $sum, $index );
150 }
151
152 require_once GADSENSE_BASE_PATH . '/admin/views/adsense-report.php';
153 return ob_get_clean();
154 }
155
156 /**
157 * Build and return the HTML markup for a given period.
158 *
159 * @param float $sum the earning for that period.
160 * @param string $index the period identifier.
161 *
162 * @return string HTML of the individual cell.
163 */
164 private function get_earning_cell( $sum, $index ) {
165 $period_strings = [
166 'today' => esc_html__( 'Today', 'advanced-ads' ),
167 'yesterday' => esc_html__( 'Yesterday', 'advanced-ads' ),
168 /* translators: 1: The number of days. */
169 '7days' => sprintf( esc_html__( 'Last %1$d days', 'advanced-ads' ), 7 ),
170 'this_month' => esc_html__( 'This Month', 'advanced-ads' ),
171 /* translators: 1: The number of days. */
172 '28days' => sprintf( esc_html__( 'Last %1$d days', 'advanced-ads' ), 28 ),
173 ];
174
175 $markup = '<div class="advads-flex1 advads-stats-box"><div>' . $period_strings[ $index ] . '</div>';
176 $markup .= '<div class="advads-stats-box-main">';
177 $markup .= number_format_i18n( ceil( 100 * $sum ) / 100, 2 );
178 $markup .= ' ' . $this->get_data()->get_currency();
179 $markup .= '</div></div>';
180
181 return $markup;
182 }
183 }
184