PluginProbe ʕ •ᴥ•ʔ
Folders – Unlimited Folders to Organize Media Library Folder, Pages, Posts, File Manager / 3.0.9
Folders – Unlimited Folders to Organize Media Library Folder, Pages, Posts, File Manager v3.0.9
3.1.9 3.1.8 3.1.7 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 2.9.8 3.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 trunk 1.3.7 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 2.3 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3.6 2.3.7 2.3.8 2.3.9 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.4.8 2.4.9 2.5 2.5.1 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6 2.6.1 2.6.2 2.6.3 2.6.4 2.6.5 2.6.6 2.6.7 2.6.8 2.6.9 2.7 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.8 2.8.9 2.9 2.9.1 2.9.2
folders / templates / admin / recommended-plugins.php
folders / templates / admin Last commit date
settings-tabs 1 year ago admin-content.php 1 year ago email-signup.php 1 year ago folder-deactivate-form.php 1 year ago folder-popup.php 1 year ago general-settings.php 1 year ago help.php 1 year ago media-cleaning.php 1 year ago media-replace.php 1 year ago modals.php 1 year ago recommended-plugins.php 1 year ago update.php 1 year ago upgrade-table.php 1 year ago upgrade-to-pro.php 1 year ago
recommended-plugins.php
520 lines
1 <?php
2 /**
3 * Premio.io Recommended Plugins
4 *
5 * @author : Premio <contact@premio.io>
6 * @license : GPL2
7 * */
8
9 if (! defined('ABSPATH')) {
10 exit;
11 }
12 ?>
13 <style>
14 a.hide-recommended-btn {
15 background: #1da1f4;
16 display: block;
17 float: right;
18 color: #fff;
19 text-decoration: none;
20 padding: 5px 20px;
21 font-size: 18px;
22 /* font-weight: bold; */
23 border-radius: 4px;
24 }
25 .ui-dialog-titlebar {
26 background: none !important;
27 }
28 .ui-dialog {
29 z-index: 999999;
30 text-align: center;
31 }
32 .ui-dialog-buttonpane {
33 border: none;
34 background: transparent;
35 padding-top: 0;
36 }
37 .ui-dialog .ui-dialog-buttonset{
38 float:none;
39 text-align: center;
40 }
41 .ui-dialog .ui-dialog-buttonpane .ui-button {
42 margin: 0 10px;
43 }
44 .ui-dialog-buttonpane .ui-dialog-buttonset .red-btn,
45 .ui-dialog-buttonpane .ui-dialog-buttonset .purple-btn,
46 .ui-dialog-buttonpane .ui-dialog-buttonset .gray-btn {
47 background-color: #ffffff;
48 color: #fff;
49 border-color: #1da1f4;
50 line-height: 1.4;
51 padding: 5px 0;
52 height: auto;
53 display: inline-block;
54 vertical-align: top;
55 font-size: 16px;
56 min-width: 150px;
57 color: #1da1f4;
58 }
59 .ui-dialog-buttonpane .ui-dialog-buttonset .red-btn {
60 background-color: #1da1f4;
61 border-color: #1da1f4;
62 color: #ffffff;
63 }
64 </style>
65 <?php
66 wp_enqueue_style('wp-jquery-ui-dialog');
67 wp_enqueue_script('jquery-ui-dialog');
68 // You may comment this out IF you're sure the function exists.
69 require_once ABSPATH.'wp-admin/includes/plugin-install.php';
70 remove_all_filters('plugins_api');
71 $plugins_allowedtags = [
72 'a' => [
73 'href' => [],
74 'title' => [],
75 'target' => [],
76 ],
77 'abbr' => [ 'title' => [] ],
78 'acronym' => [ 'title' => [] ],
79 'code' => [],
80 'pre' => [],
81 'em' => [],
82 'strong' => [],
83 'ul' => [],
84 'ol' => [],
85 'li' => [],
86 'p' => [],
87 'br' => [],
88 ];
89
90 $recommended_plugins = [];
91
92 // Poptin Plugins
93 $args = [
94 'slug' => 'poptin',
95 'fields' => [
96 'short_description' => true,
97 'icons' => true,
98 'reviews' => false,
99 // excludes all reviews
100 ],
101 ];
102 $data = plugins_api('plugin_information', $args);
103 if ($data && ! is_wp_error($data)) {
104 $recommended_plugins['poptin'] = $data;
105 $recommended_plugins['poptin']->name = 'Poptin: Beautiful Pop Ups and Embedded Inline Contact Forms for Your Website';
106 $recommended_plugins['poptin']->short_description = 'Pop ups and contact forms builder for your website. Get more sales, leads, and subscribers with beautiful popups & inline forms templates, no coding skills required';
107 }
108
109 // Chatway Plugins
110 $args = [
111 'slug' => 'chatway-live-chat',
112 'fields' => [
113 'short_description' => true,
114 'icons' => true,
115 'reviews' => false,
116 // excludes all reviews
117 ],
118 ];
119 $data = plugins_api('plugin_information', $args);
120 if ($data && ! is_wp_error($data)) {
121 $recommended_plugins['chatway'] = $data;
122 $recommended_plugins['chatway']->name = 'Free Live Chat, WordPress Website Chat Plugin, Support Chat App: Chatway';
123 $recommended_plugins['chatway']->short_description = 'Live chat with your website’s visitors through your WordPress website. With Chatway – live chat app, you can do just that and much more!';
124 }
125
126 // Chaty Plugins
127 $args = [
128 'slug' => 'chaty',
129 'fields' => [
130 'short_description' => true,
131 'icons' => true,
132 'reviews' => false,
133 // excludes all reviews
134 ],
135 ];
136 $data = plugins_api('plugin_information', $args);
137 if ($data && ! is_wp_error($data)) {
138 $recommended_plugins['chaty'] = $data;
139 $recommended_plugins['chaty']->name = 'Chaty: WhatsApp, Facebook Messenger, and Many Other Chat Buttons For Your Website';
140 $recommended_plugins['chaty']->short_description = 'Let your visitors contact you via Facebook Messenger, Whatsapp, Telegram, Viber, Email, Phone call, SMS and more with customizable chat & call buttons';
141 }
142
143 // mystickyelements Plugins
144 $args = [
145 'slug' => 'mystickyelements',
146 'fields' => [
147 'short_description' => true,
148 'icons' => true,
149 'reviews' => false,
150 // excludes all reviews
151 ],
152 ];
153 $data = plugins_api('plugin_information', $args);
154 if ($data && ! is_wp_error($data)) {
155 $recommended_plugins['mystickyelements'] = $data;
156 $recommended_plugins['mystickyelements']->name = 'All-in-one Floating Contact Form, Call, Chat, and 50+ Social Icon Tabs – My Sticky Elements';
157 $recommended_plugins['mystickyelements']->short_description = 'Add floating form and tabs on any side of your website to help your visitors contact you and easily find your Facebook page, YouTube channel, open hours';
158 }
159
160 ?>
161 <div class="wrap mystickyelement-wrap recommended-plugins">
162 <h2>
163 <?php esc_html_e('Try out our recommended plugins', 'folders'); ?>
164 <a class="hide-recommended-btn" href="#" class=""><?php esc_html_e('Hide From Menu', 'folders');?></a>
165 </h2>
166 </div>
167 <div class="wrap recommended-plugins">
168 <div class="wp-list-table widefat plugin-install">
169 <div class="the-list">
170 <?php
171 foreach ((array) $recommended_plugins as $plugin) {
172 if (is_object($plugin)) {
173 $plugin = (array) $plugin;
174 }
175
176 // Display the group heading if there is one.
177 if (isset($plugin['group']) && $plugin['group'] != $group) {
178 if (isset($this->groups[$plugin['group']])) {
179 $group_name = $this->groups[$plugin['group']];
180 if (isset($plugins_group_titles[$group_name])) {
181 $group_name = $plugins_group_titles[$group_name];
182 }
183 } else {
184 $group_name = $plugin['group'];
185 }
186
187 // Starting a new group, close off the divs of the last one.
188 if (! empty($group)) {
189 echo '</div></div>';
190 }
191
192 echo '<div class="plugin-group"><h3>'.esc_html($group_name).'</h3>';
193 // Needs an extra wrapping div for nth-child selectors to work.
194 echo '<div class="plugin-items">';
195
196 $group = $plugin['group'];
197 }//end if
198
199 $title = wp_kses($plugin['name'], $plugins_allowedtags);
200
201 // Remove any HTML from the description.
202 $description = wp_strip_all_tags($plugin['short_description']);
203 $version = wp_kses($plugin['version'], $plugins_allowedtags);
204
205 $name = wp_strip_all_tags($title.' '.$version);
206
207 $author = wp_kses($plugin['author'], $plugins_allowedtags);
208 if (! empty($author)) {
209 // translators: %s: Plugin author.
210 $author = ' <cite>'.sprintf(esc_html__( 'By %s', "folders"), $author).'</cite>';
211 }
212
213 $requires_php = isset($plugin['requires_php']) ? $plugin['requires_php'] : null;
214 $requires_wp = isset($plugin['requires']) ? $plugin['requires'] : null;
215
216 $compatible_php = is_php_version_compatible($requires_php);
217 $compatible_wp = is_wp_version_compatible($requires_wp);
218 $tested_wp = ( empty($plugin['tested']) || version_compare(get_bloginfo('version'), $plugin['tested'], '<=') );
219
220 $action_links = [];
221
222 if (current_user_can('install_plugins') || current_user_can('update_plugins')) {
223 $status = install_plugin_install_status($plugin);
224
225 switch ($status['status']) {
226 case 'install':
227 if ($status['url']) {
228 if ($compatible_php && $compatible_wp) {
229 $action_links[] = sprintf(
230 '<a class="install-now button" data-slug="%s" href="%s" aria-label="%s" data-name="%s">%s</a>',
231 esc_attr($plugin['slug']),
232 esc_url($status['url']),
233 // translators: %s: Plugin name and version.
234 esc_attr(sprintf(esc_html__('Install %s now', 'folders'), $name)),
235 esc_attr($name),
236 esc_html__( 'Install Now', "folders")
237 );
238 } else {
239 $action_links[] = sprintf(
240 '<button type="button" class="button button-disabled" disabled="disabled">%s</button>',
241 esc_html__('Cannot Install', 'folders')
242 );
243 }
244 }
245 break;
246
247 case 'update_available':
248 if ($status['url']) {
249 if ($compatible_php && $compatible_wp) {
250 $action_links[] = sprintf(
251 '<a class="update-now button aria-button-if-js" data-plugin="%s" data-slug="%s" href="%s" aria-label="%s" data-name="%s">%s</a>',
252 esc_attr($status['file']),
253 esc_attr($plugin['slug']),
254 esc_url($status['url']),
255 // translators: %s: Plugin name and version.
256 esc_attr(sprintf(esc_html__('Update %s now', 'folders'), $name)),
257 esc_attr($name),
258 esc_html__( 'Update Now', "folders")
259 );
260 } else {
261 $action_links[] = sprintf(
262 '<button type="button" class="button button-disabled" disabled="disabled">%s</button>',
263 esc_html__('Cannot Update', 'folders')
264 );
265 }
266 }
267 break;
268
269 case 'latest_installed':
270 case 'newer_installed':
271 if (is_plugin_active($status['file'])) {
272 $action_links[] = sprintf(
273 '<button type="button" class="button button-disabled" disabled="disabled">%s</button>',
274 esc_html__('Active', 'folders')
275 );
276 } else if (current_user_can('activate_plugin', $status['file'])) {
277 $button_text = esc_html__( 'Activate', "folders");
278 // translators: %s: Plugin name.
279 $button_label = esc_html__('Activate %s', 'folders');
280 $activate_url = add_query_arg(
281 [
282 '_wpnonce' => wp_create_nonce('activate-plugin_'.$status['file']),
283 'action' => 'activate',
284 'plugin' => $status['file'],
285 ],
286 network_admin_url('plugins.php')
287 );
288
289 if (is_network_admin()) {
290 $button_text = esc_html__( 'Network Activate', "folders");
291 // translators: %s: Plugin name.
292 $button_label = esc_html__('Network Activate %s', 'folders');
293 $activate_url = add_query_arg([ 'networkwide' => 1 ], $activate_url);
294 }
295
296 $action_links[] = sprintf(
297 '<a href="%1$s" class="button activate-now" aria-label="%2$s">%3$s</a>',
298 esc_url($activate_url),
299 esc_attr(sprintf($button_label, $plugin['name'])),
300 $button_text
301 );
302 } else {
303 $action_links[] = sprintf(
304 '<button type="button" class="button button-disabled" disabled="disabled">%s</button>',
305 esc_html__('Installed', 'folders')
306 );
307 }//end if
308 break;
309 }//end switch
310 }//end if
311
312 $details_link = self_admin_url(
313 'plugin-install.php?tab=plugin-information&amp;plugin='.$plugin['slug'].'&amp;TB_iframe=true&amp;width=600&amp;height=550'
314 );
315
316 $action_links[] = sprintf(
317 '<a href="%s" class="thickbox open-plugin-details-modal" aria-label="%s" data-title="%s">%s</a>',
318 esc_url($details_link),
319 // translators: %s: Plugin name and version.
320 esc_attr(sprintf(esc_html__( 'More information about %s', "folders"), $name)),
321 esc_attr($name),
322 esc_html__( 'More Details', "folders")
323 );
324
325 if (! empty($plugin['icons']['svg'])) {
326 $plugin_icon_url = $plugin['icons']['svg'];
327 } else if (! empty($plugin['icons']['2x'])) {
328 $plugin_icon_url = $plugin['icons']['2x'];
329 } else if (! empty($plugin['icons']['1x'])) {
330 $plugin_icon_url = $plugin['icons']['1x'];
331 } else {
332 $plugin_icon_url = $plugin['icons']['default'];
333 }
334
335 /*
336 * Filters the install action links for a plugin.
337 *
338 * @since 2.7.0
339 *
340 * @param string[] $action_links An array of plugin action links. Defaults are links to Details and Install Now.
341 * @param array $plugin The plugin currently being listed.
342 */
343 $action_links = apply_filters('plugin_install_action_links', $action_links, $plugin);
344
345 $last_updated_timestamp = strtotime($plugin['last_updated']);
346 ?>
347 <div class="plugin-card plugin-card-<?php echo sanitize_html_class($plugin['slug']); ?>">
348 <?php
349 if (! $compatible_php || ! $compatible_wp) {
350 echo '<div class="notice inline notice-error notice-alt"><p>';
351 if (! $compatible_php && ! $compatible_wp) {
352 esc_html_e('This plugin doesn&#8217;t work with your versions of WordPress and PHP.', 'folders');
353 if (current_user_can('update_core') && current_user_can('update_php')) {
354 printf(
355 // translators: 1: URL to WordPress Updates screen, 2: URL to Update PHP page.
356 ' '.esc_html__( '<a href="%1$s">Please update WordPress</a>, and then <a href="%2$s">learn more about updating PHP</a>.', "folders"),
357 esc_url(self_admin_url('update-core.php')),
358 esc_url(wp_get_update_php_url())
359 );
360 wp_update_php_annotation('</p><p><em>', '</em>');
361 } else if (current_user_can('update_core')) {
362 printf(
363 // translators: %s: URL to WordPress Updates screen.
364 ' '.esc_html__( '<a href="%s">Please update WordPress</a>.', "folders"),
365 esc_url(self_admin_url('update-core.php'))
366 );
367 } else if (current_user_can('update_php')) {
368 printf(
369 // translators: %s: URL to Update PHP page.
370 ' '.esc_html__( '<a href="%s">Learn more about updating PHP</a>.', "folders"),
371 esc_url(wp_get_update_php_url())
372 );
373 wp_update_php_annotation('</p><p><em>', '</em>');
374 }//end if
375 } else if (! $compatible_wp) {
376 esc_html_e('This plugin doesn&#8217;t work with your version of WordPress.', "folders");
377 if (current_user_can('update_core')) {
378 printf(
379 // translators: %s: URL to WordPress Updates screen.
380 ' '.esc_html__( '<a href="%s">Please update WordPress</a>.', "folders"),
381 esc_url(self_admin_url('update-core.php'))
382 );
383 }
384 } else if (! $compatible_php) {
385 esc_html_e('This plugin doesn&#8217;t work with your version of PHP.', 'folders');
386 if (current_user_can('update_php')) {
387 printf(
388 // translators: %s: URL to Update PHP page.
389 ' '.esc_html__( '<a href="%s">Learn more about updating PHP</a>.', "folders"),
390 esc_url(wp_get_update_php_url())
391 );
392 wp_update_php_annotation('</p><p><em>', '</em>');
393 }
394 }//end if
395
396 echo '</p></div>';
397 }//end if
398 ?>
399 <div class="plugin-card-top">
400 <div class="name column-name">
401 <h3>
402 <a href="<?php echo esc_url($details_link); ?>" class="thickbox open-plugin-details-modal">
403 <?php echo esc_attr($title); ?>
404 <img src="<?php echo esc_attr($plugin_icon_url); ?>" class="plugin-icon" alt="" />
405 </a>
406 </h3>
407 </div>
408 <div class="action-links">
409 <?php
410 if ($action_links) {
411 echo '<ul class="plugin-action-buttons"><li>'.implode('</li><li>', $action_links).'</li></ul>';
412 }
413 ?>
414 </div>
415 <div class="desc column-description">
416 <p><?php echo esc_attr($description); ?></p>
417 <p class="authors"><?php echo wp_kses($author, $plugins_allowedtags); ?></p>
418 </div>
419 </div>
420 <div class="plugin-card-bottom">
421 <div class="vers column-rating">
422 <?php
423 wp_star_rating(
424 [
425 'rating' => $plugin['rating'],
426 'type' => 'percent',
427 'number' => $plugin['num_ratings'],
428 ]
429 );
430 ?>
431 <span class="num-ratings" aria-hidden="true">(<?php echo esc_attr(number_format_i18n($plugin['num_ratings'])); ?>)</span>
432 </div>
433 <div class="column-updated">
434 <strong><?php esc_html_e('Last Updated:', "folders"); ?></strong>
435 <?php
436 // translators: %s: Human-readable time difference.
437 printf(esc_html__( '%s ago', "folders"), esc_attr(human_time_diff($last_updated_timestamp)));
438 ?>
439 </div>
440 <div class="column-downloaded">
441 <?php
442 if ($plugin['active_installs'] >= 1000000) {
443 $active_installs_millions = floor(($plugin['active_installs'] / 1000000));
444 $active_installs_text = sprintf(
445 // translators: %s: Number of millions.
446 _nx('%s+ Million', '%s+ Million', $active_installs_millions, 'Active plugin installations', 'folders'),
447 number_format_i18n($active_installs_millions)
448 );
449 } else if (0 == $plugin['active_installs']) {
450 $active_installs_text = esc_html__('Less Than 10', 'folders');
451 } else {
452 $active_installs_text = number_format_i18n($plugin['active_installs']).'+';
453 }
454
455 // translators: %s: Number of installations.
456 printf(esc_html__( '%s Active Installations', "folders"), esc_attr($active_installs_text));
457 ?>
458 </div>
459 <div class="column-compatibility">
460 <?php
461 if (! $tested_wp) {
462 echo '<span class="compatibility-untested">'.esc_html__( 'Untested with your version of WordPress', "folders").'</span>';
463 } else if (! $compatible_wp) {
464 echo '<span class="compatibility-incompatible">'.esc_html__( '<strong>Incompatible</strong> with your version of WordPress', "folders").'</span>';
465 } else {
466 echo '<span class="compatibility-compatible">'.esc_html__( '<strong>Compatible</strong> with your version of WordPress', "folders").'</span>';
467 }
468 ?>
469 </div>
470 </div>
471 </div>
472 <?php
473 }//end foreach
474 ?>
475 </div>
476 </div>
477 <div id="hide-recommeded-plugins" style="display:none;" title="<?php esc_html_e('Are you sure?', 'folders');?>">
478 <p><?php esc_html_e("If you hide the recommended plugins page from your menu, it won't appear there again. Are you sure you'd like to do it?", 'folders');?></p>
479 </div>
480
481 </div>
482 <script>
483 ( function( $ ) {
484 "use strict";
485 $(document).ready(function(){
486 $('a.hide-recommended-btn').on('click',function(event){
487 event.preventDefault();
488 $( "#hide-recommeded-plugins" ).dialog({
489 resizable: false,
490 modal: true,
491 draggable: false,
492 height: 'auto',
493 width: 400,
494 open: function (event, ui) {
495 $(".ui-widget-overlay").click(function () {
496 $('#hide-recommeded-plugins').dialog('close');
497 });
498 },
499 buttons: {
500 "Hide it": {
501 click: function () {
502 window.location = "<?php echo esc_url(admin_url('admin.php?page=wcp_folders_settings&hide_folder_recommended_plugin=1&nonce='.wp_create_nonce("folder_recommended_plugin")));?>";
503 },
504 text: 'Hide it',
505 class: 'btn red-btn'
506 },
507 "Keep it": {
508 click: function () {
509 $(this).dialog('close');
510 },
511 text: 'Keep it',
512 class: 'btn alt gray-btn'
513 },
514 }
515 });
516 });
517 });
518 })( jQuery );
519 </script>
520