BP_Export
Class BP_Export
Description
Source
File: bp-core/gdpr/class-bp-export.php
abstract class BP_Export {
protected $exporter_name = '';
protected $exporter_label = '';
protected $items_per_batch = 50;
/**
* @param $name
* @param $label
*
* @since BuddyBoss 1.0.0
*/
function setup( $name, $label ) {
$this->exporter_name = $name;
$this->exporter_label = $label;
// Global Filter.
$this->items_per_batch = apply_filters( 'buddyboss_bp_gdpr_item_per_batch', $this->items_per_batch );
// Specific Filter.
$this->items_per_batch = apply_filters( 'buddyboss_bp_gdpr_item_per_batch_{$name}', $this->items_per_batch );
$this->hooks();
}
/**
* Register erase and export hooks.
*
* @since BuddyBoss 1.0.0
*/
function hooks() {
add_filter( 'wp_privacy_personal_data_exporters', array( $this, 'register_exporter' ), 10 );
add_filter( 'wp_privacy_personal_data_erasers', array( $this, 'register_eraser' ), 10 );
}
/**
* Register exporter callback.
*
* @param $exporters
*
* @since BuddyBoss 1.0.0
*
* @return mixed
*/
function register_exporter( $exporters ) {
$exporters[ $this->exporter_name ] = array(
'exporter_friendly_name' => $this->exporter_label,
'callback' => array( $this, 'process_export_callback' ),
);
return $exporters;
}
/**
* Register delete callback.
*
* @param $erasers
*
* @since BuddyBoss 1.0.0
*
* @return mixed
*/
function register_eraser( $erasers ) {
$erasers[ $this->exporter_name ] = array(
'eraser_friendly_name' => $this->exporter_label,
'callback' => array( $this, "process_eraser_callback" ),
);
return $erasers;
}
/**
* Process export callback.
*
* @param $email_address
* @param int $page
*
* @since BuddyBoss 1.0.0
*
* @return array
*/
function process_export_callback( $email_address, $page = 1 ) {
$user = get_user_by( 'email', $email_address );
/**
* @todo add title/description
*
* @since BuddyBoss 1.0.0
*/
do_action( 'buddyboss_bp_gdpr_pre_exporter_callback', $email_address, $page, $user );
return $this->process_data( $user, $page, $email_address );
}
/**
* Process delete callback
*
* @param $email_address
* @param int $page
*
* @since BuddyBoss 1.0.0
*
* @return mixed
*/
function process_eraser_callback( $email_address, $page = 1 ) {
$user = get_user_by( 'email', $email_address );
/**
* @todo add title/description
*
* @since BuddyBoss 1.0.0
*/
do_action( 'buddyboss_bp_gdpr_pre_eraser_callback', $email_address, $page, $user );
return $this->process_erase( $user, $page, $email_address );
}
/**
* Fallback.
*
* @param $user
* @param $page
* @param bool $email_address
*
* @since BuddyBoss 1.0.0
* @ignore
* @return array
*/
function process_data( $user, $page, $email_address ) {
return $this->response( array(), true );
}
/**
* Fallback.
*
* @param $user
* @param $page
* @param bool $email_address
*
* @since BuddyBoss 1.0.0
* @ignore
* @return array
*/
function process_erase( $user, $page, $email_address ) {
return $this->response_erase( false, true );
}
/**
* Export data response.
*
* @param array $export_data
* @param bool $done
*
* @since BuddyBoss 1.0.0
*
* @return array
*/
function response( $export_data = array(), $done = false ) {
return array(
'data' => $export_data,
'done' => $done,
);
}
/**
* Delete data response.
*
* @param bool $item_removed
* @param bool $done
* @param array $messages
* @param bool $items_retained
*
* @since BuddyBoss 1.0.0
*
* @return array
*/
function response_erase( $item_removed = true, $done = false, $messages = array(), $items_retained = false ) {
return array(
'items_removed' => $item_removed,
'items_retained' => $items_retained,
'messages' => $messages,
'done' => $done,
);
}
/**
* Convert serialized meta to readable data.
*
* @param $value
*
* @since BuddyBoss 1.0.0
*
* @return string
*/
function easy_readable( $value ) {
if ( ! is_serialized( $value ) && ! is_array( $value ) && ! is_object( $value ) ) {
return $value;
}
$value = maybe_serialize( $value );
return wp_json_encode( $value, JSON_PRETTY_PRINT );
}
}
Changelog
| Version | Description |
|---|---|
| BuddyBoss 1.0.0 | Introduced. |
Methods
- easy_readable — Convert serialized meta to readable data.
- hooks — Register erase and export hooks.
- process_eraser_callback — Process delete callback
- process_export_callback — Process export callback.
- register_eraser — Register delete callback.
- register_exporter — Register exporter callback.
- response — Export data response.
- response_erase — Delete data response.
- setup
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.