PluginProbe
LoginPress | wp-login Custom Login Page Customizer / 1.7.0
LoginPress | wp-login Custom Login Page Customizer v1.7.0
6.2.5 6.2.4 6.2.3 6.2.2 6.2.1 trunk 1.0.0 1.0.1 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.2 1.0.20 1.0.21 1.0.22 1.0.23 1.0.3 1.0.4 All 118 releases
loginpress / loginpress.php

loginpress.php in LoginPress | wp-login Custom Login Page Customizer 1.7.0, at loginpress.php

666 lines 20.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Plugin Name: LoginPress - Customizing the WordPress Login Screen.
4 * Plugin URI: https://loginpress.pro/?utm_source=loginpress-lite&utm_medium=plugin-inside&utm_campaign=pro-upgrade&utm_content=plugin_uri
5 * Description: LoginPress is the best <code>wp-login</code> Login Page Customizer plugin by <a href="https://wpbrigade.com/?utm_source=loginpress-lite">WPBrigade</a> which allows you to completely change the layout of login, register and forgot password forms.
6 * Version: 1.7.0
7 * Author: WPBrigade
8 * Author URI: https://WPBrigade.com/?utm_source=loginpress-lite
9 * Text Domain: loginpress
10 * Domain Path: /languages
11 *
12 * @package loginpress
13 * @category Core
14 * @author WPBrigade
15 */
16
17
18 if ( ! class_exists( 'LoginPress' ) ) :
19
20 final class LoginPress {
21
22 /**
23 * @var string
24 */
25 public $version = '1.7.0';
26
27 /**
28 * @var The single instance of the class
29 * @since 1.0.0
30 */
31 protected static $_instance = null;
32
33 /**
34 * @var WP_Session session
35 */
36 public $session = null;
37
38 /**
39 * @var WP_Query $query
40 */
41 public $query = null;
42
43 /**s
44 * @var WP_Countries $countries
45 */
46 public $countries = null;
47
48 /* * * * * * * * * *
49 * Class constructor
50 * * * * * * * * * */
51 public function __construct() {
52
53 $this->define_constants();
54 $this->includes();
55 $this->_hooks();
56
57 }
58
59 /**
60 * Define LoginPress Constants
61 */
62 private function define_constants() {
63
64 $this->define( 'LOGINPRESS_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
65 $this->define( 'LOGINPRESS_DIR_PATH', plugin_dir_path( __FILE__ ) );
66 $this->define( 'LOGINPRESS_DIR_URL', plugin_dir_url( __FILE__ ) );
67 $this->define( 'LOGINPRESS_ROOT_PATH', dirname( __FILE__ ) . '/' );
68 $this->define( 'LOGINPRESS_ROOT_FILE', __FILE__ );
69 $this->define( 'LOGINPRESS_VERSION', $this->version );
70 $this->define( 'LOGINPRESS_FEEDBACK_SERVER', 'https://wpbrigade.com/' );
71 }
72
73 /**
74 * Include required core files used in admin and on the frontend.
75 * @version 1.1.7
76 */
77
78 public function includes() {
79
80 include_once( LOGINPRESS_DIR_PATH . 'include/compatibility.php' );
81 include_once( LOGINPRESS_DIR_PATH . 'custom.php' );
82 include_once( LOGINPRESS_DIR_PATH . 'classes/class-loginpress-setup.php' );
83 include_once( LOGINPRESS_DIR_PATH . 'classes/class-loginpress-ajax.php' );
84 // include_once( LOGINPRESS_DIR_PATH . 'classes/class-loginpress-filter-plugin.php' );
85 include_once( LOGINPRESS_DIR_PATH . 'classes/class-loginpress-developer-hooks.php' );
86 include_once( LOGINPRESS_DIR_PATH . 'classes/class-loginpress-notifications.php' );
87 if ( is_multisite() ) {
88 require_once( LOGINPRESS_DIR_PATH . 'include/class-loginpress-theme-template.php' );
89 }
90
91 $loginpress_setting = get_option( 'loginpress_setting' );
92
93 $loginpress_privacy_policy = isset( $loginpress_setting['enable_privacy_policy'] ) ? $loginpress_setting['enable_privacy_policy'] : 'off';
94 if ( 'off' != $loginpress_privacy_policy ) {
95 include_once( LOGINPRESS_DIR_PATH . 'include/privacy-policy.php' );
96 }
97
98 $login_with_email = isset( $loginpress_setting['login_order'] ) ? $loginpress_setting['login_order'] : 'default';
99 if ( 'default' != $login_with_email ) {
100 include_once( LOGINPRESS_DIR_PATH . 'classes/class-loginpress-login-order.php' );
101 new LoginPress_Login_Order();
102 }
103
104 $enable_reg_pass_field = isset( $loginpress_setting['enable_reg_pass_field'] ) ? $loginpress_setting['enable_reg_pass_field'] : 'off';
105 if ( 'off' != $enable_reg_pass_field ) {
106 include_once( LOGINPRESS_DIR_PATH . 'classes/class-loginpress-custom-password.php' );
107 new LoginPresss_Custom_Password();
108 }
109
110 }
111
112 /**
113 * Hook into actions and filters
114 * @since 1.0.0
115 * @version 1.2.2
116 */
117 private function _hooks() {
118
119 add_action( 'admin_menu', array( $this, 'register_options_page' ) );
120 add_action( 'plugins_loaded', array( $this, 'textdomain' ) );
121 add_filter( 'plugin_row_meta', array( $this, '_row_meta'), 10, 2 );
122 add_action( 'admin_enqueue_scripts', array( $this, '_admin_scripts' ) );
123 add_action( 'admin_footer', array( $this, 'add_deactive_modal' ) );
124 add_action( 'plugin_action_links', array( $this, 'loginpress_action_links' ), 10, 2 );
125 add_action( 'admin_init', array( $this, 'redirect_optin' ) );
126 add_filter( 'auth_cookie_expiration', array( $this, '_change_auth_cookie_expiration' ), 10, 3 );
127 //add_filter( 'plugins_api', array( $this, 'get_addon_info_' ) , 100, 3 );
128 if ( is_multisite() ) {
129 add_action( 'admin_init', array( $this, 'redirect_loginpress_edit_page' ) );
130 add_action( 'admin_init', array( $this, 'check_loginpress_page' ) );
131 // Makes sure the plugin is defined before trying to use it
132 if ( ! function_exists( 'is_plugin_active_for_network' ) || ! function_exists( 'is_plugin_active' ) ) {
133 require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
134 if ( is_plugin_active_for_network( 'wordpress-seo/wp-seo.php' ) ) {
135 /**
136 * This filters the ID of the page/post which you want to remove from the sitemap XML.
137 * @since 1.5.14
138 *
139 * @documentation https://developer.yoast.com/features/xml-sitemaps/api/
140 */
141 add_filter( 'wpseo_exclude_from_sitemap_by_post_ids', array( $this, 'loginpress_exclude_from_sitemap' ) );
142 }
143 }
144
145
146 }
147
148 }
149
150 /**
151 * Callback function to exclude LoginPress page from sitemap.
152 *
153 * @return bool Exclude page/s or post/s.
154 * @since 1.5.14
155 * @version 1.6.3
156 */
157 public function loginpress_exclude_from_sitemap() {
158
159 $page = get_page_by_path( 'loginpress' );
160 if ( is_object( $page ) ) {
161 return array( $page->ID );
162 }
163 }
164
165 /**
166 * Redirect to Opt-in page.
167 *
168 * @since 1.0.15
169 */
170 function redirect_optin() {
171 // delete_option( '_loginpress_optin' );
172 /**
173 * Fix the Broken Access Control (BAC) security fix.
174 *
175 * @since 1.6.3
176 */
177 if ( current_user_can( 'manage_options' ) ) {
178 if ( isset( $_POST['loginpress-submit-optout'] ) ) {
179 if ( ! wp_verify_nonce( sanitize_text_field( $_POST['loginpress_submit_optin_nonce'] ), 'loginpress_submit_optin_nonce' ) ) {
180 return;
181 }
182 update_option( '_loginpress_optin', 'no' );
183 $this->_send_data( array(
184 'action' => 'Skip',
185 ) );
186
187 } elseif ( isset( $_POST['loginpress-submit-optin'] ) ) {
188 if ( ! wp_verify_nonce( sanitize_text_field( $_POST['loginpress_submit_optin_nonce'] ), 'loginpress_submit_optin_nonce' ) ) {
189 return;
190 }
191 update_option( '_loginpress_optin', 'yes' );
192 $fields = array(
193 'action' => 'Activate',
194 'track_mailchimp' => 'yes'
195 );
196 $this->_send_data( $fields );
197
198 } elseif ( ! get_option( '_loginpress_optin' ) && isset( $_GET['page'] ) && ( $_GET['page'] === 'loginpress-settings' || $_GET['page'] === 'loginpress' || $_GET['page'] === 'abw' ) ) {
199
200 /**
201 * XSS Attack vector found and fixed.
202 *
203 * @since 1.5.11
204 */
205 $page_redirect = $_GET['page'] === 'loginpress' ? 'loginpress' : 'loginpress-settings';
206 wp_redirect( admin_url('admin.php?page=loginpress-optin&redirect-page=' . $page_redirect) );
207 exit;
208
209 } elseif ( get_option( '_loginpress_optin' ) && ( get_option( '_loginpress_optin' ) == 'yes' ) && isset( $_GET['page'] ) && $_GET['page'] === 'loginpress-optin' ) {
210 wp_redirect( admin_url( 'admin.php?page=loginpress-settings' ) );
211 exit;
212 }
213 }
214 }
215
216
217 /**
218 * Main Instance
219 *
220 * @since 1.0.0
221 * @static
222 * @see loginPress_loader()
223 * @return Main instance
224 */
225 public static function instance() {
226 if ( is_null( self::$_instance ) ) {
227 self::$_instance = new self();
228 }
229 return self::$_instance;
230 }
231
232
233 /**
234 * Load Languages
235 * @since 1.0.0
236 */
237 public function textdomain() {
238
239 $plugin_dir = dirname( plugin_basename( __FILE__ ) ) ;
240 load_plugin_textdomain( 'loginpress', false, $plugin_dir . '/languages/' );
241 }
242
243 /**
244 * Define constant if not already set
245 * @param string $name
246 * @param string|bool $value
247 */
248 private function define( $name, $value ) {
249 if ( ! defined( $name ) ) {
250 define( $name, $value );
251 }
252 }
253
254 /**
255 * Init WPBrigade when WordPress Initialises.
256 */
257 public function init() {
258 // Before init action
259 }
260
261 /**
262 * Create LoginPress Page Template.
263 *
264 * @since 1.1.3
265 */
266 public function check_loginpress_page() {
267
268 // Retrieve the LoginPress admin page option, that was created during the activation process.
269 $option = $this->get_loginpress_page();
270
271 include LOGINPRESS_DIR_PATH . 'include/create-loginpress-page.php';
272 // Retrieve the status of the page, if the option is available.
273 if ( $option ) {
274 $page = get_post( $option );
275 $status = $page->post_status;
276 } else {
277 $status = null;
278 }
279
280 // Check the status of the page. Let's fix it, if the page is missing or in the trash.
281 if ( empty( $status ) || 'trash' === $status ) {
282 new LoginPress_Page_Create();
283 }
284 }
285
286 /**
287 * function for redirect the LoginPress page on editing.
288 *
289 * @since 1.1.3
290 */
291 public function redirect_loginpress_edit_page() {
292 global $pagenow;
293
294 $page = $this->get_loginpress_page();
295
296 if ( ! $page ) {
297 return;
298 }
299
300 $page_url = get_permalink( $page );
301 $page_id = get_post( $page );
302 $page_id = $page->ID;
303
304 // Generate the redirect url.
305 $url = add_query_arg(
306 array(
307 'autofocus[section]' => 'loginpress_panel',
308 'url' => rawurlencode( $page_url ),
309 ),
310 admin_url( 'customize.php' )
311 );
312
313 /* Check current admin page. */
314 if ( $pagenow == 'post.php' && isset( $_GET['post'] ) && $_GET['post'] == $page_id ) {
315 wp_safe_redirect( $url );
316 }
317 }
318
319 /**
320 * Add new page in Apperance to customize Login Page
321 */
322 public function register_options_page() {
323
324 add_submenu_page( 'LoginPress', __( 'Activate', 'loginpress' ), __( 'Activate', 'loginpress' ), 'manage_options', 'loginpress-optin', array( $this, 'render_optin' ) );
325
326 add_theme_page( __( 'LoginPress', 'loginpress' ), __( 'LoginPress', 'loginpress' ), 'manage_options', "abw", '__return_null' );
327 }
328
329
330 /**
331 * Show Opt-in Page.
332 *
333 * @since 1.0.15
334 */
335 function render_optin() {
336 include LOGINPRESS_DIR_PATH . 'include/loginpress-optin-form.php';
337 }
338
339 /**
340 * Wrapper function to send data.
341 * @param [arrays] $args.
342 *
343 * @since 1.0.15
344 * @version 1.0.23
345 */
346 function _send_data( $args ) {
347
348 $cuurent_user = wp_get_current_user();
349 $fields = array(
350 'email' => get_option( 'admin_email' ),
351 'website' => get_site_url(),
352 'action' => '',
353 'reason' => '',
354 'reason_detail' => '',
355 'display_name' => $cuurent_user->display_name,
356 'blog_language' => get_bloginfo( 'language' ),
357 'wordpress_version' => get_bloginfo( 'version' ),
358 'php_version' => PHP_VERSION,
359 'plugin_version' => LOGINPRESS_VERSION,
360 'plugin_name' => 'LoginPress Free',
361 );
362
363 $args = array_merge( $fields, $args );
364 $response = wp_remote_post( LOGINPRESS_FEEDBACK_SERVER, array(
365 'method' => 'POST',
366 'timeout' => 5,
367 'httpversion' => '1.0',
368 'blocking' => true,
369 'headers' => array(),
370 'body' => $args,
371 ) );
372
373 // echo '<pre>'; print_r( $args ); echo '</pre>';
374
375 }
376
377 /**
378 * Session Expiration
379 *
380 * @since 1.0.18
381 * @version 1.3.2
382 */
383 function _change_auth_cookie_expiration( $expiration, $user_id, $remember ) {
384
385 $loginpress_setting = get_option( 'loginpress_setting' );
386 $_expiration = isset( $loginpress_setting['session_expiration'] ) ? intval( $loginpress_setting['session_expiration'] ) : '';
387
388 /**
389 * return the WordPress default $expiration time if LoginPress Session Expiration time set 0 or empty.
390 * @since 1.0.18
391 */
392 if ( empty( $_expiration ) || '0' == $_expiration ) {
393 return $expiration;
394 }
395
396 /**
397 * $filter_role Use filter `loginpress_exclude_role_session` for return the role.
398 * By default it's false and $expiration time will apply on all user.
399 *
400 * @return string/array role name.
401 * @since 1.3.2
402 */
403 $filter_role = apply_filters( 'loginpress_exclude_role_session', false );
404
405 if ( $filter_role ) {
406 $user_roles = get_userdata( $user_id )->roles;
407
408 // if $filter_role is array, return the default $expiration for each defined role.
409 if ( is_array( $filter_role ) ) {
410 foreach ( $filter_role as $role ) {
411 if ( in_array( $role, $user_roles ) ) {
412 return $expiration;
413 }
414 }
415 } else if ( in_array( $filter_role, $user_roles ) ) {
416 return $expiration;
417 }
418 }
419
420 // Convert Duration (minutes) of the expiration period in seconds.
421 $expiration = $_expiration * 60;
422
423 return $expiration;
424 }
425
426 /**
427 * Load JS or CSS files at admin side and enqueue them
428 * @param string tell you the Page ID
429 * @return void
430 */
431 function _admin_scripts( $hook ) {
432
433 if( $hook == 'toplevel_page_loginpress-settings' || $hook == 'loginpress_page_loginpress-addons' || $hook == 'loginpress_page_loginpress-help' || $hook == 'loginpress_page_loginpress-import-export' || $hook == 'loginpress_page_loginpress-license' ) {
434
435 wp_enqueue_style( 'loginpress_stlye', plugins_url( 'css/style.css', __FILE__ ), array(), LOGINPRESS_VERSION );
436 wp_enqueue_script( 'loginpress_js', plugins_url( 'js/admin-custom.js', __FILE__ ), array(), LOGINPRESS_VERSION );
437
438 // Array for localize.
439 $loginpress_localize = array(
440 'plugin_url' => plugins_url(),
441 );
442
443 wp_localize_script( 'loginpress_js', 'loginpress_script', $loginpress_localize );
444 }
445
446 }
447
448 /**
449 * Add rating icon on plugins page.
450 *
451 * @since 1.0.9
452 * @version 1.1.22
453 */
454
455 public function _row_meta( $meta_fields, $file ) {
456
457 if ( $file != 'loginpress/loginpress.php' ) {
458
459 return $meta_fields;
460 }
461
462 echo "<style>.loginpress-rate-stars { display: inline-block; color: #ffb900; position: relative; top: 3px; }.loginpress-rate-stars svg{ fill:#ffb900; } .loginpress-rate-stars svg:hover{ fill:#ffb900 } .loginpress-rate-stars svg:hover ~ svg{ fill:none; } </style>";
463
464 $plugin_rate = "https://wordpress.org/support/plugin/loginpress/reviews/?rate=5#new-post";
465 $plugin_filter = "https://wordpress.org/support/plugin/loginpress/reviews/?filter=5";
466 $svg_xmlns = "https://www.w3.org/2000/svg";
467 $svg_icon = '';
468
469 for ( $i = 0; $i < 5; $i++ ) {
470 $svg_icon .= "<svg xmlns='" . esc_url( $svg_xmlns ) . "' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-star'><polygon points='12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2'/></svg>";
471 }
472
473 // Set icon for thumbsup.
474 $meta_fields[] = '<a href="' . esc_url( $plugin_filter ) . '" target="_blank"><span class="dashicons dashicons-thumbs-up"></span>' . __( 'Vote!', 'loginpress' ) . '</a>';
475
476 // Set icon for 5-star reviews. v1.1.22
477 $meta_fields[] = "<a href='" . esc_url( $plugin_rate ) . "' target='_blank' title='" . esc_html__( 'Rate', 'loginpress' ) . "'><i class='loginpress-rate-stars'>" . $svg_icon . "</i></a>";
478
479 return $meta_fields;
480 }
481
482 /**
483 * Add deactivate modal layout.
484 */
485 function add_deactive_modal() {
486 global $pagenow;
487
488 if ( 'plugins.php' !== $pagenow ) {
489 return;
490 }
491
492 include LOGINPRESS_DIR_PATH . 'include/deactivate_modal.php';
493 include LOGINPRESS_DIR_PATH . 'include/loginpress-optout-form.php';
494 }
495
496 /**
497 * Plugin activation
498 *
499 * @since 1.0.15
500 * @version 1.0.22
501 */
502 static function plugin_activation() {
503
504 $loginpress_key = get_option( 'loginpress_customization' );
505 $loginpress_setting = get_option( 'loginpress_setting' );
506
507 // Create a key 'loginpress_customization' with empty array.
508 if ( ! $loginpress_key ) {
509 update_option( 'loginpress_customization', array() );
510 }
511
512 // Create a key 'loginpress_setting' with empty array.
513 if ( ! $loginpress_setting ) {
514 update_option( 'loginpress_setting', array() );
515 }
516 }
517
518 static function plugin_uninstallation() {
519
520 $email = get_option( 'admin_email' );
521
522 $fields = array(
523 'email' => $email,
524 'website' => get_site_url(),
525 'action' => 'Uninstall',
526 'reason' => '',
527 'reason_detail' => '',
528 'blog_language' => get_bloginfo( 'language' ),
529 'wordpress_version' => get_bloginfo( 'version' ),
530 'php_version' => PHP_VERSION,
531 'plugin_version' => LOGINPRESS_VERSION,
532 'plugin_name' => 'LoginPress Free',
533 );
534
535 $response = wp_remote_post( LOGINPRESS_FEEDBACK_SERVER, array(
536 'method' => 'POST',
537 'timeout' => 5,
538 'httpversion' => '1.0',
539 'blocking' => false,
540 'headers' => array(),
541 'body' => $fields,
542 ) );
543
544 }
545
546
547
548 /**
549 * Pull the LoginPress page from options.
550 *
551 * @access public
552 * @since 1.1.3
553 * @version 1.1.7
554 */
555 public function get_loginpress_page() {
556
557 $loginpress_setting = get_option( 'loginpress_setting', array() );
558 if ( ! is_array( $loginpress_setting ) && empty( $loginpress_setting ) ) {
559 $loginpress_setting = array();
560 }
561 $page = array_key_exists( 'loginpress_page', $loginpress_setting ) ? get_post( $loginpress_setting['loginpress_page'] ) : false;
562
563 return $page;
564 }
565
566
567 /**
568 * Add a link to the settings page to the plugins list
569 *
570 * @since 1.0.11
571 */
572 public function loginpress_action_links( $links, $file ) {
573
574 static $this_plugin;
575
576 if ( empty( $this_plugin ) ) {
577
578 $this_plugin = 'loginpress/loginpress.php';
579 }
580
581 if ( $file == $this_plugin ) {
582
583 $settings_link = sprintf( esc_html__( '%1$s Settings %2$s | %3$s Customize %4$s', 'loginpress' ), '<a href="' . admin_url( 'admin.php?page=loginpress-settings' ) . '">', '</a>', '<a href="' . admin_url( 'admin.php?page=loginpress' ) . '">', '</a>' );
584
585
586 if( 'yes' == get_option( '_loginpress_optin' ) ){
587 $settings_link .= sprintf( esc_html__( ' | %1$s Opt Out %2$s ', 'loginpress'), '<a class="opt-out" href="' . admin_url( 'admin.php?page=loginpress-settings' ) . '">', '</a>' );
588 } else {
589 $settings_link .= sprintf( esc_html__( ' | %1$s Opt In %2$s ', 'loginpress'), '<a href="' . admin_url( 'admin.php?page=loginpress-optin&redirect-page=' .'loginpress-settings' ) . '">', '</a>' );
590 }
591
592 array_unshift( $links, $settings_link );
593
594 if ( ! has_action( 'loginpress_pro_add_template' ) ) :
595 $pro_link = sprintf( esc_html__( '%1$s %3$s Upgrade Pro %4$s %2$s', 'loginpress' ), '<a href="https://wpbrigade.com/wordpress/plugins/loginpress-pro/?utm_source=loginpress-lite&utm_medium=plugin-action-link&utm_campaign=pro-upgrade" target="_blank">', '</a>', '<span class="loginpress-dasboard-pro-link">', '</span>' );
596 array_push( $links, $pro_link );
597 endif;
598 }
599
600 return $links;
601 }
602
603 // function get_addon_info_( $api, $action, $args ) {
604
605 // if ( $action == 'plugin_information' && empty( $api ) && ( ! empty( $_GET['lgp'] ) ) ) {
606
607 // $raw_response = wp_remote_post( 'https://wpbrigade.com/loginpress-api/search.php', array(
608 // 'body' => array(
609 // 'slug' => $args->slug
610 // ) )
611 // );
612
613 // if ( is_wp_error( $raw_response ) || $raw_response['response']['code'] != 200 ) {
614 // return false;
615 // }
616
617 // $plugin = unserialize( $raw_response['body'] );
618
619 // $api = new stdClass();
620 // $api->name = $plugin['title'];
621 // $api->version = $plugin['version'];
622 // $api->download_link = $plugin['download_url'];
623 // $api->tested = '10.0';
624
625 // }
626
627 // return $api;
628 // }
629 } // End Of Class.
630 endif;
631
632
633 /**
634 * Returns the main instance of WP to prevent the need to use globals.
635 *
636 * @since 1.0.0
637 * @return LoginPress
638 */
639 function loginPress_loader() {
640 return LoginPress::instance();
641 }
642
643 // Call the function
644 loginPress_loader();
645
646 /**
647 * Create the Object of Custom Login Entites and Settings.
648 *
649 * @since 1.0.0
650 */
651 new LoginPress_Entities();
652 new LoginPress_Settings();
653
654 /**
655 * Create the Object of Remote Notification.
656 *
657 * @since 1.0.9
658 */
659 if (!class_exists('TAV_Remote_Notification_Client')) {
660 require( LOGINPRESS_ROOT_PATH . 'include/class-remote-notification-client.php' );
661 }
662 $notification = new TAV_Remote_Notification_Client( 125, '16765c0902705d62', 'https://wpbrigade.com?post_type=notification' );
663
664 register_activation_hook( __FILE__, array( 'LoginPress', 'plugin_activation' ) );
665 register_uninstall_hook( __FILE__, array( 'LoginPress', 'plugin_uninstallation' ) );
666