Issues (1066)

classes/class-lsx-projects-widget.php (6 issues)

1
<?php
2
/**
3
 * LSX Projects Widget Class
4
 *
5
 * @package   LSX Projects
6
 * @author	LightSpeed
7
 * @license   GPL3
8
 * @link
9
 * @copyright 2016 LightSpeed
10
 */
11
class LSX_Projects_Widget extends WP_Widget {
12
13
	public function __construct() {
14
		$widget_ops = array(
15
			'classname' => 'lsx-projects',
16
		);
17
18
		parent::__construct( 'LSX_Projects_Widget', esc_html__( 'LSX Projects', 'lsx-projects' ), $widget_ops );
19
	}
20
21
	function widget( $args, $instance ) {
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
Comprehensibility Best Practice introduced by
It is recommend to declare an explicit visibility for widget.

Generally, we recommend to declare visibility for all methods in your source code. This has the advantage of clearly communication to other developers, and also yourself, how this method should be consumed.

If you are not sure which visibility to choose, it is a good idea to start with the most restrictive visibility, and then raise visibility as needed, i.e. start with private, and only raise it to protected if a sub-class needs to have access, or public if an external class needs access.

Loading history...
22
		extract( $args );
23
24
		$title = $instance['title'];
25
		$title_link = $instance['title_link'];
26
		$tagline = $instance['tagline'];
27
		$columns = $instance['columns'];
28
		$orderby = $instance['orderby'];
29
		$order = $instance['order'];
30
		$limit = $instance['limit'];
31
		$include = $instance['include'];
32
		$display = $instance['display'];
33
		$size = $instance['size'];
34
		$button_text = $instance['button_text'];
35
		$responsive = $instance['responsive'];
36
		$show_image = $instance['show_image'];
37
		$carousel = $instance['carousel'];
38
		$featured = $instance['featured'];
39
40
		// If limit not set, display 99 posts
41
		if ( empty( $limit ) ) {
42
			$limit = '99';
43
		}
44
45
		// If specific posts included, display 99 posts
46
		if ( ! empty( $include ) ) {
47
			$limit = '99';
48
		}
49
50
		if ( '1' == $responsive ) {
51
			$responsive = 'true';
52
		} else {
53
			$responsive = 'false';
54
		}
55
56
		if ( '1' == $show_image ) {
57
			$show_image = 'true';
58
		} else {
59
			$show_image = 'false';
60
		}
61
62
		if ( '1' == $carousel ) {
63
			$carousel = 'true';
64
		} else {
65
			$carousel = 'false';
66
		}
67
68
		if ( '1' == $featured ) {
69
			$featured = 'true';
70
		} else {
71
			$featured = 'false';
72
		}
73
74
		if ( $title_link ) {
75
			//$link_open = '<a href="' . $title_link . '">';
76
			$link_open = '';
77
			$link_btn_open = '<a href="' . $title_link . '" class="btn border-btn">';
78
			//$link_close = '</a>';
79
			$link_close = '';
80
			$link_btn_close = '</a>';
81
		} else {
82
			$link_open = '';
83
			$link_btn_open = '';
84
			$link_close = '';
85
			$link_btn_close = '';
86
		}
87
88
		echo wp_kses_post( $before_widget );
89
90
		if ( $title ) {
91
			echo wp_kses_post( $before_title . $link_open . $title . $link_close . $after_title );
92
		}
93
94
		if ( $tagline ) {
95
			echo '<p class="tagline text-center">' . esc_html( $tagline ) . '</p>';
96
		}
97
98
		if ( class_exists( 'LSX_Projects' ) ) {
99
			lsx_projects( array(
100
				'columns' => $columns,
101
				'orderby' => $orderby,
102
				'order' => $order,
103
				'limit' => $limit,
104
				'include' => $include,
105
				'display' => $display,
106
				'size' => $size,
107
				'responsive' => $responsive,
108
				'show_image' => $show_image,
109
				'carousel' => $carousel,
110
				'featured' => $featured,
111
			) );
112
		};
113
114
		if ( $button_text && $title_link ) {
115
			echo wp_kses_post( '<p class="text-center lsx-projects-archive-link-wrap"><span class="lsx-projects-archive-link">' . $link_btn_open . $button_text . ' <i class="fa fa-angle-right"></i>' . $link_btn_close . '</span></p>' );
116
		}
117
118
		echo wp_kses_post( $after_widget );
119
	}
120
121
	function update( $new_instance, $old_instance ) {
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
Comprehensibility Best Practice introduced by
It is recommend to declare an explicit visibility for update.

Generally, we recommend to declare visibility for all methods in your source code. This has the advantage of clearly communication to other developers, and also yourself, how this method should be consumed.

If you are not sure which visibility to choose, it is a good idea to start with the most restrictive visibility, and then raise visibility as needed, i.e. start with private, and only raise it to protected if a sub-class needs to have access, or public if an external class needs access.

Loading history...
122
		$instance = $old_instance;
123
124
		$instance['title'] = wp_kses_post( force_balance_tags( $new_instance['title'] ) );
125
		$instance['title_link'] = strip_tags( $new_instance['title_link'] );
126
		$instance['tagline'] = wp_kses_post( force_balance_tags( $new_instance['tagline'] ) );
127
		$instance['columns'] = strip_tags( $new_instance['columns'] );
128
		$instance['orderby'] = strip_tags( $new_instance['orderby'] );
129
		$instance['order'] = strip_tags( $new_instance['order'] );
130
		$instance['limit'] = strip_tags( $new_instance['limit'] );
131
		$instance['include'] = strip_tags( $new_instance['include'] );
132
		$instance['display'] = strip_tags( $new_instance['display'] );
133
		$instance['size'] = strip_tags( $new_instance['size'] );
134
		$instance['button_text'] = strip_tags( $new_instance['button_text'] );
135
		$instance['responsive'] = strip_tags( $new_instance['responsive'] );
136
		$instance['show_image'] = strip_tags( $new_instance['show_image'] );
137
		$instance['carousel'] = strip_tags( $new_instance['carousel'] );
138
		$instance['featured'] = strip_tags( $new_instance['featured'] );
139
140
		return $instance;
141
	}
142
143
	function form( $instance ) {
0 ignored issues
show
It is generally recommended to explicitly declare the visibility for methods.

Adding explicit visibility (private, protected, or public) is generally recommend to communicate to other developers how, and from where this method is intended to be used.

Loading history...
Comprehensibility Best Practice introduced by
It is recommend to declare an explicit visibility for form.

Generally, we recommend to declare visibility for all methods in your source code. This has the advantage of clearly communication to other developers, and also yourself, how this method should be consumed.

If you are not sure which visibility to choose, it is a good idea to start with the most restrictive visibility, and then raise visibility as needed, i.e. start with private, and only raise it to protected if a sub-class needs to have access, or public if an external class needs access.

Loading history...
144
		$defaults = array(
145
			'title' => 'Projects',
146
			'title_link' => '',
147
			'tagline' => '',
148
			'columns' => '3',
149
			'orderby' => 'name',
150
			'order' => 'ASC',
151
			'limit' => '',
152
			'include' => '',
153
			'display' => 'excerpt',
154
			'size' => 'lsx-thumbnail-single',
155
			'button_text' => '',
156
			'responsive' => 1,
157
			'show_image' => 1,
158
			'carousel' => 1,
159
			'featured' => 0,
160
		);
161
162
		$instance = wp_parse_args( (array) $instance, $defaults );
163
164
		$title          = esc_attr( $instance['title'] );
165
		$title_link     = esc_attr( $instance['title_link'] );
166
		$tagline        = esc_attr( $instance['tagline'] );
167
		$columns        = esc_attr( $instance['columns'] );
168
		$orderby        = esc_attr( $instance['orderby'] );
169
		$order          = esc_attr( $instance['order'] );
170
		$limit          = esc_attr( $instance['limit'] );
171
		$include        = esc_attr( $instance['include'] );
172
		$display        = esc_attr( $instance['display'] );
173
		$size           = esc_attr( $instance['size'] );
174
		$button_text    = esc_attr( $instance['button_text'] );
175
		$responsive     = esc_attr( $instance['responsive'] );
176
		$show_image     = esc_attr( $instance['show_image'] );
177
		$carousel       = esc_attr( $instance['carousel'] );
178
		$featured       = esc_attr( $instance['featured'] );
179
		?>
180
		<p>
181
			<label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>"><?php esc_html_e( 'Title:', 'lsx-projects' ); ?></label>
182
			<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
183
		</p>
184
		<p>
185
			<label for="<?php echo esc_attr( $this->get_field_id( 'title_link' ) ); ?>"><?php esc_html_e( 'Page Link:', 'lsx-projects' ); ?></label>
186
			<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title_link' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title_link' ) ); ?>" type="text" value="<?php echo esc_attr( $title_link ); ?>" />
187
			<small><?php esc_html_e( 'Link the widget to a page', 'lsx-projects' ); ?></small>
188
		</p>
189
		<p>
190
			<label for="<?php echo esc_attr( $this->get_field_id( 'tagline' ) ); ?>"><?php esc_html_e( 'Tagline:', 'lsx-projects' ); ?></label>
191
			<textarea class="widefat" rows="8" cols="20" id="<?php echo esc_attr( $this->get_field_id( 'tagline' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'tagline' ) ); ?>"><?php echo esc_html( $tagline ); ?></textarea>
192
			<small><?php esc_html_e( 'Tagline to display below the widget title', 'lsx-projects' ); ?></small>
193
		</p>
194
		<p>
195
			<label for="<?php echo esc_attr( $this->get_field_id( 'columns' ) ); ?>"><?php esc_html_e( 'Columns:', 'lsx-projects' ); ?></label>
196
			<select name="<?php echo esc_attr( $this->get_field_name( 'columns' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'columns' ) ); ?>" class="widefat">
197
			<?php
198
				$options = array( '1', '2', '3', '4' );
199
200
				foreach ( $options as $option ) {
201
					echo '<option value="' . esc_attr( lcfirst( $option ) ) . '" id="' . esc_attr( $option ) . '"', lcfirst( $option ) == $columns ? ' selected="selected"' : '', '>', esc_html( $option ), '</option>';
202
				}
203
			?>
204
			</select>
205
		</p>
206
		<p>
207
			<label for="<?php echo esc_attr( $this->get_field_id( 'orderby' ) ); ?>"><?php esc_html_e( 'Order By:', 'lsx-projects' ); ?></label>
208
			<select name="<?php echo esc_attr( $this->get_field_name( 'orderby' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'orderby' ) ); ?>" class="widefat">
209
			<?php
210
				$options = array(
211
					esc_html__( 'None', 'lsx-projects' ) => 'none',
212
					esc_html__( 'ID', 'lsx-projects' ) => 'ID',
213
					esc_html__( 'Name', 'lsx-projects' ) => 'name',
214
					esc_html__( 'Date', 'lsx-projects' ) => 'date',
215
					esc_html__( 'Modified Date', 'lsx-projects' ) => 'modified',
216
					esc_html__( 'Random', 'lsx-projects' ) => 'rand',
217
					esc_html__( 'Menu (WP dashboard order)', 'lsx-projects' ) => 'menu_order',
218
				);
219
220
				foreach ( $options as $name => $value ) {
221
					echo '<option value="' . esc_attr( $value ) . '" id="' . esc_attr( $value ) . '"', $orderby == $value ? ' selected="selected"' : '', '>', esc_html( $name ), '</option>';
222
				}
223
			?>
224
			</select>
225
		</p>
226
		<p>
227
			<label for="<?php echo esc_attr( $this->get_field_id( 'order' ) ); ?>"><?php esc_html_e( 'Order:', 'lsx-projects' ); ?></label>
228
			<select name="<?php echo esc_attr( $this->get_field_name( 'order' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'order' ) ); ?>" class="widefat">
229
			<?php
230
				$options = array(
231
					esc_html__( 'Ascending', 'lsx-projects' ) => 'ASC',
232
					esc_html__( 'Descending', 'lsx-projects' ) => 'DESC',
233
				);
234
235
				foreach ( $options as $name => $value ) {
236
					echo '<option value="' . esc_attr( $value ) . '" id="' . esc_attr( $value ) . '"', $order == $value ? ' selected="selected"' : '', '>', esc_html( $name ), '</option>';
237
				}
238
			?>
239
			</select>
240
		</p>
241
		<p class="limit">
242
			<label for="<?php echo esc_attr( $this->get_field_id( 'limit' ) ); ?>"><?php esc_html_e( 'Maximum amount:', 'lsx-projects' ); ?></label>
243
			<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'limit' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'limit' ) ); ?>" type="text" value="<?php echo esc_attr( $limit ); ?>" />
244
			<small><?php esc_html_e( 'Leave empty to display all', 'lsx-projects' ); ?></small>
245
		</p>
246
		<p>
247
			<label for="<?php echo esc_attr( $this->get_field_id( 'include' ) ); ?>"><?php esc_html_e( 'Specify Projects by ID:', 'lsx-projects' ); ?></label>
248
			<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'include' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'include' ) ); ?>" type="text" value="<?php echo esc_attr( $include ); ?>" />
249
			<small><?php esc_html_e( 'Comma separated list, overrides limit and order settings', 'lsx-projects' ); ?></small>
250
		</p>
251
		<p>
252
			<label for="<?php echo esc_attr( $this->get_field_id( 'display' ) ); ?>"><?php esc_html_e( 'Display:', 'lsx-projects' ); ?></label>
253
			<select name="<?php echo esc_attr( $this->get_field_name( 'display' ) ); ?>" id="<?php echo esc_attr( $this->get_field_id( 'display' ) ); ?>" class="widefat">
254
			<?php
255
				$options = array(
256
					esc_html__( 'Excerpt', 'lsx-projects' ) => 'excerpt',
257
					esc_html__( 'Full Content', 'lsx-projects' ) => 'full',
258
				);
259
260
				foreach ( $options as $name => $value ) {
261
					echo '<option value="' . esc_attr( $value ) . '" id="' . esc_attr( $value ) . '"', $display == $value ? ' selected="selected"' : '', '>', esc_html( $name ), '</option>';
262
				}
263
			?>
264
			</select>
265
		</p>
266
		<p>
267
			<label for="<?php echo esc_attr( $this->get_field_id( 'size' ) ); ?>"><?php esc_html_e( 'Image size:', 'lsx-projects' ); ?></label>
268
			<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'size' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'size' ) ); ?>" type="text" value="<?php echo esc_attr( $size ); ?>" />
269
		</p>
270
		<p>
271
			<label for="<?php echo esc_attr( $this->get_field_id( 'button_text' ) ); ?>"><?php esc_html_e( 'Button "view all" text:', 'lsx-projects' ); ?></label>
272
			<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'button_text' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'button_text' ) ); ?>" type="text" value="<?php echo esc_attr( $button_text ); ?>" />
273
			<small><?php esc_html_e( 'Leave empty to not display the button', 'lsx-projects' ); ?></small>
274
		</p>
275
		<p>
276
			<input id="<?php echo esc_attr( $this->get_field_id( 'show_image' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'show_image' ) ); ?>" type="checkbox" value="1" <?php checked( '1', $show_image ); ?> />
277
			<label for="<?php echo esc_attr( $this->get_field_id( 'show_image' ) ); ?>"><?php esc_html_e( 'Display Images', 'lsx-projects' ); ?></label>
278
		</p>
279
		<p>
280
			<input id="<?php echo esc_attr( $this->get_field_id( 'responsive' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'responsive' ) ); ?>" type="checkbox" value="1" <?php checked( '1', $responsive ); ?> />
281
			<label for="<?php echo esc_attr( $this->get_field_id( 'responsive' ) ); ?>"><?php esc_html_e( 'Responsive Images', 'lsx-projects' ); ?></label>
282
		</p>
283
		<p>
284
			<input id="<?php echo esc_attr( $this->get_field_id( 'carousel' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'carousel' ) ); ?>" type="checkbox" value="1" <?php checked( '1', $carousel ); ?> />
285
			<label for="<?php echo esc_attr( $this->get_field_id( 'carousel' ) ); ?>"><?php esc_html_e( 'Carousel', 'lsx-projects' ); ?></label>
286
		</p>
287
		<p>
288
			<input id="<?php echo esc_attr( $this->get_field_id( 'featured' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'featured' ) ); ?>" type="checkbox" value="1" <?php checked( '1', $featured ); ?> />
289
			<label for="<?php echo esc_attr( $this->get_field_id( 'featured' ) ); ?>"><?php esc_html_e( 'Featured posts', 'lsx-projects' ); ?></label>
290
		</p>
291
		<?php
292
	}
293
294
}
295
296
function lsx_projects_register_widget() {
297
	return register_widget( 'LSX_Projects_Widget' );
298
}
299
add_action( 'widgets_init', 'lsx_projects_register_widget' );
300