PluginProbe
WP Directory Kit / 1.5.9
WP Directory Kit v1.5.9
1.5.9 1.5.7 1.5.6 1.5.5 1.5.4 1.5.3 trunk 1.1.0 1.1.6 1.1.8 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.8 All 37 releases
← All changes | wpdirectorykit.php +73 -45 1.1.0 → 1.5.9 View file →
@@ -14,10 +14,11 @@
14 14 *
15 15 * @wordpress-plugin
16 16 * Plugin Name: WP Directory Kit
17 17 * Plugin URI: https://wpdirectorykit.com/plugins/wpdirectorykit.html
18 - * Description: Build your Directory portal, demos for Real Estate Agency and Car Dealership included
19 - * Version: 1.1.0
18 + * Description: Build your Directory portal, demos for Real Estate Agencies and Car Dealership included
19 + * Version: 1.5.9
20 + * Requires PHP: 7.0
20 21 * Author: wpdirectorykit.com
21 22 * Author URI: https://wpdirectorykit.com
22 23 * License: GPL-2.0+
23 24 * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
@@ -23,16 +24,18 @@
23 24 * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
24 25 * Text Domain: wpdirectorykit
25 26 * Domain Path: /languages
26 27 *
27 - * Elementor tested up to: 3.6.6
28 - * Elementor Pro tested up to: 3.7.6
28 + * Elementor tested up to: 4.2.1
29 + * Elementor Pro tested up to: 4.3.1
29 30 *
31 + * Copyright (C) SWIT Sandi Winter IT.
32 + *
30 33 */
31 34
32 35 // If this file is called directly, abort.
33 -if ( ! defined( 'WPINC' ) ) {
34 - die;
36 +if (! defined('WPINC')) {
37 + die;
35 38 }
36 39
37 40 /**
38 41 * Currently plugin version.
@@ -38,20 +41,21 @@
38 41 * Currently plugin version.
39 42 * Start at version 1.0.0 and use SemVer - https://semver.org
40 43 * Rename this for your plugin and update it as you release new versions.
41 44 */
42 -define( 'WPDIRECTORYKIT_VERSION', '1.1.0' );
43 -define( 'WPDIRECTORYKIT_NAME', 'wdk' );
44 -define( 'WPDIRECTORYKIT_PATH', plugin_dir_path( __FILE__ ) );
45 -define( 'WPDIRECTORYKIT_URL', plugin_dir_url( __FILE__ ) );
45 +define('WPDIRECTORYKIT_VERSION', '1.5.9');
46 +define('WPDIRECTORYKIT_NAME', 'wdk');
47 +define('WPDIRECTORYKIT_PATH', plugin_dir_path(__FILE__));
48 +define('WPDIRECTORYKIT_URL', plugin_dir_url(__FILE__));
46 49
47 50 /**
48 51 * The code that runs during plugin activation.
49 52 * This action is documented in includes/class-wpdirectorykit-activator.php
50 53 */
51 -function activate_wpdirectorykit() {
52 - require_once plugin_dir_path( __FILE__ ) . 'includes/class-wpdirectorykit-activator.php';
53 - Wpdirectorykit_Activator::activate();
54 +function activate_wpdirectorykit()
55 +{
56 + require_once plugin_dir_path(__FILE__) . 'includes/class-wpdirectorykit-activator.php';
57 + Wpdirectorykit_Activator::activate();
54 58 }
55 59
56 60 /**
57 61 * The code that runs during plugin deactivation.
@@ -56,25 +60,25 @@
56 60 /**
57 61 * The code that runs during plugin deactivation.
58 62 * This action is documented in includes/class-wpdirectorykit-deactivator.php
59 63 */
60 -function deactivate_wpdirectorykit() {
61 - require_once plugin_dir_path( __FILE__ ) . 'includes/class-wpdirectorykit-deactivator.php';
62 - Wpdirectorykit_Deactivator::deactivate();
64 +function deactivate_wpdirectorykit()
65 +{
66 + require_once plugin_dir_path(__FILE__) . 'includes/class-wpdirectorykit-deactivator.php';
67 + Wpdirectorykit_Deactivator::deactivate();
63 68 }
64 69
65 -register_activation_hook( __FILE__, 'activate_wpdirectorykit' );
66 -register_deactivation_hook( __FILE__, 'deactivate_wpdirectorykit' );
70 +register_activation_hook(__FILE__, 'activate_wpdirectorykit');
71 +register_deactivation_hook(__FILE__, 'deactivate_wpdirectorykit');
67 72
68 73 /**
69 74 * The core plugin class that is used to define internationalization,
70 75 * admin-specific hooks, and public-facing site hooks.
71 76 */
72 -require plugin_dir_path( __FILE__ ) . 'includes/class-wpdirectorykit.php';
77 +require plugin_dir_path(__FILE__) . 'includes/class-wpdirectorykit.php';
73 78
74 79
75 -if(file_exists(WPDIRECTORYKIT_PATH . 'premium_functions.php') && !defined('WDK_FS_DISABLE'))
76 -{
80 +if (file_exists(WPDIRECTORYKIT_PATH . 'premium_functions.php') && !defined('WDK_FS_DISABLE')) {
77 81 require_once WPDIRECTORYKIT_PATH . 'premium_functions.php';
78 82 }
79 83
80 84 /**
@@ -85,17 +89,17 @@
85 89 * not affect the page life cycle.
86 90 *
87 91 * @since 1.0.0
88 92 */
89 -function run_wpdirectorykit() {
93 +function run_wpdirectorykit()
94 +{
90 95
91 - $plugin = new Wpdirectorykit();
92 - $plugin->run();
93 -
96 + $plugin = new Wpdirectorykit();
97 + $plugin->run();
94 98 }
95 99 run_wpdirectorykit();
96 100
97 -
101 +
98 102 /*
99 103 * Add admin notify
100 104 * @param (string) $key unique key of notify, prefix included related plugin
101 105 * @param (string) $text test of message
@@ -102,35 +106,59 @@
102 106 * @param (function) $callback_filter custom function should be return true if not need show
103 107 * @param (string) $class notify alert class, by default 'notice notice-error'
104 108 * @return boolen true
105 109 */
106 -function wdk_notify_admin ($key = '', $text = 'Custom Text of message', $callback_filter = '', $class = 'notice notice-error') {
107 - $key = 'wdk_notify_'.$key;
108 - $key_diss = $key.'_dissmiss';
110 +function wdk_notify_admin($key = '', $text = 'Custom Text of message', $callback_filter = '', $class = 'notice notice-error')
111 +{
112 + $key = 'wdk_notify_' . $key;
113 + $key_dismiss = $key . '_dismiss';
109 114
110 - $wdk_notinstalled_admin_notice__error = function () use ($key_diss, $text, $class, $callback_filter) {
111 - global $wpdb;
115 + add_action('admin_notices', function () use ($key_dismiss, $text, $class, $callback_filter) {
116 +
112 117 $user_id = get_current_user_id();
113 - if (!get_user_meta($user_id, $key_diss)) {
114 - if(!empty($callback_filter)) if($callback_filter()) return false;
115 118
116 - $message = '';
117 - $message .= $text;
118 - printf('<div class="%1$s" style="position:relative;"><p>%2$s</p><a href="?'.$key_diss.'"><button type="button" class="notice-dismiss"></button></a></div>', esc_html($class), ($message)); // WPCS: XSS ok, sanitization ok.
119 + // Already dismissed
120 + if (get_user_meta($user_id, $key_dismiss, true)) {
121 + return;
119 122 }
120 - };
121 123
122 - add_action('admin_notices', function () use ($wdk_notinstalled_admin_notice__error) {
123 - $wdk_notinstalled_admin_notice__error();
124 + // Optional filter
125 + if (!empty($callback_filter) && $callback_filter()) {
126 + return;
127 + }
128 +
129 + // Nonce URL
130 + $url = wp_nonce_url(
131 + add_query_arg($key_dismiss, '1'),
132 + $key_dismiss . '_nonce'
133 + );
134 +
135 +?>
136 + <div class="<?php echo esc_attr($class); ?> is-dismissible">
137 + <p><?php echo esc_html($text); // safe if you control it
138 + ?></p>
139 + <a href="<?php echo esc_url($url); ?>"><button type="button" class="notice-dismiss"></button></a>
140 + </div>
141 +<?php
124 142 });
125 143
126 - $wdk_notinstalled_admin_notice__error_dismissed = function () use ($key_diss) {
144 + // Handle dismiss
145 + add_action('admin_init', function () use ($key_dismiss) {
146 +
147 + if (!isset($_GET[$key_dismiss])) {
148 + return;
149 + }
150 +
151 + if (!isset($_GET['_wpnonce']) || !wp_verify_nonce($_GET['_wpnonce'], $key_dismiss . '_nonce')) {
152 + return;
153 + }
154 +
127 155 $user_id = get_current_user_id();
128 - if (isset($_GET[$key_diss]))
129 - add_user_meta($user_id, $key_diss, 'true', true);
130 - };
131 - add_action('admin_init', function () use ($wdk_notinstalled_admin_notice__error_dismissed) {
132 - $wdk_notinstalled_admin_notice__error_dismissed();
156 +
157 + update_user_meta($user_id, $key_dismiss, 1);
158 +
159 + wp_redirect(remove_query_arg([$key_dismiss, '_wpnonce']));
160 + exit;
133 161 });
134 162
135 163 return true;
136 164 }