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 / includes / importers / class-manager.php
advanced-ads / includes / importers Last commit date
abstract-importer.php 3 months ago class-ad-inserter.php 3 months ago class-ads-wp-ads.php 3 months ago class-amp-wp-ads.php 3 months ago class-api-ads.php 1 year ago class-google-sheet.php 5 months ago class-manager.php 1 year ago class-plugin-exporter.php 1 week ago class-quick-adsense.php 1 year ago class-tutorials.php 1 year ago class-wp-quads.php 1 year ago class-xml-encoder.php 1 year ago class-xml-importer.php 5 days ago
class-manager.php
235 lines
1 <?php
2 /**
3 * Importers Manager.
4 *
5 * @package AdvancedAds
6 * @author Advanced Ads <info@wpadvancedads.com>
7 * @since 1.50.0
8 */
9
10 namespace AdvancedAds\Importers;
11
12 use WP_Error;
13 use AdvancedAds\Utilities\WordPress;
14 use AdvancedAds\Utilities\Conditional;
15 use AdvancedAds\Framework\Utilities\Params;
16 use AdvancedAds\Framework\Interfaces\Integration_Interface;
17
18 defined( 'ABSPATH' ) || exit;
19
20 /**
21 * Importers Manager.
22 */
23 class Manager implements Integration_Interface {
24
25 /**
26 * Importer history option key.
27 *
28 * @var string
29 */
30 const HISTORY_OPTION_KEY = '_advads_importer_history';
31
32 /**
33 * Hold all registered importers
34 *
35 * @var array
36 */
37 private $importers = [];
38
39 /**
40 * Hold message to display on page
41 *
42 * @var string|WP_Error
43 */
44 private $message = false;
45
46 /**
47 * Hook into WordPress.
48 *
49 * @return void
50 */
51 public function hooks(): void {
52 $this->register_importers();
53 add_action( 'admin_init', [ $this, 'handle_action' ] );
54 }
55
56 /**
57 * Get importers
58 *
59 * @return array
60 */
61 public function get_importers(): array {
62 return $this->importers;
63 }
64
65 /**
66 * Handle importing
67 *
68 * @return void
69 */
70 public function handle_action(): void {
71 // Early bail!!
72 if ( ! Conditional::user_cap( 'advanced_ads_edit_ads' ) ) {
73 return;
74 }
75
76 $action = WordPress::current_action();
77
78 if ( 'advads_import' === $action && check_admin_referer( 'advads_import' ) ) {
79 $importer = Params::post( 'importer' );
80 $importer = $this->importers[ $importer ];
81 $this->message = $importer->import();
82 }
83
84 if ( 'advads_export' === $action && check_admin_referer( 'advads_export' ) ) {
85 $exporter = new Plugin_Exporter();
86 $this->message = $exporter->download_file();
87 }
88
89 if ( 'advads_import_delete' === $action && check_admin_referer( 'advads_import_delete' ) ) {
90 $this->rollback_import();
91 }
92 }
93
94 /**
95 * Rollback import
96 *
97 * @return void
98 */
99 private function rollback_import(): void {
100 $session_key = Params::get( 'session_key' );
101 $session_data = $this->delete_session_history( $session_key );
102 if ( ! $session_data ) {
103 return;
104 }
105
106 $importer = $this->get_importer( $session_data['importer_id'] );
107 $importer->rollback( $session_key );
108
109 $this->message = __( 'History deleted successfully.', 'advanced-ads' );
110 }
111
112 /**
113 * Register importers
114 *
115 * @return void
116 */
117 private function register_importers(): void {
118 $this->register_importer( Tutorials::class );
119 $this->register_importer( Google_Sheet::class );
120 $this->register_importer( Ad_Inserter::class );
121 $this->register_importer( Ads_WP_Ads::class );
122 $this->register_importer( Amp_WP_Ads::class );
123 $this->register_importer( Quick_Adsense::class );
124 $this->register_importer( WP_Quads::class );
125 $this->register_importer( XML_Importer::class );
126 $this->register_importer( Api_Ads::class );
127 }
128
129 /**
130 * Register custom type.
131 *
132 * @param string $classname Type class name.
133 *
134 * @return void
135 */
136 public function register_importer( $classname ): void {
137 $importer = new $classname();
138
139 $this->importers[ $importer->get_id() ] = $importer;
140 }
141
142 /**
143 * Get the registered importer
144 *
145 * @param string $id Importer to get.
146 *
147 * @return mixed|bool
148 */
149 public function get_importer( $id ) {
150 return $this->importers[ $id ] ?? false;
151 }
152
153 /**
154 * Display any message
155 *
156 * @return void
157 */
158 public function display_message(): void {
159 // Early bail!!
160 if ( empty( $this->message ) ) {
161 return;
162 }
163
164 if ( is_array( $this->message ) ) {
165 foreach ( $this->message as $message ) {
166 $type = $message[0] ?? 'success';
167 $message = $message[1] ?? '';
168 ?>
169 <div class="notice notice-<?php echo esc_attr( $type ); ?>">
170 <p><?php echo $message; // phpcs:ignore ?></p>
171 </div>
172 <?php
173 }
174
175 return;
176 }
177
178 $type = 'success';
179 $message = $this->message;
180
181 if ( is_wp_error( $this->message ) ) {
182 $type = 'error';
183 $message = $this->message->get_error_message();
184 }
185
186 ?>
187 <div class="notice notice-<?php echo $type; // phpcs:ignore ?>">
188 <p><?php echo $message; // phpcs:ignore ?></p>
189 </div>
190 <?php
191 }
192
193 /**
194 * Add row to session history
195 *
196 * @param string $importer_id Importer id.
197 * @param string $key Session key.
198 * @param int $count Ad and Placement created.
199 *
200 * @return void
201 */
202 public function add_session_history( $importer_id, $key, $count ): void {
203 $history = get_option( self::HISTORY_OPTION_KEY, [] );
204
205 $history[ $key ] = [
206 'importer_id' => $importer_id,
207 'session_key' => $key,
208 'count' => $count,
209 'created_at' => wp_date( 'U' ),
210 ];
211
212 update_option( self::HISTORY_OPTION_KEY, $history );
213 }
214
215 /**
216 * Delete row from session history
217 *
218 * @param string $key Session key.
219 *
220 * @return array|bool
221 */
222 public function delete_session_history( $key ) {
223 $return = false;
224 $history = get_option( self::HISTORY_OPTION_KEY, [] );
225
226 if ( isset( $history[ $key ] ) ) {
227 $return = $history[ $key ];
228 unset( $history[ $key ] );
229 update_option( self::HISTORY_OPTION_KEY, $history );
230 }
231
232 return $return;
233 }
234 }
235