Current File : /home/honehdyv/readbtooom.com/wp-content/plugins/simple-social-buttons/classes/ssb-admin.php |
<?php
/**
* Admin class
*
* Gets only initiated if this plugin is called inside the admin section ;)
*/
if ( ! class_exists( 'SimpleSocialButtonsPR_Admin' ) ) :
class SimpleSocialButtonsPR_Admin extends SimpleSocialButtonsPR {
/**
* Automatically when object created
*
* @access public
* @since 1.0.0
*/
public function __construct() {
parent::__construct();
include_once SSB_PLUGIN_DIR . '/classes/ssb-settings.php';
add_action( 'add_meta_boxes', array( $this, 'ssb_meta_box' ) );
add_action( 'save_post', array( $this, 'ssb_save_meta' ), 10, 2 );
add_filter( 'plugin_row_meta', array( $this, '_row_meta' ), 10, 2 );
add_action( 'admin_footer', array( $this, 'add_deactive_modal' ) );
add_action( 'wp_ajax_ssb_deactivate', array( $this, 'ssb_deactivate' ) );
add_action( 'admin_init', array( $this, 'review_notice' ) );
add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) );
add_action( 'in_admin_header', array( $this, 'skip_notices' ), 100000 );
add_action( 'enqueue_block_editor_assets', array( $this, 'blocks_scripts' ) );
}
/**
* Admin side enqueued script
*
* @param string $page
* @access public
* @since 1.0.0
* @return void
*/
public function admin_enqueue_scripts( $page ) {
if ( 'toplevel_page_simple-social-buttons' == $page || 'social-buttons_page_ssb-help' == $page || 'widgets.php' == $page ) {
wp_enqueue_style( 'ssb-admin-cs', plugins_url( 'assets/css/admin.css', plugin_dir_path( __FILE__ ) ), false, SSB_VERSION );
wp_enqueue_script( 'ssb-admin-js', plugins_url( 'assets/js/admin.js', plugin_dir_path( __FILE__ ) ), array( 'jquery', 'jquery-ui-sortable' ), SSB_VERSION );
wp_localize_script(
'ssb-admin-js',
'ssb',
array(
'ssb_export_help_nonce' => wp_create_nonce( 'ssb-export-security-check' ),
)
);
}
}
/**
* Ssb Block editor assets.
*
* @since 3.0.0
* @return void
*/
public function blocks_scripts() {
$ssb_block_dependencies = [ 'wp-blocks', 'wp-element', 'wp-i18n', 'wp-components', 'wp-editor' ];
wp_enqueue_script( 'ssb-blocks-editor-js', plugins_url( 'assets/js/blocks.editor.js', plugin_dir_path( __FILE__ ) ), $ssb_block_dependencies, SSB_VERSION );
wp_enqueue_style( 'ssb-blocks-editor-css', plugins_url( 'assets/css/blocks.editor.css', plugin_dir_path( __FILE__ ) ), array(), SSB_VERSION );
wp_enqueue_style( 'ssb-front-css', plugins_url( 'assets/css/front.css', plugin_dir_path( __FILE__ ) ), false, SSB_VERSION );
$is_pro = class_exists( 'Simple_Social_Buttons_Pro') ? rest_sanitize_boolean( true ) : rest_sanitize_boolean( false );
wp_localize_script( 'ssb-blocks-editor-js', 'SSB', array( 'plugin_url' => SSB_PLUGIN_URL, 'is_pro' => $is_pro ) );
}
/**
* Register meta box to hide/show SSB plugin on single post or page
*
* @access public
* @since 1.0.0
* @return void
*/
public function ssb_meta_box() {
$postId = isset( $_GET['post'] ) ? sanitize_post( $_GET['post'] ) : rest_sanitize_boolean( false );
$postType = get_post_type( $postId );
$ssb_positions = get_option( 'ssb_positions' );
$selected_post_type = array();
// Check if a SSB position is selected or not.
if ( isset( $ssb_positions['position'] ) && ! empty( $ssb_positions['position'] ) ) {
foreach ( $ssb_positions['position'] as $key => $value ) {
$options = get_option( 'ssb_' . $value );
if ( isset( $options['posts'] ) && ! empty( $options['posts'] ) ) {
foreach ( $options['posts'] as $allow_post_type ) {
$selected_post_type[ $allow_post_type ] = $allow_post_type;
}
}
}
}
$allow_post_type = apply_filters( 'ssb_cpt_visibility_mb', $selected_post_type );
if ( ! in_array( $postType, $allow_post_type ) ) {
return false;
}
//Upon Editing or adding the post.
$currentSsbHide = get_post_custom_values( $this->hideCustomMetaKey, $postId );
$currentSsbHide[0] = isset( $currentSsbHide ) ? $currentSsbHide[0] : false;
if ( $currentSsbHide[0] == 'true' ) {
$checked = true;
} else {
$checked = false;
}
// Rendering meta box.
if ( ! function_exists( 'add_meta_box' ) ) {
include 'includes/template.php';
}
add_meta_box(
'ssb_meta_box',
__( 'SSB Settings', 'simple-social-buttons' ),
array( $this, 'render_ssb_meta_box' ),
$postType,
'side',
'default',
array(
'type' => $postType,
'checked' => $checked,
)
);
}
/**
* Showing custom meta field
*
* @access public
* @since 1.0.0
* @return void
*/
public function render_ssb_meta_box( $post, $metabox ) {
wp_nonce_field( plugin_basename( __FILE__ ), 'ssb_noncename' );
?>
<label for="<?php echo $this->hideCustomMetaKey; ?>"><input type="checkbox" id="<?php echo $this->hideCustomMetaKey; ?>" name="<?php echo $this->hideCustomMetaKey; ?>" value="true"
<?php if ( $metabox['args']['checked'] ) : ?>
checked="checked"
<?php endif; ?>/>
<?php echo __( 'Hide Simple Social Buttons', 'simple-social-buttons' ); ?></label>
<?php
}
/**
* Saving custom meta value.
*
* @access public
* @since 1.0.0
* @return void
*/
public function ssb_save_meta( $post_id, $post ) {
$postId = (int) $post_id;
// Verify if this is an auto save routine.
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
return;
}
if ( ! isset( $_POST['ssb_noncename'] ) ) {
return;
}
// Verify this came from the our screen and with proper authorization
if ( ! wp_verify_nonce( $_POST['ssb_noncename'], plugin_basename( __FILE__ ) ) ) {
return;
}
// Check permissions
if ( 'page' == $_POST['post_type'] ) {
if ( ! current_user_can( 'edit_page', $post_id ) ) {
return;
}
} else {
if ( ! current_user_can( 'edit_post', $post_id ) ) {
return;
}
}
// Saving data
$newValue = ( isset( $_POST[ $this->hideCustomMetaKey ] ) ) ? sanitize_text_field( $_POST[ $this->hideCustomMetaKey ] ) : 'false';
update_post_meta( $postId, $this->hideCustomMetaKey, $newValue );
}
/**
* Show the popup on pluing deactivate
*
* @access public
* @since 1.9.0
* @return void
*/
public function add_deactive_modal() {
global $pagenow;
if ( 'plugins.php' !== $pagenow ) {
return;
}
include SSB_PLUGIN_DIR . 'inc/ssb-deactivate-form.php';
}
/**
* Send the user response to api.
*
* @access public
* @since 1.9.0
* @return void
*/
public function ssb_deactivate() {
$email = get_option( 'admin_email' );
$_reason = sanitize_text_field( wp_unslash( $_POST['reason'] ) );
$reason_detail = sanitize_text_field( wp_unslash( $_POST['reason_detail'] ) );
$reason = '';
if ( $_reason == '1' ) {
$reason = 'I only needed the plugin for a short period';
} elseif ( $_reason == '2' ) {
$reason = 'I found a better plugin';
} elseif ( $_reason == '3' ) {
$reason = 'The plugin broke my site';
} elseif ( $_reason == '4' ) {
$reason = 'The plugin suddenly stopped working';
} elseif ( $_reason == '5' ) {
$reason = 'I no longer need the plugin';
} elseif ( $_reason == '6' ) {
$reason = 'It\'s a temporary deactivation. I\'m just debugging an issue.';
} elseif ( $_reason == '7' ) {
$reason = 'Other';
}
$fields = array(
'email' => $email,
'website' => get_site_url(),
'action' => 'Deactivate',
'reason' => $reason,
'reason_detail' => $reason_detail,
'blog_language' => get_bloginfo( 'language' ),
'wordpress_version' => get_bloginfo( 'version' ),
'plugin_version' => SSB_VERSION,
'php_version' => PHP_VERSION,
'plugin_name' => 'Simple Social Buttons',
);
$response = wp_remote_post(
SSB_FEEDBACK_SERVER,
array(
'method' => 'POST',
'timeout' => 5,
'httpversion' => '1.0',
'blocking' => false,
'headers' => array(),
'body' => $fields,
)
);
wp_die();
}
/**
* Check either to show notice or not.
*
* @access public
* @since 1.9.0
* @return void
*/
public function review_notice() {
$this->review_dismissal();
$this->review_prending();
$review_dismissal = get_site_option( 'ssb_review_dismiss' );
if ( 'yes' == $review_dismissal ) {
return;
}
$activation_time = get_site_option( 'ssb_active_time' );
if ( ! $activation_time ) {
$activation_time = time();
add_site_option( 'ssb_active_time', $activation_time );
}
// 1296000 = 15 Days in seconds.
if ( time() - $activation_time > 1296000 ) {
add_action( 'admin_notices', array( $this, 'review_notice_message' ) );
}
}
/**
* Show review Message After 15 days.
*
* @access public
* @since 1.9.0
* @return void
*/
public function review_notice_message() {
$scheme = ( parse_url( $_SERVER['REQUEST_URI'], PHP_URL_QUERY ) ) ? '&' : '?';
$url = $_SERVER['REQUEST_URI'] . $scheme . 'ssb_review_dismiss=yes';
$dismiss_url = wp_nonce_url( $url, 'ssb-review-nonce' );
$_later_link = $_SERVER['REQUEST_URI'] . $scheme . 'ssb_review_later=yes';
$later_url = wp_nonce_url( $_later_link, 'ssb-review-nonce' );
?>
<style media="screen">
.ssb-review-notice { padding: 15px 15px 15px 0; background-color: #fff; border-radius: 3px; margin: 20px 20px 0 0; border-left: 4px solid transparent; } .ssb-review-notice:after { content: ''; display: table; clear: both; }
.ssb-review-thumbnail { width: 114px; float: left; line-height: 80px; text-align: center; border-right: 4px solid transparent; }
.ssb-review-thumbnail img { width: 74px; vertical-align: middle; }
.ssb-review-text { overflow: hidden; }
.ssb-review-text h3 { font-size: 24px; margin: 0 0 5px; font-weight: 400; line-height: 1.3; }
.ssb-review-text p { font-size: 13px; margin: 0 0 5px; }
.ssb-review-ul { margin: 0; padding: 0; }
.ssb-review-ul li { display: inline-block; margin-right: 15px; }
.ssb-review-ul li a { display: inline-block; color: #10738B; text-decoration: none; padding-left: 26px; position: relative; }
.ssb-review-ul li a span { position: absolute; left: 0; top: -2px; }
</style>
<div class="ssb-review-notice">
<div class="ssb-review-thumbnail">
<img src="<?php echo plugins_url( '../assets/images/ssb_grey_logo.png', __FILE__ ); ?>" alt="">
</div>
<div class="ssb-review-text">
<h3><?php _e( 'Leave A Review?', 'simple-social-buttons' ); ?></h3>
<p><?php _e( 'We hope you\'ve enjoyed using Simple Social Buttons! Would you consider leaving us a review on WordPress.org?', 'simple-social-buttons' ); ?></p>
<ul class="ssb-review-ul"><li><a href="https://wordpress.org/support/plugin/simple-social-buttons/reviews/?filter=5" target="_blank"><span class="dashicons dashicons-external"></span><?php _e( 'Sure! I\'d love to!', 'simple-social-buttons' ); ?></a></li>
<li><a href="<?php echo $dismiss_url; ?>"><span class="dashicons dashicons-smiley"></span><?php _e( 'I\'ve already left a review', 'simple-social-buttons' ); ?></a></li>
<li><a href="<?php echo $later_url; ?>"><span class="dashicons dashicons-calendar-alt"></span><?php _e( 'Maybe Later', 'simple-social-buttons' ); ?></a></li>
<li><a href="<?php echo $dismiss_url; ?>"><span class="dashicons dashicons-dismiss"></span><?php _e( 'Never show again', 'simple-social-buttons' ); ?></a></li></ul>
</div>
</div>
<?php
}
/**
* Set time to current so review notice will popup after 15 days
*
* @access public
* @since 1.9.0
* @return void
*/
public function review_prending() {
// delete_site_option( 'ssb_review_dismiss' );
if ( ! is_admin() ||
! current_user_can( 'manage_options' ) ||
! isset( $_GET['_wpnonce'] ) ||
! wp_verify_nonce( sanitize_key( wp_unslash( $_GET['_wpnonce'] ) ), 'ssb-review-nonce' ) ||
! isset( $_GET['ssb_review_later'] ) ) {
return;
}
// Reset Time to current time.
update_site_option( 'ssb_active_time', time() );
}
/**
* Check and Dismiss review message.
*
* @access private
* @since 1.9.0
* @return void
*/
private function review_dismissal() {
// delete_site_option( 'ssb_review_dismiss' );
if ( ! is_admin() ||
! current_user_can( 'manage_options' ) ||
! isset( $_GET['_wpnonce'] ) ||
! wp_verify_nonce( sanitize_key( wp_unslash( $_GET['_wpnonce'] ) ), 'ssb-review-nonce' ) ||
! isset( $_GET['ssb_review_dismiss'] ) ) {
return;
}
add_site_option( 'ssb_review_dismiss', 'yes' );
}
/**
* Skip the all the notice from settings page.
*
* @access public
* @since 1.9.0
* @return void
*/
public function skip_notices() {
if ( 'toplevel_page_simple-social-buttons' === get_current_screen()->id ) {
global $wp_filter;
if ( is_network_admin() and isset( $wp_filter['network_admin_notices'] ) ) {
unset( $wp_filter['network_admin_notices'] );
} elseif ( is_user_admin() and isset( $wp_filter['user_admin_notices'] ) ) {
unset( $wp_filter['user_admin_notices'] );
} else {
if ( isset( $wp_filter['admin_notices'] ) ) {
unset( $wp_filter['admin_notices'] );
}
}
if ( isset( $wp_filter['all_admin_notices'] ) ) {
unset( $wp_filter['all_admin_notices'] );
}
}
}
/**
* Add Thumbs Up Icon
*
* @access public
* @since 1.9.0
* @version 2.1.5
* @return mixed
*/
public function _row_meta( $links, $file ) {
if ( strpos( $file, 'simple-social-buttons.php' ) !== false ) {
echo '<style>.ssb-rate-stars { display: inline-block; color: #ffb900; position: relative; top: 3px; }.ssb-rate-stars svg{ fill:#ffb900; } .ssb-rate-stars svg:hover{ fill:#ffb900 } .ssb-rate-stars svg:hover ~ svg{ fill:none; } </style>';
$plugin_rate = 'https://wordpress.org/support/plugin/simple-social-buttons/reviews/?rate=5#new-post';
$plugin_filter = 'https://wordpress.org/support/plugin/simple-social-buttons/reviews/?filter=5';
$svg_xmlns = 'https://www.w3.org/2000/svg';
$svg_icon = '';
for ( $i = 0; $i < 5; $i++ ) {
$svg_icon .= "<svg xmlns='" . esc_url( $svg_xmlns ) . "' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-star'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>";
}
// Set link for Reviews.
$links [] = '<a href=' . esc_url( $plugin_filter ) . ' target="_blank"><span class="dashicons dashicons-thumbs-up"></span> ' . __( 'Vote!', 'simplesocialbuttons' ) . '</a>';
$links[] = "<a href='" . esc_url( $plugin_rate ) . "' target='_blank' title='" . esc_html__( 'Rate', 'simplesocialbuttons' ) . "'><i class='ssb-rate-stars'>" . $svg_icon . '</i></a>';
}
return $links;
}
} // end SimpleSocialButtonsPR_Admin
endif;
?>