📄 Viewing: /home/navyug/public_html/wp-content/plugins/sticky-side-buttons/ssb-main.php
<?php
/**
* Main plugin class
*/
class ssb_main {
/**
* @var object $ui
*/
public $ui;
/**
* Dump everything for this plugin here :p
*
* @since 1.0
*/
public function __construct() {
// Migration
add_action('init', array($this, 'ssb_icons_migration'));
// User interfaces object
$this->ui = new ssb_ui;
// Pull stored data
$this->settings = get_option( 'ssb_settings' );
// Plugin text domain
add_action( 'init', array( $this, 'ssb_textdomain' ) );
// Register settings
add_action( 'admin_init', array( $this, 'ssb_register_settings' ) );
// Admin menu
add_action( 'admin_menu', array( $this, 'ssb_admin_menu' ) );
// Admin assets
add_action( 'admin_enqueue_scripts', array( $this, 'ssb_admin_assets' ) );
// Admin notices
add_action( 'admin_notices', array( $this, 'ssb_admin_notices' ) );
// Icons UI
add_action( 'wp_footer', array( $this->ui, 'icons' ) );
add_action( 'wp_enqueue_scripts', array( $this, 'ssb_ui_assets' ) );
}
/**
* Load text domain
*
* @since 1.0
*/
public function ssb_textdomain() {
load_plugin_textdomain( 'sticky-side-buttons', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
}
/**
* Register settings
*
* @since 1.0
*/
public function ssb_register_settings() {
register_setting( 'ssb_storage', 'ssb_settings' );
register_setting( 'ssb_storage', 'ssb_buttons' );
register_setting('ssb_storage', 'ssb_showoncpt');
}
/**
* Admin menu
*
* @since 1.0
*/
public function ssb_admin_menu() {
add_menu_page(
__( 'Sticky Side Buttons', 'sticky-side-buttons' ),
__( 'Sticky Side Buttons', 'sticky-side-buttons' ),
'manage_options',
'ssb',
array(
$this->ui,
'admin_page'
),
'dashicons-list-view'
);
}
/**
* Admin style
*
* @since 1.0
*/
public function ssb_admin_assets() {
// CSS
wp_enqueue_style( 'ssb-admin-style', plugins_url( 'assets/css/ssb-admin-style.css', __FILE__ ) );
wp_enqueue_style( 'ssb-fontawesome', plugins_url( 'assets/css/font-awesome.css', __FILE__ ) );
wp_enqueue_style( 'ssb-iconpicker', plugins_url( 'assets/css/fontawesome-iconpicker.css', __FILE__ ) );
wp_enqueue_style( 'wp-color-picker' );
// JS
wp_enqueue_script( 'jquery-ui-core' );
wp_enqueue_script( 'jquery-ui-accordion' );
wp_enqueue_script( 'jquery-ui-sortable' );
wp_enqueue_script( 'wp-color-picker' );
wp_enqueue_script( 'ssb-iconpicker-js', plugins_url( 'assets/js/fontawesome-iconpicker.js', __FILE__ ) );
wp_enqueue_script( 'ssb-admin-js', plugins_url( 'assets/js/ssb-admin-js.js', __FILE__ ) );
}
/**
* Admin notices
*
* @since 1.0
*/
public function ssb_admin_notices() {
// Get current screen
$screen = get_current_screen();
/**
* If settings updated successfully
*/
if ( isset( $_GET['settings-updated'] ) && $screen->id == 'toplevel_page_ssb' ) {
?>
<div class="notice notice-success is-dismissible">
<p>Changes has been saved successfully!</p>
</div>
<?php
}
}
/**
* UI Assets
*
* @since 1.0
*/
public function ssb_ui_assets() {
// CSS
wp_enqueue_style( 'ssb-ui-style', plugins_url( 'assets/css/ssb-ui-style.css', __FILE__ ) );
wp_enqueue_style( 'ssb-fontawesome', plugins_url( 'assets/css/font-awesome.css', __FILE__ ) );
$dynamic_css = null;
if (!empty($this->ui->buttons['btns']) && $this->ui->buttons['btns']) {
foreach ( $this->ui->btns_order AS $btn_key => $btn_id ) {
// Hex to RGB
$hex = str_replace('#', '', $this->ui->buttons['btns'][$btn_id]['btn_color']);
$R = hexdec(substr($hex, 0, 2));
$G = hexdec(substr($hex, 2, 2));
$B = hexdec(substr($hex, 4, 2));
$dynamic_css .= '#ssb-btn-' . $btn_id . '{background: ' . $this->ui->buttons['btns'][$btn_id]['btn_color'] . ';}' . PHP_EOL;
$dynamic_css .= '#ssb-btn-' . $btn_id . ':hover{background:rgba(' . $R . ',' . $G . ',' . $B . ',0.9);}' . PHP_EOL;
$dynamic_css .= '#ssb-btn-' . $btn_id . ' a{color: ' . $this->ui->buttons['btns'][$btn_id]['btn_font_color'] . ';}' . PHP_EOL;
// Share button color
if ($btn_key == 0) {
$dynamic_css .= '.ssb-share-btn,.ssb-share-btn .ssb-social-popup{background:' . $this->ui->buttons['btns'][$btn_id]['btn_color'] . ';color:' . $this->ui->buttons['btns'][$btn_id]['btn_font_color'] . '}';
$dynamic_css .= '.ssb-share-btn:hover{background:rgba(' . $R . ',' . $G . ',' . $B . ',0.9);}';
$dynamic_css .= '.ssb-share-btn a{color:' . $this->ui->buttons['btns'][$btn_id]['btn_font_color'] . ' !important;}';
}
}
}
// Inline CSS
wp_add_inline_style('ssb-ui-style', $dynamic_css);
// JS
wp_enqueue_script('jquery-ui-core');
wp_enqueue_script('jquery-effects-shake');
wp_enqueue_script('ssb-ui-js', plugins_url('assets/js/ssb-ui-js.js', __FILE__));
$btn_z_index = isset( $this->settings['btn_z_index'] ) ? $this->settings['btn_z_index'] : 1;
wp_localize_script( 'ssb-ui-js', 'ssb_ui_data', array(
'z_index' => intval( $btn_z_index )
));
}
/**
* Icons migration to newer version
*
* @since 1.0.8
*/
public function ssb_icons_migration() {
// Get old buttons
$buttons = get_option('ssb_buttons');
// Count them
$btns_count = count($buttons['btns']);
// Replace them
for ($i = 0; $i < $btns_count; $i++) {
if (strpos($buttons['btns'][$i]['btn_icon'], 'fas') === false && strpos($buttons['btns'][$i]['btn_icon'], 'far') === false && strpos($buttons['btns'][$i]['btn_icon'], 'fab') === false) {
$buttons['btns'][$i]['btn_icon'] = 'fas ' .$buttons['btns'][$i]['btn_icon'];
}
}
// Update buttons
update_option('ssb_buttons', $buttons);
}
}
← Back to directory