File "notification-event.php"
Full Path: /home/tekvhqgl/public_html/wp-content/plugins/google-analytics-for-wordpress/includes/admin/notification-event.php
File size: 6.29 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/**
* Parent Class for MonsterInsights Notification Event
*
* @since 7.12.3
*
* @package MonsterInsights
*/
class MonsterInsights_Notification_Event {
/**
* Generate unique notification id
*
* @var string
*
* @since 7.12.3
*/
public $notification_id;
/**
* When the notification will repeat (e.g: 7) here `7` to repeat the notification after each 7 days
* Only accept numeric value
*
* @var number
*
* @since 7.12.3
*/
public $notification_interval;
/**
* When the notification will active, default: now
*
* @var string
*
* @since 7.12.3
*/
public $notification_active_from;
/**
* For how many days notification will be active
*
* @var string
*
* @since 7.12.3
*/
public $notification_active_for;
/**
* Which type of license is allowed to view this notification
*
* @var array
*
* @since 7.12.3
*/
public $notification_type;
/**
* Category of this notification: alert or insight
*
* @var string
*
* @since 8.2.0
*/
public $notification_category;
/**
* Priority of this notification: 1-3
*
* @var int
*/
public $notification_priority;
/**
* Report start date if required e.g: "-15 day"(Readable Time)
*
* @var string
*
* @since 7.12.3
*/
public $report_start_from;
/**
* Report end date if required e.g: "-1 day"(Readable Time)
*
* @var string
*
* @since 7.12.3
*/
public $report_end_to;
/**
* Notification icon to display with content
*
* @var string
*
* @since 7.12.3
*/
public $notification_icon;
/**
* Constructor
*
* @since 7.12.3
*/
public function __construct() {
$this->notification_active_from = date( 'm/d/Y g:i a', strtotime( 'now' ) );
$this->report_end_to = '-1 day'; // Yesterday.
if ( ! empty( $this->notification_id ) && ! empty( $this->notification_interval ) ) {
// Register notification in our custom runner.
monsterinsights_notification_event_runner()->register_notification( $this );
$this->notification_active_for = date( 'm/d/Y', strtotime( '+' . ( $this->notification_interval - 2 ) . ' day' ) );
$this->report_start_from = '-' . $this->notification_interval . ' day';
if ( ! isset( $this->notification_icon ) || empty( $this->notification_icon ) ) {
$this->notification_icon = 'default';
}
}
}
/**
* Get the formatted date.
*
* @param string $readable_time Readable time to convert to date.
*
* @return string date, format: Y-m-d
*
* @since 7.12.3
*/
public function get_formatted_date( $readable_time ) {
return date( 'Y-m-d', strtotime( $readable_time ) );
}
/**
* Get the upgrade URL for pro plugin
*
* @return string
*/
public function get_upgrade_url() {
return wp_specialchars_decode( monsterinsights_get_upgrade_link( 'monsterinsights-notifications-sidebar', 'notifications', 'https://www.monsterinsights.com/lite/' ) );
}
/**
* Build external link by including UTM data
*
* @return string
*/
public function build_external_link( $url ) {
$build_url = wp_specialchars_decode( monsterinsights_get_url( 'monsterinsights-notifications-sidebar', 'notifications', $url ) );
$host = parse_url( $build_url, PHP_URL_HOST );
$domain_name = preg_replace( '/^www\./', '', $host );
if ( 'monsterinsights.com' != $domain_name ) {
parse_str( parse_url( $build_url, PHP_URL_QUERY ), $queries );
if ( isset( $queries['utm_source'] ) ) {
$queries['utm_source'] = 'monsterinsights';
}
$build_url = add_query_arg(
$queries,
trailingslashit( $url )
);
}
return $build_url;
}
/**
* Get the URL for the page where users can see/read notifications.
*
* @return string
*/
public function get_view_url( $scroll_to, $page, $tab = '' ) {
return MonsterInsights()->notifications->get_view_url( $scroll_to, $page, $tab );
}
/**
* @param array $data
*
* @return array
*/
public function prepare_notification_data( $data ) {
return $data;
}
/**
* Add Notification not the notifications instance.
*
* @since 7.12.3
*/
public function add_notification() {
$notifications = MonsterInsights()->notifications;
$notification = array();
$notification['id'] = $this->notification_id . '_' . date( 'Ymd' ); // Make sure we never add the same notification on the same day.
$notification['icon'] = $this->notification_icon;
$notification['title'] = '';
$notification['content'] = '';
$notification['type'] = $this->notification_type;
$notification['btns'] = array();
$notification['start'] = $this->notification_active_from;
$notification['end'] = $this->notification_active_for;
$notification['category'] = $this->notification_category;
$notification['priority'] = $this->notification_priority;
if ( $notifications->is_dismissed( $notification ) ) {
return false;
}
$notification_data = $this->prepare_notification_data( $notification );
if ( is_array( $notification_data ) && ! empty( $notification_data ) ) {
return $notifications->add( $notification_data );
}
return false;
}
/**
* Get report
*
* @param string $report_name report name, default overview report.
* @param string $report_start_from report start date, default -30 days/last 30 days.
* @param string $report_end_to report end date, default -1 day/yesterday.
*
* @return array $data Overview data
*
* @since 7.12.3
*/
public function get_report( $report_name = 'overview', $report_start_from = '-30 day', $report_end_to = '-1 day' ) {
$report = MonsterInsights()->reporting->get_report( $report_name );
if ( $report ) {
// Mark the report request as coming from Notifications.
$report->set_report_source( 'notifications' );
}
$isnetwork = ! empty( $_REQUEST['isnetwork'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['isnetwork'] ) ) : '';
$args = array(
'start' => $this->get_formatted_date( $report_start_from ),
'end' => $this->get_formatted_date( $report_end_to ),
);
if ( $isnetwork ) {
$args['network'] = true;
}
if ( monsterinsights_is_pro_version() && ! MonsterInsights()->license->license_can( $report->level ) ) {
$data = array(
'success' => false,
'message' => __( "You don't have permission to view MonsterInsights reports.", 'google-analytics-for-wordpress' ),
);
} else {
$data = $report->get_data( $args );
}
return $data;
}
}