PluginProbe ʕ •ᴥ•ʔ
Advanced Ads – Ad Manager & AdSense / 1.8
Advanced Ads – Ad Manager & AdSense v1.8
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 / import-export / classes / export.php
advanced-ads / modules / import-export / classes Last commit date
XmlEncoder.php 9 years ago export.php 9 years ago import.php 9 years ago
export.php
208 lines
1 <?php
2 class Advanced_Ads_Export {
3 /**
4 * @var Advanced_Ads_Export
5 */
6 private static $instance;
7
8 /**
9 * status messages
10 */
11 private $messages = array();
12
13 private function __construct() {
14
15 $page_hook = 'admin_page_advanced-ads-import-export';
16 // execute before headers are sent
17 add_action( 'load-' . $page_hook, array( $this, 'download_export_file' ) );
18 }
19
20 /**
21 * Return an instance of this class.
22 */
23 public static function get_instance() {
24 if ( null == self::$instance ) {
25 self::$instance = new self;
26 }
27 return self::$instance;
28 }
29
30 /**
31 * Handle form submissions
32 */
33 public function download_export_file() {
34 $action = Advanced_Ads_Admin::get_instance()->current_action();
35
36 if ( $action === 'export' ) {
37 if ( ! current_user_can( Advanced_Ads_Plugin::user_cap( 'advanced_ads_manage_options') ) ) {
38 return;
39 }
40
41 check_admin_referer( 'advads-export' );
42
43 if ( isset( $_POST['content'] ) ) {
44 $this->process( $_POST['content'] );
45 }
46 }
47 }
48
49 /**
50 * Generate XML file
51 */
52 private function process( array $content ) {
53 global $wpdb;
54
55 @set_time_limit( 0 );
56 @ini_set( 'memory_limit', apply_filters( 'admin_memory_limit', WP_MAX_MEMORY_LIMIT ) );
57
58 $export = array();
59 $advads_ad_groups = get_option( 'advads-ad-groups', array() );
60
61 if ( in_array( 'ads', $content ) ) {
62 $advads_ad_weights = get_option( 'advads-ad-weights', array() );
63
64 $ads = array();
65 $export_fields = implode( ', ', array(
66 'ID',
67 'post_date',
68 'post_date_gmt',
69 'post_content',
70 'post_title',
71 'post_password',
72 'post_name',
73 'post_status',
74 'post_modified',
75 'post_modified_gmt',
76 'guid'
77 ) );
78
79 $posts = $wpdb->get_results( $wpdb->prepare( "SELECT $export_fields FROM {$wpdb->posts} where post_type = '%s' and post_status not in ('trash', 'auto-draft')", Advanced_Ads::POST_TYPE_SLUG ), ARRAY_A );
80
81 foreach ( $posts as $k => $post ) {
82 if ( ! empty( $post['post_content'] ) ) {
83 // wrap images in <advads_import_img></advads_import_img> tags
84 $search = '/' . preg_quote( home_url(), '/' ) . '(\S+?)\.(jpg|jpeg|gif|png)/i';
85 $post['post_content'] = preg_replace( $search, '<advads_import_img>\\0</advads_import_img>', $post['post_content'] );
86 }
87
88 $ads[$k] = $post;
89
90 if ( in_array( 'groups', $content ) ) {
91 $terms = wp_get_object_terms( $post['ID'], 'advanced_ads_groups' );
92
93 foreach ( (array) $terms as $term ) {
94 $group_info = array(
95 'term_id' => $term->term_id,
96 'slug' => $term->slug,
97 'name' => $term->name,
98 );
99
100 if ( isset( $advads_ad_groups[ $term->term_id ] ) ) {
101 $group_info += $advads_ad_groups[ $term->term_id ];
102 }
103
104 if ( isset( $advads_ad_weights[ $term->term_id ][ $post['ID'] ] ) ) {
105 $group_info['weight'] = $advads_ad_weights[ $term->term_id ][ $post['ID'] ];
106 }
107
108 $ads[ $k ]['groups'][] = $group_info;
109 }
110 }
111
112 $postmeta = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$wpdb->postmeta} WHERE post_id = %d", absint( $post['ID'] ) ) );
113
114 foreach ( $postmeta as $meta ) {
115 if ( $meta->meta_key === '_edit_lock' ) {
116 continue;
117 }
118 if ( $meta->meta_key === Advanced_Ads_Ad::$options_meta_field ) {
119 $ad_options = maybe_unserialize( $meta->meta_value );
120 if ( isset( $ad_options['output']['image_id'] ) ) {
121 $image_id = absint( $ad_options['output']['image_id'] );
122 if ( $atached_img = wp_get_attachment_url( $image_id) ) {
123 $ads[ $k ]['attached_img_url'] = $atached_img;
124 }
125 }
126 $ads[ $k ]['meta_input'][ $meta->meta_key ] = $ad_options;
127 } else {
128 $ads[ $k ]['meta_input'] [$meta->meta_key ] = $meta->meta_value;
129 }
130 }
131 }
132
133 if ( $ads ) {
134 $export['ads'] = $ads;
135 }
136 }
137
138 if ( in_array( 'groups', $content ) ) {
139 $terms = Advanced_Ads::get_instance()->get_model()->get_ad_groups();
140 foreach ( $terms as $term ) {
141 $group_info = array(
142 'term_id' => $term->term_id,
143 'slug' => $term->slug,
144 'name' => $term->name,
145 );
146
147 if ( isset( $advads_ad_groups[ $term->term_id ] ) ) {
148 $group_info += $advads_ad_groups[ $term->term_id ];
149 }
150
151 $export['groups'][] = $group_info;
152 }
153 }
154
155 if ( in_array( 'placements', $content ) ) {
156 $placements = Advanced_Ads::get_instance()->get_model()->get_ad_placements_array();
157
158 // prevent nodes starting with number
159 foreach ( $placements as $key => &$placement ) {
160 $placement['key'] = $key;
161 }
162
163 $export['placements'] = array_values( $placements );
164 }
165
166 if ( in_array( 'options', $content ) ) {
167 $export['options'] = apply_filters( 'advanced-ads-export-options', array (
168 ADVADS_SLUG => Advanced_Ads::get_instance()->options(),
169 ADVADS_SLUG . '-internal' => Advanced_Ads::get_instance()->internal_options(),
170 ) );
171 }
172
173 do_action_ref_array( 'advanced-ads-export', array( $content, &$export ) );
174
175 if ( $export ) {
176 if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) {
177 error_log( print_r( 'Array to decode', true ) );
178 error_log( print_r( $export, true) );
179 }
180
181 $filename = 'advanced-ads-' . date( 'Y-m-d' ) . '.xml';
182
183 try {
184 $encoded = Advanced_Ads_XmlEncoder::get_instance()->encode( $export, array( 'encoding' => get_option( 'blog_charset' ) ) );
185
186 header( 'Content-Description: File Transfer' );
187 header( 'Content-Disposition: attachment; filename=' . $filename );
188 header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ), true );
189 echo $encoded;
190
191 if ( defined( 'IMPORT_DEBUG' ) && IMPORT_DEBUG ) {
192 error_log( print_r( $encoded, true ) );
193 $decoded = Advanced_Ads_XmlEncoder::get_instance()->decode( $encoded );
194 error_log( 'result ' . var_export( $export === $decoded , true ) );
195 }
196
197 exit();
198
199 } catch ( Exception $e ) {
200 $this->messages[] = array( 'error', $e->getMessage() );
201 }
202 }
203 }
204
205 public function get_messages(){
206 return $this->messages;
207 }
208 }