From 631f8f6a2c51e32ec92b74a758fe5aae795ac147 Mon Sep 17 00:00:00 2001 From: Hardeep Asrani Date: Mon, 19 Aug 2024 18:57:56 +0530 Subject: [PATCH] feat: add otter ref to Neve Fse (#138) This PR adds Otter ref to Neve FSE so it can be used for tracking traffic to Otter sales pages. --- .github/workflows/test-php.yml | 4 ++-- .gitignore | 1 + assets/js/src/welcome-notice.js | 7 +++++++ composer.json | 3 ++- inc/Admin.php | 34 ++++++++++++++++++++++++++++----- tests/bootstrap.php | 5 +++++ 6 files changed, 46 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test-php.yml b/.github/workflows/test-php.yml index d4b6317..b8b0af0 100644 --- a/.github/workflows/test-php.yml +++ b/.github/workflows/test-php.yml @@ -47,7 +47,7 @@ jobs: - name: Setup PHP version uses: shivammathur/setup-php@v2 with: - php-version: '7.1' + php-version: '7.2' extensions: simplexml, mysql tools: phpunit-polyfills - name: Checkout source code @@ -69,4 +69,4 @@ jobs: - name: Install composer run: composer install --prefer-dist --no-progress --no-suggest - name: Run phpunit - run: phpunit + run: composer run-script phpunit diff --git a/.gitignore b/.gitignore index fab41ab..48ff83e 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ assets/js/build languages/neve-fse.pot .DS_Store +.phpunit.result.cache diff --git a/assets/js/src/welcome-notice.js b/assets/js/src/welcome-notice.js index 946088f..df170f8 100644 --- a/assets/js/src/welcome-notice.js +++ b/assets/js/src/welcome-notice.js @@ -10,6 +10,7 @@ function handleWelcomeNotice( $ ) { activationUrl, ajaxUrl, nonce, + otterRefNonce, otterStatus, } = neveFSEData; @@ -30,6 +31,12 @@ function handleWelcomeNotice( $ ) { const activateOtter = async () => { installText.text( activating ); await activatePlugin( activationUrl ); + + await $.post( ajaxUrl, { + nonce: otterRefNonce, + action: 'neve_fse_set_otter_ref', + } ); + installSpinner.removeClass( 'dashicons-update' ); installSpinner.addClass( 'dashicons-yes' ); installText.text( done ); diff --git a/composer.json b/composer.json index ae2652e..b303f96 100644 --- a/composer.json +++ b/composer.json @@ -51,6 +51,7 @@ "format": "phpcbf --standard=phpcs.xml --report-summary --report-source -s --runtime-set testVersion 7.0- ", "phpcs": "phpcs --standard=phpcs.xml -s --runtime-set testVersion 7.0-", "lint": "composer run-script phpcs", - "phpcs-i": "phpcs -i" + "phpcs-i": "phpcs -i", + "phpunit": "phpunit" } } diff --git a/inc/Admin.php b/inc/Admin.php index 22f06b5..204f37e 100644 --- a/inc/Admin.php +++ b/inc/Admin.php @@ -22,6 +22,13 @@ class Admin { */ private $suspend_survey = true; + /** + * Otter reference key. + * + * @var string + */ + const OTTER_REF = 'otter_reference_key'; + /** * Admin constructor. */ @@ -59,6 +66,7 @@ public function setup_admin_hooks() { add_action( 'enqueue_block_editor_assets', array( $this, 'add_fse_design_pack_notice' ) ); add_action( 'wp_ajax_neve_fse_dismiss_design_pack_notice', array( $this, 'remove_design_pack_notice' ) ); + add_action( 'wp_ajax_neve_fse_set_otter_ref', array( $this, 'set_otter_ref' ) ); } /** @@ -78,11 +86,12 @@ public function add_fse_design_pack_notice() { true, array(), array( - 'nonce' => wp_create_nonce( 'neve-fse-dismiss-design-pack-notice' ), - 'ajaxUrl' => esc_url( admin_url( 'admin-ajax.php' ) ), - 'ajaxAction' => 'neve_fse_dismiss_design_pack_notice', - 'buttonLink' => tsdk_utmify( 'https://themeisle.com/plugins/fse-design-pack', 'editor', 'neve-fse' ), - 'strings' => array( + 'nonce' => wp_create_nonce( 'neve-fse-dismiss-design-pack-notice' ), + 'otterRefNonce' => wp_create_nonce( 'neve-fse-set-otter-ref' ), + 'ajaxUrl' => esc_url( admin_url( 'admin-ajax.php' ) ), + 'ajaxAction' => 'neve_fse_dismiss_design_pack_notice', + 'buttonLink' => tsdk_utmify( 'https://themeisle.com/plugins/fse-design-pack', 'editor', 'neve-fse' ), + 'strings' => array( 'dismiss' => __( 'Dismiss', 'neve-fse' ), 'recommends' => __( 'Neve FSE recommends', 'neve-fse' ), 'learnMore' => __( 'Learn More', 'neve-fse' ), @@ -428,6 +437,21 @@ private function get_otter_status(): string { return $status; } + /** + * Update Otter reference key. + * + * @return void + */ + public function set_otter_ref() { + if ( empty( $_POST['nonce'] ) || ! wp_verify_nonce( sanitize_text_field( $_POST['nonce'] ), 'neve-fse-set-otter-ref' ) ) { + return; + } + + update_option( self::OTTER_REF, 'neve-fse' ); + + wp_send_json_success(); + } + /** * Add NPS form. * diff --git a/tests/bootstrap.php b/tests/bootstrap.php index 6f688bf..cf809b1 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -8,6 +8,11 @@ define( 'NEVE_FSE_IGNORE_SOURCE_CHECK', true ); $_tests_dir = getenv( 'WP_TESTS_DIR' ); + +if ( class_exists( '\Yoast\PHPUnitPolyfills\Autoload' ) === false ) { + require_once dirname( dirname( __FILE__ ) ) . '/vendor/yoast/phpunit-polyfills/phpunitpolyfills-autoload.php'; +} + if ( ! $_tests_dir ) { $_tests_dir = '/tmp/wordpress-tests-lib'; }