163 lines
3.6 KiB
PHP
163 lines
3.6 KiB
PHP
<?php
|
|
|
|
class MonsterInsights_VerifiedBadge_Controller
|
|
{
|
|
|
|
/**
|
|
* Current class instance.
|
|
*
|
|
* @since 8.9.0
|
|
*
|
|
* @var MonsterInsights_VerifiedBadge_Controller
|
|
*/
|
|
private static $instance;
|
|
|
|
/**
|
|
* Name of the shortcode
|
|
*
|
|
* @since 8.9.0
|
|
*
|
|
* @var string
|
|
*/
|
|
private $shortcode_key = 'monsterinsights-badge';
|
|
|
|
/**
|
|
* Get instance from current class.
|
|
*
|
|
* @since 8.9.0
|
|
*
|
|
* @return MonsterInsights_VerifiedBadge_Controller
|
|
*/
|
|
public static function get_instance()
|
|
{
|
|
if (!isset(self::$instance) && !(self::$instance instanceof MonsterInsights_VerifiedBadge_Controller)) {
|
|
self::$instance = new MonsterInsights_VerifiedBadge_Controller();
|
|
}
|
|
|
|
return self::$instance;
|
|
}
|
|
|
|
/**
|
|
* Entry point for this class to start adding callbacks for WP hooks.
|
|
*
|
|
* @since 8.9.0
|
|
*
|
|
* @return void
|
|
*/
|
|
public function run()
|
|
{
|
|
$this->register_shortcode();
|
|
$this->add_hooks();
|
|
}
|
|
|
|
/**
|
|
* Register the shortcode.
|
|
*
|
|
* @since 8.9.0
|
|
*
|
|
* @return void
|
|
*/
|
|
private function register_shortcode()
|
|
{
|
|
if (empty($this->shortcode_key)) {
|
|
return;
|
|
}
|
|
|
|
add_shortcode($this->shortcode_key, array($this, 'render_badge'));
|
|
}
|
|
|
|
/**
|
|
* Render badge HTML based on the passed attributes.
|
|
*
|
|
* @param array $atts Attributes used to customize the badge.
|
|
*
|
|
* @since 8.9.0
|
|
*
|
|
* @return string
|
|
*/
|
|
public function render_badge($atts)
|
|
{
|
|
$atts = shortcode_atts(array(
|
|
'appearance' => 'light',
|
|
'position' => 'center'
|
|
), $atts, $this->shortcode_key);
|
|
|
|
$img_src = esc_url(plugins_url('assets/images/monsterinsights-badge-' . (in_array($atts['appearance'], array('light', 'dark'), true) ? $atts['appearance'] : 'light') . '.svg', MONSTERINSIGHTS_PLUGIN_FILE));
|
|
|
|
return sprintf(
|
|
'<div style="text-align: %1$s;"><a href="%2$s" target="_blank" rel="nofollow"><img style="display: inline-block" alt="%3$s" title="%3$s" src="%4$s"/></a></div>',
|
|
(in_array($atts['position'], array('left', 'center', 'right'), true) ? $atts['position'] : 'center'),
|
|
$this->get_link(),
|
|
__('Verified by MonsterInsights', 'google-analytics-for-wordpress'),
|
|
$img_src
|
|
);
|
|
}
|
|
|
|
private function get_link()
|
|
{
|
|
return add_query_arg(
|
|
array(
|
|
'utm_source' => 'verifiedBadge',
|
|
'utm_medium' => 'verifiedBadge',
|
|
'utm_campaign' => 'verifiedbyMonsterInsights',
|
|
),
|
|
'https://www.monsterinsights.com/'
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Start adding callbacks for WP Hooks.
|
|
*
|
|
* @since 8.9.0
|
|
*
|
|
* @return void
|
|
*/
|
|
public function add_hooks()
|
|
{
|
|
add_action('wp_footer', array($this, 'show_automatic_footer_badge'), 1000);
|
|
add_action('wp_loaded', array($this, 'save_default_settings'));
|
|
}
|
|
|
|
/**
|
|
* Save default settings
|
|
*
|
|
* @since 8.9.0
|
|
*
|
|
* @return void
|
|
*/
|
|
public function save_default_settings()
|
|
{
|
|
$appearance = monsterinsights_get_option('verified_appearance', false);
|
|
$position = monsterinsights_get_option('verified_position', false);
|
|
if (!$appearance) {
|
|
monsterinsights_update_option('verified_appearance', 'light');
|
|
}
|
|
if (!$position) {
|
|
monsterinsights_update_option('verified_position', 'center');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Show badge in footer if Automatic mode is enabled.
|
|
*
|
|
* @since 8.9.0
|
|
*
|
|
* @return void
|
|
*/
|
|
public function show_automatic_footer_badge()
|
|
{
|
|
if (!monsterinsights_get_option('verified_automatic')) {
|
|
return;
|
|
}
|
|
|
|
$atts = array(
|
|
'appearance' => monsterinsights_get_option('verified_appearance'),
|
|
'position' => monsterinsights_get_option('verified_position'),
|
|
);
|
|
// output escaped in render_badge function
|
|
echo $this->render_badge($atts); // phpcs:ignore
|
|
}
|
|
}
|
|
|
|
MonsterInsights_VerifiedBadge_Controller::get_instance()->run();
|