163 lines
3.9 KiB
PHP
163 lines
3.9 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* WooCommerce abstract privacy class.
|
||
|
*
|
||
|
* @since 3.4.0
|
||
|
* @package WooCommerce\Abstracts
|
||
|
*/
|
||
|
|
||
|
defined( 'ABSPATH' ) || exit;
|
||
|
|
||
|
/**
|
||
|
* Abstract class that is intended to be extended by
|
||
|
* specific privacy class. It handles the display
|
||
|
* of the privacy message of the privacy id to the admin,
|
||
|
* privacy data to be exported and privacy data to be deleted.
|
||
|
*
|
||
|
* @version 3.4.0
|
||
|
* @package WooCommerce\Abstracts
|
||
|
*/
|
||
|
abstract class WC_Abstract_Privacy {
|
||
|
/**
|
||
|
* This is the name of this object type.
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
public $name;
|
||
|
|
||
|
/**
|
||
|
* This is a list of exporters.
|
||
|
*
|
||
|
* @var array
|
||
|
*/
|
||
|
protected $exporters = array();
|
||
|
|
||
|
/**
|
||
|
* This is a list of erasers.
|
||
|
*
|
||
|
* @var array
|
||
|
*/
|
||
|
protected $erasers = array();
|
||
|
|
||
|
/**
|
||
|
* This is a priority for the wp_privacy_personal_data_exporters filter
|
||
|
*
|
||
|
* @var int
|
||
|
*/
|
||
|
protected $export_priority;
|
||
|
|
||
|
/**
|
||
|
* This is a priority for the wp_privacy_personal_data_erasers filter
|
||
|
*
|
||
|
* @var int
|
||
|
*/
|
||
|
protected $erase_priority;
|
||
|
|
||
|
/**
|
||
|
* WC_Abstract_Privacy Constructor.
|
||
|
*
|
||
|
* @param string $name Plugin identifier.
|
||
|
* @param int $export_priority Export priority.
|
||
|
* @param int $erase_priority Erase priority.
|
||
|
*/
|
||
|
public function __construct( $name = '', $export_priority = 5, $erase_priority = 10 ) {
|
||
|
$this->name = $name;
|
||
|
$this->export_priority = $export_priority;
|
||
|
$this->erase_priority = $erase_priority;
|
||
|
$this->init();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Hook in events.
|
||
|
*/
|
||
|
protected function init() {
|
||
|
add_action( 'admin_init', array( $this, 'add_privacy_message' ) );
|
||
|
// We set priority to 5 to help WooCommerce's findings appear before those from extensions in exported items.
|
||
|
add_filter( 'wp_privacy_personal_data_exporters', array( $this, 'register_exporters' ), $this->export_priority );
|
||
|
add_filter( 'wp_privacy_personal_data_erasers', array( $this, 'register_erasers' ), $this->erase_priority );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Adds the privacy message on WC privacy page.
|
||
|
*/
|
||
|
public function add_privacy_message() {
|
||
|
if ( function_exists( 'wp_add_privacy_policy_content' ) ) {
|
||
|
$content = $this->get_privacy_message();
|
||
|
|
||
|
if ( $content ) {
|
||
|
wp_add_privacy_policy_content( $this->name, $this->get_privacy_message() );
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Gets the message of the privacy to display.
|
||
|
* To be overloaded by the implementor.
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function get_privacy_message() {
|
||
|
return '';
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Integrate this exporter implementation within the WordPress core exporters.
|
||
|
*
|
||
|
* @param array $exporters List of exporter callbacks.
|
||
|
* @return array
|
||
|
*/
|
||
|
public function register_exporters( $exporters = array() ) {
|
||
|
foreach ( $this->exporters as $id => $exporter ) {
|
||
|
$exporters[ $id ] = $exporter;
|
||
|
}
|
||
|
return $exporters;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Integrate this eraser implementation within the WordPress core erasers.
|
||
|
*
|
||
|
* @param array $erasers List of eraser callbacks.
|
||
|
* @return array
|
||
|
*/
|
||
|
public function register_erasers( $erasers = array() ) {
|
||
|
foreach ( $this->erasers as $id => $eraser ) {
|
||
|
$erasers[ $id ] = $eraser;
|
||
|
}
|
||
|
return $erasers;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Add exporter to list of exporters.
|
||
|
*
|
||
|
* @param string $id ID of the Exporter.
|
||
|
* @param string $name Exporter name.
|
||
|
* @param string|array $callback Exporter callback.
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public function add_exporter( $id, $name, $callback ) {
|
||
|
$this->exporters[ $id ] = array(
|
||
|
'exporter_friendly_name' => $name,
|
||
|
'callback' => $callback,
|
||
|
);
|
||
|
return $this->exporters;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Add eraser to list of erasers.
|
||
|
*
|
||
|
* @param string $id ID of the Eraser.
|
||
|
* @param string $name Exporter name.
|
||
|
* @param string|array $callback Exporter callback.
|
||
|
*
|
||
|
* @return array
|
||
|
*/
|
||
|
public function add_eraser( $id, $name, $callback ) {
|
||
|
$this->erasers[ $id ] = array(
|
||
|
'eraser_friendly_name' => $name,
|
||
|
'callback' => $callback,
|
||
|
);
|
||
|
return $this->erasers;
|
||
|
}
|
||
|
}
|