HEX
Server: Apache/2.4.65 (Ubuntu)
System: Linux ielts-store-v2 6.8.0-1036-gcp #38~22.04.1-Ubuntu SMP Thu Aug 14 01:19:18 UTC 2025 x86_64
User: root (0)
PHP: 7.2.34-54+ubuntu20.04.1+deb.sury.org+1
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
Upload Files
File: /var/www/html/ielts-store/wp-content/plugins/woocommerce-zapier/src/Webhook/TopicsRetriever.php
<?php

namespace OM4\WooCommerceZapier\Webhook;

use WC_Webhook;

defined( 'ABSPATH' ) || exit;

/**
 * Loads WooCommerce's list of available Webhook Topics.
 *
 * WC doesn't provide a standard function to do this, so we need to manually
 * load a WooCommerce admin settings page in order to access the list of topics.
 *
 * @since 2.0.0
 */
class TopicsRetriever {

	/**
	 * List of WooCommerce Webhook Topics.
	 *
	 * @var array
	 */
	private $webhook_topics = array();

	/**
	 *
	 * Executed by WooCommerce's `woocommerce_webhook_topics` filter.
	 *
	 * @internal
	 *
	 * @param array $topics List of WooCommerce Webhook Topics.
	 *
	 * @return mixed
	 */
	public function woocommerce_webhook_topics( $topics ) {
		$this->webhook_topics = $topics;
		return $topics;
	}

	/**
	 * Get WooCommerce's list of webhook topics.
	 *
	 * @return array
	 */
	public function get_woocommerce_webhook_topics() {
		add_filter( 'woocommerce_webhook_topics', array( $this, 'woocommerce_webhook_topics' ), 1000000 );
		$this->load_webhook_topic_definitions();
		remove_filter( 'woocommerce_webhook_topics', array( $this, 'woocommerce_webhook_topics' ), 1000000 );
		return $this->webhook_topics;
	}

	/**
	 * Load WooCommerce's webhook edit screen, in order to access it's array of webhook topics.
	 *
	 * @return void
	 */
	protected function load_webhook_topic_definitions() {
		global $webhook;
		$webhook = new WC_Webhook();
		$file    = \WC()->plugin_path() . '/includes/admin/settings/views/html-webhooks-edit.php';

		if ( ! file_exists( $file ) ) {
			// TODO: log this as an Error.
			return;
		}
		ob_start();
		include $file;
		ob_get_contents();
		ob_end_clean();
	}
}