Skip to content

Commit ceb2365

Browse files
Merge pull request #1206 from Codeinwp/refactor/internal-pages
feat: load survey via internal pages
2 parents 0730488 + 7635c8d commit ceb2365

File tree

2 files changed

+54
-59
lines changed

2 files changed

+54
-59
lines changed

classes/Visualizer/Module/Admin.php

Lines changed: 54 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ public function __construct( Visualizer_Plugin $plugin ) {
7979

8080
$this->_addFilter( 'admin_footer_text', 'render_review_notice' );
8181

82+
if ( ! defined( 'TI_CYPRESS_TESTING' ) ) {
83+
$this->_addFilter( 'themeisle-sdk/survey/' . VISUALIZER_DIRNAME, 'get_survey_metadata', 10, 2 );
84+
}
85+
8286
if ( defined( 'TI_CYPRESS_TESTING' ) ) {
8387
$this->load_cypress_hooks();
8488
}
@@ -934,7 +938,7 @@ private function getQuery() {
934938
*/
935939
public function renderSupportPage() {
936940
wp_enqueue_style( 'visualizer-upsell', VISUALIZER_ABSURL . 'css/upsell.css', array(), Visualizer_Plugin::VERSION );
937-
$this->load_survey();
941+
do_action( 'themeisle_internal_page', VISUALIZER_DIRNAME, 'support' );
938942
include_once VISUALIZER_ABSPATH . '/templates/support.php';
939943
}
940944

@@ -1091,7 +1095,7 @@ public function renderLibraryPage() {
10911095
)
10921096
);
10931097

1094-
$this->load_survey();
1098+
do_action( 'themeisle_internal_page', VISUALIZER_DIRNAME, 'library' );
10951099

10961100
if ( ! apply_filters( 'visualizer_is_business', false ) ) {
10971101
do_action( 'themeisle_sdk_load_banner', 'visualizer' );
@@ -1230,71 +1234,74 @@ public static function checkChartStatus( $type ) {
12301234
/**
12311235
* Get the survey metadata.
12321236
*
1237+
* @param array $data The data for survey in Formbricks format.
1238+
* @param string $page_slug The slug of the loaded page.
1239+
*
12331240
* @return array The survey metadata.
12341241
*/
1235-
private function get_survey_metadata() {
1236-
$install_date = get_option( 'visualizer_install', false );
1237-
$install_category = 0;
1238-
1239-
if ( false !== $install_date ) {
1240-
$days_since_install = round( ( time() - $install_date ) / DAY_IN_SECONDS );
1241-
1242-
if ( 0 === $days_since_install || 1 === $days_since_install ) {
1243-
$install_category = 0;
1244-
} elseif ( 1 < $days_since_install && 8 > $days_since_install ) {
1245-
$install_category = 7;
1246-
} elseif ( 8 <= $days_since_install && 31 > $days_since_install ) {
1247-
$install_category = 30;
1248-
} elseif ( 30 < $days_since_install && 90 > $days_since_install ) {
1249-
$install_category = 90;
1250-
} elseif ( 90 <= $days_since_install ) {
1251-
$install_category = 91;
1252-
}
1253-
}
1242+
public function get_survey_metadata( $data, $page_slug ) {
1243+
$install_date = get_option( 'visualizer_install', time() );
1244+
$install_days_number = intval( ( time() - $install_date ) / DAY_IN_SECONDS );
1245+
1246+
$license_status = apply_filters( 'product_visualizer_license_status', 'invalid' );
1247+
$license_plan = apply_filters( 'product_visualizer_license_plan', false );
1248+
$license_key = apply_filters( 'product_visualizer_license_key', false );
12541249

12551250
$plugin_data = get_plugin_data( VISUALIZER_BASEFILE, false, false );
12561251
$plugin_version = '';
1252+
12571253
if ( ! empty( $plugin_data['Version'] ) ) {
12581254
$plugin_version = $plugin_data['Version'];
12591255
}
12601256

1261-
$user_id = 'visualizer_' . preg_replace( '/[^\w\d]*/', '', get_site_url() ); // Use a normalized version of the site URL as a user ID.
1257+
$count_charts_cache_key = 'visualizer_count_charts';
1258+
$charts_number = get_transient( $count_charts_cache_key );
12621259

1263-
$license_data = get_option( 'visualizer_pro_license_data', false );
1264-
if ( false !== $license_data && isset( $license_data->key ) ) {
1265-
$user_id = 'visualizer_' . $license_data->key;
1260+
if ( false === $charts_number ) {
1261+
$charts_number = $this->count_charts( 100 );
1262+
set_transient( $count_charts_cache_key, $charts_number, 100 === $charts_number ? WEEK_IN_SECONDS : 6 * HOUR_IN_SECONDS );
1263+
} else {
1264+
$charts_number = strval( $charts_number );
12661265
}
12671266

1268-
return array(
1269-
'userId' => $user_id,
1267+
$data = array(
1268+
'environmentId' => 'cltef8cut1s7wyyfxy3rlxzs5',
12701269
'attributes' => array(
1271-
'days_since_install' => strval( $install_category ),
1272-
'free_version' => $plugin_version,
1273-
'pro_version' => defined( 'VISUALIZER_PRO_VERSION' ) ? VISUALIZER_PRO_VERSION : '',
1274-
'license_status' => apply_filters( 'product_visualizer_license_status', 'invalid' ),
1270+
'free_version' => $plugin_version,
1271+
'pro_version' => defined( 'VISUALIZER_PRO_VERSION' ) ? VISUALIZER_PRO_VERSION : '',
1272+
'license_status' => $license_status,
1273+
'install_days_number' => $install_days_number,
1274+
'charts_number' => $charts_number,
12751275
),
12761276
);
1277-
}
1278-
1279-
/**
1280-
* Load the survey.
1281-
*/
1282-
private function load_survey() {
12831277

1284-
if ( defined( 'TI_CYPRESS_TESTING' ) ) {
1285-
return;
1278+
if ( ! empty( $license_plan ) ) {
1279+
$data['attributes']['plan'] = $license_plan;
12861280
}
12871281

1288-
$survey_handler = apply_filters( 'themeisle_sdk_dependency_script_handler', 'survey' );
1289-
1290-
if ( empty( $survey_handler ) ) {
1291-
return;
1282+
if ( ! empty( $license_key ) ) {
1283+
$data['attributes']['license_key'] = apply_filters( 'themeisle_sdk_secret_masking', $license_key );
12921284
}
12931285

1294-
$metadata = $this->get_survey_metadata();
1286+
return $data;
1287+
}
1288+
1289+
/**
1290+
* Count the charts.
1291+
*
1292+
* @param int $limit The count limit (optional).
1293+
*
1294+
* @return int The number of charts.
1295+
*/
1296+
public function count_charts( $limit = -1 ) {
1297+
$args = array(
1298+
'post_type' => Visualizer_Plugin::CPT_VISUALIZER,
1299+
'post_status' => 'publish',
1300+
'posts_per_page' => $limit,
1301+
'fields' => 'ids',
1302+
);
12951303

1296-
do_action( 'themeisle_sdk_dependency_enqueue_script', 'survey' );
1297-
wp_enqueue_script( 'visualizer_chart_survey', VISUALIZER_ABSURL . 'js/survey.js', array( $survey_handler ), $metadata['attributes']['free_version'], true );
1298-
wp_localize_script( 'visualizer_chart_survey', 'visualizerSurveyData', $metadata );
1304+
$query = new WP_Query( $args);
1305+
return $query->post_count;
12991306
}
13001307
}

js/survey.js

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)