cl01/wp-content/plugins/socialsnap/includes/compatibility/class-dpsp-compatibility.php
2025-02-24 12:39:24 +08:00

847 lines
28 KiB
PHP
Executable File

<?php
/**
* Handles compatibility with Social Pug plugin.
*
* @package Social Snap
* @author Social Snap
* @since 1.1.8
* @license GPL-3.0+
* @copyright Copyright (c) 2019, Social Snap LLC
*/
// Check if Social Pug was installed & settings exist in database.
$socialsnap_dpsp_options = get_option( 'dpsp_settings' );
if ( empty( $socialsnap_dpsp_options ) ) {
return;
}
class SocialSnap_DPSP_Compatibility {
/**
* Options array.
*
* @since 1.1.8
* @var array
*/
private $options = array();
/**
* Primary class constructor.
*
* @since 1.1.8
*/
public function __construct( $options ) {
$this->dpsp_options = $options;
$this->socialsnap_options = array();
// Add import button to the settings panel.
add_filter( 'socialsnap_plugin_migration', array( $this, 'add_to_settings' ) );
// AJAX callback to import settings.
add_action( 'wp_ajax_socialsnap_dpsp_migrate', array( $this, 'migrate_settings' ) );
// AJAX callback to import shares.
add_action( 'wp_ajax_socialsnap_dpsp_migrate_shares', array( $this, 'migrate_shares' ) );
// Shortcode compatibility.
if ( ! shortcode_exists( 'socialpug_tweet' ) ) {
add_shortcode( 'socialpug_tweet', array( $this, 'click_to_tweet_shortcode' ) );
}
}
/**
* Add button to the settings panel which imports settings via AJAX.
*
* @since 1.1.8
*/
public function add_to_settings( $fields ) {
$fields['ss_dpsp_migrate'] = array(
'id' => 'ss_dpsp_migrate',
'name' => __( 'Social Pug', 'socialsnap' ),
'desc' => __( 'Import Social Pug settings', 'socialsnap' ),
'text' => __( 'Import Settings', 'socialsnap' ),
'type' => 'button',
'action' => 'socialsnap_dpsp_migrate',
'confirm' => esc_html__( 'Are you sure you want to import Social Pug settings? This will overwrite current plugin settings and individual post settings. Please make a full backup of your website before you start the migration process.', 'socialsnap' ),
);
$fields['ss_dpsp_migrate_shares'] = array(
'id' => 'ss_dpsp_migrate_shares',
'text' => __( 'Import Share Counts', 'socialsnap' ),
'type' => 'button',
'action' => 'socialsnap_dpsp_migrate_shares',
'confirm' => esc_html__( 'Are you sure you want to import Social Pug share counts? Share counts will be imported only if they are greater than counts stored by Social Snap. Please make a full backup of your website before you start the import process.', 'socialsnap' ),
);
return $fields;
}
/**
* Migrate options & post meta.
*
* @since 1.1.8
* @return void
*/
public function migrate_settings() {
check_ajax_referer( 'socialsnap-admin' );
if ( ! current_user_can( apply_filters( 'socialsnap_manage_cap', 'manage_options' ) ) ) {
wp_send_json_error(
array(
'message' => __( 'Error. Access denied.', 'socialsnap' ),
)
);
}
set_time_limit( 300 );
$this->socialsnap_options = get_option( SOCIALSNAP_SETTINGS );
$this->import_settings();
$this->import_floating_sidebar_settings();
$this->import_inline_content_settings();
$this->import_sticky_bar_settings();
update_option( SOCIALSNAP_SETTINGS, $this->socialsnap_options );
$this->import_post_meta();
// Send success message.
wp_send_json_success( array( 'message' => esc_html__( 'Social Pug settings imported successfully.', 'sinatra' ) ) );
}
/**
* Import settings.
* Populates compatible Social Snap settings.
*
* @since 1.1.8
* @return void
*/
public function import_settings() {
$dpsp_settings = get_option( 'dpsp_settings', array() );
// HTTP share recovery.
if ( isset( $dpsp_settings['http_and_https_share_counts'] ) && 'yes' === $dpsp_settings['http_and_https_share_counts'] ) {
$this->socialsnap_options['ss_share_recovery'] = 'on';
$this->socialsnap_options['ss_share_recovery_protocol'] = 'http';
}
// Permalink structure share recovery.
if ( isset( $dpsp_settings['previous_permalink_share_counts'] ) && 'yes' === $dpsp_settings['previous_permalink_share_counts'] ) {
$this->socialsnap_options['ss_share_recovery'] = 'on';
$this->socialsnap_options['ss_share_recovery_format'] = 'unaltered';
$this->socialsnap_options['ss_share_recovery_custom_format'] = '';
// Permalink structure.
if ( isset( $dpsp_settings['previous_permalink_structure'] ) ) {
switch ( $dpsp_settings['previous_permalink_structure'] ) {
case 'plain':
$this->socialsnap_options['ss_share_recovery_format'] = 'plain';
break;
case '/%year%/%monthnum%/%day%/%postname%/':
$this->socialsnap_options['ss_share_recovery_format'] = 'day-name';
break;
case '/%year%/%monthnum%/%postname%/':
$this->socialsnap_options['ss_share_recovery_format'] = 'month-name';
break;
case '/archives/%post_id%':
$this->socialsnap_options['ss_share_recovery_format'] = 'numeric';
break;
case '/%postname%/':
$this->socialsnap_options['ss_share_recovery_format'] = 'post-name';
break;
case 'custom':
$this->socialsnap_options['ss_share_recovery_format'] = 'custom';
break;
default:
$this->socialsnap_options['ss_share_recovery_format'] = 'unaltered';
break;
}
}
// // Permalink structure custom.
if ( isset( $dpsp_settings['previous_permalink_structure_custom'] ) ) {
$this->socialsnap_options['ss_share_recovery_custom_format'] = $dpsp_settings['previous_permalink_structure_custom'];
}
}
// Domain share recovery.
if ( isset( $dpsp_settings['previous_domain_share_counts'] ) && 'yes' === $dpsp_settings['previous_domain_share_counts'] ) {
$this->socialsnap_options['ss_share_recovery'] = 'on';
$this->socialsnap_options['ss_share_recovery_domain'] = 'on';
$this->socialsnap_options['ss_share_recovery_prev_domain'] = '';
$this->socialsnap_options['ss_share_recovery_current_domain'] = '';
if ( isset( $dpsp_settings['previous_base_domain'] ) ) {
$this->socialsnap_options['ss_share_recovery_prev_domain'] = $dpsp_settings['previous_base_domain'];
$this->socialsnap_options['ss_share_recovery_current_domain'] = preg_replace( '#^www\.(.+\.)#i', '$1', parse_url( get_site_url(), PHP_URL_HOST ) );
}
}
// UTM tracking.
if ( isset( $dpsp_settings['utm_tracking'] ) && $dpsp_settings['utm_tracking'] ) {
$this->socialsnap_options['ss_utm_tracking'] = 'on';
if ( isset( $dpsp_settings['utm_source'] ) ) {
$this->socialsnap_options['ss_utm_tracking_source'] = $dpsp_settings['utm_source'];
}
if ( isset( $dpsp_settings['utm_medium'] ) ) {
$this->socialsnap_options['ss_utm_tracking_medium'] = $dpsp_settings['utm_medium'];
}
if ( isset( $dpsp_settings['utm_campaign'] ) ) {
$this->socialsnap_options['ss_utm_tracking_campaign'] = $dpsp_settings['utm_campaign'];
}
}
// Twitter share provider.
if ( isset( $dpsp_settings['twitter_share_counts'] ) && $dpsp_settings['twitter_share_counts'] ) {
if ( isset( $dpsp_settings['twitter_share_counts_provider'] ) && 'twitcount' === $dpsp_settings['twitter_share_counts_provider'] ) {
$this->socialsnap_options['ss_ss_twitter_count_provider'] = 'twitcount';
}
}
// Social meta tags.
if ( isset( $dpsp_settings['disable_meta_tags'] ) && $dpsp_settings['disable_meta_tags'] ) {
$this->socialsnap_options['ss_smt_enable'] = false;
}
// Twitter username.
if ( isset( $dpsp_settings['twitter_username'] ) ) {
$this->socialsnap_options['ss_twitter_username'] = $dpsp_settings['twitter_username'];
}
// Facebook username.
if ( isset( $dpsp_settings['pinterest_username'] ) ) {
$this->socialsnap_options['ss_pinterest_username'] = $dpsp_settings['pinterest_username'];
}
if ( isset( $dpsp_settings['ctt_style'] ) ) {
switch ( intval( $dpsp_settings['ctt_style'] ) ) {
case 1:
$this->socialsnap_options['ss_ctt_preview_style'] = 6;
break;
case 2:
$this->socialsnap_options['ss_ctt_preview_style'] = 4;
break;
case 3:
case 4:
$this->socialsnap_options['ss_ctt_preview_style'] = 1;
break;
case 5:
$this->socialsnap_options['ss_ctt_preview_style'] = 2;
break;
default:
$this->socialsnap_options['ss_ctt_preview_style'] = 1;
break;
}
}
}
/**
* Import floating sidebar settings.
*
* @since 1.1.8
* @return void
*/
private function import_floating_sidebar_settings() {
$dpsp_settings = get_option( 'dpsp_location_sidebar', array() );
if ( empty( $dpsp_settings ) ) {
return;
}
if ( isset( $dpsp_settings['active'] ) && $dpsp_settings['active'] ) {
$this->socialsnap_options['ss_ss_sidebar_enabled'] = 'on';
} else {
$this->socialsnap_options['ss_ss_sidebar_enabled'] = false;
}
$this->socialsnap_options['ss_ss_sidebar_all_networks'] = false;
// Floating Sidebar display.
if ( isset( $dpsp_settings['display'] ) ) {
// Shape.
if ( isset( $dpsp_settings['display']['shape'] ) ) {
if ( 'rectangular' === $dpsp_settings['display']['shape'] ) {
$this->socialsnap_options['ss_ss_sidebar_button_shape'] = 'rectangle';
} else {
$this->socialsnap_options['ss_ss_sidebar_button_shape'] = $dpsp_settings['display']['shape'];
}
}
// Size.
if ( isset( $dpsp_settings['display']['size'] ) ) {
if ( 'medium' === $dpsp_settings['display']['size'] ) {
$this->socialsnap_options['ss_ss_sidebar_button_size'] = 'regular';
} else {
$this->socialsnap_options['ss_ss_sidebar_button_size'] = $dpsp_settings['display']['size'];
}
} else {
$this->socialsnap_options['ss_ss_sidebar_button_size'] = 'small';
}
// Position.
if ( isset( $dpsp_settings['display']['position'] ) ) {
$this->socialsnap_options['ss_ss_sidebar_position'] = $dpsp_settings['display']['position'];
}
// Hover Animation.
if ( isset( $dpsp_settings['display']['icon_animation'] ) && 'yes' === $dpsp_settings['display']['icon_animation'] ) {
$this->socialsnap_options['ss_ss_sidebar_hover_animation'] = 'ss-hover-animation-2';
} else {
$this->socialsnap_options['ss_ss_sidebar_hover_animation'] = 'ss-hover-animation-fade';
}
// Label Tooltip.
if ( isset( $dpsp_settings['display']['show_labels'] ) && 'yes' === $dpsp_settings['display']['show_labels'] ) {
$this->socialsnap_options['ss_ss_sidebar_label_tooltip'] = 'on';
} else {
$this->socialsnap_options['ss_ss_sidebar_label_tooltip'] = false;
}
// Button Spacing.
if ( isset( $dpsp_settings['display']['spacing'] ) && 'yes' === $dpsp_settings['display']['spacing'] ) {
$this->socialsnap_options['ss_ss_sidebar_button_spacing'] = 'on';
} else {
$this->socialsnap_options['ss_ss_sidebar_button_spacing'] = false;
}
// Entrance animation.
if ( isset( $dpsp_settings['display']['intro_animation'] ) ) {
$dpsp_settings_animation = intval( $dpsp_settings['display']['intro_animation'] );
if ( 1 === $dpsp_settings_animation ) {
$dpsp_settings_animation = 'fade';
} elseif ( 2 === $dpsp_settings_animation ) {
$dpsp_settings_animation = 'slide';
} else {
$dpsp_settings_animation = 'none';
}
$this->socialsnap_options['ss_ss_sidebar_entrance_animation'] = $dpsp_settings_animation;
}
// Show on mobile.
if ( isset( $dpsp_settings['display']['show_mobile'] ) && 'yes' === $dpsp_settings['display']['show_mobile'] ) {
$this->socialsnap_options['ss_ss_sidebar_hide_on_mobile'] = false;
} else {
$this->socialsnap_options['ss_ss_sidebar_hide_on_mobile'] = 'on';
}
// Share counts.
if ( isset( $dpsp_settings['display']['show_count'] ) && 'yes' === $dpsp_settings['display']['show_count'] ) {
$this->socialsnap_options['ss_ss_sidebar_share_count'] = 'on';
} else {
$this->socialsnap_options['ss_ss_sidebar_share_count'] = false;
}
// Total Share count.
if ( isset( $dpsp_settings['display']['show_count_total'] ) && 'yes' === $dpsp_settings['display']['show_count_total'] ) {
$this->socialsnap_options['ss_ss_sidebar_total_count'] = 'on';
} else {
$this->socialsnap_options['ss_ss_sidebar_total_count'] = false;
}
// Min share count.
if ( isset( $dpsp_settings['display']['minimum_count'] ) ) {
$this->socialsnap_options['ss_ss_sidebar_min_count'] = $dpsp_settings['display']['minimum_count'];
}
if ( isset( $dpsp_settings['display']['custom_color'] ) && $dpsp_settings['display']['custom_color'] ) {
$this->socialsnap_options['ss_ss_sidebar_custom_colors'] = 'on';
$this->socialsnap_options['ss_ss_sidebar_button_background_color'] = $dpsp_settings['display']['custom_color'];
}
if ( isset( $dpsp_settings['display']['custom_hover_color'] ) && $dpsp_settings['display']['custom_hover_color'] ) {
$this->socialsnap_options['ss_ss_sidebar_custom_colors'] = 'on';
$this->socialsnap_options['ss_ss_sidebar_button_background_hover_color'] = $dpsp_settings['display']['custom_hover_color'];
}
}
// Post types.
if ( isset( $dpsp_settings['post_type_display'] ) ) {
foreach ( $this->socialsnap_options['ss_ss_sidebar_post_types'] as $key => $value ) {
$this->socialsnap_options['ss_ss_sidebar_post_types'][ $key ] = false;
}
foreach ( $dpsp_settings['post_type_display'] as $key => $value ) {
if ( isset( $this->socialsnap_options['ss_ss_sidebar_post_types'][ $value ] ) ) {
$this->socialsnap_options['ss_ss_sidebar_post_types'][ $value ] = 'on';
}
}
}
}
/**
* Import inline content settings.
*
* @since 1.1.8
* @return void
*/
private function import_inline_content_settings() {
$dpsp_settings = get_option( 'dpsp_location_content', array() );
if ( empty( $dpsp_settings ) ) {
return;
}
if ( isset( $dpsp_settings['active'] ) && $dpsp_settings['active'] ) {
$this->socialsnap_options['ss_ss_inline_content_enabled'] = 'on';
} else {
$this->socialsnap_options['ss_ss_inline_content_enabled'] = false;
}
$this->socialsnap_options['ss_ss_inline_content_all_networks'] = false;
$this->socialsnap_options['ss_ss_inline_content_position'] = 'stretched';
$this->socialsnap_options['ss_ss_inline_content_button_label'] = 'none';
$this->socialsnap_options['ss_ss_inline_content_total_share_style'] = 'icon';
if ( ! empty( $dpsp_settings['display'] ) ) {
// Shape.
if ( isset( $dpsp_settings['display']['shape'] ) ) {
if ( 'rectangular' === $dpsp_settings['display']['shape'] ) {
$this->socialsnap_options['ss_ss_inline_content_button_shape'] = 'rectangle';
} else {
$this->socialsnap_options['ss_ss_inline_content_button_shape'] = $dpsp_settings['display']['shape'];
}
}
// Size.
if ( isset( $dpsp_settings['display']['size'] ) ) {
if ( 'medium' === $dpsp_settings['display']['size'] ) {
$this->socialsnap_options['ss_ss_inline_content_button_size'] = 'regular';
} else {
$this->socialsnap_options['ss_ss_inline_content_button_size'] = $dpsp_settings['display']['size'];
}
} else {
$this->socialsnap_options['ss_ss_inline_content_button_size'] = 'small';
}
// Position.
if ( isset( $dpsp_settings['display']['position'] ) ) {
$dpsp_settings_position = $dpsp_settings['display']['position'];
if ( 'top' === $dpsp_settings_position ) {
$dpsp_settings_position = 'above';
} elseif ( 'both' === $dpsp_settings_position ) {
$dpsp_settings_position = 'both';
} else {
$dpsp_settings_position = 'below';
}
$this->socialsnap_options['ss_ss_inline_content_location'] = $dpsp_settings_position;
}
// Share label.
if ( isset( $dpsp_settings['display']['message'] ) ) {
$this->socialsnap_options['ss_ss_inline_content_share_label'] = $dpsp_settings['display']['message'];
}
// Button label.
if ( isset( $dpsp_settings['display']['show_labels'] ) && 'yes' === $dpsp_settings['display']['show_labels'] ) {
if ( isset( $dpsp_settings['display']['show_count'] ) && 'yes' === $dpsp_settings['display']['show_count'] ) {
$this->socialsnap_options['ss_ss_inline_content_button_label'] = 'both';
} else {
$this->socialsnap_options['ss_ss_inline_content_button_label'] = 'label';
}
}
// Button Spacing.
if ( isset( $dpsp_settings['display']['spacing'] ) && 'yes' === $dpsp_settings['display']['spacing'] ) {
$this->socialsnap_options['ss_ss_inline_content_button_spacing'] = 'on';
} else {
$this->socialsnap_options['ss_ss_inline_content_button_spacing'] = false;
}
// Show on mobile.
if ( isset( $dpsp_settings['display']['show_mobile'] ) && 'yes' === $dpsp_settings['display']['show_mobile'] ) {
$this->socialsnap_options['ss_ss_inline_content_hide_on_mobile'] = false;
} else {
$this->socialsnap_options['ss_ss_inline_content_hide_on_mobile'] = 'on';
}
// Share counts.
if ( isset( $dpsp_settings['display']['show_count'] ) && 'yes' === $dpsp_settings['display']['show_count'] ) {
if ( isset( $dpsp_settings['display']['show_labels'] ) && 'yes' === $dpsp_settings['display']['show_labels'] ) {
$this->socialsnap_options['ss_ss_inline_content_button_label'] = 'both';
} else {
$this->socialsnap_options['ss_ss_inline_content_button_label'] = 'count';
}
}
// Total Share count.
if ( isset( $dpsp_settings['display']['show_count_total'] ) && 'yes' === $dpsp_settings['display']['show_count_total'] ) {
$this->socialsnap_options['ss_ss_inline_content_total_count'] = 'on';
} else {
$this->socialsnap_options['ss_ss_inline_content_total_count'] = false;
}
// Total Share count.
if ( isset( $dpsp_settings['display']['total_count_position'] ) ) {
if ( 'before' === $dpsp_settings['display']['total_count_position'] ) {
$this->socialsnap_options['ss_ss_inline_content_total_share_placement'] = 'left';
} else {
$this->socialsnap_options['ss_ss_inline_content_total_share_placement'] = 'right';
}
}
// Custom colors.
if ( isset( $dpsp_settings['display']['custom_color'] ) && $dpsp_settings['display']['custom_color'] ) {
$this->socialsnap_options['ss_ss_inline_content_custom_colors'] = 'on';
$this->socialsnap_options['ss_ss_inline_content_button_background_color'] = $dpsp_settings['display']['custom_color'];
}
if ( isset( $dpsp_settings['display']['custom_hover_color'] ) && $dpsp_settings['display']['custom_hover_color'] ) {
$this->socialsnap_options['ss_ss_inline_content_custom_colors'] = 'on';
$this->socialsnap_options['ss_ss_inline_content_button_background_hover_color'] = $dpsp_settings['display']['custom_hover_color'];
}
// Columns.
if ( isset( $dpsp_settings['display']['column_count'] ) && 'auto' === $dpsp_settings['display']['column_count'] ) {
$this->socialsnap_options['ss_ss_inline_content_position'] = 'left';
}
// Min share count.
if ( isset( $dpsp_settings['display']['minimum_count'] ) ) {
$this->socialsnap_options['ss_ss_inline_content_min_count'] = $dpsp_settings['display']['minimum_count'];
}
}
// Post types.
if ( isset( $dpsp_settings['post_type_display'] ) ) {
foreach ( $this->socialsnap_options['ss_ss_inline_content_post_types'] as $key => $value ) {
$this->socialsnap_options['ss_ss_inline_content_post_types'][ $key ] = false;
}
foreach ( $dpsp_settings['post_type_display'] as $key => $value ) {
if ( isset( $this->socialsnap_options['ss_ss_inline_content_post_types'][ $value ] ) ) {
$this->socialsnap_options['ss_ss_inline_content_post_types'][ $value ] = 'on';
}
}
}
}
/**
* Import sticky bar settings
*
* @since 1.1.8
* @return void
*/
private function import_sticky_bar_settings() {
$dpsp_settings = get_option( 'dpsp_location_sticky_bar', array() );
if ( empty( $dpsp_settings ) ) {
return;
}
if ( isset( $dpsp_settings['active'] ) && $dpsp_settings['active'] ) {
$this->socialsnap_options['ss_ss_sticky_bar_enabled'] = 'on';
} else {
$this->socialsnap_options['ss_ss_sticky_bar_enabled'] = false;
}
$this->socialsnap_options['ss_ss_sticky_bar_all_networks'] = false;
$this->socialsnap_options['ss_ss_sticky_bar_style'] = 'stretched';
$this->socialsnap_options['ss_ss_sticky_bar_view_count'] = false;
if ( ! empty( $dpsp_settings['display'] ) ) {
// Shape.
if ( isset( $dpsp_settings['display']['shape'] ) ) {
if ( 'rectangular' === $dpsp_settings['display']['shape'] ) {
$this->socialsnap_options['ss_ss_inline_content_button_shape'] = 'rectangle';
} else {
$this->socialsnap_options['ss_ss_inline_content_button_shape'] = $dpsp_settings['display']['shape'];
}
}
// Visibility.
if ( isset( $dpsp_settings['display']['show_on_device'] ) ) {
if ( 'mobile' === $dpsp_settings['display']['show_on_device'] ) {
$dpsp_settings['display']['show_on_device'] = 'ss-hide-on-desktop';
} elseif ( 'desktop' === $dpsp_settings['display']['show_on_device'] ) {
$dpsp_settings['display']['show_on_device'] = 'ss-hide-on-mobile';
} else {
$dpsp_settings['display']['show_on_device'] = 'ss-always-visible';
}
$this->socialsnap_options['ss_ss_sticky_bar_visibility'] = $dpsp_settings['display']['show_on_device'];
}
// Position.
if ( isset( $dpsp_settings['display']['position_mobile'] ) ) {
$this->socialsnap_options['ss_ss_sticky_bar_position'] = $dpsp_settings['display']['position_mobile'];
} elseif ( isset( $dpsp_settings['display']['position_desktop'] ) ) {
$this->socialsnap_options['ss_ss_sticky_bar_position'] = $dpsp_settings['display']['position_desktop'];
}
// Entrance animation.
if ( isset( $dpsp_settings['display']['intro_animation'] ) ) {
$dpsp_animation = intval( $dpsp_settings['display']['intro_animation'] );
if ( 1 === $dpsp_animation ) {
$dpsp_animation = 'fade';
} elseif ( 2 === $dpsp_animation ) {
$dpsp_animation = 'slide';
} else {
$dpsp_animation = 'none';
}
$this->socialsnap_options['ss_ss_sticky_bar_entrance_animation'] = $dpsp_animation;
}
// Show after scroll.
if ( isset( $dpsp_settings['display']['show_after_scrolling'] ) && 'yes' === $dpsp_settings['display']['show_after_scrolling'] && isset( $dpsp_settings['display']['scroll_distance'] ) ) {
$this->socialsnap_options['ss_ss_sticky_bar_show_after'] = 10 * intval( $dpsp_settings['display']['scroll_distance'] );
}
// Share counts.
if ( isset( $dpsp_settings['display']['show_count'] ) && 'yes' === $dpsp_settings['display']['show_count'] ) {
$this->socialsnap_options['ss_ss_sticky_bar_share_count'] = 'on';
} else {
$this->socialsnap_options['ss_ss_sticky_bar_share_count'] = false;
}
// Total Share count.
if ( isset( $dpsp_settings['display']['show_count_total'] ) && 'yes' === $dpsp_settings['display']['show_count_total'] ) {
$this->socialsnap_options['ss_ss_sticky_bar_total_count'] = 'on';
} else {
$this->socialsnap_options['ss_ss_sticky_bar_total_count'] = false;
}
// Min share count.
if ( isset( $dpsp_settings['display']['minimum_count'] ) ) {
$this->socialsnap_options['ss_ss_sticky_bar_min_count'] = $dpsp_settings['display']['minimum_count'];
}
// Custom colors.
if ( isset( $dpsp_settings['display']['custom_color'] ) && $dpsp_settings['display']['custom_color'] ) {
$this->socialsnap_options['ss_ss_sticky_bar_custom_colors'] = 'on';
$this->socialsnap_options['ss_ss_sticky_bar_button_background_color'] = $dpsp_settings['display']['custom_color'];
}
if ( isset( $dpsp_settings['display']['custom_hover_color'] ) && $dpsp_settings['display']['custom_hover_color'] ) {
$this->socialsnap_options['ss_ss_sticky_bar_custom_colors'] = 'on';
$this->socialsnap_options['ss_ss_sticky_bar_button_background_hover_color'] = $dpsp_settings['display']['custom_hover_color'];
}
}
// Post types.
if ( isset( $dpsp_settings['post_type_display'] ) ) {
foreach ( $this->socialsnap_options['ss_ss_sticky_bar_post_types'] as $key => $value ) {
$this->socialsnap_options['ss_ss_sticky_bar_post_types'][ $key ] = false;
}
foreach ( $dpsp_settings['post_type_display'] as $key => $value ) {
if ( isset( $this->socialsnap_options['ss_ss_sticky_bar_post_types'][ $value ] ) ) {
$this->socialsnap_options['ss_ss_sticky_bar_post_types'][ $value ] = 'on';
}
}
}
}
/**
* Import post meta. Populates post meta from DPSP metaboxes.
*
* @since 1.1.8
* @return void
*/
public function import_post_meta() {
$meta_key_map = array(
'dpsp_pinterest_hidden_images' => 'ss_image_pinterest_multiple',
'pin_description' => 'ss_pinterest_description',
'pin_nopin' => 'ss_no_pin',
'dpsp_share_options' => array(
'custom_title' => 'ss_smt_title',
'custom_description' => 'ss_smt_description',
'custom_image' => 'ss_smt_image',
'custom_image_pinterest' => 'ss_image_pinterest',
'custom_description_pinterest' => 'ss_pinterest_description',
'custom_tweet' => 'ss_ss_custom_tweet',
),
);
foreach ( $meta_key_map as $old_key => $new_key ) {
$this->import_post_meta_entry( $old_key, $new_key );
}
}
/**
* Import post meta. Populates post meta from MashShare metaboxes.
*
* @since 1.1.8
* @param string $old_key Meta key from previous plugin.
* @param string $new_key Meta key in current plugin.
* @return void
*/
public function import_post_meta_entry( $old_key, $new_key ) {
global $wpdb;
set_time_limit( 300 );
$query = "
SELECT postmeta.post_id, postmeta.meta_value
FROM $wpdb->postmeta postmeta
WHERE postmeta.meta_key = %s
";
$results = $wpdb->get_results( $wpdb->prepare( $query, $old_key ) );
if ( ! empty( $results ) ) {
foreach ( $results as $row ) {
$meta_value = $row->meta_value;
if ( is_array( $new_key ) ) {
$meta_value = unserialize( $meta_value );
foreach ( $new_key as $key => $ss_key ) {
if ( ! isset( $meta_value[ $key ] ) ) {
continue;
}
if ( is_array( $meta_value[ $key ] ) ) {
update_post_meta( $row->post_id, $ss_key, $meta_value[ $key ]['id'] );
} else {
update_post_meta( $row->post_id, $ss_key, $meta_value[ $key ] );
}
}
} else {
update_post_meta( $row->post_id, $new_key, $meta_value );
}
}
}
}
/**
* Migrate shares.
*
* @since 1.1.8
*/
public function migrate_shares() {
// Security check.
check_ajax_referer( 'socialsnap-admin' );
if ( ! current_user_can( apply_filters( 'socialsnap_manage_cap', 'manage_options' ) ) ) {
wp_send_json_error(
array(
'message' => __( 'Error. Access denied.', 'socialsnap' ),
)
);
}
// Social Pug registered social networks.
$networks = array(
'facebook',
'pinterest',
'linkedin',
'reddit',
'vkontakte',
'buffer',
'tumblr',
'yummly',
);
// Map meta keys with SS meta keys.
$meta_key_map = array(
'dpsp_networks_shares_total' => 'ss_total_share_count',
'dpsp_networks_shares' => array(),
);
if ( ! empty( $networks ) ) {
foreach ( $networks as $network ) {
$meta_key_map['dpsp_networks_shares'][ $network ] = 'ss_ss_share_count_' . $network;
}
}
foreach ( $meta_key_map as $old_key => $new_key ) {
$this->import_post_meta_entry( $old_key, $new_key );
}
// Send success message.
wp_send_json_success( array( 'message' => esc_html__( 'Social Pug shares imported successfully.', 'sinatra' ) ) );
}
/**
* Click to Tweet shortcode.
*
* @since 1.1.8
*/
public function click_to_tweet_shortcode( $atts ) {
$shortcode = '[ss_click_to_tweet';
if ( isset( $atts['style'] ) && '' !== $atts['style'] ) {
$shortcode .= ' style="' . $atts['style'] . '"';
}
if ( isset( $atts['tweet'] ) && '' !== $atts['tweet'] ) {
$shortcode .= ' tweet="' . $atts['tweet'] . '"';
}
if ( isset( $atts['display_tweet'] ) && '' !== $atts['display_tweet'] ) {
$shortcode .= ' content="' . $atts['display_tweet'] . '"';
} else {
$shortcode .= ' content="' . $atts['tweet'] . '"';
}
if ( isset( $atts['remove_username'] ) && 'yes' == $atts['remove_username'] ) {
$shortcode .= ' via="false"';
} else {
$shortcode .= ' via="true"';
}
if ( isset( $atts['remove_url'] ) && 'yes' == $atts['remove_url'] ) {
$shortcode .= ' link="false"';
} else {
$shortcode .= ' link="true"';
}
$shortcode .= ']';
ob_start();
echo do_shortcode( $shortcode );
return ob_get_clean();
}
}
new SocialSnap_DPSP_Compatibility( $socialsnap_dpsp_options );