Changeset 2009127
- Timestamp:
- 01/09/2019 01:59:09 PM (7 years ago)
- Location:
- finteza-analytics/trunk
- Files:
-
- 2 edited
-
event_tracker/event_tracker.php (modified) (2 diffs)
-
finteza-analytics.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
finteza-analytics/trunk/event_tracker/event_tracker.php
r2007529 r2009127 29 29 add_filter( 'mce_external_languages', 'finteza_analytics_load_tinymce_languages'); 30 30 31 function finteza_analytics_add_mce_custom_locale() 32 { 31 function finteza_analytics_add_mce_custom_locale() { 33 32 ?> 34 33 <script type='text/javascript'> … … 44 43 } 45 44 46 # Fix of the Finteza MCE button translation for the versions 5.0.0 and higher 47 if (version_compare($wp_version, '5.0.0') >= 0) { 45 // Fix of the Finteza MCE button translation for the versions 5.0.0 and higher. 46 global $wp_version; 47 48 if ( version_compare( $wp_version, '5.0.0' ) >= 0 ) { 48 49 add_action( 'print_default_editor_scripts', 'finteza_analytics_add_mce_custom_locale' ); 49 50 } -
finteza-analytics/trunk/finteza-analytics.php
r2007529 r2009127 23 23 if ( ! defined( 'FINTEZA_ANALYTICS_FILE' ) ) define( 'FINTEZA_ANALYTICS_FILE', plugin_basename( __FILE__ ) ); 24 24 if ( ! defined( 'FINTEZA_ANALYTICS_SLUG' ) ) define( 'FINTEZA_ANALYTICS_SLUG', basename( dirname( __FILE__ ) ) ); 25 if ( ! defined( 'FINTEZA_ANALYTICS_TRACK_INSTALL_URL' ) ) define( 'FINTEZA_ANALYTICS_TRACK_INSTALL_URL', 'https://content.mql5.com/tr?event=Plugin%2BWordpress%2BActivate&id=cbgspzdebnimbhhkhankjnebjfajvaceho&ref=https%3A%2F%2Fwww.finteza.com%2F' ); 26 if ( ! defined( 'FINTEZA_ANALYTICS_TRACK_UNINSTALL_URL' ) ) define( 'FINTEZA_ANALYTICS_TRACK_UNINSTALL_URL', 'https://content.mql5.com/tr?event=Plugin%2BWordpress%2BDeactivate&id=cbgspzdebnimbhhkhankjnebjfajvaceho&ref=https%3A%2F%2Fwww.finteza.com%2F' ); 25 27 26 28 require_once FINTEZA_ANALYTICS_DIR . 'event_tracker/event_tracker.php'; 29 30 register_activation_hook( __FILE__, array( 'Finteza_Analytics_Plugin', 'activate' ) ); 31 register_deactivation_hook( __FILE__, array( 'Finteza_Analytics_Plugin', 'deactivate' ) ); 27 32 28 33 /** … … 30 35 */ 31 36 class Finteza_Analytics_Plugin { 32 /** 33 * Setup WordPress hooks 34 */ 35 public function __construct() { 36 add_action( 'init', array( $this, 'init' ) ); 37 add_action( 'admin_init', array( $this, 'admin_init' ) ); 38 add_action( 'admin_menu', array( $this, 'admin_menu' ) ); 39 add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) ); 40 add_action( 'wp_head', array( $this, 'wp_head' ) ); 41 add_action( 'pre_update_option_finteza_register', array( $this, 'pre_update_option_finteza_register' ), 10, 2 ); 42 } 43 44 /** 45 * Initialize plugin 46 */ 47 public function init() { 48 $this->is_reg_needed = ! get_option( 'finteza_settings' )['website_id']; 49 50 load_plugin_textdomain( 'finteza', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); 51 } 52 53 /** 54 * Registering the plugin setting. Settings are saving in an Array. 55 */ 56 public function admin_init() { 57 require_once FINTEZA_ANALYTICS_DIR . 'inc/input-settings.php'; 58 require_once FINTEZA_ANALYTICS_DIR . 'inc/input-register.php'; 59 60 register_setting( 'finteza_settings', 'finteza_settings', 'sanitize_callback' ); 61 add_settings_section( 'finteza_settings_id', '', '', 'finteza_settings_section' ); 62 add_settings_field( 'finteza_api-id', __( 'Website ID', 'finteza' ), 'finteza_analytics_api', 'finteza_settings_section', 'finteza_settings_id' ); 63 add_settings_field( 'finteza_tracking-id', __( 'Tracking settings', 'finteza' ), 'finteza_analytics_tracking', 'finteza_settings_section', 'finteza_settings_id' ); 64 65 register_setting( 'finteza_register', 'finteza_register', 'sanitize_callback' ); 66 add_settings_section( 'finteza_register_id', '', '', 'finteza_register_section' ); 67 add_settings_field( 'finteza_domain-id', __( 'Domain', 'finteza' ), 'finteza_analytics_domain', 'finteza_register_section', 'finteza_register_id', [ 'class' => 'hidden' ] ); 68 add_settings_field( 'finteza_offset-id', __( 'UTC offset', 'finteza' ), 'finteza_analytics_offset', 'finteza_register_section', 'finteza_register_id', [ 'class' => 'hidden' ] ); 69 add_settings_field( 'finteza_name-id', __( 'Your full name', 'finteza' ), 'finteza_analytics_name', 'finteza_register_section', 'finteza_register_id' ); 70 add_settings_field( 'finteza_company-id', __( 'Company', 'finteza' ), 'finteza_analytics_company', 'finteza_register_section', 'finteza_register_id' ); 71 add_settings_field( 'finteza_email-id', __( 'Email', 'finteza' ), 'finteza_analytics_email', 'finteza_register_section', 'finteza_register_id' ); 72 add_settings_field( 'finteza_password-id', __( 'Password', 'finteza' ), 'finteza_analytics_password', 'finteza_register_section', 'finteza_register_id' ); 73 add_settings_field( 'finteza_policy-id', '', 'finteza_analytics_policy', 'finteza_register_section', 'finteza_register_id' ); 74 75 } 76 77 /** 78 * Setup administrator menu 79 */ 80 public function admin_menu() { 81 $title_page = esc_html__( 'Finteza Analytics', 'finteza' ); 82 $title_menu = esc_html__( 'Finteza Analytics', 'finteza' ); 83 84 add_options_page( $title_page, $title_menu, 'manage_options', 'finteza_settings', array( $this, 'render_settings' ) ); 85 } 86 87 /** 88 * Provide admin UI assets 89 */ 90 public function admin_enqueue_scripts() { 91 $info = self::get_fz_info(); 92 93 wp_enqueue_style( 'finteza', FINTEZA_ANALYTICS_URL . 'css/settings.css', array(), $info['version'] ); 94 wp_enqueue_script( 'fintza', FINTEZA_ANALYTICS_URL . 'js/settings.js', array( 'jquery' ), $info['version'] ); 95 } 96 97 /** 98 * Provide page head content 99 */ 100 public function wp_head() { 101 $settings = get_option( 'finteza_settings' ) ? get_option( 'finteza_settings' ) : []; 102 $website_id = $settings['website_id']; 103 $track_hash = array_key_exists('track_hash', $settings) && $settings['track_hash'] ? 'true' : 'false'; 104 $track_links = array_key_exists('track_links', $settings) && $settings['track_links'] ? 'true' : 'false'; 105 $time_on_page = array_key_exists('time_on_page', $settings) && $settings['time_on_page'] ? 'true' : 'false'; 106 $ignore_admins = array_key_exists('ignore_admins', $settings) && $settings['ignore_admins'] ? 'true' : 'false'; 107 108 if ( $this->is_reg_needed || ( is_user_logged_in() && $ignore_admins == 'true') ) { 109 return; 110 } 111 112 $html = file_get_contents( plugin_dir_path( __FILE__ ) . 'templates/tracker.html' ); 113 114 $html = str_replace( '$websiteId', htmlspecialchars( $website_id, ENT_QUOTES ), $html ); 115 $html = str_replace( '$trackHash', $track_hash, $html ); 116 $html = str_replace( '$trackLinks', $track_links, $html ); 117 $html = str_replace( '$timeOnPage', $time_on_page, $html ); 118 119 echo $html; 120 } 121 122 /** 123 * Handle registration form data 124 * 125 * @param Array $values received form data. 126 * @param Array $old_values saved form data. 127 */ 128 public function pre_update_option_finteza_register( $values, $old_values ) { 129 $registration = $this->api_register_website( 130 array( 131 'email' => $values['finteza_email'], 132 'password' => $values['finteza_password'], 133 'website' => $values['finteza_domain'], 134 'fullname' => $values['finteza_name'], 135 'company' => $values['finteza_company'], 136 'utc_offset' => $values['finteza_offset'], 137 ) 138 ); 139 140 $values['finteza_password'] = null; 141 142 if ( $registration && 1 === $registration->status ) { 143 $settings = get_option( 'finteza_settings', self::default_settings() ); 144 $settings['website_id'] = $registration->website; 145 146 update_option( 'finteza_settings', $settings ); 147 header( 'Location: ' . admin_url( 'options-general.php?page=finteza_settings®istration_complete=1' ) ); 148 die(); 149 } elseif ( $registration && 0 === $registration->status ) { 150 switch ( $registration->error ) { 151 case 1: 152 add_settings_error( 'finteza_register', '', __( 'an account with this email address already exists', 'finteza' ) ); 153 break; 154 case 2: 155 add_settings_error( 'finteza_register', '', __( 'invalid email address', 'finteza' ) ); 156 break; 157 case 3: 158 add_settings_error( 'finteza_register', '', __( 'Registration error.email_invalid', 'finteza' ) ); 159 break; 160 case 4: 161 add_settings_error( 'finteza_register', '', __( 'a company with this name already exists', 'finteza' ) ); 162 break; 163 case 5: 164 add_settings_error( 'finteza_register', '', __( 'invalid website address', 'finteza' ) ); 165 break; 166 case 6: 167 add_settings_error( 'finteza_register', '', __( 'registration limit exceeded', 'finteza' ) ); 168 break; 169 } 170 } else { 171 add_settings_error( 'finteza_register', '', __( 'Registration error', 'finteza' ) ); 172 } 173 174 return $values; 175 } 176 177 public function render_settings() { 178 require_once FINTEZA_ANALYTICS_DIR . 'inc/settings-display.php'; 179 } 180 181 182 private function api_register_website( $registration ) { 183 $response = wp_remote_post( 184 FINTEZA_ANALYTICS_API_URL, 185 array( 186 'headers' => array( 'X-Requested-With' => 'XMLHttpRequest' ), 187 'body' => $registration, 188 ) 189 ); 190 if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { 191 return null; 192 } 193 194 return json_decode( wp_remote_retrieve_body( $response ) ); 195 } 196 197 /** 198 * Returns plugin information 199 */ 200 public static function get_fz_info() { 201 return get_file_data( 202 __FILE__, 203 [ 204 'plugin_name' => 'Plugin Name', 205 'version' => 'Version', 206 'version_date' => 'Version Date', 207 ], 208 false 209 ); 210 } 211 212 public static function default_settings() { 213 return array( 214 'website_id' => '', 215 'track_hash' => 0, 216 'track_links' => 1, 217 'time_on_page' => 0, 218 'ignore_admins' => 1, 219 ); 220 } 37 /** 38 * Setup WordPress hooks 39 */ 40 public function __construct() { 41 add_action( 'init', array( $this, 'init' ) ); 42 add_action( 'admin_init', array( $this, 'admin_init' ) ); 43 add_action( 'admin_menu', array( $this, 'admin_menu' ) ); 44 add_action( 'admin_enqueue_scripts', array( $this, 'admin_enqueue_scripts' ) ); 45 add_action( 'wp_head', array( $this, 'wp_head' ) ); 46 add_action( 'pre_update_option_finteza_register', array( $this, 'pre_update_option_finteza_register' ), 10, 2 ); 47 } 48 49 /** 50 * Initialize plugin 51 */ 52 public function init() { 53 $this->is_reg_needed = ! get_option( 'finteza_settings' )['website_id']; 54 55 load_plugin_textdomain( 'finteza', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); 56 } 57 58 /** 59 * Registering the plugin setting. Settings are saving in an Array. 60 */ 61 public function admin_init() { 62 require_once FINTEZA_ANALYTICS_DIR . 'inc/input-settings.php'; 63 require_once FINTEZA_ANALYTICS_DIR . 'inc/input-register.php'; 64 65 register_setting( 'finteza_settings', 'finteza_settings', 'sanitize_callback' ); 66 add_settings_section( 'finteza_settings_id', '', '', 'finteza_settings_section' ); 67 add_settings_field( 'finteza_api-id', __( 'Website ID', 'finteza' ), 'finteza_analytics_api', 'finteza_settings_section', 'finteza_settings_id' ); 68 add_settings_field( 'finteza_tracking-id', __( 'Tracking settings', 'finteza' ), 'finteza_analytics_tracking', 'finteza_settings_section', 'finteza_settings_id' ); 69 70 register_setting( 'finteza_register', 'finteza_register', 'sanitize_callback' ); 71 add_settings_section( 'finteza_register_id', '', '', 'finteza_register_section' ); 72 add_settings_field( 'finteza_domain-id', __( 'Domain', 'finteza' ), 'finteza_analytics_domain', 'finteza_register_section', 'finteza_register_id', [ 'class' => 'hidden' ] ); 73 add_settings_field( 'finteza_offset-id', __( 'UTC offset', 'finteza' ), 'finteza_analytics_offset', 'finteza_register_section', 'finteza_register_id', [ 'class' => 'hidden' ] ); 74 add_settings_field( 'finteza_name-id', __( 'Your full name', 'finteza' ), 'finteza_analytics_name', 'finteza_register_section', 'finteza_register_id' ); 75 add_settings_field( 'finteza_company-id', __( 'Company', 'finteza' ), 'finteza_analytics_company', 'finteza_register_section', 'finteza_register_id' ); 76 add_settings_field( 'finteza_email-id', __( 'Email', 'finteza' ), 'finteza_analytics_email', 'finteza_register_section', 'finteza_register_id' ); 77 add_settings_field( 'finteza_password-id', __( 'Password', 'finteza' ), 'finteza_analytics_password', 'finteza_register_section', 'finteza_register_id' ); 78 add_settings_field( 'finteza_policy-id', '', 'finteza_analytics_policy', 'finteza_register_section', 'finteza_register_id' ); 79 80 } 81 82 /** 83 * Setup administrator menu 84 */ 85 public function admin_menu() { 86 $title_page = esc_html__( 'Finteza Analytics', 'finteza' ); 87 $title_menu = esc_html__( 'Finteza Analytics', 'finteza' ); 88 89 add_options_page( $title_page, $title_menu, 'manage_options', 'finteza_settings', array( $this, 'render_settings' ) ); 90 } 91 92 /** 93 * Provide admin UI assets 94 */ 95 public function admin_enqueue_scripts() { 96 $info = self::get_fz_info(); 97 98 wp_enqueue_style( 'finteza', FINTEZA_ANALYTICS_URL . 'css/settings.css', array(), $info['version'] ); 99 wp_enqueue_script( 'fintza', FINTEZA_ANALYTICS_URL . 'js/settings.js', array( 'jquery' ), $info['version'] ); 100 } 101 102 /** 103 * Provide page head content 104 */ 105 public function wp_head() { 106 $settings = get_option( 'finteza_settings' ) ? get_option( 'finteza_settings' ) : []; 107 $website_id = $settings['website_id']; 108 $track_hash = array_key_exists( 'track_hash', $settings ) && $settings['track_hash'] ? 'true' : 'false'; 109 $track_links = array_key_exists( 'track_links', $settings ) && $settings['track_links'] ? 'true' : 'false'; 110 $time_on_page = array_key_exists( 'time_on_page', $settings ) && $settings['time_on_page'] ? 'true' : 'false'; 111 $ignore_admins = array_key_exists( 'ignore_admins', $settings ) && $settings['ignore_admins'] ? 'true' : 'false'; 112 113 if ( $this->is_reg_needed || ( is_user_logged_in() && $ignore_admins == 'true' ) ) { 114 return; 115 } 116 117 $html = file_get_contents( plugin_dir_path( __FILE__ ) . 'templates/tracker.html' ); 118 119 $html = str_replace( '$websiteId', htmlspecialchars( $website_id, ENT_QUOTES ), $html ); 120 $html = str_replace( '$trackHash', $track_hash, $html ); 121 $html = str_replace( '$trackLinks', $track_links, $html ); 122 $html = str_replace( '$timeOnPage', $time_on_page, $html ); 123 124 echo $html; 125 } 126 127 /** 128 * Handle registration form data 129 * 130 * @param Array $values received form data. 131 * @param Array $old_values saved form data. 132 */ 133 public function pre_update_option_finteza_register( $values, $old_values ) { 134 $registration = $this->api_register_website( 135 array( 136 'email' => $values['finteza_email'], 137 'password' => $values['finteza_password'], 138 'website' => $values['finteza_domain'], 139 'fullname' => $values['finteza_name'], 140 'company' => $values['finteza_company'], 141 'utc_offset' => $values['finteza_offset'], 142 ) 143 ); 144 145 $values['finteza_password'] = null; 146 147 if ( $registration && 1 === $registration->status ) { 148 $settings = get_option( 'finteza_settings', self::default_settings() ); 149 $settings['website_id'] = $registration->website; 150 151 update_option( 'finteza_settings', $settings ); 152 header( 'Location: ' . admin_url( 'options-general.php?page=finteza_settings®istration_complete=1' ) ); 153 die(); 154 } elseif ( $registration && 0 === $registration->status ) { 155 switch ( $registration->error ) { 156 case 1: 157 add_settings_error( 'finteza_register', '', __( 'an account with this email address already exists', 'finteza' ) ); 158 break; 159 case 2: 160 add_settings_error( 'finteza_register', '', __( 'invalid email address', 'finteza' ) ); 161 break; 162 case 3: 163 add_settings_error( 'finteza_register', '', __( 'Registration error.email_invalid', 'finteza' ) ); 164 break; 165 case 4: 166 add_settings_error( 'finteza_register', '', __( 'a company with this name already exists', 'finteza' ) ); 167 break; 168 case 5: 169 add_settings_error( 'finteza_register', '', __( 'invalid website address', 'finteza' ) ); 170 break; 171 case 6: 172 add_settings_error( 'finteza_register', '', __( 'registration limit exceeded', 'finteza' ) ); 173 break; 174 } 175 } else { 176 add_settings_error( 'finteza_register', '', __( 'Registration error', 'finteza' ) ); 177 } 178 179 return $values; 180 } 181 182 public function render_settings() { 183 require_once FINTEZA_ANALYTICS_DIR . 'inc/settings-display.php'; 184 } 185 186 187 private function api_register_website( $registration ) { 188 $response = wp_remote_post( 189 FINTEZA_ANALYTICS_API_URL, 190 array( 191 'headers' => array( 'X-Requested-With' => 'XMLHttpRequest' ), 192 'body' => $registration, 193 ) 194 ); 195 if ( 200 !== wp_remote_retrieve_response_code( $response ) ) { 196 return null; 197 } 198 199 return json_decode( wp_remote_retrieve_body( $response ) ); 200 } 201 202 /** 203 * Activation hook 204 */ 205 public static function activate() { 206 wp_remote_get( 207 FINTEZA_ANALYTICS_TRACK_INSTALL_URL, 208 array( 209 'headers' => array( 210 'user-agent' => self::user_agent(), 211 ), 212 ) 213 ); 214 } 215 216 /** 217 * Deactivation hook 218 */ 219 public static function deactivate() { 220 wp_remote_get( 221 FINTEZA_ANALYTICS_TRACK_UNINSTALL_URL, 222 array( 223 'headers' => array( 224 'user-agent' => self::user_agent(), 225 ), 226 ) 227 ); 228 } 229 230 /** 231 * Build custom user agent 232 */ 233 public static function user_agent() { 234 return 'WordPress/' . get_bloginfo( 'version' ) . '; ' . get_bloginfo( 'url' ); 235 } 236 237 /** 238 * Returns plugin information 239 */ 240 public static function get_fz_info() { 241 return get_file_data( 242 __FILE__, 243 [ 244 'plugin_name' => 'Plugin Name', 245 'version' => 'Version', 246 'version_date' => 'Version Date', 247 ], 248 false 249 ); 250 } 251 252 public static function default_settings() { 253 return array( 254 'website_id' => '', 255 'track_hash' => 0, 256 'track_links' => 1, 257 'time_on_page' => 0, 258 'ignore_admins' => 1, 259 ); 260 } 221 261 } 222 262
Note: See TracChangeset
for help on using the changeset viewer.