PluginProbe ʕ •ᴥ•ʔ
Hustle – Email Marketing, Lead Generation, Optins, Popups / 7.3.7
Hustle – Email Marketing, Lead Generation, Optins, Popups v7.3.7
7.8.13 7.8.13.1 trunk 3.0 3.1 3.1.1 3.1.2 3.1.3 3.1.4 4.3.2 4.4.4 4.4.5 4.4.5.1 4.4.5.4 4.6 4.6.1.1 4.6.1.4 4.7.0.2 4.7.0.3 4.7.0.7 4.7.0.9 4.7.1.0 4.7.1.1 4.8.0.0 5.0.0 5.0.1 5.0.1.1 5.0.1.2 5.1 5.1.1 5.1.2 5.1.3 5.1.3.1 5.1.3.2 5.1.4 5.1.5 6.0 6.0.1 6.0.2 6.0.3 6.0.4.2 6.0.5 6.0.6.1 6.0.7 6.0.8.1 6.0.9 7.0.0.1 7.0.2 7.0.3 7.0.4 7.1.0 7.1.1 7.2.0 7.2.1 7.3.0 7.3.1 7.3.3 7.3.5 7.3.6 7.3.7 7.4.0 7.4.1 7.4.11 7.4.13 7.4.13.1 7.4.2 7.4.3 7.4.4 7.4.5 7.4.5.1 7.4.5.2 7.4.6 7.4.7 7.5.0 7.6.0 7.6.1 7.6.3 7.6.4 7.6.6 7.7.0 7.7.1 7.8.0 7.8.1 7.8.10 7.8.10.1 7.8.10.2 7.8.11 7.8.12 7.8.12.1 7.8.2 7.8.3 7.8.4 7.8.5 7.8.6 7.8.7 7.8.8 7.8.9 7.8.9.1 7.8.9.2 7.8.9.3
wordpress-popup / inc / opt-in-wpmudev-api.php
wordpress-popup / inc Last commit date
display-conditions 5 years ago front 5 years ago helpers 5 years ago metas 5 years ago palettes 5 years ago provider 5 years ago providers 5 years ago templates 5 years ago update 5 years ago class-hustle-admin-page-abstract.php 5 years ago class-hustle-condition-factory.php 6 years ago class-hustle-dashboard-admin.php 5 years ago class-hustle-data.php 5 years ago class-hustle-db.php 6 years ago class-hustle-module-admin.php 5 years ago class-hustle-module-collection.php 5 years ago class-hustle-module-decorator.php 5 years ago class-hustle-module-page-abstract.php 5 years ago class-hustle-notifications.php 5 years ago class-hustle-settings-admin.php 5 years ago class-hustle-upsell-page.php 5 years ago class-hustle-wp-dashboard-page.php 5 years ago hustle-collection.php 6 years ago hustle-deletion.php 5 years ago hustle-embedded-admin.php 6 years ago hustle-entries-admin.php 5 years ago hustle-entry-model.php 5 years ago hustle-general-data-protection.php 6 years ago hustle-init.php 5 years ago hustle-mail.php 5 years ago hustle-meta.php 5 years ago hustle-migration.php 5 years ago hustle-model.php 5 years ago hustle-module-model.php 5 years ago hustle-module-widget-legacy.php 5 years ago hustle-module-widget.php 5 years ago hustle-modules-common-admin-ajax.php 5 years ago hustle-popup-admin.php 6 years ago hustle-providers-admin.php 5 years ago hustle-providers.php 6 years ago hustle-settings-admin-ajax.php 5 years ago hustle-settings-page.php 5 years ago hustle-slidein-admin.php 6 years ago hustle-sshare-admin.php 5 years ago hustle-sshare-model.php 5 years ago hustle-tracking-model.php 5 years ago opt-in-geo.php 5 years ago opt-in-utils.php 5 years ago opt-in-wpmudev-api.php 6 years ago
opt-in-wpmudev-api.php
99 lines
1 <?php
2
3 class Opt_In_WPMUDEV_API {
4 const DOMAIN = 'https://premium.wpmudev.org';
5 const REDIRECT_URI = 'https://premium.wpmudev.org/api/hustle/v1/provider';
6
7 /**
8 * @var string
9 */
10 private $nonce_option_name = 'hustle_custom_nonce';
11
12 /**
13 * Helper function to generate unique none changeable nonce.
14 *
15 * @return string The unique nonce value.
16 */
17 public function get_nonce_value() {
18 $nonce = is_multisite() ? get_option( $this->nonce_option_name ) : get_option( $this->nonce_option_name );
19
20 if ( empty( $nonce ) ) {
21 /**
22 * Generate the nonce value only once to avoid error response
23 * when retrieving access token.
24 */
25 $nonce = wp_generate_password( 40, false, false );
26
27 if ( is_multisite() ) {
28 update_option( $this->nonce_option_name, $nonce );
29 } else {
30 update_option( $this->nonce_option_name, $nonce ); }
31 }
32
33 return $nonce;
34 }
35
36 /**
37 * Helper function to validate nonce value.
38 *
39 * @param string $nonce
40 *
41 * @return bool
42 */
43 public function verify_nonce( $nonce ) {
44 return $nonce === $this->get_nonce_value();
45 }
46
47 public function _get_redirect_uri( $provider, $action, $params = array(), $migration = 0 ) {
48 $params = wp_parse_args(
49 $params,
50 array(
51 'action' => $action,
52 'provider' => $provider,
53 'wpnonce' => $this->get_nonce_value(),
54 'migrate' => true === $migration ? 1 : 0,
55 'redirect' => site_url( '/' ),
56 )
57 );
58
59 return add_query_arg( $params, self::REDIRECT_URI );
60 }
61
62 /**
63 * Validates request callback from WPMU DEV
64 *
65 * @return bool
66 */
67 public function validate_callback_request( $provider ) {
68 $wpnonce = filter_input( INPUT_GET, 'wpnonce', FILTER_SANITIZE_STRING );
69 $domain = filter_input( INPUT_GET, 'domain', FILTER_VALIDATE_URL );
70 $provider_input = filter_input( INPUT_GET, 'provider' );
71
72 return ! empty( $wpnonce ) && $this->verify_nonce( $wpnonce )
73 && self::DOMAIN === $domain && $provider === $provider_input;
74 }
75
76 /**
77 * Print error page on failed integration.
78 *
79 * @param string $message
80 * @param string $retry_url
81 * @param string $cancel_url
82 */
83 public function wp_die( $message, $retry_url = '', $cancel_url = '' ) {
84 //phpcs:ignore
85 $html = sprintf( '<p><img src="%s" /></p>', Opt_In::$plugin_url . 'assets/img/hustle.png' );
86 $html .= sprintf( '<p>%s</p>', $message );
87
88 if ( ! empty( $retry_url ) ) {
89 $html .= sprintf( '<a href="%s" class="button button-large">%s</a>', esc_url( $retry_url ), __( 'Retry', 'hustle' ) ); }
90
91 if ( ! empty( $cancel_url ) ) {
92 $html .= sprintf( ' <a href="%s" class="button button-large">%s</a>', esc_url( $cancel_url ), __( 'Cancel', 'hustle' ) ); }
93
94 $html = sprintf( '<div style="text-align: center;">%s</div>', $html );
95
96 wp_die( esc_html( $html ), esc_html__( 'Hustle failure notice.', 'hustle' ), 403 );
97 }
98 }
99