Version Description
Download this release
Release Info
Developer | machothemes |
Plugin | Kiwi Social Share – Social Media Share Buttons & Icons |
Version | 2.0.14 |
Comparing to | |
See all releases |
Code changes from version 2.0.13 to 2.0.14
includes/class-kiwi-social-share-review.php
ADDED
@@ -0,0 +1,182 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Kiwi_Social_Share_Review {
|
4 |
+
|
5 |
+
private static $instance;
|
6 |
+
private $when = array( 5, 15, 30 );
|
7 |
+
private $value;
|
8 |
+
private $messages;
|
9 |
+
private $link = 'https://wordpress.org/support/plugin/%s/reviews/#new-post';
|
10 |
+
private $slug = '';
|
11 |
+
private $option_name = '';
|
12 |
+
|
13 |
+
function __construct( $args ) {
|
14 |
+
|
15 |
+
if ( isset( $args['slug'] ) ) {
|
16 |
+
$this->slug = $args['slug'];
|
17 |
+
}
|
18 |
+
|
19 |
+
$this->value = $this->value();
|
20 |
+
|
21 |
+
$this->messages = array(
|
22 |
+
'notice' => __( "Hey, I noticed you have installed our plugin for %s day(s) - that's awesome! Could you please do me a BIG favor and give it a 5-star rating on WordPress? Just to help us spread the word and boost our motivation.", 'kiwi-social-share' ),
|
23 |
+
'rate' => __( 'Ok, you deserve it', 'kiwi-social-share' ),
|
24 |
+
'rated' => __( 'I already did', 'kiwi-social-share' ),
|
25 |
+
'no_rate' => __( 'No, not good enough', 'kiwi-social-share' ),
|
26 |
+
);
|
27 |
+
|
28 |
+
if ( isset( $args['messages'] ) ) {
|
29 |
+
$this->messages = wp_parse_args( $args['messages'], $this->messages );
|
30 |
+
}
|
31 |
+
|
32 |
+
$this->init();
|
33 |
+
|
34 |
+
}
|
35 |
+
|
36 |
+
public static function get_instance( $args ) {
|
37 |
+
if ( null === static::$instance ) {
|
38 |
+
static::$instance = new static( $args );
|
39 |
+
}
|
40 |
+
|
41 |
+
return static::$instance;
|
42 |
+
}
|
43 |
+
|
44 |
+
private function init() {
|
45 |
+
if ( ! is_admin() ) {
|
46 |
+
return;
|
47 |
+
}
|
48 |
+
|
49 |
+
add_action( 'wp_ajax_epsilon_review', array( $this, 'ajax' ) );
|
50 |
+
|
51 |
+
if ( $this->check() ) {
|
52 |
+
add_action( 'admin_notices', array( $this, 'five_star_wp_rate_notice' ) );
|
53 |
+
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue' ) );
|
54 |
+
add_action( 'admin_print_footer_scripts', array( $this, 'ajax_script' ) );
|
55 |
+
}
|
56 |
+
|
57 |
+
}
|
58 |
+
|
59 |
+
private function check() {
|
60 |
+
|
61 |
+
$options = get_option( 'kiwi_general_settings' );
|
62 |
+
$option = isset( $options['givemereview'] ) ? $options['givemereview'] : '';
|
63 |
+
$currDate = date( 'Y-m-d' );
|
64 |
+
if ( 'already-rated' == $option ) {
|
65 |
+
return false;
|
66 |
+
}
|
67 |
+
|
68 |
+
if ( $this->value == $option ) {
|
69 |
+
return false;
|
70 |
+
}
|
71 |
+
|
72 |
+
if ( is_array( $this->when ) ) {
|
73 |
+
foreach ( $this->when as $et ) {
|
74 |
+
if ( date( 'Y-m-d', strtotime( $currDate . ' +' . $et . ' days' ) ) == $this->value ) {
|
75 |
+
return true;
|
76 |
+
}
|
77 |
+
|
78 |
+
}
|
79 |
+
}
|
80 |
+
|
81 |
+
}
|
82 |
+
|
83 |
+
private function value() {
|
84 |
+
|
85 |
+
$value = get_transient( 'kiwi_social_share_review' );
|
86 |
+
|
87 |
+
if ( $value ) {
|
88 |
+
$current_time = time(); // or your date as well
|
89 |
+
$trans_date = strtotime($value);
|
90 |
+
$date_diff = $current_time - $trans_date;
|
91 |
+
return round($date_diff / (60 * 60 * 24));
|
92 |
+
}
|
93 |
+
|
94 |
+
$date = date( 'Y-m-d' );
|
95 |
+
set_transient( 'kiwi_social_share_review', $date, 24 * 30 * HOUR_IN_SECONDS );
|
96 |
+
|
97 |
+
}
|
98 |
+
|
99 |
+
public function five_star_wp_rate_notice() {
|
100 |
+
|
101 |
+
$url = sprintf( $this->link, $this->slug );
|
102 |
+
|
103 |
+
?>
|
104 |
+
<div id="<?php echo $this->slug ?>-epsilon-review-notice" class="notice notice-success is-dismissible">
|
105 |
+
<p><?php echo sprintf( wp_kses_post( $this->messages['notice'] ), $this->value ); ?></p>
|
106 |
+
<p class="actions">
|
107 |
+
<a id="epsilon-rate" href="<?php echo esc_url( $url ) ?>"
|
108 |
+
class="button button-primary epsilon-review-button"><?php echo esc_html( $this->messages['rate'] ); ?></a>
|
109 |
+
<a id="epsilon-rated" href="#"
|
110 |
+
class="button button-secondary epsilon-review-button"><?php echo esc_html( $this->messages['rated'] ); ?></a>
|
111 |
+
<a id="epsilon-no-rate" href="#"
|
112 |
+
class="button button-secondary epsilon-review-button"><?php echo esc_html( $this->messages['no_rate'] ); ?></a>
|
113 |
+
</p>
|
114 |
+
</div>
|
115 |
+
<?php
|
116 |
+
}
|
117 |
+
|
118 |
+
public function ajax() {
|
119 |
+
|
120 |
+
check_ajax_referer( 'epsilon-review', 'security' );
|
121 |
+
|
122 |
+
$options = get_option( 'kiwi_general_settings', array() );
|
123 |
+
|
124 |
+
if ( isset( $_POST['epsilon-review'] ) ) {
|
125 |
+
$options['givemereview'] = 'already-rated';
|
126 |
+
} else {
|
127 |
+
$options['givemereview'] = $this->value;
|
128 |
+
}
|
129 |
+
|
130 |
+
update_option( 'kiwi_general_settings', $options );
|
131 |
+
|
132 |
+
wp_die( 'ok' );
|
133 |
+
|
134 |
+
}
|
135 |
+
|
136 |
+
public function enqueue() {
|
137 |
+
wp_enqueue_script( 'jquery' );
|
138 |
+
}
|
139 |
+
|
140 |
+
public function ajax_script() {
|
141 |
+
|
142 |
+
$ajax_nonce = wp_create_nonce( "epsilon-review" );
|
143 |
+
|
144 |
+
?>
|
145 |
+
|
146 |
+
<script type="text/javascript">
|
147 |
+
jQuery(document).ready(function ($) {
|
148 |
+
|
149 |
+
$('.epsilon-review-button').click(function (evt) {
|
150 |
+
var href = $(this).attr('href'),
|
151 |
+
id = $(this).attr('id');
|
152 |
+
|
153 |
+
evt.preventDefault();
|
154 |
+
|
155 |
+
var data = {
|
156 |
+
action: 'epsilon_review',
|
157 |
+
security: '<?php echo $ajax_nonce; ?>',
|
158 |
+
};
|
159 |
+
|
160 |
+
if ('epsilon-rated' === id) {
|
161 |
+
data['epsilon-review'] = 1;
|
162 |
+
}
|
163 |
+
|
164 |
+
$.post('<?php echo admin_url( 'admin-ajax.php' ) ?>', data, function (response) {
|
165 |
+
$('#<?php echo $this->slug ?>-epsilon-review-notice').slideUp('fast', function () {
|
166 |
+
$(this).remove();
|
167 |
+
});
|
168 |
+
|
169 |
+
if ('epsilon-rate' === id) {
|
170 |
+
window.location.href = href;
|
171 |
+
}
|
172 |
+
|
173 |
+
});
|
174 |
+
|
175 |
+
});
|
176 |
+
|
177 |
+
});
|
178 |
+
</script>
|
179 |
+
|
180 |
+
<?php
|
181 |
+
}
|
182 |
+
}
|
includes/class-kiwi-social-share.php
CHANGED
@@ -122,10 +122,6 @@ class Kiwi_Social_Share {
|
|
122 |
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ), 10, 1 );
|
123 |
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_styles' ), 10, 1 );
|
124 |
|
125 |
-
// Handle feedback
|
126 |
-
require_once 'lib/class-kiwi-social-share-feedback.php';
|
127 |
-
new Kiwi_Social_Share_Feedback( $this->file );
|
128 |
-
|
129 |
// Handle localisation
|
130 |
$this->load_plugin_textdomain();
|
131 |
add_action( 'init', array( $this, 'load_localisation' ), 0 );
|
122 |
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ), 10, 1 );
|
123 |
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_styles' ), 10, 1 );
|
124 |
|
|
|
|
|
|
|
|
|
125 |
// Handle localisation
|
126 |
$this->load_plugin_textdomain();
|
127 |
add_action( 'init', array( $this, 'load_localisation' ), 0 );
|
includes/lib/class-epsilon-plugin-request.php
DELETED
@@ -1,225 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Epsilon_Plugin_Request {
|
4 |
-
|
5 |
-
/**
|
6 |
-
* Url for the request
|
7 |
-
*
|
8 |
-
* @var string
|
9 |
-
*/
|
10 |
-
private $url = 'https://tamewp.com/';
|
11 |
-
/**
|
12 |
-
* Api endpoint
|
13 |
-
*
|
14 |
-
* @var string
|
15 |
-
*/
|
16 |
-
private $endpoint = 'wp-json/epsilon/v1/add-tracking-data';
|
17 |
-
/**
|
18 |
-
* Private data
|
19 |
-
*
|
20 |
-
* @var array
|
21 |
-
*/
|
22 |
-
private $data = array(
|
23 |
-
'server' => array(),
|
24 |
-
'user' => array(),
|
25 |
-
'wordpress' => array(
|
26 |
-
'deactivated_plugin' => array(),
|
27 |
-
),
|
28 |
-
);
|
29 |
-
/**
|
30 |
-
* Plugin file
|
31 |
-
*
|
32 |
-
* @var string
|
33 |
-
*/
|
34 |
-
private $plugin_file = '';
|
35 |
-
|
36 |
-
private $allow_tracking = 0;
|
37 |
-
|
38 |
-
public $request_successful = false;
|
39 |
-
|
40 |
-
function __construct( $_plugin_file, $args ) {
|
41 |
-
|
42 |
-
// Set variables
|
43 |
-
$this->allow_tracking = $args['tracking'];
|
44 |
-
$this->plugin_file = $_plugin_file;
|
45 |
-
$this->data['unique'] = md5( home_url() . get_bloginfo( 'admin_email' ) );
|
46 |
-
$this->data['wordpress']['deactivated_plugin']['uninstall_reason'] = $args['reason'];
|
47 |
-
$this->data['wordpress']['deactivated_plugin']['uninstall_details'] = $args['details'];
|
48 |
-
|
49 |
-
// Start collecting data
|
50 |
-
$this->_collect_data();
|
51 |
-
$this->_generate_url();
|
52 |
-
$this->request_successful = $this->_send_request();
|
53 |
-
}
|
54 |
-
|
55 |
-
/**
|
56 |
-
* Collect all data for the request.
|
57 |
-
*
|
58 |
-
*/
|
59 |
-
private function _collect_data() {
|
60 |
-
|
61 |
-
$current_plugin = get_plugin_data( $this->plugin_file );
|
62 |
-
|
63 |
-
// Plugin data
|
64 |
-
$this->data['wordpress']['deactivated_plugin']['slug'] = $current_plugin['TextDomain'];
|
65 |
-
$this->data['wordpress']['deactivated_plugin']['name'] = $current_plugin['Name'];
|
66 |
-
$this->data['wordpress']['deactivated_plugin']['version'] = $current_plugin['Version'];
|
67 |
-
$this->data['wordpress']['deactivated_plugin']['author'] = $current_plugin['AuthorName'];
|
68 |
-
|
69 |
-
if ( $this->allow_tracking ) {
|
70 |
-
$this->_collect_wordpress_data();
|
71 |
-
$this->_collect_server_data();
|
72 |
-
$this->_collect_user_data();
|
73 |
-
}
|
74 |
-
|
75 |
-
}
|
76 |
-
|
77 |
-
/**
|
78 |
-
* Collect WordPress data.
|
79 |
-
*
|
80 |
-
*/
|
81 |
-
private function _collect_wordpress_data() {
|
82 |
-
$this->data['wordpress']['locale'] = ( get_bloginfo( 'version' ) >= 4.7 ) ? get_user_locale() : get_locale();
|
83 |
-
$this->data['wordpress']['wp_version'] = get_bloginfo( 'version' );
|
84 |
-
$this->data['wordpress']['multisite'] = is_multisite();
|
85 |
-
|
86 |
-
$this->data['wordpress']['themes'] = $this->get_themes();
|
87 |
-
$this->data['wordpress']['plugins'] = $this->get_plugins();
|
88 |
-
}
|
89 |
-
|
90 |
-
/**
|
91 |
-
* Collect server data.
|
92 |
-
*
|
93 |
-
*/
|
94 |
-
private function _collect_server_data() {
|
95 |
-
$this->data['server']['server'] = isset( $_SERVER['SERVER_SOFTWARE'] ) ? $_SERVER['SERVER_SOFTWARE'] : '';
|
96 |
-
$this->data['server']['php_version'] = phpversion();
|
97 |
-
$this->data['server']['url'] = home_url();
|
98 |
-
}
|
99 |
-
|
100 |
-
/**
|
101 |
-
* Collect user data.
|
102 |
-
*
|
103 |
-
*/
|
104 |
-
private function _collect_user_data() {
|
105 |
-
$admin = get_user_by( 'email', get_bloginfo( 'admin_email' ) );
|
106 |
-
if ( ! $admin ) {
|
107 |
-
$this->data['user']['email'] = '';
|
108 |
-
$this->data['user']['first_name'] = '';
|
109 |
-
$this->data['user']['last_name'] = '';
|
110 |
-
}else{
|
111 |
-
$this->data['user']['email'] = get_bloginfo( 'admin_email' );
|
112 |
-
$this->data['user']['first_name'] = $admin->first_name;
|
113 |
-
$this->data['user']['last_name'] = $admin->last_name;
|
114 |
-
}
|
115 |
-
}
|
116 |
-
|
117 |
-
/**
|
118 |
-
* Get current themes
|
119 |
-
*
|
120 |
-
* @return array
|
121 |
-
*/
|
122 |
-
private function get_themes() {
|
123 |
-
$theme = wp_get_theme();
|
124 |
-
|
125 |
-
return array(
|
126 |
-
'installed' => $this->_get_installed_themes(),
|
127 |
-
'active' => array(
|
128 |
-
'slug' => get_stylesheet(),
|
129 |
-
'name' => $theme->get( 'Name' ),
|
130 |
-
'version' => $theme->get( 'Version' ),
|
131 |
-
'author' => $theme->get( 'Author' ),
|
132 |
-
),
|
133 |
-
);
|
134 |
-
}
|
135 |
-
|
136 |
-
/**
|
137 |
-
* Get an array of installed themes
|
138 |
-
*/
|
139 |
-
private function _get_installed_themes() {
|
140 |
-
$installed = wp_get_themes();
|
141 |
-
$theme = get_stylesheet();
|
142 |
-
$arr = array();
|
143 |
-
|
144 |
-
foreach ( $installed as $slug => $info ) {
|
145 |
-
if ( $slug === $theme ) {
|
146 |
-
continue;
|
147 |
-
}
|
148 |
-
$arr[ $slug ] = array(
|
149 |
-
'slug' => $slug,
|
150 |
-
'name' => $info->get( 'Name' ),
|
151 |
-
'version' => $info->get( 'Version' ),
|
152 |
-
'author' => $info->get( 'Author' )
|
153 |
-
);
|
154 |
-
};
|
155 |
-
|
156 |
-
return $arr;
|
157 |
-
}
|
158 |
-
|
159 |
-
/**
|
160 |
-
* Get a list of installed plugins
|
161 |
-
*/
|
162 |
-
private function get_plugins() {
|
163 |
-
if ( ! function_exists( 'get_plugins' ) ) {
|
164 |
-
include ABSPATH . '/wp-admin/includes/plugin.php';
|
165 |
-
}
|
166 |
-
|
167 |
-
$plugins = get_plugins();
|
168 |
-
$option = get_option( 'active_plugins', array() );
|
169 |
-
$active = array();
|
170 |
-
$installed = array();
|
171 |
-
foreach ( $plugins as $id => $info ) {
|
172 |
-
if ( in_array( $id, $active ) ) {
|
173 |
-
continue;
|
174 |
-
}
|
175 |
-
|
176 |
-
$id = explode( '/', $id );
|
177 |
-
$id = ucwords( str_replace( '-', ' ', $id[0] ) );
|
178 |
-
|
179 |
-
$installed[] = $id;
|
180 |
-
}
|
181 |
-
|
182 |
-
foreach ( $option as $id ) {
|
183 |
-
$id = explode( '/', $id );
|
184 |
-
$id = ucwords( str_replace( '-', ' ', $id[0] ) );
|
185 |
-
|
186 |
-
$active[] = $id;
|
187 |
-
}
|
188 |
-
|
189 |
-
return array(
|
190 |
-
'installed' => $installed,
|
191 |
-
'active' => $active,
|
192 |
-
);
|
193 |
-
}
|
194 |
-
|
195 |
-
/**
|
196 |
-
* Generate the url
|
197 |
-
*/
|
198 |
-
protected function _generate_url() {
|
199 |
-
$this->url = $this->url . $this->endpoint;
|
200 |
-
}
|
201 |
-
|
202 |
-
/**
|
203 |
-
* Send dat to server.
|
204 |
-
*
|
205 |
-
*/
|
206 |
-
private function _send_request() {
|
207 |
-
|
208 |
-
$request = wp_remote_post( $this->url, array(
|
209 |
-
'method' => 'POST',
|
210 |
-
'timeout' => 20,
|
211 |
-
'redirection' => 5,
|
212 |
-
'httpversion' => '1.1',
|
213 |
-
'blocking' => true,
|
214 |
-
'body' => $this->data,
|
215 |
-
'user-agent' => 'MT/EPSILON-CUSTOMER-TRACKING/' . esc_url( home_url() )
|
216 |
-
) );
|
217 |
-
|
218 |
-
if ( is_wp_error( $request ) ) {
|
219 |
-
return false;
|
220 |
-
}
|
221 |
-
|
222 |
-
return true;
|
223 |
-
|
224 |
-
}
|
225 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/class-kiwi-social-share-feedback.php
DELETED
@@ -1,252 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Kiwi_Social_Share_Feedback {
|
4 |
-
|
5 |
-
private $plugin_file = '';
|
6 |
-
private $plugin_name = '';
|
7 |
-
|
8 |
-
function __construct( $_plugin_file ) {
|
9 |
-
|
10 |
-
$this->plugin_file = $_plugin_file;
|
11 |
-
$this->plugin_name = basename( $this->plugin_file, '.php' );
|
12 |
-
|
13 |
-
// Deactivation
|
14 |
-
add_filter( 'plugin_action_links_' . plugin_basename( $this->plugin_file ), array( $this, 'filter_action_links' ) );
|
15 |
-
add_action( 'admin_footer-plugins.php', array( $this, 'goodbye_ajax' ) );
|
16 |
-
add_action( 'wp_ajax_epsilon_deactivate_plugin', array( $this, 'epsilon_deactivate_plugin_callback' ) );
|
17 |
-
|
18 |
-
}
|
19 |
-
|
20 |
-
/**
|
21 |
-
* Filter the deactivation link to allow us to present a form when the user deactivates the plugin
|
22 |
-
* @since 1.0.0
|
23 |
-
*/
|
24 |
-
public function filter_action_links( $links ) {
|
25 |
-
|
26 |
-
if( isset( $links['deactivate'] ) ) {
|
27 |
-
$deactivation_link = $links['deactivate'];
|
28 |
-
// Insert an onClick action to allow form before deactivating
|
29 |
-
$deactivation_link = str_replace( '<a ', '<div class="epsilon-deactivate-form-wrapper"><span class="epsilon-deactivate-form" id="epsilon-deactivate-form-' . esc_attr( $this->plugin_name ) . '"></span></div><a onclick="javascript:event.preventDefault();" id="epsilon-deactivate-link-' . esc_attr( $this->plugin_name ) . '" ', $deactivation_link );
|
30 |
-
$links['deactivate'] = $deactivation_link;
|
31 |
-
}
|
32 |
-
return $links;
|
33 |
-
}
|
34 |
-
|
35 |
-
/**
|
36 |
-
* Form text strings
|
37 |
-
* These can be filtered
|
38 |
-
* @since 1.0.0
|
39 |
-
*/
|
40 |
-
public function goodbye_ajax() {
|
41 |
-
// Get our strings for the form
|
42 |
-
$form = $this->get_form_info();
|
43 |
-
|
44 |
-
// Build the HTML to go in the form
|
45 |
-
$html = '<div class="epsilon-deactivate-form-head"><strong>' . esc_html( $form['heading'] ) . '</strong></div>';
|
46 |
-
$html .= '<div class="epsilon-deactivate-form-body"><p>' . esc_html( $form['body'] ) . '</p>';
|
47 |
-
if( is_array( $form['options'] ) ) {
|
48 |
-
$html .= '<div class="epsilon-deactivate-options"><p>';
|
49 |
-
foreach( $form['options'] as $key => $option ) {
|
50 |
-
if ( 'features' == $key ) {
|
51 |
-
$html .= '<input type="radio" name="epsilon-deactivate-reason" checked="checked" id="' . esc_attr( $key ) . '" value="' . esc_attr( $key ) . '"> <label for="' . esc_attr( $key ) . '">' . esc_attr( $option ) . '</label><br>';
|
52 |
-
}else{
|
53 |
-
$html .= '<input type="radio" name="epsilon-deactivate-reason" id="' . esc_attr( $key ) . '" value="' . esc_attr( $key ) . '"> <label for="' . esc_attr( $key ) . '">' . esc_attr( $option ) . '</label><br>';
|
54 |
-
}
|
55 |
-
}
|
56 |
-
$html .= '</p><label id="epsilon-deactivate-details-label" for="epsilon-deactivate-reasons"><strong>' . esc_html( $form['details'] ) .'</strong></label><textarea name="epsilon-deactivate-details" id="epsilon-deactivate-details" rows="2" style="width:100%"></textarea>';
|
57 |
-
$html .= '<input type="checkbox" name="epsilon-deactivate-tracking" checked="" id="allow-tracking" value="yes"> <label for="allow-tracking">' . esc_html__( 'Allow us to get more information in order to improve our plugin', 'kiwi-social-share') . '</label><br>';
|
58 |
-
$html .= '</div><!-- .epsilon-deactivate-options -->';
|
59 |
-
}
|
60 |
-
$html .= '</div><!-- .epsilon-deactivate-form-body -->';
|
61 |
-
$html .= '<p class="deactivating-spinner"><span class="spinner"></span> ' . __( 'Submitting form', 'kiwi-social-share') . '</p>';
|
62 |
-
$html .= '<div class="epsilon-deactivate-form-footer"><p><a id="epsilon-deactivate-plugin" href="#">' . __( 'Just Deactivate', 'kiwi-social-share') . '</a><a id="epsilon-deactivate-submit-form" class="button button-primary" href="#">' . __( 'Submit and Deactivate', 'kiwi-social-share') . '</a></p></div>'
|
63 |
-
?>
|
64 |
-
<div class="epsilon-deactivate-form-bg" data-plugin="<?php echo esc_attr( $this->plugin_name ); ?>"></div>
|
65 |
-
<style type="text/css">
|
66 |
-
.epsilon-deactivate-form-active .epsilon-deactivate-form-bg {
|
67 |
-
background: rgba( 0, 0, 0, .5 );
|
68 |
-
position: fixed;
|
69 |
-
top: 0;
|
70 |
-
left: 0;
|
71 |
-
width: 100%;
|
72 |
-
height: 100%;
|
73 |
-
}
|
74 |
-
.epsilon-deactivate-form-wrapper {
|
75 |
-
position: relative;
|
76 |
-
z-index: 999;
|
77 |
-
display: none;
|
78 |
-
}
|
79 |
-
.epsilon-deactivate-form-active .epsilon-deactivate-form-wrapper {
|
80 |
-
display: block;
|
81 |
-
}
|
82 |
-
.epsilon-deactivate-form {
|
83 |
-
display: none;
|
84 |
-
}
|
85 |
-
.epsilon-deactivate-form-active .epsilon-deactivate-form {
|
86 |
-
position: absolute;
|
87 |
-
bottom: 30px;
|
88 |
-
left: 0;
|
89 |
-
max-width: 400px;
|
90 |
-
background: #fff;
|
91 |
-
white-space: normal;
|
92 |
-
}
|
93 |
-
.epsilon-deactivate-form-head {
|
94 |
-
background: #51AD31;
|
95 |
-
color: #fff;
|
96 |
-
padding: 8px 18px;
|
97 |
-
}
|
98 |
-
.epsilon-deactivate-form-body {
|
99 |
-
padding: 8px 18px;
|
100 |
-
color: #444;
|
101 |
-
}
|
102 |
-
.deactivating-spinner {
|
103 |
-
display: none;
|
104 |
-
}
|
105 |
-
.deactivating-spinner .spinner {
|
106 |
-
float: none;
|
107 |
-
margin: 4px 4px 0 18px;
|
108 |
-
vertical-align: bottom;
|
109 |
-
visibility: visible;
|
110 |
-
}
|
111 |
-
.epsilon-deactivate-form-footer {
|
112 |
-
padding: 8px 18px;
|
113 |
-
}
|
114 |
-
.epsilon-deactivate-form-footer p {
|
115 |
-
display: flex;
|
116 |
-
align-items: center;
|
117 |
-
justify-content: space-between;
|
118 |
-
}
|
119 |
-
.epsilon-deactivate-form.process-response .epsilon-deactivate-form-body,
|
120 |
-
.epsilon-deactivate-form.process-response .epsilon-deactivate-form-footer {
|
121 |
-
position: relative;
|
122 |
-
}
|
123 |
-
.epsilon-deactivate-form.process-response .epsilon-deactivate-form-body:after,
|
124 |
-
.epsilon-deactivate-form.process-response .epsilon-deactivate-form-footer:after {
|
125 |
-
content: "";
|
126 |
-
display: block;
|
127 |
-
position: absolute;
|
128 |
-
top: 0;
|
129 |
-
left: 0;
|
130 |
-
width: 100%;
|
131 |
-
height: 100%;
|
132 |
-
background-color: rgba( 255, 255, 255, .5 );
|
133 |
-
}
|
134 |
-
</style>
|
135 |
-
<script>
|
136 |
-
jQuery(document).ready(function($){
|
137 |
-
var deactivateURL = $("#epsilon-deactivate-link-<?php echo esc_attr( $this->plugin_name ); ?>"),
|
138 |
-
formContainer = $('#epsilon-deactivate-form-<?php echo esc_attr( $this->plugin_name ); ?>'),
|
139 |
-
detailsStrings = {
|
140 |
-
'setup' : '<?php echo __( 'What was the dificult part ?', 'kiwi-social-share') ?>',
|
141 |
-
'documentation' : '<?php echo __( 'What can we describe more ?', 'kiwi-social-share') ?>',
|
142 |
-
'features' : '<?php echo __( 'How could we improve ?', 'kiwi-social-share') ?>',
|
143 |
-
'better-plugin' : '<?php echo __( 'Can you mention it ?', 'kiwi-social-share') ?>',
|
144 |
-
'incompatibility' : '<?php echo __( 'With what plugin or theme is incompatible ?', 'kiwi-social-share') ?>',
|
145 |
-
};
|
146 |
-
|
147 |
-
$( deactivateURL ).on("click",function(){
|
148 |
-
// We'll send the user to this deactivation link when they've completed or dismissed the form
|
149 |
-
var url = deactivateURL.attr( 'href' );
|
150 |
-
$('body').toggleClass('epsilon-deactivate-form-active');
|
151 |
-
formContainer.fadeIn();
|
152 |
-
formContainer.html( '<?php echo $html; ?>');
|
153 |
-
|
154 |
-
formContainer.on( 'change', 'input[name="epsilon-deactivate-reason"]', function(){
|
155 |
-
var detailsLabel = formContainer.find( '#epsilon-deactivate-details-label strong' );
|
156 |
-
var value = formContainer.find( 'input[name="epsilon-deactivate-reason"]:checked' ).val();
|
157 |
-
detailsLabel.text( detailsStrings[ value ] );
|
158 |
-
});
|
159 |
-
|
160 |
-
formContainer.on('click', '#epsilon-deactivate-submit-form', function(e){
|
161 |
-
var data = {
|
162 |
-
'action': 'epsilon_deactivate_plugin',
|
163 |
-
'security': "<?php echo wp_create_nonce ( 'epsilon_deactivate_plugin' ); ?>",
|
164 |
-
'dataType': "json"
|
165 |
-
};
|
166 |
-
e.preventDefault();
|
167 |
-
// As soon as we click, the body of the form should disappear
|
168 |
-
formContainer.addClass( 'process-response' );
|
169 |
-
// Fade in spinner
|
170 |
-
formContainer.find(".deactivating-spinner").fadeIn();
|
171 |
-
|
172 |
-
data['reason'] = formContainer.find( 'input[name="epsilon-deactivate-reason"]:checked' ).val();
|
173 |
-
data['details'] = formContainer.find('#epsilon-deactivate-details').val();
|
174 |
-
data['tracking'] = formContainer.find( '#allow-tracking:checked' ).length;
|
175 |
-
|
176 |
-
$.post(
|
177 |
-
ajaxurl,
|
178 |
-
data,
|
179 |
-
function(response){
|
180 |
-
// Redirect to original deactivation URL
|
181 |
-
window.location.href = url;
|
182 |
-
}
|
183 |
-
);
|
184 |
-
});
|
185 |
-
|
186 |
-
formContainer.on('click', '#epsilon-deactivate-plugin', function(e){
|
187 |
-
e.preventDefault();
|
188 |
-
window.location.href = url;
|
189 |
-
});
|
190 |
-
|
191 |
-
// If we click outside the form, the form will close
|
192 |
-
$('.epsilon-deactivate-form-bg').on('click',function(){
|
193 |
-
formContainer.fadeOut();
|
194 |
-
$('body').removeClass('epsilon-deactivate-form-active');
|
195 |
-
});
|
196 |
-
});
|
197 |
-
});
|
198 |
-
</script>
|
199 |
-
<?php }
|
200 |
-
|
201 |
-
/*
|
202 |
-
* Form text strings
|
203 |
-
* These are non-filterable and used as fallback in case filtered strings aren't set correctly
|
204 |
-
* @since 1.0.0
|
205 |
-
*/
|
206 |
-
public function get_form_info() {
|
207 |
-
$form = array();
|
208 |
-
$form['heading'] = __( 'Sorry to see you go', 'kiwi-social-share');
|
209 |
-
$form['body'] = __( 'Before you deactivate the plugin, would you quickly give us your reason for doing so?', 'kiwi-social-share');
|
210 |
-
$form['options'] = array(
|
211 |
-
'setup' => __( 'Set up is too difficult', 'kiwi-social-share'),
|
212 |
-
'documentation' => __( 'Lack of documentation', 'kiwi-social-share'),
|
213 |
-
'features' => __( 'Not the features I wanted', 'kiwi-social-share'),
|
214 |
-
'better-plugin' => __( 'Found a better plugin', 'kiwi-social-share'),
|
215 |
-
'incompatibility' => __( 'Incompatible with theme or plugin', 'kiwi-social-share'),
|
216 |
-
);
|
217 |
-
$form['details'] = __( 'How could we improve ?', 'kiwi-social-share');
|
218 |
-
return $form;
|
219 |
-
}
|
220 |
-
|
221 |
-
public function epsilon_deactivate_plugin_callback() {
|
222 |
-
|
223 |
-
check_ajax_referer( 'epsilon_deactivate_plugin', 'security' );
|
224 |
-
|
225 |
-
if ( isset($_POST['reason']) && isset($_POST['details']) && isset($_POST['tracking']) ) {
|
226 |
-
require_once 'class-epsilon-plugin-request.php';
|
227 |
-
$args = array(
|
228 |
-
'reason' => $_POST['reason'],
|
229 |
-
'details' => $_POST['details'],
|
230 |
-
'tracking' => $_POST['tracking'],
|
231 |
-
);
|
232 |
-
$request = new Epsilon_Plugin_Request( $this->plugin_file, $args );
|
233 |
-
if ( $request->request_successful ) {
|
234 |
-
echo json_encode( array(
|
235 |
-
'status' => 'ok',
|
236 |
-
) );
|
237 |
-
}else{
|
238 |
-
echo json_encode( array(
|
239 |
-
'status' => 'nok',
|
240 |
-
) );
|
241 |
-
}
|
242 |
-
}else{
|
243 |
-
echo json_encode( array(
|
244 |
-
'status' => 'ok',
|
245 |
-
) );
|
246 |
-
}
|
247 |
-
|
248 |
-
die();
|
249 |
-
|
250 |
-
}
|
251 |
-
|
252 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/lib/cmb2/cmb2-old.rar
ADDED
Binary file
|
kiwi-social-share.php
CHANGED
@@ -1,13 +1,13 @@
|
|
1 |
<?php
|
2 |
/*
|
3 |
* Plugin Name: Kiwi Social Share - Social Media Share Buttons & Icons
|
4 |
-
* Version: 2.0.
|
5 |
-
* Plugin URI: https://www.machothemes.com/kiwi-social-share
|
6 |
* Description: Really beautiful & simple social media & share buttons + icons. Simplicity & speed is key with this social media share plugin.
|
7 |
-
* Author:
|
8 |
* Author URI: https://www.machothemes.com
|
9 |
* Requires at least: 4.0
|
10 |
-
* Tested up to:
|
11 |
*
|
12 |
* Text Domain: kiwi-social-share
|
13 |
* Domain Path: /languages/
|
@@ -38,7 +38,7 @@ require_once 'includes/class-kiwi-social-share-autoloader.php';
|
|
38 |
* @return object Kiwi_Social_Share
|
39 |
*/
|
40 |
function Kiwi_Social_Share() {
|
41 |
-
$instance = Kiwi_Social_Share::instance( __FILE__, '2.0.
|
42 |
|
43 |
if ( is_null( $instance->settings ) ) {
|
44 |
$instance->settings = Kiwi_Social_Share_Settings::instance( $instance );
|
@@ -47,4 +47,18 @@ function Kiwi_Social_Share() {
|
|
47 |
return $instance;
|
48 |
}
|
49 |
|
50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
<?php
|
2 |
/*
|
3 |
* Plugin Name: Kiwi Social Share - Social Media Share Buttons & Icons
|
4 |
+
* Version: 2.0.14
|
5 |
+
* Plugin URI: https://www.machothemes.com/item/kiwi-social-share
|
6 |
* Description: Really beautiful & simple social media & share buttons + icons. Simplicity & speed is key with this social media share plugin.
|
7 |
+
* Author: MachoThemes
|
8 |
* Author URI: https://www.machothemes.com
|
9 |
* Requires at least: 4.0
|
10 |
+
* Tested up to: 5.0
|
11 |
*
|
12 |
* Text Domain: kiwi-social-share
|
13 |
* Domain Path: /languages/
|
38 |
* @return object Kiwi_Social_Share
|
39 |
*/
|
40 |
function Kiwi_Social_Share() {
|
41 |
+
$instance = Kiwi_Social_Share::instance( __FILE__, '2.0.14' );
|
42 |
|
43 |
if ( is_null( $instance->settings ) ) {
|
44 |
$instance->settings = Kiwi_Social_Share_Settings::instance( $instance );
|
47 |
return $instance;
|
48 |
}
|
49 |
|
50 |
+
function kiwi_social_share_check_for_review() {
|
51 |
+
if ( ! is_admin() ) {
|
52 |
+
return;
|
53 |
+
}
|
54 |
+
require_once KIWI_SOCIAL_SHARE_BASE . 'includes/class-kiwi-social-share-review.php';
|
55 |
+
|
56 |
+
Kiwi_Social_Share_Review::get_instance( array(
|
57 |
+
'slug' => 'kiwi-social-share',
|
58 |
+
) );
|
59 |
+
}
|
60 |
+
|
61 |
+
Kiwi_Social_Share();
|
62 |
+
|
63 |
+
kiwi_social_share_check_for_review();
|
64 |
+
|
readme.txt
CHANGED
@@ -3,14 +3,16 @@
|
|
3 |
Contributors: machothemes, silkalns
|
4 |
Tags: social media button, social share button, social floating bar, social share bar, facebook share, social sharing icons, twitter share, woocommerce sharing, share buttons, pinterest share, google plus share, social share counters
|
5 |
Requires at least: 3.8
|
6 |
-
Tested up to:
|
7 |
-
Stable tag: 2.0.
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
11 |
This is by far the best free WordPress share plugin. It is simple yet does exactly what it should with plenty of customisation options.
|
12 |
== Description ==
|
13 |
|
|
|
|
|
14 |
This is by far the best & easiest to use WordPress social media share plugin. A WordPress share plugin with custom icons built-in.
|
15 |
|
16 |
|
@@ -41,7 +43,7 @@ A WordPress Social Media Widget solution is coming soon, stay tuned.
|
|
41 |
|
42 |
**About us:**
|
43 |
|
44 |
-
We are a young team of WordPress aficionados who love building WordPress plugins & <a href="https://www.machothemes.com/"
|
45 |
|
46 |
|
47 |
== Installation ==
|
@@ -76,6 +78,9 @@ Floating Bar Filters
|
|
76 |
|
77 |
== Changelog ==
|
78 |
|
|
|
|
|
|
|
79 |
= 2.0.13 =
|
80 |
* Fixed "Trying to get property ‘post_content’ when there is no id, like 404"
|
81 |
|
3 |
Contributors: machothemes, silkalns
|
4 |
Tags: social media button, social share button, social floating bar, social share bar, facebook share, social sharing icons, twitter share, woocommerce sharing, share buttons, pinterest share, google plus share, social share counters
|
5 |
Requires at least: 3.8
|
6 |
+
Tested up to: 5.0
|
7 |
+
Stable tag: 2.0.14
|
8 |
License: GPLv3 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
|
11 |
This is by far the best free WordPress share plugin. It is simple yet does exactly what it should with plenty of customisation options.
|
12 |
== Description ==
|
13 |
|
14 |
+
**Kiwi Social Share** is a standalone plugin built, maintained & operated by the friendly folks over at [MachoThemes](https://www.machothemes.com/)
|
15 |
+
|
16 |
This is by far the best & easiest to use WordPress social media share plugin. A WordPress share plugin with custom icons built-in.
|
17 |
|
18 |
|
43 |
|
44 |
**About us:**
|
45 |
|
46 |
+
We are a young team of WordPress aficionados who love building WordPress plugins & <a href="https://www.machothemes.com/" target="_blank" title="Premium WordPress themes">Premium WordPress themes</a> over on our theme shop. We’re also blogging and wish to help our users find the best <a href="https://www.machothemes.com/blog/cheapest-wordpress-hosting/" target="_blank" title="Cheap WordPress Hosting">Cheap WordPress hosting</a> & the best <a href="https://www.machothemes.com/blog/best-free-wordpress-bootstrap-themes/" title="Bootstrap WordPress themes" target="_blank">Bootstrap WordPress Themes</a>.
|
47 |
|
48 |
|
49 |
== Installation ==
|
78 |
|
79 |
== Changelog ==
|
80 |
|
81 |
+
= 2.014 =
|
82 |
+
* Remove uninstall feedback
|
83 |
+
|
84 |
= 2.0.13 =
|
85 |
* Fixed "Trying to get property ‘post_content’ when there is no id, like 404"
|
86 |
|