PluginProbe
Lasso Lite – Affiliate Link Manager & Product Displays / 158
Lasso Lite – Affiliate Link Manager & Product Displays v158
158 157 155 156 154 153 152 151 150 149 148 trunk 0.9.9 104 105 106 107 108 109 110 111 112 113 114 115 All 57 releases
← All changes | classes/class-setting.php +147 -45 112158 View file →
@@ -14,8 +14,12 @@
14 14 /**
15 15 * Setting
16 16 */
17 17 class Setting {
18 + const DISPLAY_TYPE_SINGLE = 'Single';
19 + const DISPLAY_TYPE_GRID = 'Grid';
20 + const DISPLAY_TYPE_LIST = 'List';
21 +
18 22 /**
19 23 * Convert WP GET parameters to Lasso GET
20 24 *
21 25 * @var array|string $get
@@ -45,8 +49,15 @@
45 49 'easy-affiliate-links/easy-affiliate-links.php',
46 50 );
47 51
48 52 /**
53 + * Settings general page
54 + *
55 + * @var string $settings_general_page
56 + */
57 + public $settings_general_page = 'settings-general';
58 +
59 + /**
49 60 * Setting constructor.
50 61 */
51 62 public function __construct() {
52 63 $this->get = Helper::GET();
@@ -61,8 +72,15 @@
61 72 return 'edit.php' === $pagenow && isset( $this->get['post_type'] ) && SIMPLE_URLS_SLUG === $this->get['post_type'] && isset( $this->get['page'] );
62 73 }
63 74
64 75 /**
76 + * Dashboard page
77 + *
78 + * @var string $dashboard_page
79 + */
80 + public $dashboard_page = 'dashboard';
81 +
82 + /**
65 83 * Check whether current page is WP post page
66 84 */
67 85 public function is_wordpress_post() {
68 86 global $pagenow;
@@ -186,8 +204,26 @@
186 204 return $this->is_surls_page() && Helper::add_prefix_page( Enum::PAGE_DASHBOARD ) === $this->current_page;
187 205 }
188 206
189 207 /**
208 + * Check current page is opportunities page
209 + *
210 + * @return bool
211 + */
212 + public function is_opportunities_page() {
213 + return $this->is_surls_page() && Helper::add_prefix_page( Enum::PAGE_OPPORTUNITIES ) === $this->current_page;
214 + }
215 +
216 + /**
217 + * Check current page is tables page
218 + *
219 + * @return bool
220 + */
221 + public function is_tables_page() {
222 + return $this->is_surls_page() && Helper::add_prefix_page( Enum::PAGE_TABLES ) === $this->current_page;
223 + }
224 +
225 + /**
190 226 * Check current page is setting page
191 227 *
192 228 * @return bool
193 229 */
@@ -273,60 +309,94 @@
273 309 public static function save_support( $is_ajax = true ) {
274 310 $post = Helper::POST();
275 311 $email = $post['email'] ?? '';
276 312 $is_subscribe = $post['is_subscribe'] ?? '';
277 - if ( $is_ajax && false === is_email( $email ) ) {
278 - wp_send_json_success(
279 - array(
280 - 'success' => false,
281 - 'msg' => 'Email is invalid.',
282 - )
313 + $share_diagnostics = $post['share_diagnostics'] ?? 1; // Default to 1 (checked)
314 +
315 +
316 + $settings = self::get_settings();
317 + $share_diagnostics_db = $settings[ Enum::SHARE_DIAGNOSTICS ] ?? '';
318 + $email_db = $settings[ Enum::EMAIL_SUPPORT ] ?? '';
319 +
320 + if ( $is_ajax ) {
321 + $settings[ Enum::IS_SUBSCRIBE ] = $is_subscribe;
322 + $settings[ Enum::EMAIL_SUPPORT ] = $email;
323 + $settings[ Enum::SHARE_DIAGNOSTICS ] = $share_diagnostics;
324 + } else {
325 + $email = $settings[ Enum::EMAIL_SUPPORT ];
326 + }
327 + $support_enable_time = $settings[ Enum::SUPPORT_ENABLED_TIME ] ?? '';
328 + $current_date = date( 'm/d/Y', time() ); // phpcs:ignore
329 + if ( ! $is_ajax || empty( $support_enable_time ) || $current_date > $support_enable_time || $share_diagnostics_db !== $share_diagnostics || $email !== $email_db ) {
330 + global $wp_version;
331 + $jwt_data = array(
332 + 'email' => $email,
333 + 'installed_version' => LASSO_LITE_VERSION,
334 + 'datetime' => gmdate( 'Y-m-d H:i:s' ),
335 + 'site_id' => License::get_site_id(),
336 + 'install_url' => site_url(),
337 + 'wordpress_version' => $wp_version,
338 + 'php_version' => phpversion(),
339 + 'mysql_version' => Model::get_wpdb()->db_version(),
340 + 'is_classic_editor' => Helper::is_classic_editor() ? 1 : 0,
341 + 'share_diagnostics' => $share_diagnostics,
283 342 );
284 - } else {
285 - $settings = self::get_settings();
286 343
287 - if ( $is_ajax ) {
288 - $settings[ Enum::IS_SUBSCRIBE ] = $is_subscribe;
289 - $settings[ Enum::EMAIL_SUPPORT ] = $email;
290 - $settings[ Enum::SUPPORT_ENABLED ] = true;
291 - } else {
292 - $email = $settings[ Enum::EMAIL_SUPPORT ];
344 + $jwt = JWT::encode( $jwt_data, Constant::JWT_SECRET_KEY, 'HS256' );
345 + $data['data'] = $jwt;
346 + $response = Helper::send_request( 'post', Constant::LASSO_LINK . '/lasso-lite/enable-support', $data );
347 + $response_body = ( isset( $response['response'] ) && is_object( $response['response'] ) ) ? $response['response'] : null;
348 + $is_succeed = null !== $response_body && boolval( $response_body->succeed ?? false );
349 + if ( $is_succeed ) {
350 + $user_hash = $response_body->user_hash;
351 + $intercom_jwt = $response_body->intercom_jwt;
352 + $settings[ Enum::SUPPORT_ENABLED_TIME ] = date( 'm/d/Y', time() ); // phpcs:ignore
353 + $settings[ Enum::USER_HASH ] = $user_hash;
354 + $settings[ Constant::SITE_ID_KEY ] = $response_body->site_id;
355 + if ( ! empty( $intercom_jwt ) ) {
356 + $settings[ Enum::INTERCOM_JWT ] = $intercom_jwt;
357 + }
293 358 }
294 - $support_enable_time = $settings[ Enum::SUPPORT_ENABLED_TIME ] ?? '';
295 - $current_date = date( 'm/d/Y', time() ); // phpcs:ignore
296 - if ( ! $is_ajax || empty( $support_enable_time ) || $current_date > $support_enable_time ) {
297 - global $wp_version;
298 - $jwt_data = array(
299 - 'email' => $email,
300 - 'installed_version' => LASSO_LITE_VERSION,
301 - 'datetime' => gmdate( 'Y-m-d H:i:s' ),
302 - 'site_id' => Helper::get_option( Constant::SITE_ID_KEY ),
303 - 'install_url' => site_url(),
304 - 'wordpress_version' => $wp_version,
305 - 'php_version' => phpversion(),
306 - 'mysql_version' => Model::get_wpdb()->db_version(),
307 - 'is_classic_editor' => Helper::is_classic_editor_plugin_active() ? 1 : 0,
308 - );
359 + }
309 360
310 - $jwt = JWT::encode( $jwt_data, Constant::JWT_SECRET_KEY, 'HS256' );
311 - $data['data'] = $jwt;
312 - $response = Helper::send_request( 'post', Constant::LASSO_LINK . 'lasso-lite/enable-support', $data );
313 - $is_succeed = boolval( $response['response']->succeed );
314 - if ( $is_succeed ) {
315 - $user_hash = $response['response']->user_hash;
316 - $settings[ Enum::SUPPORT_ENABLED_TIME ] = date( 'm/d/Y', time() ); // phpcs:ignore
317 - $settings[ Enum::USER_HASH ] = $user_hash;
361 + self::set_settings( $settings );
362 + if ( $is_ajax ) {
363 + $response_data = array(
364 + 'success' => true,
365 + );
366 +
367 + // Provide Intercom bootstrap payload on AJAX success so frontend can init Intercom immediately
368 + if ( ! empty( $settings[ Enum::INTERCOM_JWT ] ) ) {
369 + $email_support = $settings[ Enum::EMAIL_SUPPORT ] ?? $email;
370 + $email_support_norm = strtolower( trim( $email_support ) );
371 +
372 + $intercom_user_id = Helper::get_intercom_user_id( $email_support_norm, $settings[ Enum::INTERCOM_JWT ] );
373 +
374 + $user = get_user_by( 'email', $email_support_norm );
375 + $user_name = isset( $user->display_name ) ? $user->display_name : get_bloginfo( 'name' );
376 + $classic_editor = Helper::is_classic_editor() ? 1 : 0;
377 + $lasso_lite_user = 1;
378 + if ( Helper::is_lasso_pro_plugin_active() ) {
379 + $lasso_lite_user = 0;
318 380 }
319 - }
320 381
321 - self::set_settings( $settings );
322 - if ( $is_ajax ) {
323 - wp_send_json_success(
324 - array(
325 - 'success' => true,
326 - )
382 + $response_data['intercom'] = array(
383 + 'app_id' => Constant::LASSO_INTERCOM_APP_ID,
384 + 'name' => $user_name,
385 + 'user_id' => $intercom_user_id,
386 + 'email' => $email_support_norm,
387 + 'lasso_version' => (int) LASSO_LITE_VERSION,
388 + 'classic_editor' => $classic_editor,
389 + 'wp_admin_url' => admin_url(),
390 + 'lasso_lite_user' => $lasso_lite_user,
391 + 'intercom_user_jwt' => $settings[ Enum::INTERCOM_JWT ],
392 + 'site_id' => $settings[ Constant::SITE_ID_KEY ],
327 393 );
328 394 }
395 +
396 + wp_send_json_success(
397 + $response_data
398 + );
329 399 }
330 400 }
331 401
332 402 /**
@@ -353,9 +423,9 @@
353 423 *
354 424 * @return array|false
355 425 */
356 426 public static function get_import_sources() {
357 - $plugin_list = self::$import_sources;
427 + $plugin_list = (array) self::$import_sources;
358 428
359 429 $result = array();
360 430 $plugin_path_abs = dirname( SIMPLE_URLS_DIR );
361 431
@@ -393,6 +463,38 @@
393 463 $plugin_name = $plugin_data['Name'];
394 464 }
395 465
396 466 return $plugin_name;
467 + }
468 +
469 + /**
470 + * Get report url by tab
471 + */
472 + public function get_dashboard_page() {
473 + $dashboard_url = add_query_arg(
474 + array(
475 + 'post_type' => Constant::LASSO_POST_TYPE,
476 + 'page' => $this->dashboard_page,
477 + ),
478 + admin_url( 'edit.php' )
479 + );
480 +
481 + return $dashboard_url;
482 + }
483 +
484 + /**
485 + * Get report url by tab
486 + *
487 + * @param string $page_slug Page slug.
488 + */
489 + public static function get_lasso_page_url( $page_slug ) {
490 + $dashboard_url = add_query_arg(
491 + array(
492 + 'post_type' => Constant::LASSO_POST_TYPE,
493 + 'page' => $page_slug,
494 + ),
495 + admin_url( 'edit.php' )
496 + );
497 +
498 + return $dashboard_url;
397 499 }
398 500 }