PluginProbe ʕ •ᴥ•ʔ
Strong Testimonials / 3.3.2
Strong Testimonials v3.3.2
3.3.2 3.3.1 trunk 1.0.1 2.30.9 2.31.10 2.32 2.32.1 2.32.2 2.32.3 2.32.4 2.33 2.34 2.35 2.36 2.37 2.38 2.38.1 2.39 2.39.1 2.39.2 2.39.3 2.40.0 2.40.1 2.40.2 2.40.3 2.40.4 2.40.5 2.40.6 2.40.7 2.41.0 2.41.1 2.50.0 2.50.1 2.50.2 2.50.3 2.50.4 2.51.0 2.51.1 2.51.2 2.51.3 2.51.4 2.51.5 2.51.6 2.51.7 2.51.8 2.51.9 3.0.0 3.0.1 3.0.2 3.0.3 3.1.0 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.20 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.17 3.2.18 3.2.19 3.2.2 3.2.20 3.2.21 3.2.22 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 3.3.0
strong-testimonials / admin / class-strong-testimonials-exporter.php
strong-testimonials / admin Last commit date
challenge 1 year ago css 1 week ago img 1 year ago js 1 month ago menu 1 month ago partials 2 weeks ago rest-api 1 week ago scss 1 year ago settings 1 week ago uninstall 1 year ago wpchill 1 month ago admin-notices.php 6 months ago admin.php 1 month ago class-strong-testimonials-addons.php 1 month ago class-strong-testimonials-admin-category-list.php 1 year ago class-strong-testimonials-admin-list.php 1 year ago class-strong-testimonials-admin-scripts.php 1 month ago class-strong-testimonials-admin.php 1 month ago class-strong-testimonials-debug.php 6 months ago class-strong-testimonials-exporter.php 1 year ago class-strong-testimonials-help.php 1 year ago class-strong-testimonials-helper.php 1 month ago class-strong-testimonials-list-table.php 1 year ago class-strong-testimonials-lite-vs-pro-page.php 1 month ago class-strong-testimonials-post-editor.php 7 months ago class-strong-testimonials-review.php 1 year ago class-strong-testimonials-updater.php 1 month ago class-strong-testimonials-upsell.php 1 week ago class-strong-views-list-table.php 1 month ago class-walker-strong-category-checklist.php 1 year ago class-walker-strong-form-category-checklist.php 1 year ago class-wpmtst-onboarding.php 1 year ago compat.php 1 year ago custom-fields-ajax.php 1 year ago custom-fields.php 1 week ago form-preview.php 1 year ago view-list-order.php 1 year ago views-ajax.php 1 month ago views-validate.php 1 year ago views.php 1 month ago
class-strong-testimonials-exporter.php
92 lines
1 <?php
2
3 /**
4 * Class Strong_Testimonials_Exporter
5 *
6 * exports testimonials along with their featured media
7 *
8 * @since 2.36
9 */
10 class Strong_Testimonials_Exporter {
11
12 public $args = array();
13 public $query_done = false;
14
15 public function __construct() {
16 add_action( 'export_wp', array( $this, 'export_wp' ), 10, 1 );
17 add_filter( 'export_query', array( $this, 'export_query' ), 10, 1 );
18 }
19
20 public function export_wp( $args ) {
21 $this->args = $args;
22 add_filter( 'query', array( $this, 'export_query_filter' ), 10, 1 );
23 }
24
25 public function export_query_filter( $query ) {
26
27 global $wpdb;
28 if ( false === $this->query_done && 0 === strpos( $query, "SELECT ID FROM {$wpdb->posts} " ) ) {
29 $this->query_done = true;
30 remove_filter( 'query', array( $this, 'export_query_filter' ), 10 );
31 $query = apply_filters( 'export_query', $query );
32 }
33 return $query;
34 }
35
36 public function export_query( $query ) {
37 global $wpdb;
38
39 if ( isset( $this->args['content'] ) && 'wpm-testimonial' === $this->args['content'] ) {
40
41 $attachments = $wpdb->get_results(
42 $wpdb->prepare(
43 "SELECT ID, guid, post_parent FROM {$wpdb->posts} WHERE post_type = %s",
44 'attachment'
45 ),
46 OBJECT_K
47 );
48 if ( empty( $attachments ) ) {
49 return $query;
50 }
51
52 $ids = array();
53
54 // get attachments who are post thumbnails
55 $posts = $wpdb->get_col( $query ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
56 if ( $posts ) {
57 $placeholders = implode( ',', array_fill( 0, count( $posts ), '%d' ) );
58 $sql = $wpdb->prepare(
59 // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
60 "SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_key = %s AND post_id IN($placeholders)",
61 array_merge( array( '_thumbnail_id' ), $posts )
62 );
63 $ids = $wpdb->get_col( $sql ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
64 }
65
66 // get attachments who have a post parent.
67 foreach ( $attachments as $id => $att ) {
68 if ( in_array( $att->post_parent, $posts, true ) ) {
69 $ids[] = $id;
70 }
71 }
72
73 $ids = array_unique( $ids );
74 if ( count( $ids ) === 0 ) {
75 return $query;
76 }
77
78 if ( 0 === strpos( $query, "SELECT ID FROM {$wpdb->posts} INNER JOIN {$wpdb->term_relationships} " ) ) {
79 // replace INNER JOIN with LEFT JOIN.
80 $query = str_replace( "SELECT ID FROM {$wpdb->posts} INNER JOIN {$wpdb->term_relationships} ", "SELECT ID FROM {$wpdb->posts} LEFT JOIN {$wpdb->term_relationships} ", $query );
81 }
82 $placeholders = implode( ',', array_fill( 0, count( $ids ), '%d' ) );
83 // phpcs:ignore
84 $query .= $wpdb->prepare( " OR {$wpdb->posts}.ID IN ($placeholders) ", $ids );
85
86 }
87 return $query;
88 }
89 }
90
91 new Strong_Testimonials_Exporter();
92