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();
}
}