PluginProbe
LoginPress | wp-login Custom Login Page Customizer / 3.0.4
LoginPress | wp-login Custom Login Page Customizer v3.0.4
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 3.0.4, at loginpress.php

670 lines 20.6 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
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: 3.0.4
7 * Author: LoginPress
8 * Author URI: https://loginpress.pro/?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 = '3.0.4';
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 /**
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 * Define LoginPress Constants
60 */
61 private function define_constants() {
62
63 $this->define( 'LOGINPRESS_PLUGIN_BASENAME', plugin_basename( __FILE__ ) );
64 $this->define( 'LOGINPRESS_DIR_PATH', plugin_dir_path( __FILE__ ) );
65 $this->define( 'LOGINPRESS_DIR_URL', plugin_dir_url( __FILE__ ) );
66 $this->define( 'LOGINPRESS_ROOT_PATH', dirname( __FILE__ ) . '/' );
67 $this->define( 'LOGINPRESS_ROOT_FILE', __FILE__ );
68 $this->define( 'LOGINPRESS_VERSION', $this->version );
69 $this->define( 'LOGINPRESS_FEEDBACK_SERVER', 'https://wpbrigade.com/' );
70 }
71
72 /**
73 * Include required core files used in admin and on the frontend.
74 *
75 * @since 1.0.0
76 * @version 3.0.0
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
85 // include_once( LOGINPRESS_DIR_PATH . 'classes/class-loginpress-filter-plugin.php' );
86 include_once( LOGINPRESS_DIR_PATH . 'classes/class-loginpress-developer-hooks.php' );
87 include_once( LOGINPRESS_DIR_PATH . 'classes/class-loginpress-notifications.php' );
88 if ( is_multisite() ) {
89 require_once( LOGINPRESS_DIR_PATH . 'include/class-loginpress-theme-template.php' );
90 }
91
92 $loginpress_setting = get_option( 'loginpress_setting' );
93
94 $loginpress_privacy_policy = isset( $loginpress_setting['enable_privacy_policy'] ) ? $loginpress_setting['enable_privacy_policy'] : 'off';
95 if ( 'off' != $loginpress_privacy_policy ) {
96 include_once( LOGINPRESS_DIR_PATH . 'include/privacy-policy.php' );
97 }
98
99 $login_with_email = isset( $loginpress_setting['login_order'] ) ? $loginpress_setting['login_order'] : '';
100 if ( 'default' != $login_with_email ) {
101 include_once( LOGINPRESS_DIR_PATH . 'classes/class-loginpress-login-order.php' );
102 new LoginPress_Login_Order();
103 }
104
105 $enable_reg_pass_field = isset( $loginpress_setting['enable_reg_pass_field'] ) ? $loginpress_setting['enable_reg_pass_field'] : 'off';
106 if ( 'off' != $enable_reg_pass_field ) {
107 include_once( LOGINPRESS_DIR_PATH . 'classes/class-loginpress-custom-password.php' );
108 new LoginPress_Custom_Password();
109 }
110 $loginpress_password_reset_time_limit = isset( $loginpress_setting['loginpress_password_reset_time_limit'] ) ? $loginpress_setting['loginpress_password_reset_time_limit'] : 'off';
111 if ( 'off' != $loginpress_password_reset_time_limit ) {
112 include_once( LOGINPRESS_DIR_PATH . 'classes/class-loginpress-force-reset-pass.php' );
113 new LoginPress_Force_Password_Reset();
114 }
115
116 }
117
118 /**
119 * Hook into actions and filters
120 * @since 1.0.0
121 * @version 3.0.0
122 */
123 private function _hooks() {
124
125 add_action( 'admin_menu', array( $this, 'register_options_page' ) );
126 add_action( 'plugins_loaded', array( $this, 'textdomain' ) );
127 add_filter( 'plugin_row_meta', array( $this, '_row_meta'), 10, 2 );
128 add_action( 'admin_enqueue_scripts', array( $this, '_admin_scripts' ) );
129 add_action( 'admin_footer', array( $this, 'add_deactivate_modal' ) );
130 add_action( 'plugin_action_links', array( $this, 'loginpress_action_links' ), 10, 2 );
131 add_action( 'admin_init', array( $this, 'redirect_optin' ) );
132 add_filter( 'auth_cookie_expiration', array( $this, '_change_auth_cookie_expiration' ), 10, 3 );
133 //add_filter( 'plugins_api', array( $this, 'get_addon_info_' ) , 100, 3 );
134 if ( is_multisite() ) {
135 add_action( 'admin_init', array( $this, 'redirect_loginpress_edit_page' ) );
136 add_action( 'admin_init', array( $this, 'check_loginpress_page' ) );
137 // Makes sure the plugin is defined before trying to use it
138 if ( ! function_exists( 'is_plugin_active_for_network' ) || ! function_exists( 'is_plugin_active' ) ) {
139 require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
140 if ( is_plugin_active_for_network( 'wordpress-seo/wp-seo.php' ) ) {
141 /**
142 * This filters the ID of the page/post which you want to remove from the sitemap XML.
143 * @since 1.5.14
144 *
145 * @documentation https://developer.yoast.com/features/xml-sitemaps/api/
146 */
147 add_filter( 'wpseo_exclude_from_sitemap_by_post_ids', array( $this, 'loginpress_exclude_from_sitemap' ) );
148 }
149 }
150 }
151 }
152
153 /**
154 * Callback function to exclude LoginPress page from sitemap.
155 *
156 * @return bool Exclude page/s or post/s.
157 * @since 1.5.14
158 * @version 1.6.3
159 */
160 public function loginpress_exclude_from_sitemap() {
161
162 $page = get_page_by_path( 'loginpress' );
163 if ( is_object( $page ) ) {
164 return array( $page->ID );
165 }
166 }
167
168 /**
169 * Redirect to Optin page.
170 *
171 * @since 1.0.15
172 */
173 function redirect_optin() {
174
175 /**
176 * Fix the Broken Access Control (BAC) security fix.
177 *
178 * @since 1.6.3
179 */
180 if ( current_user_can( 'manage_options' ) ) {
181 if ( isset( $_POST['loginpress-submit-optout'] ) ) {
182 if ( ! wp_verify_nonce( sanitize_text_field( $_POST['loginpress_submit_optin_nonce'] ), 'loginpress_submit_optin_nonce' ) ) {
183 return;
184 }
185 update_option( '_loginpress_optin', 'no' );
186 $this->_send_data( array(
187 'action' => 'Skip',
188 ) );
189
190 } elseif ( isset( $_POST['loginpress-submit-optin'] ) ) {
191 if ( ! wp_verify_nonce( sanitize_text_field( $_POST['loginpress_submit_optin_nonce'] ), 'loginpress_submit_optin_nonce' ) ) {
192 return;
193 }
194 update_option( '_loginpress_optin', 'yes' );
195 $fields = array(
196 'action' => 'Activate',
197 'track_mailchimp' => 'yes'
198 );
199 $this->_send_data( $fields );
200
201 } elseif ( ! get_option( '_loginpress_optin' ) && isset( $_GET['page'] ) && ( $_GET['page'] === 'loginpress-settings' || $_GET['page'] === 'loginpress' || $_GET['page'] === 'abw' ) ) {
202
203 /**
204 * XSS Attack vector found and fixed.
205 *
206 * @since 1.5.11
207 */
208 $page_redirect = $_GET['page'] === 'loginpress' ? 'loginpress' : 'loginpress-settings';
209 wp_redirect( admin_url('admin.php?page=loginpress-optin&redirect-page=' . $page_redirect) );
210 exit;
211
212 } elseif ( get_option( '_loginpress_optin' ) && ( get_option( '_loginpress_optin' ) == 'yes' ) && isset( $_GET['page'] ) && $_GET['page'] === 'loginpress-optin' ) {
213 wp_redirect( admin_url( 'admin.php?page=loginpress-settings' ) );
214 exit;
215 }
216 }
217 }
218
219 /**
220 * Main Instance
221 *
222 * @since 1.0.0
223 * @static
224 * @see loginPress_loader()
225 * @return Main instance
226 */
227 public static function instance() {
228 if ( is_null( self::$_instance ) ) {
229 self::$_instance = new self();
230 }
231 return self::$_instance;
232 }
233
234 /**
235 * Load Languages
236 * @since 1.0.0
237 */
238 public function textdomain() {
239
240 $plugin_dir = dirname( plugin_basename( __FILE__ ) ) ;
241 load_plugin_textdomain( 'loginpress', false, $plugin_dir . '/languages/' );
242 }
243
244 /**
245 * Define constant if not already set
246 * @param string $name
247 * @param string|bool $value
248 */
249 private function define( $name, $value ) {
250 if ( ! defined( $name ) ) {
251 define( $name, $value );
252 }
253 }
254
255 /**
256 * Init WPBrigade when WordPress Initializes.
257 */
258 public function init() {
259 // Before init action
260 }
261
262 /**
263 * Create LoginPress Page Template.
264 *
265 * @since 1.1.3
266 */
267 public function check_loginpress_page() {
268
269 // Retrieve the LoginPress admin page option, that was created during the activation process.
270 $option = $this->get_loginpress_page();
271
272 include LOGINPRESS_DIR_PATH . 'include/create-loginpress-page.php';
273 // Retrieve the status of the page, if the option is available.
274 if ( $option ) {
275 $page = get_post( $option );
276 $status = $page->post_status;
277 } else {
278 $status = null;
279 }
280
281 // Check the status of the page. Let's fix it, if the page is missing or in the trash.
282 if ( empty( $status ) || 'trash' === $status ) {
283 new LoginPress_Page_Create();
284 }
285 }
286
287 /**
288 * function for redirect the LoginPress page on editing.
289 *
290 * @since 1.1.3
291 */
292 public function redirect_loginpress_edit_page() {
293 global $pagenow;
294
295 $page = $this->get_loginpress_page();
296
297 if ( ! $page ) {
298 return;
299 }
300
301 $page_url = get_permalink( $page );
302 $page_id = get_post( $page );
303 $page_id = $page->ID;
304
305 // Generate the redirect url.
306 $url = add_query_arg(
307 array(
308 'autofocus[section]' => 'loginpress_panel',
309 'url' => rawurlencode( $page_url ),
310 ),
311 admin_url( 'customize.php' )
312 );
313
314 /* Check current admin page. */
315 if ( $pagenow == 'post.php' && isset( $_GET['post'] ) && $_GET['post'] == $page_id ) {
316 wp_safe_redirect( $url );
317 }
318 }
319
320 /**
321 * Add new page in Appearance to customize Login Page.
322 * @version 3.0.0
323 */
324 public function register_options_page() {
325
326 add_submenu_page( 'LoginPress', __( 'Activate', 'loginpress' ), __( 'Activate', 'loginpress' ), 'manage_options', 'loginpress-optin', array( $this, 'render_optin' ) );
327
328 add_theme_page( __( 'LoginPress', 'loginpress' ), __( 'LoginPress', 'loginpress' ), 'manage_options', "abw", '__return_null' );
329 }
330
331
332 /**
333 * Show Opt-in Page.
334 *
335 * @since 1.0.15
336 */
337 function render_optin() {
338 include LOGINPRESS_DIR_PATH . 'include/loginpress-optin-form.php';
339 }
340
341 /**
342 * Wrapper function to send data.
343 * @param [arrays] $args.
344 *
345 * @since 1.0.15
346 * @version 1.0.23
347 */
348 function _send_data( $args ) {
349
350 $current_user = wp_get_current_user();
351 $fields = array(
352 'email' => get_option( 'admin_email' ),
353 'website' => get_site_url(),
354 'action' => '',
355 'reason' => '',
356 'reason_detail' => '',
357 'display_name' => $current_user->display_name,
358 'blog_language' => get_bloginfo( 'language' ),
359 'wordpress_version' => get_bloginfo( 'version' ),
360 'php_version' => PHP_VERSION,
361 'plugin_version' => LOGINPRESS_VERSION,
362 'plugin_name' => 'LoginPress Free',
363 );
364
365 $args = array_merge( $fields, $args );
366 $response = wp_remote_post( LOGINPRESS_FEEDBACK_SERVER, array(
367 'method' => 'POST',
368 'timeout' => 5,
369 'httpversion' => '1.0',
370 'blocking' => true,
371 'headers' => array(),
372 'body' => $args,
373 ) );
374 // echo '<pre>'; print_r( $args ); echo '</pre>';
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 * @version 3.0.0
431 */
432 function _admin_scripts( $hook ) {
433
434 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' || $hook == 'admin_page_loginpress-optin' ) {
435
436 wp_enqueue_style( 'loginpress_style', plugins_url( 'css/style.css', __FILE__ ), array(), LOGINPRESS_VERSION );
437 wp_enqueue_script( 'loginpress_js', plugins_url( 'js/admin-custom.js', __FILE__ ), array(), LOGINPRESS_VERSION );
438
439 // Array for localize.
440 $loginpress_localize = array(
441 'plugin_url' => plugins_url(),
442 'localize_translations' => array(
443 _x( 'Name', 'Login Redirect Roles', 'loginpress' ),
444 ),
445 'help_nonce' => wp_create_nonce( 'loginpress-log-nonce' ),
446
447 );
448
449 wp_localize_script( 'loginpress_js', 'loginpress_script', $loginpress_localize );
450 }
451
452 }
453
454 /**
455 * Add rating icon on plugins page.
456 *
457 * @since 1.0.9
458 * @version 1.1.22
459 */
460
461 public function _row_meta( $meta_fields, $file ) {
462
463 if ( $file != 'loginpress/loginpress.php' ) {
464 return $meta_fields;
465 }
466
467 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>";
468
469 $plugin_rate = "https://wordpress.org/support/plugin/loginpress/reviews/?rate=5#rate-response";
470 $plugin_filter = "https://wordpress.org/support/plugin/loginpress/reviews/?filter=5";
471 $svg_xmlns = "https://www.w3.org/2000/svg";
472 $svg_icon = '';
473
474 for ( $i = 0; $i < 5; $i++ ) {
475 $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>";
476 }
477
478 // Set icon for thumbs up.
479 $meta_fields[] = '<a href="' . esc_url( $plugin_filter ) . '" target="_blank"><span class="dashicons dashicons-thumbs-up"></span>' . __( 'Vote!', 'loginpress' ) . '</a>';
480
481 // Set icon for 5-star reviews. v1.1.22
482 $meta_fields[] = "<a href='" . esc_url( $plugin_rate ) . "' target='_blank' title='" . esc_html__( 'Rate', 'loginpress' ) . "'><i class='loginpress-rate-stars'>" . $svg_icon . "</i></a>";
483
484 return $meta_fields;
485 }
486
487 /**
488 * Add deactivate modal layout.
489 */
490 function add_deactivate_modal() {
491 global $pagenow;
492
493 if ( 'plugins.php' !== $pagenow ) {
494 return;
495 }
496
497 include LOGINPRESS_DIR_PATH . 'include/deactivate_modal.php';
498 include LOGINPRESS_DIR_PATH . 'include/loginpress-optout-form.php';
499 }
500
501 /**
502 * Plugin activation
503 *
504 * @since 1.0.15
505 * @version 1.0.22
506 */
507 static function plugin_activation() {
508
509 $loginpress_key = get_option( 'loginpress_customization' );
510 $loginpress_setting = get_option( 'loginpress_setting' );
511
512 // Create a key 'loginpress_customization' with empty array.
513 if ( ! $loginpress_key ) {
514 update_option( 'loginpress_customization', array() );
515 }
516
517 // Create a key 'loginpress_setting' with empty array.
518 if ( ! $loginpress_setting ) {
519 update_option( 'loginpress_setting', array() );
520 }
521 }
522
523 static function plugin_uninstallation() {
524
525 $email = get_option( 'admin_email' );
526
527 $fields = array(
528 'email' => $email,
529 'website' => get_site_url(),
530 'action' => 'Uninstall',
531 'reason' => '',
532 'reason_detail' => '',
533 'blog_language' => get_bloginfo( 'language' ),
534 'wordpress_version' => get_bloginfo( 'version' ),
535 'php_version' => PHP_VERSION,
536 'plugin_version' => LOGINPRESS_VERSION,
537 'plugin_name' => 'LoginPress Free',
538 );
539
540 $response = wp_remote_post( LOGINPRESS_FEEDBACK_SERVER, array(
541 'method' => 'POST',
542 'timeout' => 5,
543 'httpversion' => '1.0',
544 'blocking' => false,
545 'headers' => array(),
546 'body' => $fields,
547 ) );
548
549 }
550
551
552
553 /**
554 * Pull the LoginPress page from options.
555 *
556 * @access public
557 * @since 1.1.3
558 * @version 1.1.7
559 */
560 public function get_loginpress_page() {
561
562 $loginpress_setting = get_option( 'loginpress_setting', array() );
563 if ( ! is_array( $loginpress_setting ) && empty( $loginpress_setting ) ) {
564 $loginpress_setting = array();
565 }
566 $page = array_key_exists( 'loginpress_page', $loginpress_setting ) ? get_post( $loginpress_setting['loginpress_page'] ) : false;
567
568 return $page;
569 }
570
571
572 /**
573 * Add a link to the settings page to the plugins list
574 *
575 * @since 1.0.11
576 * @version 3.0.0
577 */
578 public function loginpress_action_links( $links, $file ) {
579
580 static $this_plugin;
581
582 if ( empty( $this_plugin ) ) {
583 $this_plugin = 'loginpress/loginpress.php';
584 }
585
586 if ( $file == $this_plugin ) {
587
588 $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>' );
589
590 if( 'yes' == get_option( '_loginpress_optin' ) ){
591 $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>' );
592 } else {
593 $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>' );
594 }
595
596 array_unshift( $links, $settings_link );
597
598 if ( ! has_action( 'loginpress_pro_add_template' ) ) {
599 $pro_link = sprintf( esc_html__( '%1$s %3$s Upgrade Pro %4$s %2$s', 'loginpress' ), '<a href="https://loginpress.pro/pricing/?utm_source=loginpress-lite&utm_medium=plugin-action-link&utm_campaign=pro-upgrade" target="_blank">', '</a>', '<span class="loginpress-dashboard-pro-link">', '</span>' );
600 array_push( $links, $pro_link );
601 }
602 }
603
604 return $links;
605 }
606
607 // function get_addon_info_( $api, $action, $args ) {
608
609 // if ( $action == 'plugin_information' && empty( $api ) && ( ! empty( $_GET['lgp'] ) ) ) {
610
611 // $raw_response = wp_remote_post( 'https://wpbrigade.com/loginpress-api/search.php', array(
612 // 'body' => array(
613 // 'slug' => $args->slug
614 // ) )
615 // );
616
617 // if ( is_wp_error( $raw_response ) || $raw_response['response']['code'] != 200 ) {
618 // return false;
619 // }
620
621 // $plugin = unserialize( $raw_response['body'] );
622
623 // $api = new stdClass();
624 // $api->name = $plugin['title'];
625 // $api->version = $plugin['version'];
626 // $api->download_link = $plugin['download_url'];
627 // $api->tested = '10.0';
628
629 // }
630
631 // return $api;
632 // }
633 } // End Of Class.
634 endif;
635
636
637 /**
638 * Returns the main instance of WP to prevent the need to use globals.
639 *
640 * @since 1.0.0
641 * @return LoginPress
642 */
643 function loginPress_loader() {
644 return LoginPress::instance();
645 }
646
647 // Call the function
648 loginPress_loader();
649
650 /**
651 * Create the Object of Custom Login Entities and Settings.
652 *
653 * @since 1.0.0
654 */
655 new LoginPress_Entities();
656 new LoginPress_Settings();
657
658 /**
659 * Create the Object of Remote Notification.
660 *
661 * @since 1.0.9
662 */
663 if ( ! class_exists( 'TAV_Remote_Notification_Client' ) ) {
664 require( LOGINPRESS_ROOT_PATH . 'include/class-remote-notification-client.php' );
665 }
666 $notification = new TAV_Remote_Notification_Client( 125, '16765c0902705d62', 'https://wpbrigade.com?post_type=notification' );
667
668 register_activation_hook( __FILE__, array( 'LoginPress', 'plugin_activation' ) );
669 register_uninstall_hook( __FILE__, array( 'LoginPress', 'plugin_uninstallation' ) );
670