Plugin Directory

Changeset 2009127


Ignore:
Timestamp:
01/09/2019 01:59:09 PM (7 years ago)
Author:
finteza
Message:
  • Add activate/deactivate webhooks
Location:
finteza-analytics/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • finteza-analytics/trunk/event_tracker/event_tracker.php

    r2007529 r2009127  
    2929add_filter( 'mce_external_languages', 'finteza_analytics_load_tinymce_languages');
    3030
    31 function finteza_analytics_add_mce_custom_locale()
    32 {
     31function finteza_analytics_add_mce_custom_locale() {
    3332    ?>
    3433    <script type='text/javascript'>
     
    4443}
    4544
    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.
     46global $wp_version;
     47
     48if ( version_compare( $wp_version, '5.0.0' ) >= 0 ) {
    4849    add_action( 'print_default_editor_scripts', 'finteza_analytics_add_mce_custom_locale' );
    4950}
  • finteza-analytics/trunk/finteza-analytics.php

    r2007529 r2009127  
    2323if ( ! defined( 'FINTEZA_ANALYTICS_FILE' ) )         define( 'FINTEZA_ANALYTICS_FILE', plugin_basename( __FILE__ ) );
    2424if ( ! defined( 'FINTEZA_ANALYTICS_SLUG' ) )         define( 'FINTEZA_ANALYTICS_SLUG', basename( dirname( __FILE__ ) ) );
     25if ( ! 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' );
     26if ( ! 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' );
    2527
    2628require_once FINTEZA_ANALYTICS_DIR . 'event_tracker/event_tracker.php';
     29
     30register_activation_hook( __FILE__, array( 'Finteza_Analytics_Plugin', 'activate' ) );
     31register_deactivation_hook( __FILE__, array( 'Finteza_Analytics_Plugin', 'deactivate' ) );
    2732
    2833/**
     
    3035 */
    3136class 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&registration_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&registration_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    }
    221261}
    222262
Note: See TracChangeset for help on using the changeset viewer.