Version Description
- Added alt tag for custom profile image.
Download this release
Release Info
Developer | machothemes |
Plugin | Simple Author Box |
Version | 2.1.2 |
Comparing to | |
See all releases |
Code changes from version 2.1.0 to 2.1.2
- assets/js/sabox-admin.js +134 -134
- inc/class-simple-author-box-user-profile.php +162 -162
- inc/feedback/class-epsilon-plugin-request-sab.php +227 -227
- inc/functions.php +46 -46
- readme.txt +10 -5
- simple-author-box.php +2 -2
- template/template-sab.php +118 -116
- uninstall.php +26 -26
assets/js/sabox-admin.js
CHANGED
@@ -1,134 +1,134 @@
|
|
1 |
-
( function( $ ) {
|
2 |
-
|
3 |
-
'use strict';
|
4 |
-
var context = $( '#sabox-container' );
|
5 |
-
context.find( '.saboxfield' ).on( 'change', function() {
|
6 |
-
var value = getElementValue( $( this ) );
|
7 |
-
var elements = context.find( '.show_if_' + $( this ).attr( 'id' ) );
|
8 |
-
|
9 |
-
if ( value && '0' != value ) {
|
10 |
-
elements.show( 300 );
|
11 |
-
} else {
|
12 |
-
elements.hide( 250 );
|
13 |
-
}
|
14 |
-
});
|
15 |
-
|
16 |
-
function getElementValue( $element ) {
|
17 |
-
var type = $element.attr( 'type' );
|
18 |
-
var name = $element.attr( 'name' );
|
19 |
-
|
20 |
-
if ( 'checkbox' === type ) {
|
21 |
-
if ( $element.is( ':checked' ) ) {
|
22 |
-
return 1;
|
23 |
-
} else {
|
24 |
-
return 0;
|
25 |
-
}
|
26 |
-
} else {
|
27 |
-
return $element.val();
|
28 |
-
}
|
29 |
-
}
|
30 |
-
|
31 |
-
/**
|
32 |
-
* Handle UI tab switching via jQuery instead of relying on CSS only
|
33 |
-
*/
|
34 |
-
function adminTabSwitching() {
|
35 |
-
|
36 |
-
var navTabSelector = '.nav-tab-wrapper .epfw-tab:not( .epfw-tab-link )',
|
37 |
-
initialTabHref,
|
38 |
-
initialTabID,
|
39 |
-
url;
|
40 |
-
|
41 |
-
// Get the current tab
|
42 |
-
if ( '' !== window.location.hash && $( window.location.hash + '-tab.epfw-turn-into-tab' ).length > 0 ) {
|
43 |
-
initialTabHref = window.location.hash;
|
44 |
-
} else {
|
45 |
-
initialTabHref = $( navTabSelector + ':first' ).attr( 'href' );
|
46 |
-
}
|
47 |
-
|
48 |
-
initialTabID = initialTabHref + '-tab';
|
49 |
-
|
50 |
-
/**
|
51 |
-
* Default tab handling
|
52 |
-
*/
|
53 |
-
|
54 |
-
// Make the first tab active by default
|
55 |
-
$( navTabSelector + '[href="' + initialTabHref + '"]' ).addClass( 'nav-tab-active' );
|
56 |
-
|
57 |
-
// Make all the tabs, except the first one hidden
|
58 |
-
$( '.epfw-turn-into-tab' ).each( function( index, value ) {
|
59 |
-
if ( '#' + $( this ).attr( 'id' ) !== initialTabID ) {
|
60 |
-
$( this ).hide();
|
61 |
-
}
|
62 |
-
});
|
63 |
-
|
64 |
-
/**
|
65 |
-
* Listen for click events on nav-tab links
|
66 |
-
*/
|
67 |
-
$( navTabSelector ).click( function( event ) {
|
68 |
-
|
69 |
-
var clickedTab = $( this ).attr( 'href' ) + '-tab';
|
70 |
-
$( navTabSelector ).removeClass( 'nav-tab-active' ); // Remove class from previous selector
|
71 |
-
$( this ).addClass( 'nav-tab-active' ).blur(); // Add class to currently clicked selector
|
72 |
-
|
73 |
-
$( '.epfw-turn-into-tab' ).each( function( index, value ) {
|
74 |
-
if ( '#' + $( this ).attr( 'id' ) !== clickedTab ) {
|
75 |
-
$( this ).hide();
|
76 |
-
}
|
77 |
-
|
78 |
-
$( clickedTab ).fadeIn();
|
79 |
-
|
80 |
-
});
|
81 |
-
|
82 |
-
});
|
83 |
-
}
|
84 |
-
|
85 |
-
$( document ).ready( function() {
|
86 |
-
var elements = context.find( '.saboxfield' ),
|
87 |
-
sliders = context.find( '.sabox-slider' ),
|
88 |
-
colorpickers = context.find( '.sabox-color' );
|
89 |
-
|
90 |
-
elements.each( function( $index, $element ) {
|
91 |
-
var element = $( $element ),
|
92 |
-
value = getElementValue( element ),
|
93 |
-
elements = context.find( '.show_if_' + element.attr( 'id' ) );
|
94 |
-
if ( value && '0' !== value ) {
|
95 |
-
elements.removeClass( 'hide' );
|
96 |
-
} else {
|
97 |
-
elements.addClass( 'hide' );
|
98 |
-
}
|
99 |
-
});
|
100 |
-
if ( sliders.length > 0 ) {
|
101 |
-
sliders.each( function( $index, $slider ) {
|
102 |
-
var input = $( $slider ).parent().find( '.saboxfield' ),
|
103 |
-
max = input.data( 'max' ),
|
104 |
-
min = input.data( 'min' ),
|
105 |
-
step = input.data( 'step' ),
|
106 |
-
value = parseInt( input.val(), 10 );
|
107 |
-
|
108 |
-
$( $slider ).slider({
|
109 |
-
value: value,
|
110 |
-
min: min,
|
111 |
-
max: max,
|
112 |
-
step: step,
|
113 |
-
slide: function( event, ui ) {
|
114 |
-
input.val( ui.value + 'px' ).trigger( 'change' );
|
115 |
-
}
|
116 |
-
});
|
117 |
-
});
|
118 |
-
}
|
119 |
-
if ( colorpickers.length > 0 ) {
|
120 |
-
colorpickers.each( function( $index, $colorpicker ) {
|
121 |
-
$( $colorpicker ).wpColorPicker({
|
122 |
-
change : function( event, ui ){
|
123 |
-
jQuery( event.target ).val( ui.color.toString() ).trigger( 'change' );
|
124 |
-
}
|
125 |
-
});
|
126 |
-
});
|
127 |
-
}
|
128 |
-
|
129 |
-
adminTabSwitching();
|
130 |
-
|
131 |
-
});
|
132 |
-
|
133 |
-
})( jQuery );
|
134 |
-
|
1 |
+
( function( $ ) {
|
2 |
+
|
3 |
+
'use strict';
|
4 |
+
var context = $( '#sabox-container' );
|
5 |
+
context.find( '.saboxfield' ).on( 'change', function() {
|
6 |
+
var value = getElementValue( $( this ) );
|
7 |
+
var elements = context.find( '.show_if_' + $( this ).attr( 'id' ) );
|
8 |
+
|
9 |
+
if ( value && '0' != value ) {
|
10 |
+
elements.show( 300 );
|
11 |
+
} else {
|
12 |
+
elements.hide( 250 );
|
13 |
+
}
|
14 |
+
});
|
15 |
+
|
16 |
+
function getElementValue( $element ) {
|
17 |
+
var type = $element.attr( 'type' );
|
18 |
+
var name = $element.attr( 'name' );
|
19 |
+
|
20 |
+
if ( 'checkbox' === type ) {
|
21 |
+
if ( $element.is( ':checked' ) ) {
|
22 |
+
return 1;
|
23 |
+
} else {
|
24 |
+
return 0;
|
25 |
+
}
|
26 |
+
} else {
|
27 |
+
return $element.val();
|
28 |
+
}
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Handle UI tab switching via jQuery instead of relying on CSS only
|
33 |
+
*/
|
34 |
+
function adminTabSwitching() {
|
35 |
+
|
36 |
+
var navTabSelector = '.nav-tab-wrapper .epfw-tab:not( .epfw-tab-link )',
|
37 |
+
initialTabHref,
|
38 |
+
initialTabID,
|
39 |
+
url;
|
40 |
+
|
41 |
+
// Get the current tab
|
42 |
+
if ( '' !== window.location.hash && $( window.location.hash + '-tab.epfw-turn-into-tab' ).length > 0 ) {
|
43 |
+
initialTabHref = window.location.hash;
|
44 |
+
} else {
|
45 |
+
initialTabHref = $( navTabSelector + ':first' ).attr( 'href' );
|
46 |
+
}
|
47 |
+
|
48 |
+
initialTabID = initialTabHref + '-tab';
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Default tab handling
|
52 |
+
*/
|
53 |
+
|
54 |
+
// Make the first tab active by default
|
55 |
+
$( navTabSelector + '[href="' + initialTabHref + '"]' ).addClass( 'nav-tab-active' );
|
56 |
+
|
57 |
+
// Make all the tabs, except the first one hidden
|
58 |
+
$( '.epfw-turn-into-tab' ).each( function( index, value ) {
|
59 |
+
if ( '#' + $( this ).attr( 'id' ) !== initialTabID ) {
|
60 |
+
$( this ).hide();
|
61 |
+
}
|
62 |
+
});
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Listen for click events on nav-tab links
|
66 |
+
*/
|
67 |
+
$( navTabSelector ).click( function( event ) {
|
68 |
+
|
69 |
+
var clickedTab = $( this ).attr( 'href' ) + '-tab';
|
70 |
+
$( navTabSelector ).removeClass( 'nav-tab-active' ); // Remove class from previous selector
|
71 |
+
$( this ).addClass( 'nav-tab-active' ).blur(); // Add class to currently clicked selector
|
72 |
+
|
73 |
+
$( '.epfw-turn-into-tab' ).each( function( index, value ) {
|
74 |
+
if ( '#' + $( this ).attr( 'id' ) !== clickedTab ) {
|
75 |
+
$( this ).hide();
|
76 |
+
}
|
77 |
+
|
78 |
+
$( clickedTab ).fadeIn();
|
79 |
+
|
80 |
+
});
|
81 |
+
|
82 |
+
});
|
83 |
+
}
|
84 |
+
|
85 |
+
$( document ).ready( function() {
|
86 |
+
var elements = context.find( '.saboxfield' ),
|
87 |
+
sliders = context.find( '.sabox-slider' ),
|
88 |
+
colorpickers = context.find( '.sabox-color' );
|
89 |
+
|
90 |
+
elements.each( function( $index, $element ) {
|
91 |
+
var element = $( $element ),
|
92 |
+
value = getElementValue( element ),
|
93 |
+
elements = context.find( '.show_if_' + element.attr( 'id' ) );
|
94 |
+
if ( value && '0' !== value ) {
|
95 |
+
elements.removeClass( 'hide' );
|
96 |
+
} else {
|
97 |
+
elements.addClass( 'hide' );
|
98 |
+
}
|
99 |
+
});
|
100 |
+
if ( sliders.length > 0 ) {
|
101 |
+
sliders.each( function( $index, $slider ) {
|
102 |
+
var input = $( $slider ).parent().find( '.saboxfield' ),
|
103 |
+
max = input.data( 'max' ),
|
104 |
+
min = input.data( 'min' ),
|
105 |
+
step = input.data( 'step' ),
|
106 |
+
value = parseInt( input.val(), 10 );
|
107 |
+
|
108 |
+
$( $slider ).slider({
|
109 |
+
value: value,
|
110 |
+
min: min,
|
111 |
+
max: max,
|
112 |
+
step: step,
|
113 |
+
slide: function( event, ui ) {
|
114 |
+
input.val( ui.value + 'px' ).trigger( 'change' );
|
115 |
+
}
|
116 |
+
});
|
117 |
+
});
|
118 |
+
}
|
119 |
+
if ( colorpickers.length > 0 ) {
|
120 |
+
colorpickers.each( function( $index, $colorpicker ) {
|
121 |
+
$( $colorpicker ).wpColorPicker({
|
122 |
+
change : function( event, ui ){
|
123 |
+
jQuery( event.target ).val( ui.color.toString() ).trigger( 'change' );
|
124 |
+
}
|
125 |
+
});
|
126 |
+
});
|
127 |
+
}
|
128 |
+
|
129 |
+
adminTabSwitching();
|
130 |
+
|
131 |
+
});
|
132 |
+
|
133 |
+
})( jQuery );
|
134 |
+
|
inc/class-simple-author-box-user-profile.php
CHANGED
@@ -1,162 +1,162 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Simple_Author_Box_User_Profile {
|
4 |
-
|
5 |
-
function __construct() {
|
6 |
-
|
7 |
-
// Social Links
|
8 |
-
add_action( 'show_user_profile', array( $this, 'add_social_area' ) );
|
9 |
-
add_action( 'edit_user_profile', array( $this, 'add_social_area' ) );
|
10 |
-
|
11 |
-
// Custom Profile Image
|
12 |
-
add_action( 'show_user_profile', array( $this, 'add_profile_image' ), 9, 1 );
|
13 |
-
add_action( 'edit_user_profile', array( $this, 'add_profile_image' ), 9, 1 );
|
14 |
-
|
15 |
-
add_action( 'personal_options_update', array( $this, 'save_user_profile' ) );
|
16 |
-
add_action( 'edit_user_profile_update', array( $this, 'save_user_profile' ) );
|
17 |
-
|
18 |
-
// Allow HTML in user description.
|
19 |
-
remove_filter( 'pre_user_description', 'wp_filter_kses' );
|
20 |
-
add_filter( 'pre_user_description', 'wp_kses_post' );
|
21 |
-
|
22 |
-
}
|
23 |
-
|
24 |
-
public function add_social_area( $profileuser ) {
|
25 |
-
$user_id = $profileuser->data->ID;
|
26 |
-
|
27 |
-
$social_links = Simple_Author_Box_Helper::get_user_social_links( $user_id );
|
28 |
-
$social_icons = apply_filters( 'sabox_social_icons', Simple_Author_Box_Helper::$social_icons );
|
29 |
-
unset( $social_icons['user_email'] );
|
30 |
-
|
31 |
-
?>
|
32 |
-
<div class="sab-user-profile-wrapper">
|
33 |
-
<h2><?php _e( 'Social Media Links (Simple Author Box)', 'saboxplugin' ); ?></h2>
|
34 |
-
<table class="form-table" id="sabox-social-table">
|
35 |
-
<?php
|
36 |
-
|
37 |
-
if ( ! empty( $social_links ) ) {
|
38 |
-
foreach ( $social_links as $social_platform => $social_link ) {
|
39 |
-
?>
|
40 |
-
<tr>
|
41 |
-
<th>
|
42 |
-
<span class="sabox-drag"></span>
|
43 |
-
<select name="sabox-social-icons[]">
|
44 |
-
<?php foreach ( $social_icons as $sabox_social_id => $sabox_social_name ) { ?>
|
45 |
-
<option value="<?php echo $sabox_social_id; ?>" <?php selected( $sabox_social_id, $social_platform ); ?>><?php echo $sabox_social_name; ?></option>
|
46 |
-
<?php } ?>
|
47 |
-
</select>
|
48 |
-
</th>
|
49 |
-
<td>
|
50 |
-
<input name="sabox-social-links[]" type="text" class="regular-text" value="<?php echo esc_url( $social_link ); ?>">
|
51 |
-
<span class="dashicons dashicons-trash"></span>
|
52 |
-
<td>
|
53 |
-
</tr>
|
54 |
-
<?php
|
55 |
-
}
|
56 |
-
} else {
|
57 |
-
?>
|
58 |
-
<tr>
|
59 |
-
<th>
|
60 |
-
<span class="sabox-drag"></span>
|
61 |
-
<select name="sabox-social-icons[]">
|
62 |
-
<?php foreach ( $social_icons as $sabox_social_id => $sabox_social_name ) { ?>
|
63 |
-
<option value="<?php echo $sabox_social_id; ?>"><?php echo $sabox_social_name; ?></option>
|
64 |
-
<?php } ?>
|
65 |
-
</select>
|
66 |
-
</th>
|
67 |
-
<td>
|
68 |
-
<input name="sabox-social-links[]" type="text" class="regular-text" value="">
|
69 |
-
<span class="dashicons dashicons-trash"></span>
|
70 |
-
<td>
|
71 |
-
</tr>
|
72 |
-
<?php
|
73 |
-
}
|
74 |
-
|
75 |
-
?>
|
76 |
-
|
77 |
-
</table>
|
78 |
-
|
79 |
-
<div class="sabox-add-social-link">
|
80 |
-
<a href="#" class="button button-primary button-hero"></span><?php esc_html_e( '+ Add new social platform', 'saboxplugin' ); ?></a>
|
81 |
-
</div>
|
82 |
-
</div>
|
83 |
-
|
84 |
-
<?php
|
85 |
-
}
|
86 |
-
|
87 |
-
public function add_profile_image( $user ) {
|
88 |
-
|
89 |
-
if ( ! current_user_can( 'upload_files' ) ) {
|
90 |
-
return;
|
91 |
-
}
|
92 |
-
|
93 |
-
$default_url = SIMPLE_AUTHOR_BOX_ASSETS . 'img/default.png';
|
94 |
-
$image = get_user_meta( $user->ID, 'sabox-profile-image', true );
|
95 |
-
|
96 |
-
?>
|
97 |
-
|
98 |
-
<div id="sabox-custom-profile-image">
|
99 |
-
<h3><?php _e( 'Custom User Profile Image (Simple Author Box)', 'saboxplugin' ); ?></h3>
|
100 |
-
<table class="form-table">
|
101 |
-
<tr>
|
102 |
-
<th><label for="cupp_meta"><?php _e( 'Profile Image', 'saboxplugin' ); ?></label></th>
|
103 |
-
<td>
|
104 |
-
<div id="sab-current-image">
|
105 |
-
<?php wp_nonce_field( 'sabox-profile-image', 'sabox-profile-nonce' ); ?>
|
106 |
-
<img data-default="<?php echo esc_url_raw( $default_url ); ?>" src="<?php echo '' != $image ? esc_url_raw( $image ) : esc_url_raw( $default_url ); ?>"><br>
|
107 |
-
<input type="text" name="sabox-custom-image" id="sabox-custom-image" class="regular-text" value="<?php echo esc_attr( $image ); ?>">
|
108 |
-
</div>
|
109 |
-
<div class="actions">
|
110 |
-
<a href="#" class="button-secondary" id="sabox-remove-image"><?php _e( 'Remove Image', 'saboxplugin' ); ?></a>
|
111 |
-
<a href="#" class="button-primary" id="sabox-add-image"><?php _e( 'Upload Image', 'saboxplugin' ); ?></a>
|
112 |
-
</div>
|
113 |
-
</td>
|
114 |
-
</tr>
|
115 |
-
</table>
|
116 |
-
</div>
|
117 |
-
|
118 |
-
<?php
|
119 |
-
}
|
120 |
-
|
121 |
-
public function save_user_profile( $user_id ) {
|
122 |
-
|
123 |
-
if ( isset( $_POST['sabox-social-icons'] ) && isset( $_POST['sabox-social-links'] ) ) {
|
124 |
-
|
125 |
-
$social_platforms = apply_filters( 'sabox_social_icons', Simple_Author_Box_Helper::$social_icons );
|
126 |
-
$social_links = array();
|
127 |
-
foreach ( $_POST['sabox-social-links'] as $index => $social_link ) {
|
128 |
-
if ( $social_link ) {
|
129 |
-
$social_platform = isset( $_POST['sabox-social-icons'][ $index ] ) ? $_POST['sabox-social-icons'][ $index ] : false;
|
130 |
-
if ( $social_platform && isset( $social_platforms[ $social_platform ] ) ) {
|
131 |
-
$social_links[ $social_platform ] = esc_url_raw( $social_link );
|
132 |
-
}
|
133 |
-
}
|
134 |
-
}
|
135 |
-
|
136 |
-
update_user_meta( $user_id, 'sabox_social_links', $social_links );
|
137 |
-
|
138 |
-
} else {
|
139 |
-
delete_user_meta( $user_id, 'sabox_social_links' );
|
140 |
-
}
|
141 |
-
|
142 |
-
if ( ! isset( $_POST['sabox-profile-nonce'] ) || ! wp_verify_nonce( $_POST['sabox-profile-nonce'], 'sabox-profile-image' ) ) {
|
143 |
-
return;
|
144 |
-
}
|
145 |
-
|
146 |
-
if ( ! current_user_can( 'upload_files', $user_id ) ) {
|
147 |
-
return;
|
148 |
-
}
|
149 |
-
|
150 |
-
if ( isset( $_POST['sabox-custom-image'] ) && '' != $_POST['sabox-custom-image'] ) {
|
151 |
-
update_user_meta( $user_id, 'sabox-profile-image', esc_url_raw( $_POST['sabox-custom-image'] ) );
|
152 |
-
} else {
|
153 |
-
delete_user_meta( $user_id, 'sabox-profile-image' );
|
154 |
-
}
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
}
|
159 |
-
|
160 |
-
}
|
161 |
-
|
162 |
-
new Simple_Author_Box_User_Profile();
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Simple_Author_Box_User_Profile {
|
4 |
+
|
5 |
+
function __construct() {
|
6 |
+
|
7 |
+
// Social Links
|
8 |
+
add_action( 'show_user_profile', array( $this, 'add_social_area' ) );
|
9 |
+
add_action( 'edit_user_profile', array( $this, 'add_social_area' ) );
|
10 |
+
|
11 |
+
// Custom Profile Image
|
12 |
+
add_action( 'show_user_profile', array( $this, 'add_profile_image' ), 9, 1 );
|
13 |
+
add_action( 'edit_user_profile', array( $this, 'add_profile_image' ), 9, 1 );
|
14 |
+
|
15 |
+
add_action( 'personal_options_update', array( $this, 'save_user_profile' ) );
|
16 |
+
add_action( 'edit_user_profile_update', array( $this, 'save_user_profile' ) );
|
17 |
+
|
18 |
+
// Allow HTML in user description.
|
19 |
+
remove_filter( 'pre_user_description', 'wp_filter_kses' );
|
20 |
+
add_filter( 'pre_user_description', 'wp_kses_post' );
|
21 |
+
|
22 |
+
}
|
23 |
+
|
24 |
+
public function add_social_area( $profileuser ) {
|
25 |
+
$user_id = $profileuser->data->ID;
|
26 |
+
|
27 |
+
$social_links = Simple_Author_Box_Helper::get_user_social_links( $user_id );
|
28 |
+
$social_icons = apply_filters( 'sabox_social_icons', Simple_Author_Box_Helper::$social_icons );
|
29 |
+
unset( $social_icons['user_email'] );
|
30 |
+
|
31 |
+
?>
|
32 |
+
<div class="sab-user-profile-wrapper">
|
33 |
+
<h2><?php _e( 'Social Media Links (Simple Author Box)', 'saboxplugin' ); ?></h2>
|
34 |
+
<table class="form-table" id="sabox-social-table">
|
35 |
+
<?php
|
36 |
+
|
37 |
+
if ( ! empty( $social_links ) ) {
|
38 |
+
foreach ( $social_links as $social_platform => $social_link ) {
|
39 |
+
?>
|
40 |
+
<tr>
|
41 |
+
<th>
|
42 |
+
<span class="sabox-drag"></span>
|
43 |
+
<select name="sabox-social-icons[]">
|
44 |
+
<?php foreach ( $social_icons as $sabox_social_id => $sabox_social_name ) { ?>
|
45 |
+
<option value="<?php echo $sabox_social_id; ?>" <?php selected( $sabox_social_id, $social_platform ); ?>><?php echo $sabox_social_name; ?></option>
|
46 |
+
<?php } ?>
|
47 |
+
</select>
|
48 |
+
</th>
|
49 |
+
<td>
|
50 |
+
<input name="sabox-social-links[]" type="text" class="regular-text" value="<?php echo esc_url( $social_link ); ?>">
|
51 |
+
<span class="dashicons dashicons-trash"></span>
|
52 |
+
<td>
|
53 |
+
</tr>
|
54 |
+
<?php
|
55 |
+
}
|
56 |
+
} else {
|
57 |
+
?>
|
58 |
+
<tr>
|
59 |
+
<th>
|
60 |
+
<span class="sabox-drag"></span>
|
61 |
+
<select name="sabox-social-icons[]">
|
62 |
+
<?php foreach ( $social_icons as $sabox_social_id => $sabox_social_name ) { ?>
|
63 |
+
<option value="<?php echo $sabox_social_id; ?>"><?php echo $sabox_social_name; ?></option>
|
64 |
+
<?php } ?>
|
65 |
+
</select>
|
66 |
+
</th>
|
67 |
+
<td>
|
68 |
+
<input name="sabox-social-links[]" type="text" class="regular-text" value="">
|
69 |
+
<span class="dashicons dashicons-trash"></span>
|
70 |
+
<td>
|
71 |
+
</tr>
|
72 |
+
<?php
|
73 |
+
}
|
74 |
+
|
75 |
+
?>
|
76 |
+
|
77 |
+
</table>
|
78 |
+
|
79 |
+
<div class="sabox-add-social-link">
|
80 |
+
<a href="#" class="button button-primary button-hero"></span><?php esc_html_e( '+ Add new social platform', 'saboxplugin' ); ?></a>
|
81 |
+
</div>
|
82 |
+
</div>
|
83 |
+
|
84 |
+
<?php
|
85 |
+
}
|
86 |
+
|
87 |
+
public function add_profile_image( $user ) {
|
88 |
+
|
89 |
+
if ( ! current_user_can( 'upload_files' ) ) {
|
90 |
+
return;
|
91 |
+
}
|
92 |
+
|
93 |
+
$default_url = SIMPLE_AUTHOR_BOX_ASSETS . 'img/default.png';
|
94 |
+
$image = get_user_meta( $user->ID, 'sabox-profile-image', true );
|
95 |
+
|
96 |
+
?>
|
97 |
+
|
98 |
+
<div id="sabox-custom-profile-image">
|
99 |
+
<h3><?php _e( 'Custom User Profile Image (Simple Author Box)', 'saboxplugin' ); ?></h3>
|
100 |
+
<table class="form-table">
|
101 |
+
<tr>
|
102 |
+
<th><label for="cupp_meta"><?php _e( 'Profile Image', 'saboxplugin' ); ?></label></th>
|
103 |
+
<td>
|
104 |
+
<div id="sab-current-image">
|
105 |
+
<?php wp_nonce_field( 'sabox-profile-image', 'sabox-profile-nonce' ); ?>
|
106 |
+
<img data-default="<?php echo esc_url_raw( $default_url ); ?>" src="<?php echo '' != $image ? esc_url_raw( $image ) : esc_url_raw( $default_url ); ?>"><br>
|
107 |
+
<input type="text" name="sabox-custom-image" id="sabox-custom-image" class="regular-text" value="<?php echo esc_attr( $image ); ?>">
|
108 |
+
</div>
|
109 |
+
<div class="actions">
|
110 |
+
<a href="#" class="button-secondary" id="sabox-remove-image"><?php _e( 'Remove Image', 'saboxplugin' ); ?></a>
|
111 |
+
<a href="#" class="button-primary" id="sabox-add-image"><?php _e( 'Upload Image', 'saboxplugin' ); ?></a>
|
112 |
+
</div>
|
113 |
+
</td>
|
114 |
+
</tr>
|
115 |
+
</table>
|
116 |
+
</div>
|
117 |
+
|
118 |
+
<?php
|
119 |
+
}
|
120 |
+
|
121 |
+
public function save_user_profile( $user_id ) {
|
122 |
+
|
123 |
+
if ( isset( $_POST['sabox-social-icons'] ) && isset( $_POST['sabox-social-links'] ) ) {
|
124 |
+
|
125 |
+
$social_platforms = apply_filters( 'sabox_social_icons', Simple_Author_Box_Helper::$social_icons );
|
126 |
+
$social_links = array();
|
127 |
+
foreach ( $_POST['sabox-social-links'] as $index => $social_link ) {
|
128 |
+
if ( $social_link ) {
|
129 |
+
$social_platform = isset( $_POST['sabox-social-icons'][ $index ] ) ? $_POST['sabox-social-icons'][ $index ] : false;
|
130 |
+
if ( $social_platform && isset( $social_platforms[ $social_platform ] ) ) {
|
131 |
+
$social_links[ $social_platform ] = esc_url_raw( $social_link );
|
132 |
+
}
|
133 |
+
}
|
134 |
+
}
|
135 |
+
|
136 |
+
update_user_meta( $user_id, 'sabox_social_links', $social_links );
|
137 |
+
|
138 |
+
} else {
|
139 |
+
delete_user_meta( $user_id, 'sabox_social_links' );
|
140 |
+
}
|
141 |
+
|
142 |
+
if ( ! isset( $_POST['sabox-profile-nonce'] ) || ! wp_verify_nonce( $_POST['sabox-profile-nonce'], 'sabox-profile-image' ) ) {
|
143 |
+
return;
|
144 |
+
}
|
145 |
+
|
146 |
+
if ( ! current_user_can( 'upload_files', $user_id ) ) {
|
147 |
+
return;
|
148 |
+
}
|
149 |
+
|
150 |
+
if ( isset( $_POST['sabox-custom-image'] ) && '' != $_POST['sabox-custom-image'] ) {
|
151 |
+
update_user_meta( $user_id, 'sabox-profile-image', esc_url_raw( $_POST['sabox-custom-image'] ) );
|
152 |
+
} else {
|
153 |
+
delete_user_meta( $user_id, 'sabox-profile-image' );
|
154 |
+
}
|
155 |
+
|
156 |
+
|
157 |
+
|
158 |
+
}
|
159 |
+
|
160 |
+
}
|
161 |
+
|
162 |
+
new Simple_Author_Box_User_Profile();
|
inc/feedback/class-epsilon-plugin-request-sab.php
CHANGED
@@ -1,227 +1,227 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class Epsilon_Plugin_Request_SAB {
|
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(
|
209 |
-
$this->url, array(
|
210 |
-
'method' => 'POST',
|
211 |
-
'timeout' => 20,
|
212 |
-
'redirection' => 5,
|
213 |
-
'httpversion' => '1.1',
|
214 |
-
'blocking' => true,
|
215 |
-
'body' => $this->data,
|
216 |
-
'user-agent' => 'MT/EPSILON-CUSTOMER-TRACKING/' . esc_url( home_url() ),
|
217 |
-
)
|
218 |
-
);
|
219 |
-
|
220 |
-
if ( is_wp_error( $request ) ) {
|
221 |
-
return false;
|
222 |
-
}
|
223 |
-
|
224 |
-
return true;
|
225 |
-
|
226 |
-
}
|
227 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Epsilon_Plugin_Request_SAB {
|
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(
|
209 |
+
$this->url, array(
|
210 |
+
'method' => 'POST',
|
211 |
+
'timeout' => 20,
|
212 |
+
'redirection' => 5,
|
213 |
+
'httpversion' => '1.1',
|
214 |
+
'blocking' => true,
|
215 |
+
'body' => $this->data,
|
216 |
+
'user-agent' => 'MT/EPSILON-CUSTOMER-TRACKING/' . esc_url( home_url() ),
|
217 |
+
)
|
218 |
+
);
|
219 |
+
|
220 |
+
if ( is_wp_error( $request ) ) {
|
221 |
+
return false;
|
222 |
+
}
|
223 |
+
|
224 |
+
return true;
|
225 |
+
|
226 |
+
}
|
227 |
+
}
|
inc/functions.php
CHANGED
@@ -1,46 +1,46 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
// If this file is called directly, busted!
|
4 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
-
exit;
|
6 |
-
}
|
7 |
-
|
8 |
-
/*----------------------------------------------------------------------------------------------------------
|
9 |
-
Adding the author box to the end of your single post
|
10 |
-
-----------------------------------------------------------------------------------------------------------*/
|
11 |
-
if ( ! function_exists( 'wpsabox_author_box' ) ) {
|
12 |
-
|
13 |
-
|
14 |
-
function wpsabox_author_box( $saboxmeta = null ) {
|
15 |
-
|
16 |
-
$show = ( is_single() || is_author() || is_archive() );
|
17 |
-
$show = apply_filters( 'sabox_check_if_show', $show );
|
18 |
-
|
19 |
-
if ( $show ) {
|
20 |
-
|
21 |
-
global $post;
|
22 |
-
$template = Simple_Author_Box_Helper::get_template();
|
23 |
-
|
24 |
-
ob_start();
|
25 |
-
$sabox_options = Simple_Author_Box_Helper::get_option( 'saboxplugin_options' );
|
26 |
-
$sabox_author_id = $post->post_author;
|
27 |
-
$show_post_author_box = apply_filters( 'sabox_check_if_show_post_author_box', true, $sabox_options );
|
28 |
-
|
29 |
-
do_action( 'sabox_before_author_box', $sabox_options );
|
30 |
-
|
31 |
-
if ( $show_post_author_box ) {
|
32 |
-
include( $template );
|
33 |
-
}
|
34 |
-
|
35 |
-
do_action( 'sabox_after_author_box', $sabox_options );
|
36 |
-
|
37 |
-
$sabox = ob_get_clean();
|
38 |
-
$return = $saboxmeta . $sabox;
|
39 |
-
|
40 |
-
// Filter returning HTML of the Author Box
|
41 |
-
$saboxmeta = apply_filters( 'sabox_return_html', $return, $sabox, $saboxmeta );
|
42 |
-
|
43 |
-
}
|
44 |
-
return $saboxmeta;
|
45 |
-
}
|
46 |
-
}
|
1 |
+
<?php
|
2 |
+
|
3 |
+
// If this file is called directly, busted!
|
4 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
5 |
+
exit;
|
6 |
+
}
|
7 |
+
|
8 |
+
/*----------------------------------------------------------------------------------------------------------
|
9 |
+
Adding the author box to the end of your single post
|
10 |
+
-----------------------------------------------------------------------------------------------------------*/
|
11 |
+
if ( ! function_exists( 'wpsabox_author_box' ) ) {
|
12 |
+
|
13 |
+
|
14 |
+
function wpsabox_author_box( $saboxmeta = null ) {
|
15 |
+
|
16 |
+
$show = ( is_single() || is_author() || is_archive() );
|
17 |
+
$show = apply_filters( 'sabox_check_if_show', $show );
|
18 |
+
|
19 |
+
if ( $show ) {
|
20 |
+
|
21 |
+
global $post;
|
22 |
+
$template = Simple_Author_Box_Helper::get_template();
|
23 |
+
|
24 |
+
ob_start();
|
25 |
+
$sabox_options = Simple_Author_Box_Helper::get_option( 'saboxplugin_options' );
|
26 |
+
$sabox_author_id = $post->post_author;
|
27 |
+
$show_post_author_box = apply_filters( 'sabox_check_if_show_post_author_box', true, $sabox_options );
|
28 |
+
|
29 |
+
do_action( 'sabox_before_author_box', $sabox_options );
|
30 |
+
|
31 |
+
if ( $show_post_author_box ) {
|
32 |
+
include( $template );
|
33 |
+
}
|
34 |
+
|
35 |
+
do_action( 'sabox_after_author_box', $sabox_options );
|
36 |
+
|
37 |
+
$sabox = ob_get_clean();
|
38 |
+
$return = $saboxmeta . $sabox;
|
39 |
+
|
40 |
+
// Filter returning HTML of the Author Box
|
41 |
+
$saboxmeta = apply_filters( 'sabox_return_html', $return, $sabox, $saboxmeta );
|
42 |
+
|
43 |
+
}
|
44 |
+
return $saboxmeta;
|
45 |
+
}
|
46 |
+
}
|
readme.txt
CHANGED
@@ -2,8 +2,9 @@
|
|
2 |
Â
Contributors: machothemes, silkalns
|
3 |
Â
Tags: author box, responsive author box, author profile fields, author social icons, profile fields, author bio, author description, author profile, user profile, post author, rtl author box, amp, accelerated mobile pages
|
4 |
Â
Requires at least: 4.6
|
Â
|
|
5 |
Â
Tested up to: 4.9
|
6 |
-
Stable tag: 2.1.
|
7 |
Â
License: GPLv3 or later
|
8 |
Â
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
9 |
Â
|
@@ -42,9 +43,7 @@ The Simple Author Box plugin was designed to display the author information on p
|
|
42 |
Â
|
43 |
Â
= Can I remove the SAB from WooCommerce/Category/Tags pages? Can I have only on posts? =
|
44 |
Â
|
45 |
-
|
46 |
-
Please download it from here: <a href="https://www.dropbox.com/s/gdkumeuilogui6g/wp-sab-fix.zip?dl=0">https://www.dropbox.com/s/gdkumeuilogui6g/wp-sab-fix.zip?dl=0</a>
|
47 |
-
Then go to your dashboard > Plugins > install and activate it and it will solve it.
|
48 |
Â
|
49 |
Â
= I have two author boxes. How can I hide one? =
|
50 |
Â
|
@@ -80,7 +79,13 @@ Or you can give back by recommending this amazing plugin to your friends!
|
|
80 |
Â
|
81 |
Â
== Changelog ==
|
82 |
Â
|
83 |
-
= 2.1.
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
84 |
Â
* Speed improvement ( We removed FA and added icons as SVG's and removed our css file and added inline )
|
85 |
Â
* Added new Social Icon : Mastodont
|
86 |
Â
* Added RTL Support
|
2 |
Â
Contributors: machothemes, silkalns
|
3 |
Â
Tags: author box, responsive author box, author profile fields, author social icons, profile fields, author bio, author description, author profile, user profile, post author, rtl author box, amp, accelerated mobile pages
|
4 |
Â
Requires at least: 4.6
|
5 |
+
Requires PHP: 5.6
|
6 |
Â
Tested up to: 4.9
|
7 |
+
Stable tag: 2.1.2
|
8 |
Â
License: GPLv3 or later
|
9 |
Â
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
10 |
Â
|
43 |
Â
|
44 |
Â
= Can I remove the SAB from WooCommerce/Category/Tags pages? Can I have only on posts? =
|
45 |
Â
|
46 |
+
The PRO version of Simple Author Box fixes this.
|
Â
|
|
Â
|
|
47 |
Â
|
48 |
Â
= I have two author boxes. How can I hide one? =
|
49 |
Â
|
79 |
Â
|
80 |
Â
== Changelog ==
|
81 |
Â
|
82 |
+
= 2.1.2 =
|
83 |
+
* Added alt tag for custom profile image.
|
84 |
+
|
85 |
+
= 2.1.1 =
|
86 |
+
* Minor fixes & version bump
|
87 |
+
|
88 |
+
= 2.1.0 =
|
89 |
Â
* Speed improvement ( We removed FA and added icons as SVG's and removed our css file and added inline )
|
90 |
Â
* Added new Social Icon : Mastodont
|
91 |
Â
* Added RTL Support
|
simple-author-box.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Â
* Plugin Name: Simple Author Box
|
4 |
Â
* Plugin URI: http://wordpress.org/plugins/simple-author-box/
|
5 |
Â
* Description: Adds a responsive author box with social icons on your posts.
|
6 |
-
* Version: 2.1.
|
7 |
Â
* Author: Macho Themes
|
8 |
Â
* Author URI: https://www.machothemes.com/
|
9 |
Â
* License: GPLv3
|
@@ -30,7 +30,7 @@
|
|
30 |
Â
define( 'SIMPLE_AUTHOR_BOX_PATH', plugin_dir_path( __FILE__ ) );
|
31 |
Â
define( 'SIMPLE_AUTHOR_BOX_ASSETS', plugins_url( '/assets/', __FILE__ ) );
|
32 |
Â
define( 'SIMPLE_AUTHOR_BOX_SLUG', plugin_basename( __FILE__ ) );
|
33 |
-
define( 'SIMPLE_AUTHOR_BOX_VERSION', '2.1.
|
34 |
Â
define( 'SIMPLE_AUTHOR_SCRIPT_DEBUG', false );
|
35 |
Â
|
36 |
Â
|
3 |
Â
* Plugin Name: Simple Author Box
|
4 |
Â
* Plugin URI: http://wordpress.org/plugins/simple-author-box/
|
5 |
Â
* Description: Adds a responsive author box with social icons on your posts.
|
6 |
+
* Version: 2.1.1
|
7 |
Â
* Author: Macho Themes
|
8 |
Â
* Author URI: https://www.machothemes.com/
|
9 |
Â
* License: GPLv3
|
30 |
Â
define( 'SIMPLE_AUTHOR_BOX_PATH', plugin_dir_path( __FILE__ ) );
|
31 |
Â
define( 'SIMPLE_AUTHOR_BOX_ASSETS', plugins_url( '/assets/', __FILE__ ) );
|
32 |
Â
define( 'SIMPLE_AUTHOR_BOX_SLUG', plugin_basename( __FILE__ ) );
|
33 |
+
define( 'SIMPLE_AUTHOR_BOX_VERSION', '2.1.1' );
|
34 |
Â
define( 'SIMPLE_AUTHOR_SCRIPT_DEBUG', false );
|
35 |
Â
|
36 |
Â
|
template/template-sab.php
CHANGED
@@ -1,116 +1,118 @@
|
|
1 |
-
<?php
|
2 |
-
if ( '1' == $sabox_options['sab_colored'] ) {
|
3 |
-
$sabox_color = 'sabox-colored';
|
4 |
-
} else {
|
5 |
-
$sabox_color = '';
|
6 |
-
}
|
7 |
-
|
8 |
-
if ( '0' != $sabox_options['sab_web_position'] ) {
|
9 |
-
$sab_web_align = 'sab-web-position';
|
10 |
-
} else {
|
11 |
-
$sab_web_align = '';
|
12 |
-
}
|
13 |
-
|
14 |
-
if ( '1' == $sabox_options['sab_web_target'] ) {
|
15 |
-
$sab_web_target = '_blank';
|
16 |
-
} else {
|
17 |
-
$sab_web_target = '_self';
|
18 |
-
}
|
19 |
-
|
20 |
-
if ( '1' == $sabox_options['sab_web_rel'] ) {
|
21 |
-
$sab_web_rel = 'rel="nofollow"';
|
22 |
-
} else {
|
23 |
-
$sab_web_rel = '';
|
24 |
-
}
|
25 |
-
|
26 |
-
$sab_author_link = sprintf( '<a href="%s" class="vcard author"><span class="fn">%s</span></a>', esc_url( get_author_posts_url( $sabox_author_id ) ), esc_html( get_the_author_meta( 'display_name', $sabox_author_id ) ) );
|
27 |
-
|
28 |
-
if ( get_the_author_meta( 'description' ) != '' || '0' == $sabox_options['sab_no_description'] ) { // hide the author box if no description is provided
|
29 |
-
|
30 |
-
|
31 |
-
echo '<div class="saboxplugin-wrap">'; // start saboxplugin-wrap div
|
32 |
-
|
33 |
-
// author box gravatar
|
34 |
-
echo '<div class="saboxplugin-gravatar">';
|
35 |
-
$custom_profile_image = get_the_author_meta( 'sabox-profile-image', $sabox_author_id );
|
36 |
-
if ( '' != $custom_profile_image ) {
|
37 |
-
|
38 |
-
|
39 |
-
echo
|
40 |
-
}
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
$description =
|
59 |
-
|
60 |
-
|
61 |
-
echo
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
echo '
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
echo '
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
echo '
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
}
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
if ( '1' == $sabox_options['sab_colored'] ) {
|
3 |
+
$sabox_color = 'sabox-colored';
|
4 |
+
} else {
|
5 |
+
$sabox_color = '';
|
6 |
+
}
|
7 |
+
|
8 |
+
if ( '0' != $sabox_options['sab_web_position'] ) {
|
9 |
+
$sab_web_align = 'sab-web-position';
|
10 |
+
} else {
|
11 |
+
$sab_web_align = '';
|
12 |
+
}
|
13 |
+
|
14 |
+
if ( '1' == $sabox_options['sab_web_target'] ) {
|
15 |
+
$sab_web_target = '_blank';
|
16 |
+
} else {
|
17 |
+
$sab_web_target = '_self';
|
18 |
+
}
|
19 |
+
|
20 |
+
if ( '1' == $sabox_options['sab_web_rel'] ) {
|
21 |
+
$sab_web_rel = 'rel="nofollow"';
|
22 |
+
} else {
|
23 |
+
$sab_web_rel = '';
|
24 |
+
}
|
25 |
+
|
26 |
+
$sab_author_link = sprintf( '<a href="%s" class="vcard author"><span class="fn">%s</span></a>', esc_url( get_author_posts_url( $sabox_author_id ) ), esc_html( get_the_author_meta( 'display_name', $sabox_author_id ) ) );
|
27 |
+
|
28 |
+
if ( get_the_author_meta( 'description' ) != '' || '0' == $sabox_options['sab_no_description'] ) { // hide the author box if no description is provided
|
29 |
+
|
30 |
+
|
31 |
+
echo '<div class="saboxplugin-wrap">'; // start saboxplugin-wrap div
|
32 |
+
|
33 |
+
// author box gravatar
|
34 |
+
echo '<div class="saboxplugin-gravatar">';
|
35 |
+
$custom_profile_image = get_the_author_meta( 'sabox-profile-image', $sabox_author_id );
|
36 |
+
if ( '' != $custom_profile_image ) {
|
37 |
+
$mediaid = attachment_url_to_postid( $custom_profile_image );
|
38 |
+
$alt = $mediaid ? get_post_meta( $mediaid, '_wp_attachment_image_alt', true) : '';
|
39 |
+
echo '<img src="' . esc_url( $custom_profile_image ) . '" alt="' . esc_attr( $alt ) . '">';
|
40 |
+
} else {
|
41 |
+
echo get_avatar( get_the_author_meta( 'user_email', $sabox_author_id ), '100' );
|
42 |
+
}
|
43 |
+
|
44 |
+
echo '</div>';
|
45 |
+
|
46 |
+
// author box name
|
47 |
+
echo '<div class="saboxplugin-authorname">';
|
48 |
+
echo apply_filters( 'sabox_author_html', $sab_author_link, $sabox_options, $sabox_author_id );
|
49 |
+
if ( is_user_logged_in() && get_current_user_id() == $sabox_author_id ) {
|
50 |
+
echo '<a class="sab-profile-edit" target="_blank" href="' . get_edit_user_link() . '"> ' . __( 'Edit profile', 'saboxplugin' ) . '</a>';
|
51 |
+
}
|
52 |
+
echo '</div>';
|
53 |
+
|
54 |
+
|
55 |
+
// author box description
|
56 |
+
echo '<div class="saboxplugin-desc">';
|
57 |
+
echo '<div>';
|
58 |
+
$description = get_the_author_meta( 'description', $sabox_author_id );
|
59 |
+
$description = wptexturize( $description );
|
60 |
+
$description = wpautop( $description );
|
61 |
+
echo wp_kses_post( $description );
|
62 |
+
echo '</div>';
|
63 |
+
echo '</div>';
|
64 |
+
|
65 |
+
if ( is_single() ) {
|
66 |
+
if ( get_the_author_meta( 'user_url' ) != '' && '1' == $sabox_options['sab_web'] ) { // author website on single
|
67 |
+
echo '<div class="saboxplugin-web ' . esc_attr( $sab_web_align ) . '">';
|
68 |
+
echo '<a href="' . esc_url( get_the_author_meta( 'user_url', $sabox_author_id ) ) . '" target="' . esc_attr( $sab_web_target ) . '" ' . $sab_web_rel . '>' . esc_html( get_the_author_meta( 'user_url', $sabox_author_id ) ) . '</a>';
|
69 |
+
echo '</div>';
|
70 |
+
}
|
71 |
+
}
|
72 |
+
|
73 |
+
|
74 |
+
if ( is_author() or is_archive() ) {
|
75 |
+
if ( get_the_author_meta( 'user_url' ) != '' ) { // force show author website on author.php or archive.php
|
76 |
+
echo '<div class="saboxplugin-web ' . esc_attr( $sab_web_align ) . '">';
|
77 |
+
echo '<a href="' . esc_url( get_the_author_meta( 'user_url', $sabox_author_id ) ) . '" target="' . esc_attr( $sab_web_target ) . '" ' . $sab_web_rel . '>' . esc_html( get_the_author_meta( 'user_url', $sabox_author_id ) ) . '</a>';
|
78 |
+
echo '</div>';
|
79 |
+
}
|
80 |
+
}
|
81 |
+
|
82 |
+
// author box clearfix
|
83 |
+
echo '<div class="clearfix"></div>';
|
84 |
+
|
85 |
+
// author box social icons
|
86 |
+
$author = get_userdata( $sabox_author_id );
|
87 |
+
$show_social_icons = apply_filters( 'sabox_hide_social_icons', true, $author );
|
88 |
+
|
89 |
+
|
90 |
+
|
91 |
+
if ( is_user_logged_in() && current_user_can( 'manage_options' ) ) {
|
92 |
+
echo '<div class="sab-edit-settings">';
|
93 |
+
echo '<a target="_blank" href="' . admin_url() . 'admin.php?page=simple-author-box-options">' . __( 'Settings', 'saboxplugin' ) . '<i class="dashicons dashicons-admin-settings"></i></a>';
|
94 |
+
echo '</div>';
|
95 |
+
}
|
96 |
+
|
97 |
+
$show_email = '0' == $sabox_options['sab_email'] ? false : true;
|
98 |
+
$social_links = Simple_Author_Box_Helper::get_user_social_links( $sabox_author_id, $show_email );
|
99 |
+
|
100 |
+
if ( '0' == $sabox_options['sab_hide_socials'] && $show_social_icons && ! empty( $social_links ) ) { // hide social icons div option
|
101 |
+
echo '<div class="saboxplugin-socials ' . esc_attr( $sabox_color ) . '">';
|
102 |
+
|
103 |
+
foreach ( $social_links as $social_platform => $social_link ) {
|
104 |
+
|
105 |
+
if ( 'user_email' == $social_platform ) {
|
106 |
+
$social_link = 'mailto:' . antispambot( $social_link );
|
107 |
+
}
|
108 |
+
|
109 |
+
if ( ! empty( $social_link ) ) {
|
110 |
+
echo Simple_Author_Box_Helper::get_sabox_social_icon( $social_link, $social_platform );
|
111 |
+
}
|
112 |
+
}
|
113 |
+
|
114 |
+
|
115 |
+
echo '</div>';
|
116 |
+
} // end of social icons
|
117 |
+
echo '</div>'; // end of saboxplugin-wrap div
|
118 |
+
}
|
uninstall.php
CHANGED
@@ -1,26 +1,26 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*----------------------------------------------------------------------------------------------------------
|
4 |
-
Uninstall Simple Author Box plugin - deletes plugin data in database
|
5 |
-
-----------------------------------------------------------------------------------------------------------*/
|
6 |
-
|
7 |
-
// Exit if accessed directly
|
8 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
-
exit;
|
10 |
-
}
|
11 |
-
|
12 |
-
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
13 |
-
exit();
|
14 |
-
}
|
15 |
-
|
16 |
-
delete_option( 'saboxplugin_options' );
|
17 |
-
delete_option( 'sab_box_margin_top' );
|
18 |
-
delete_option( 'sab_box_margin_bottom' );
|
19 |
-
delete_option( 'sab_box_icon_size' );
|
20 |
-
delete_option( 'sab_box_name_size' );
|
21 |
-
delete_option( 'sab_box_name_font' );
|
22 |
-
delete_option( 'sab_box_subset' );
|
23 |
-
delete_option( 'sab_box_desc_font' );
|
24 |
-
delete_option( 'sab_box_desc_size' );
|
25 |
-
delete_option( 'sab_box_desc_font' );
|
26 |
-
delete_option( 'sab_box_web_size' );
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*----------------------------------------------------------------------------------------------------------
|
4 |
+
Uninstall Simple Author Box plugin - deletes plugin data in database
|
5 |
+
-----------------------------------------------------------------------------------------------------------*/
|
6 |
+
|
7 |
+
// Exit if accessed directly
|
8 |
+
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
+
exit;
|
10 |
+
}
|
11 |
+
|
12 |
+
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
|
13 |
+
exit();
|
14 |
+
}
|
15 |
+
|
16 |
+
delete_option( 'saboxplugin_options' );
|
17 |
+
delete_option( 'sab_box_margin_top' );
|
18 |
+
delete_option( 'sab_box_margin_bottom' );
|
19 |
+
delete_option( 'sab_box_icon_size' );
|
20 |
+
delete_option( 'sab_box_name_size' );
|
21 |
+
delete_option( 'sab_box_name_font' );
|
22 |
+
delete_option( 'sab_box_subset' );
|
23 |
+
delete_option( 'sab_box_desc_font' );
|
24 |
+
delete_option( 'sab_box_desc_size' );
|
25 |
+
delete_option( 'sab_box_desc_font' );
|
26 |
+
delete_option( 'sab_box_web_size' );
|