-
Notifications
You must be signed in to change notification settings - Fork 22
Expand file tree
/
Copy pathanalytify-base.php
More file actions
123 lines (98 loc) · 3.59 KB
/
analytify-base.php
File metadata and controls
123 lines (98 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<?php
/**
*
*/
class Analytify_Base{
protected $settings;
protected $plugin_file_path;
protected $plugin_dir_path;
protected $plugin_folder_name;
protected $plugin_basename;
protected $plugin_title;
protected $plugin_slug;
protected $core_slug;
protected $template_dir;
protected $is_addon = false;
protected $is_pro = false;
function __construct( $plugin_file_path ) {
$this->load_settings();
$this->plugin_file_path = $plugin_file_path;
$this->plugin_dir_path = plugin_dir_path( $plugin_file_path );
$this->plugin_folder_name = basename( $this->plugin_dir_path );
$this->plugin_basename = plugin_basename( $plugin_file_path );
$this->template_dir = $this->plugin_dir_path . 'template' . DIRECTORY_SEPARATOR;
$this->plugin_title = ucwords( str_ireplace( '-', ' ', basename( $plugin_file_path ) ) );
$this->plugin_title = str_ireplace( array( 'wp', 'analytify', 'pro', '.php' ), array( 'WP', 'ANALYTIFY', 'PRO', '' ), $this->plugin_title );
$this->plugin_slug = basename( $plugin_file_path, '.php' );
// used to add admin menus and to identify the core version
$this->core_slug = ( $this->is_pro || $this->is_addon ) ? 'wp-analytify-pro' : 'wp-analytify';
if ( is_multisite() ) {
$this->plugin_base = 'settings.php?page=' . $this->core_slug;
} else {
$this->plugin_base = 'tools.php?page=' . $this->core_slug;
}
if ( $this->is_addon || $this->is_pro ) {
$this->pro_addon_construct();
}
add_action( 'init', array( $this, 'load_plugin_textdomain' ) );
}
function load_settings() {
if ( ! is_null( $this->settings ) ) {
return;
}
$update_settings = false;
$this->settings = get_site_option( 'wpanalytify_settings' );
/*
* Settings were previously stored and retrieved using get_option and update_option respectively.
* Here we update the subsite option to a network wide option if applicable.
*/
if ( false === $this->settings && is_multisite() && is_network_admin() ) {
$this->settings = get_option( 'wpanalytify_settings' );
if ( false !== $this->settings ) {
$update_settings = true;
delete_option( 'wpanalytify_settings' );
}
}
$default_settings = array(
'profiles' => array(),
'licence' => '',
'analytify_posts_stats' => array( 'post','page' ),
'post_analytics_disable_back' => 1,
'post_analytics_settings_back' => array( 'show-overall-back' ),
'post_analytics_access_back' => array( 'editor','administrator' ),
'display_tracking_code' => array( 'administrator' ),
'show_welcome_page' => 0,
);
// if we still don't have settings exist this must be a fresh install, set up some default settings
if ( false === $this->settings ) {
$this->settings = $default_settings;
$update_settings = true;
} else {
/*
* When new settings are added an existing customer's db won't have the new settings.
* They're added here to circumvent array index errors in debug mode.
*/
foreach ( $default_settings as $key => $value ) {
if ( ! isset( $this->settings[ $key ] ) ) {
$this->settings[ $key ] = $value;
$update_settings = true;
}
}
}
if ( $update_settings ) {
update_site_option( 'wpanalytify_settings', $this->settings );
}
}
/**
* Internationalization
*
* @access public
* @since 2.0
* @return void
*/
function load_plugin_textdomain() {
load_plugin_textdomain( 'wp-analytify', false, dirname( plugin_basename( $this->plugin_file_path ) ) . '/languages/' );
}
function pro_addon_construct() {
}
}