Issues (2187)

class-lsx-wetu-importer-banner-integration.php (68 issues)

1
<?php
0 ignored issues
show
This file is missing a doc comment.
Loading history...
2
/**
0 ignored issues
show
Missing short description in doc comment
Loading history...
3
 * @package   LSX_WETU_Importer_Banner_Integration
4
 * @author    LightSpeed
5
 * @license   GPL-2.0+
6
 * @link
7
 * @copyright 2016 LightSpeed
8
 **/
0 ignored issues
show
There must be no blank lines after the class comment
Loading history...
9
10
class LSX_WETU_Importer_Banner_Integration extends LSX_WETU_Importer {
11
12
	/**
13
	 * The url to list items from WETU
14
	 *
15
	 * @since 0.0.1
16
	 *
17
	 * @var      string
18
	 */
19
	public $tab_slug = 'banners';
20
21
	/**
22
	 * Initialize the plugin by setting localization, filters, and administration functions.
23
	 *
24
	 * @since 1.0.0
25
	 *
26
	 * @access private
27
	 */
28
	public function __construct() {
0 ignored issues
show
Expected 2 blank lines before function; 1 found
Loading history...
29
		add_action( 'wp_ajax_lsx_import_sync_banners', array( $this, 'sync_new_banner' ) );
30
		add_action( 'wp_ajax_nopriv_lsx_import_sync_banners', array( $this, 'sync_new_banner' ) );
31
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
32
33
	/**
34
	 * Display the importer administration screen
35
	 */
36
	public function display_page() {
37
		?>
38
		<div class="wrap">
39
			<h2><?php esc_html_e( 'Download new banners straight from WETU', 'lsx-wetu-importer' ); ?></h2>
40
41
			<form method="get" action="" id="banners-filter">
42
				<input type="hidden" name="post_type" class="post_type" value="<?php echo esc_attr( $this->tab_slug ); ?>" />
43
44
			   <div class="ajax-loader-small" style="display:none;width:100%;text-align:center;">
0 ignored issues
show
Found precision alignment of 3 spaces.
Loading history...
45
					<img style="width:32px;" src="<?php echo esc_url( LSX_WETU_IMPORTER_URL . 'assets/images/ajaxloader.gif' ); ?>" />
46
				</div>
47
48
				<table class="wp-list-table widefat fixed posts">
49
					<thead>
50
						<tr>
51
							<th style="" class="manage-column column-cb check-column" id="cb" scope="col">
52
								<label for="cb-select-all-1" class="screen-reader-text">Select All</label>
53
								<input type="checkbox" id="cb-select-all-1">
54
							</th>
55
							<th style="width:15%" class="manage-column column-title " id="title" scope="col">Title</th>
56
							<th style="" class="manage-column column-date" id="date" scope="col">Images</th>
57
						</tr>
58
					</thead>
59
60
					<?php
61
						$accommodation_args = array(
62
							'post_type'      => 'accommodation',
63
							'post_status'    => array( 'publish', 'pending', 'draft', 'future', 'private' ),
64
							'nopagin'        => 'true',
65
							'posts_per_page' => '1000',
0 ignored issues
show
Detected high pagination limit, posts_per_page is set to 1000
Loading history...
66
							'meta_query'     => array(
0 ignored issues
show
Detected usage of meta_query, possible slow query.
Loading history...
67
								'relation' => 'AND',
68
								array(
69
									'key'     => 'lsx_wetu_id',
70
									'compare' => 'EXISTS',
71
								),
72
								array(
73
									'key'     => 'image_group',
74
									'compare' => 'EXISTS',
75
								),
76
								array(
77
									'key'     => 'image_group',
78
									'value'   => 'a:1:{s:12:"banner_image";a:0:{}}',
79
									'compare' => '!=',
80
								),
81
							),
82
						);
83
						$accommodation      = new WP_Query( $accommodation_args );
84
						?>
85
86
					<tbody id="the-list">
87
						<?php
88
						if ( $accommodation->have_posts() ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
89
							while ( $accommodation->have_posts() ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
90
								$accommodation->the_post();
91
								?>
92
									<tr class="post-<?php the_ID(); ?> type-tour status-none" id="post-<?php the_ID(); ?>">
93
									<?php
94
									$banner_size_appropriate = false;
95
									$min_width               = '1920';
96
									$min_height              = '500';
97
98
									$img_group = get_post_meta( get_the_ID(), 'image_group', true );
0 ignored issues
show
It seems like get_the_ID() can also be of type false; however, parameter $post_id of get_post_meta() does only seem to accept integer, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

98
									$img_group = get_post_meta( /** @scrutinizer ignore-type */ get_the_ID(), 'image_group', true );
Loading history...
99
100
									$thumbnails_html = false;
101
102
									if ( false !== $img_group ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
103
										foreach ( $img_group['banner_image'] as $banner_image ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
104
											$large       = wp_get_attachment_image_src( $banner_image, 'full' );
105
											$real_width  = $large[1];
106
											$real_height = $large[2];
107
108
											$status = 'optimized';
109
											if ( $real_width < intval( $real_width ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
110
												$status = 'width not enough.';
111
											}
112
113
											$thumbnail         = wp_get_attachment_image_src( $banner_image, 'thumbnail' );
114
											$thumbnails_html[] = '
115
													<div style="display:block;float:left;">
116
														<img src="' . $thumbnail[0] . '" />
117
														<p style="text-align:center;">' . $real_width . 'px by ' . $real_height . 'px</p>
118
													</div>';
119
										}
120
									}
121
									?>
122
									<th class="check-column" scope="row">
123
										<label for="cb-select-<?php the_ID(); ?>" class="screen-reader-text"></label>
124
										<input type="checkbox" data-identifier="<?php the_ID(); ?>" value="<?php the_ID(); ?>" name="post[]" id="cb-select-<?php the_ID(); ?>">
125
										</th>
126
127
										<td class="post-title page-title column-title">
128
									<?php
129
									echo '<a href="' . esc_url( admin_url( '/post.php?post=' . get_the_ID() . '&action=edit' ) ) . '" target="_blank">';
0 ignored issues
show
Are you sure get_the_ID() of type false|integer can be used in concatenation? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

129
									echo '<a href="' . esc_url( admin_url( '/post.php?post=' . /** @scrutinizer ignore-type */ get_the_ID() . '&action=edit' ) ) . '" target="_blank">';
Loading history...
130
									the_title();
131
									echo '</a>';
132
									?>
133
										</td>
134
135
										<td colspan="2" class="thumbnails column-thumbnails">
136
									<?php
137
									if ( false !== $thumbnails_html ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
138
										echo wp_kses_post( implode( '', $thumbnails_html ) );
139
									} else {
140
										echo '<p>There was an error retrieving your images.</p>';
141
									}
142
									?>
143
										</td>
144
									</tr>
145
								<?php
146
							}
147
						}
148
						?>
149
					</tbody>
150
151
					<tfoot>
152
						<tr>
153
							<th style="" class="manage-column column-cb check-column" id="cb" scope="col">
154
								<label for="cb-select-all-1" class="screen-reader-text">Select All</label>
155
								<input type="checkbox" id="cb-select-all-1">
156
							</th>
157
							<th style="width:15%;" class="manage-column column-title " id="title" scope="col">Title</th>
158
							<th style="" class="manage-column column-date" id="date" scope="col">Images</th>
159
						</tr>
160
					</tfoot>
161
162
				</table>
163
164
				<p><input class="button button-primary download" type="button" value="<?php esc_html_e( 'Download new Banners', 'lsx-wetu-importer' ); ?>" />
165
				</p>
166
			</form>
167
		</div>
168
		<?php
169
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
170
171
	/**
172
	 * Creates the main gallery data
173
	 */
174
	public function sync_new_banner() {
175
		check_ajax_referer( 'lsx_wetu_ajax_action', 'security' );
176
		if ( isset( $_POST['action'] ) && 'lsx_import_sync_banners' === $_POST['action'] && isset( $_POST['post_id'] ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
Blank line found at start of control structure
Loading history...
177
178
			$post_id       = sanitize_text_field( $_POST['post_id'] );
0 ignored issues
show
$_POST data not unslashed before sanitization. Use wp_unslash() or similar
Loading history...
179
			$banners       = get_post_meta( $post_id, 'image_group', true );
180
			$this->wetu_id = get_post_meta( $post_id, 'lsx_wetu_id', true );
181
182
			$new_banner_array = false;
183
			$array_index      = 0;
184
185
			foreach ( $banners['banner_image'] as $banner_image ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
186
				$image_id = $this->attach_external_image2( $this->format_wetu_url( $banner_image ), array(), $post_id );
187
				if ( null !== $image_id && '' !== $image_id ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
188
					$new_banner_array['banner_image'][ 'cmb-field-' . $array_index ] = $image_id;
189
					$array_index++;
190
				}
191
			}
192
193
			if ( false !== $new_banner_array ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
194
				delete_post_meta( $post_id, 'image_group' );
195
				add_post_meta( $post_id, 'image_group', $new_banner_array, true );
196
				echo true;
197
			} else {
198
				echo false;
199
			}
200
		} else {
201
			echo false;
202
		}
203
204
		die();
0 ignored issues
show
Using exit here is not recommended.

In general, usage of exit should be done with care and only when running in a scripting context like a CLI script.

Loading history...
205
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
206
207
	/**
0 ignored issues
show
Coding Style Documentation introduced by
Doc comment for parameter "$post_id" missing
Loading history...
208
	 * formats the url
0 ignored issues
show
Doc comment short description must start with a capital letter
Loading history...
209
	 */
210
	public function format_wetu_url( $post_id ) {
211
		return 'https://wetu.com/ImageHandler/c1920x800/' . $this->wetu_id . '/' . $this->format_filename( $post_id );
0 ignored issues
show
Are you sure $this->format_filename($post_id) of type false|string can be used in concatenation? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

211
		return 'https://wetu.com/ImageHandler/c1920x800/' . $this->wetu_id . '/' . /** @scrutinizer ignore-type */ $this->format_filename( $post_id );
Loading history...
212
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
213
214
	/**
0 ignored issues
show
Coding Style Documentation introduced by
Doc comment for parameter "$post_id" missing
Loading history...
215
	 * formats the filename
0 ignored issues
show
Doc comment short description must start with a capital letter
Loading history...
216
	 */
217
	public function format_filename( $post_id ) {
218
		$base = str_replace( '_', ' ', get_the_title( $post_id ) );
219
		$base = rawurlencode( $base );
220
		$type = get_post_mime_type( $post_id );
221
222
		switch ( $type ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
223
			case 'image/jpeg':
224
				return $base . '.jpg';
225
			break;
226
			case 'image/png':
227
				return $base . '.png';
228
			break;
229
			case 'image/gif':
230
				return $base . '.gif';
231
			break;
232
			default:
233
				return false;
234
		}
235
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 1 found
Loading history...
236
237
	public function attach_external_image2( $url = null, $post_data = array(), $post_id = '' ) {
0 ignored issues
show
Coding Style Documentation introduced by
Missing doc comment for function attach_external_image2()
Loading history...
238
		if ( ! $url ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
239
			return new WP_Error( 'missing', 'Need a valid URL' ); }
0 ignored issues
show
No blank line found after control structure
Loading history...
240
		$att_id = false;
241
242
		require_once ABSPATH . 'wp-admin/includes/file.php';
243
		require_once ABSPATH . 'wp-admin/includes/media.php';
244
		require_once ABSPATH . 'wp-admin/includes/image.php';
245
246
		$tmp   = tempnam( '/tmp', 'FOO' );
247
		$image = wp_remote_get( $url );
248
249
		if ( ! empty( $image ) && isset( $image['response'] ) && isset( $image['response']['code'] ) && 200 === $image['response']['code'] ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
250
			file_put_contents( $tmp, $image['body'] );
0 ignored issues
show
File operations should use WP_Filesystem methods instead of direct PHP filesystem calls. Found: file_put_contents()
Loading history...
251
			chmod( $tmp, '777' );
252
253
			preg_match( '/[^\?]+\.(tif|TIFF|jpg|JPG|jpe|JPE|jpeg|JPEG|gif|GIF|png|PNG|pdf|PDF|bmp|BMP)/', $url, $matches );
254
			$url_filename = basename( $matches[0] );
255
			$url_filename = str_replace( '%20', '_', $url_filename );
256
			// extract filename from url for title.
257
			$url_type = wp_check_filetype( $url_filename );
258
259
			// assemble file data (should be built like $_FILES since wp_handle_sideload() will be using).
260
			$file_array['tmp_name'] = $tmp;
261
262
			if ( ! empty( $filename ) && ' ' != $filename ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Found: !=. Use strict comparisons (=== or !==).
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
263
				$file_array['name'] = $filename . '.' . $url_type['ext'];
264
			} else {
265
				$file_array['name'] = $url_filename;
266
			}
267
268
			// set additional wp_posts columns.
269
			if ( empty( $post_data['post_title'] ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
270
				$url_filename            = str_replace( '%20', ' ', $url_filename );
271
				$post_data['post_title'] = basename( $url_filename, '.' . $url_type['ext'] );
272
			}
273
274
			// make sure gets tied to parent.
275
			if ( empty( $post_data['post_parent'] ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
276
				$post_data['post_parent'] = $post_id;
277
			}
278
279
			// do the validation and storage stuff.
280
			$att_id = media_handle_sideload( $file_array, $post_id, null, $post_data );
281
282
			// If error storing permanently, unlink.
283
			if ( is_wp_error( $att_id ) ) {
0 ignored issues
show
Expected 0 spaces after opening bracket; 1 found
Loading history...
Expected 0 spaces before closing bracket; 1 found
Loading history...
284
				unlink( $file_array['tmp_name'] );
285
				return false;
286
			}
287
		}
0 ignored issues
show
No blank line found after control structure
Loading history...
288
		return $att_id;
289
	}
0 ignored issues
show
Expected 1 blank line before closing function brace; 0 found
Loading history...
Expected 2 blank lines after function; 0 found
Loading history...
290
}
291