Last active
May 17, 2021 12:26
-
-
Save mircobabini/ea948d4da9f2c395463b813197fa8559 to your computer and use it in GitHub Desktop.
BlogVault Real-Time Backups - add support for Paid Memberships Pro support (PMPro) => https://blogvault.freshdesk.com/support/tickets/46004
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
if (!defined('ABSPATH')) exit; | |
if (!class_exists('BVWPDynSync')) : | |
class BVWPDynSync { | |
public static $dynsync_table = 'dynamic_sync'; | |
public $db; | |
public $settings; | |
public function __construct($db, $settings) { | |
$this->db = $db; | |
$this->settings = $settings; | |
} | |
function init() { | |
$this->add_actions_and_listeners(); | |
add_action('clear_dynsync_config', array($this, 'clearConfig')); | |
} | |
public function clearConfig() { | |
$this->settings->deleteOption('bvdynplug'); | |
$this->settings->deleteOption('bvDynSyncActive'); | |
$this->settings->deleteOption('bvWooDynSync'); | |
$this->db->dropBVTable(BVWPDynSync::$dynsync_table); | |
} | |
function add_event($event_type, $event_data) { | |
global $wp_current_filter; | |
$site_id = get_current_blog_id(); | |
$values = array ( "event_type" => $event_type, "event_tag" => end($wp_current_filter), "event_data" => maybe_serialize($event_data), "site_id" => $site_id); | |
$this->db->replaceIntoBVTable(BVWPDynSync::$dynsync_table, $values); | |
} | |
function add_db_event($table, $message) { | |
$_msg = array(); | |
$_msg['table'] = $table; | |
$_msg['data'] = $message; | |
$this->add_event('db', $_msg); | |
} | |
function post_action_handler($post_id) { | |
if (current_filter() == 'delete_post') | |
$msg_type = 'delete'; | |
else | |
$msg_type = 'edit'; | |
$this->add_db_event('posts', array('ID' => $post_id, 'msg_type' => $msg_type)); | |
} | |
function get_ignored_postmeta() { | |
$defaults = array( | |
'_excluded_links' | |
); | |
$ignored_postmeta = $this->settings->getOption('bvIgnoredPostmeta'); | |
if (empty($ignored_postmeta)) { | |
$ignored_postmeta = array(); | |
} | |
return array_unique(array_merge($defaults, $ignored_postmeta)); | |
} | |
function postmeta_insert_handler($meta_id, $post_id, $meta_key, $meta_value='') { | |
if (in_array($meta_key, $this->get_ignored_postmeta(), true)) | |
return; | |
$this->add_db_event('postmeta', array('meta_id' => $meta_id)); | |
} | |
function postmeta_modification_handler($meta_id, $object_id, $meta_key, $meta_value) { | |
if (in_array($meta_key, $this->get_ignored_postmeta(), true)) | |
return; | |
if (!is_array($meta_id)) | |
return $this->add_db_event('postmeta', array('meta_id' => $meta_id)); | |
foreach ($meta_id as $id) { | |
$this->add_db_event('postmeta', array('meta_id' => $id)); | |
} | |
} | |
function postmeta_action_handler($meta_id, $post_id = null, $meta_key = null) { | |
if (in_array($meta_key, $this->get_ignored_postmeta(), true)) | |
return; | |
if ( !is_array($meta_id) ) | |
return $this->add_db_event('postmeta', array('meta_id' => $meta_id)); | |
foreach ( $meta_id as $id ) | |
$this->add_db_event('postmeta', array('meta_id' => $id)); | |
} | |
function comment_action_handler($comment_id) { | |
if (current_filter() == 'delete_comment') | |
$msg_type = 'delete'; | |
else | |
$msg_type = 'edit'; | |
if (!is_array($comment_id)) { | |
if (wp_get_comment_status($comment_id) != 'spam') | |
$this->add_db_event('comments', array('comment_ID' => $comment_id, 'msg_type' => $msg_type)); | |
} else { | |
foreach ($comment_id as $id) { | |
if (wp_get_comment_status($comment_id) != 'spam') | |
$this->add_db_event('comments', array('comment_ID' => $id, 'msg_type' => $msg_type)); | |
} | |
} | |
} | |
function commentmeta_insert_handler($meta_id, $comment_id = null) { | |
if (empty($comment_id) || wp_get_comment_status($comment_id) != 'spam') | |
$this->add_db_event('commentmeta', array('meta_id' => $meta_id)); | |
} | |
function commentmeta_modification_handler($meta_id, $object_id, $meta_key, $meta_value) { | |
if (current_filter() == 'deleted_comment_meta') | |
$msg_type = 'delete'; | |
else | |
$msg_type = 'edit'; | |
if (!is_array($meta_id)) | |
return $this->add_db_event('commentmeta', array('meta_id' => $meta_id, 'msg_type' => $msg_type)); | |
foreach ($meta_id as $id) { | |
$this->add_db_event('commentmeta', array('meta_id' => $id, 'msg_type' => $msg_type)); | |
} | |
} | |
function userid_action_handler($user_or_id) { | |
if (is_object($user_or_id)) | |
$userid = intval( $user_or_id->ID ); | |
else | |
$userid = intval( $user_or_id ); | |
if ( !$userid ) | |
return; | |
if (current_filter() == 'deleted_user') | |
$msg_type = 'delete'; | |
else | |
$msg_type = 'edit'; | |
$this->add_db_event('users', array('ID' => $userid)); | |
} | |
function usermeta_insert_handler($umeta_id, $user_id = null) { | |
$this->add_db_event('usermeta', array('umeta_id' => $umeta_id)); | |
} | |
function usermeta_modification_handler($umeta_id, $object_id, $meta_key, $meta_value = '') { | |
if (current_filter() == 'delete_usermeta') | |
$msg_type = 'delete'; | |
else | |
$msg_type = 'edit'; | |
if (!is_array($umeta_id)) | |
return $this->add_db_event('usermeta', array('umeta_id' => $umeta_id, 'msg_type' => $msg_type)); | |
foreach ($umeta_id as $id) { | |
$this->add_db_event('usermeta', array('umeta_id' => $id, 'msg_type' => $msg_type)); | |
} | |
} | |
function link_action_handler($link_id) { | |
$this->add_db_event('links', array('link_id' => $link_id)); | |
} | |
function edited_terms_handler($term_id, $taxonomy = null) { | |
$this->add_db_event('terms', array('term_id' => $term_id)); | |
} | |
function term_handler($term_id, $tt_id, $taxonomy) { | |
$this->add_db_event('terms', array('term_id' => $term_id)); | |
$this->term_taxonomy_handler($tt_id, $taxonomy); | |
} | |
function delete_term_handler($term, $tt_id, $taxonomy, $deleted_term ) { | |
$this->add_db_event('terms', array('term_id' => $term, 'msg_type' => 'delete')); | |
} | |
function term_taxonomy_handler($tt_id, $taxonomy = null) { | |
$this->add_db_event('term_taxonomy', array('term_taxonomy_id' => $tt_id)); | |
} | |
function term_taxonomies_handler($tt_ids) { | |
foreach((array)$tt_ids as $tt_id) { | |
$this->term_taxonomy_handler($tt_id); | |
} | |
} | |
function term_relationship_handler($object_id, $term_id) { | |
$this->add_db_event('term_relationships', array('term_taxonomy_id' => $term_id, 'object_id' => $object_id)); | |
} | |
function term_relationships_handler($object_id, $term_ids) { | |
foreach ((array)$term_ids as $term_id) { | |
$this->term_relationship_handler($object_id, $term_id); | |
} | |
} | |
function set_object_terms_handler( $object_id, $terms, $tt_ids ) { | |
$this->term_relationships_handler( $object_id, $tt_ids ); | |
} | |
function get_ignored_options() { | |
$defaults = array( | |
'cron', | |
'wpsupercache_gc_time', | |
'rewrite_rules', | |
'akismet_spam_count', | |
'iwp_client_user_hit_count', | |
'_disqus_sync_lock', | |
'stats_cache' | |
); | |
$ignored_options = $this->settings->getOption('bvIgnoredOptions'); | |
if (empty($ignored_options)) { | |
$ignored_options = array(); | |
} | |
return array_unique(array_merge($defaults, $ignored_options)); | |
} | |
function get_ping_permission($option_name) { | |
$ping_permitted = true; | |
$ignored_options = $this->get_ignored_options(); | |
foreach($ignored_options as $val) { | |
if ($val[0] == '/') { | |
if (preg_match($val, $option_name)) | |
$ping_permitted = false; | |
} else { | |
if ($val == $option_name) | |
$ping_permitted = false; | |
} | |
if (!$ping_permitted) | |
break; | |
} | |
return $ping_permitted; | |
} | |
function option_handler($option_name) { | |
if (current_filter() == 'deleted_option') | |
$msg_type = 'delete'; | |
else | |
$msg_type = 'edit'; | |
$ping_permitted = $this->get_ping_permission($option_name); | |
if ($ping_permitted) | |
$this->add_db_event('options', array('option_name' => $option_name, 'msg_type' => 'delete')); | |
return $option_name; | |
} | |
function theme_action_handler($theme) { | |
$this->add_event('themes', array('theme' => $this->settings->getOption('stylesheet'))); | |
} | |
function plugin_action_handler($plugin='') { | |
$this->add_event('plugins', array('name' => $plugin)); | |
} | |
function upload_handler($file) { | |
$this->add_event('uploads', array('file' => $file['file'])); | |
return $file; | |
} | |
function wpmu_new_blog_create_handler($site_id) { | |
$this->add_db_event('blogs', array('site_id' => $site_id)); | |
} | |
function sitemeta_handler($option) { | |
$ping_permitted = $this->get_ping_permission($option); | |
if ($ping_permitted && is_multisite()) { | |
$this->add_db_event('sitemeta', array('site_id' => $this->db->getSiteId(), 'meta_key' => $option)); | |
} | |
return $ping_permitted; | |
} | |
/* WOOCOMMERCE SUPPORT FUNCTIONS BEGINS FROM HERE*/ | |
function woocommerce_resume_order_handler($order_id) { | |
$this->add_db_event('woocommerce_order_items', array('order_id' => $order_id, 'msg_type' => 'delete')); | |
$meta_ids = array(); | |
$itemmeta_table = $this->db->getWPTable('woocommerce_order_itemmeta'); | |
$items_table = $this->db->getWPTable('woocommerce_order_items'); | |
foreach( $this->db->getResult($this->db->prepare("SELECT {$itemmeta_table}.meta_id FROM {$itemmeta_table} INNER JOIN {$items_table} WHERE {$items_table}.order_item_id = {$itemmeta_table}.order_item_id AND {$items_table}.order_id = %d", $order_id)) as $key => $row) { | |
if (!in_array($row->meta_id, $meta_ids, true)) { | |
$meta_ids[] = $row->meta_id; | |
$this->add_db_event('woocommerce_order_itemmeta', array('meta_id' => $row->meta_id, 'msg_type' => 'delete')); | |
} | |
} | |
} | |
function woocommerce_new_order_item_handler($item_id, $item, $order_id) { | |
$this->add_db_event('woocommerce_order_items', array('order_item_id' => $item_id)); | |
$this->add_db_event('woocommerce_order_itemmeta', array('order_item_id' => $item_id)); | |
} | |
function woocommerce_update_order_item_handler($item_id, $args){ | |
$this->add_db_event('woocommerce_order_items', array('order_item_id' => $item_id)); | |
} | |
function woocommerce_delete_order_item_handler($item_id) { | |
$this->add_db_event('woocommerce_order_itemmeta', array('order_item_id' => $item_id, 'msg_type' => 'delete')); | |
$this->add_db_event('woocommerce_order_items', array('order_item_id' => $item_id, 'msg_type' => 'delete')); | |
} | |
function woocommerce_downloadable_product_permissions_delete_handler($bool, $download_id, $product_id, $order) { | |
$this->add_db_event('woocommerce_downloadable_product_permissions', array('order_id' => $order->id, 'product_id' => $product_id, 'download_id' => $download_id)); | |
return true; | |
} | |
function woocommerce_attribute_added_handler($attribute_id, $attribute) { | |
$this->add_db_event('woocommerce_attribute_taxonomies', array('attribute_id' => $attribute_id)); | |
} | |
function woocommerce_attribute_updated_handler($attribute_id, $attribute, $old_attribute_name) { | |
$this->add_db_event('woocommerce_attribute_taxonomies', array('attribute_id' => $attribute_id)); | |
# $woocommerce->attribute_taxonomy_name( $attribute_name ) | |
$this->add_db_event('term_taxonomy', array('taxonomy' => wc_attribute_taxonomy_name($attribute['attribute_name']))); | |
# sanitize_title( $attribute_name ) | |
$this->add_db_event('woocommerce_termmeta', array('meta_key' => 'order_pa_' . $attribute['attribute_name']));#deprecated | |
$this->add_db_event('termmeta', array('meta_key' => 'order_pa_' . $attribute['attribute_name'])); | |
$this->add_db_event('postmeta', array('meta_key' => '_product_attributes')); | |
# sanitize_title( $attribute_name ) | |
$this->add_db_event('postmeta', array('meta_key' => 'attribute_pa_' . $attribute['attribute_name'])); | |
} | |
function woocommerce_attribute_deleted_handler($attribute_id, $attribute_name, $taxonomy) { | |
return $this->add_db_event('woocommerce_attribute_taxonomies', array('attribute_id' => $attribute_id, 'msg_type' => 'delete')); | |
} | |
function woocommerce_revoke_access_to_product_download_handler($download_id, $product_id, $order_id, $permission_id ) { | |
$this->add_db_event('woocommerce_downloadable_product_permissions', array('permission_id' => $permission_id, 'msg_type' => 'delete')); | |
} | |
function woocommerce_tax_rate_handler($tax_rate_id, $_tax_rate) { | |
$this->add_db_event('woocommerce_tax_rates', array('tax_rate_id' => $tax_rate_id)); | |
$this->add_db_event('woocommerce_tax_rate_locations', array('tax_rate_id' => $tax_rate_id)); | |
} | |
function woocommerce_tax_rate_deleted_handler($tax_rate_id) { | |
$this->add_db_event('woocommerce_tax_rates', array('tax_rate_id' => $tax_rate_id, 'msg_type' => 'delete')); | |
$this->add_db_event('woocommerce_tax_rate_locations', array('tax_rate_id' => $tax_rate_id, 'msg_type' => 'delete')); | |
} | |
function woocommerce_grant_product_download_access_handler($data) { | |
$this->add_db_event('woocommerce_downloadable_product_permissions', array('download_id' => $data['download_id'], 'user_id' => $data['user_id'], 'order_id' => $data['order_id'], 'product_id' => $data['product_id'])); | |
} | |
function woocommerce_download_product_handler($user_email, $order_key, $product_id, $user_id, $download_id, $order_id) { | |
$this->add_db_event('woocommerce_downloadable_product_permissions', array('order_id' => $order_id, 'user_id' => $user_id, 'order_key' => $order_key, 'product_id' => $product_id)); | |
} | |
function woocommerce_delete_order_items_handler($postid) { | |
$meta_ids = array(); | |
$order_item_ids = array(); | |
foreach( $this->db->getResult("SELECT {$this->db->dbprefix}woocommerce_order_itemmeta.meta_id, {$this->db->dbprefix}woocommerce_order_items.order_item_id FROM {$this->db->dbprefix}woocommerce_order_items JOIN {$this->db->dbprefix}woocommerce_order_itemmeta ON {$this->db->dbprefix}woocommerce_order_items.order_item_id = {$this->db->dbprefix}woocommerce_order_itemmeta.order_item_id WHERE {$this->db->dbprefix}woocommerce_order_items.order_id = '{$postid}'") as $key => $row) { | |
if (!in_array($row->meta_id, $meta_ids, true)) { | |
$meta_ids[] = $row->meta_id; | |
$this->add_db_event('woocommerce_order_itemmeta', array('meta_id' => $row->meta_id, 'msg_type' => 'delete')); | |
} | |
if (!in_array($row->order_item_id, $order_item_ids, true)) { | |
$order_item_ids[] = $row->order_item_id; | |
$this->add_db_event('woocommerce_order_items', array('order_item_id' => $row->order_item_id, 'msg_type' => 'delete')); | |
} | |
} | |
} | |
function woocommerce_payment_token_handler($token_id) { | |
$this->add_db_event('woocommerce_payment_tokens', array('token_id' => $token_id)); | |
} | |
function woocommerce_payment_token_deleted_handler($token_id, $object) { | |
$this->add_db_event('woocommerce_payment_tokens', array('token_id' => $token_id, 'msg_type' => 'delete')); | |
$this->add_db_event('woocommerce_payment_tokenmeta', array('payment_token_id' => $token_id, 'msg_type' => 'delete')); | |
} | |
function woocommerce_shipping_zone_method_added_handler($instance_id, $method_id, $zone_id) { | |
$this->add_db_event('woocommerce_shipping_zone_methods', array('instance_id' => $instance_id)); | |
$this->add_db_event('woocommerce_shipping_zones', array('zone_id' => $zone_id)); | |
$this->add_db_event('woocommerce_shipping_zone_locations', array('zone_id' => $zone_id)); | |
} | |
function woocommerce_shipping_zone_method_deleted_handler($instance_id, $method_id, $zone_id) { | |
$this->add_db_event('woocommerce_shipping_zone_methods', array('instance_id' => $instance_id, 'msg_type' => 'delete')); | |
} | |
function woocommerce_shipping_zone_method_status_toggled_handler($instance_id, $method_id, $zone_id, $is_enabled) { | |
$this->add_db_event('woocommerce_shipping_zone_methods', array('instance_id' => absint( $instance_id ))); | |
} | |
function woocommerce_deleted_order_downloadable_permissions_handler($post_id) { | |
$this->add_db_event('woocommerce_downloadable_product_permissions', array('order_id' => $post_id, 'msg_type' => 'delete')); | |
} | |
function woocommerce_delete_shipping_zone_handler($zone_id) { | |
$this->add_db_event('woocommerce_shipping_zone_methods', array('zone_id' => $zone_id, 'msg_type' => 'delete')); | |
$this->add_db_event('woocommerce_shipping_zone_locations', array('zone_id' => $zone_id, 'msg_type' => 'delete')); | |
$this->add_db_event('woocommerce_shipping_zones', array('zone_id' => $zone_id, 'msg_type' => 'delete')); | |
} | |
function woocommerce_webhook_handler($webhook_id) { | |
$this->add_db_event('wc_webhooks', array('webhook_id' => $webhook_id)); | |
} | |
function woocommerce_webhook_delete_handler($webhook_id, $webhook) { | |
$this->add_db_event('wc_webhooks', array('webhook_id' => $webhook_id, 'msg_type' => 'delete')); | |
} | |
function woocommerce_delete_shipping_zone_method_handler($instance_id) { | |
$this->add_db_event('woocommerce_shipping_zone_methods', array('instance_id' => $instance_id, 'msg_type' => 'delete')); | |
} | |
function woocommerce_order_term_meta_handler($meta_id, $object_id, $meta_key, $meta_value) { | |
if (current_filter() == 'deleted_order_item_meta') | |
$msg_type = 'delete'; | |
else | |
$msg_type = 'edit'; | |
if (!is_array($meta_id)) { | |
$this->add_db_event('woocommerce_order_itemmeta', array('meta_id' => $meta_id, 'msg_type' => $msg_type)); | |
} else { | |
foreach ($meta_id as $id) { | |
$this->add_db_event('woocommerce_order_itemmeta', array('meta_id' => $id, 'msg_type' => $msg_type)); | |
} | |
} | |
} | |
function woocommerce_payment_token_meta_handler($meta_id, $object_id, $meta_key, $meta_value) { | |
if (current_filter() == 'deleted_payment_token_meta') | |
$msg_type = 'delete'; | |
else | |
$msg_type = 'edit'; | |
if (!is_array($meta_id)) { | |
$this->add_db_event('woocommerce_payment_tokenmeta', array('meta_id' => $meta_id, 'msg_type' => $msg_type)); | |
} else { | |
foreach ($meta_id as $id) { | |
$this->add_db_event('woocommerce_payment_tokenmeta', array('meta_id' => $id, 'msg_type' => $msg_type)); | |
} | |
} | |
} | |
function woocommerce_api_product_attribute_handler($id, $data) { | |
$this->add_db_event('woocommerce_attribute_taxonomies', array('attribute_id' => $id)); | |
} | |
function woocommerce_note_created_handler($note_id) { | |
$this->add_db_event('wc_admin_notes', array('note_id' => $note_id)); | |
$this->add_db_event('wc_admin_note_actions', array('note_id' => $note_id)); | |
} | |
function woocommerce_note_modification_handler($note_id) { | |
if (current_filter() == 'wooocommerce_note_deleted') | |
$msg_type = 'delete'; | |
else | |
$msg_type = 'edit'; | |
$this->add_db_event('wc_admin_notes', array('note_id' => $note_id, 'msg_type' => $msg_type)); | |
$this->add_db_event('wc_admin_note_actions', array('note_id' => $note_id, 'msg_type' => $msg_type)); | |
} | |
function woocommerce_analytics_order_stats_modification_handler($order_id) { | |
if (current_filter() == 'woocommerce_analytics_delete_order_stats') | |
$msg_type = 'delete'; | |
else | |
$msg_type = 'edit'; | |
$this->add_db_event('wc_order_stats', array('order_id' => $order_id, 'msg_type' => $msg_type)); | |
} | |
function woocommerce_analytics_product_update_handler($order_item_id, $order_id) { | |
$this->add_db_event('wc_order_product_lookup', array('order_item_id' => $order_item_id, 'msg_type' => 'edit')); | |
} | |
function woocommerce_analytics_product_delete_handler($order_item_id, $order_id) { | |
$this->add_db_event('wc_order_product_lookup', array('order_id' => $order_id, 'msg_type' => 'delete')); | |
} | |
function woocommerce_analytics_new_customer_handler($customer_id) { | |
$this->add_db_event('wc_customer_lookup', array('customer_id' => $customer_id)); | |
} | |
function woocommerce_analytics_customer_modification_handler($customer_id) { | |
if (current_filter() == 'woocommerce_analytics_delete_customer') | |
$msg_type = 'delete'; | |
else | |
$msg_type = 'edit'; | |
$this->add_db_event('wc_customer_lookup', array('customer_id' => $customer_id, 'msg_type' => $msg_type)); | |
} | |
function woocommerce_analytics_coupon_update_handler($coupon_id, $order_id) { | |
$this->add_db_event('wc_order_coupon_lookup', array('coupon_id' => $coupon_id, 'order_id' => $order_id, 'msg_type' => 'edit')); | |
} | |
function woocommerce_analytics_coupon_delete_handler($coupon_id, $order_id) { | |
$this->add_db_event('wc_order_coupon_lookup', array('order_id' => $order_id, 'msg_type' => 'delete')); | |
} | |
function woocommerce_analytics_tax_update_handler($tax_rate_id, $order_id) { | |
$this->add_db_event('wc_order_tax_lookup', array('tax_rate_id' => $tax_rate_id, 'order_id' => $order_id, 'msg_type' => 'edit')); | |
} | |
function woocommerce_analytics_tax_delete_handler($tax_rate_id, $order_id) { | |
$this->add_db_event('wc_order_tax_lookup', array('order_id' => $order_id, 'msg_type' => 'delete')); | |
} | |
function woocommerce_product_update_handler($product_id) { | |
$this->add_db_event('wc_product_meta_lookup', array('product_id' => $product_id, 'msg_type' => 'edit')); | |
} | |
/* PMPRO SUPPORT FUNCTIONS BEGINS FROM HERE*/ | |
function pmpro_added_order_handler($order) { | |
$this->add_db_event('pmpro_membership_orders', array('id' => $order->id, 'msg_type' => 'added')); | |
} | |
function pmpro_updated_order_handler($order) { | |
$this->add_db_event('pmpro_membership_orders', array('id' => $order->id, 'msg_type' => 'edit')); | |
} | |
function pmpro_delete_order_handler($order_id, $order) { | |
$this->add_db_event('pmpro_membership_orders', array('id' => $order_id, 'msg_type' => 'delete')); | |
} | |
function pmpro_membership_order_meta_handler($meta_id, $object_id, $meta_key, $meta_value) { | |
if (current_filter() == 'deleted_pmpro_membership_order_meta') | |
$msg_type = 'delete'; | |
else | |
$msg_type = 'edit'; | |
if (!is_array($meta_id)) { | |
$this->add_db_event('pmpro_membership_ordermeta', array('meta_id' => $meta_id, 'msg_type' => $msg_type)); | |
} else { | |
foreach ($meta_id as $id) { | |
$this->add_db_event('pmpro_membership_ordermeta', array('meta_id' => $id, 'msg_type' => $msg_type)); | |
} | |
} | |
} | |
function pmpro_added_membership_level_handler($membership_level) { | |
$this->add_db_event('pmpro_membership_levels', array('id' => $membership_level->id, 'msg_type' => 'added')); | |
} | |
function pmpro_updated_membership_level_handler($membership_level) { | |
$this->add_db_event('pmpro_membership_levels', array('id' => $membership_level->id, 'msg_type' => 'edit')); | |
} | |
function pmpro_delete_membership_level_handler($membership_level_id) { | |
$this->add_db_event('pmpro_membership_levels', array('id' => $membership_level_id, 'msg_type' => 'delete')); | |
} | |
function pmpro_save_membership_level_handler($membership_level_id) { | |
$this->add_db_event('pmpro_membership_levels', array('id' => $membership_level_id, 'msg_type' => 'save')); | |
} | |
function pmpro_membership_level_meta_handler($meta_id, $object_id, $meta_key, $meta_value) { | |
if (current_filter() == 'deleted_pmpro_membership_level_meta') | |
$msg_type = 'delete'; | |
else | |
$msg_type = 'edit'; | |
if (!is_array($meta_id)) { | |
$this->add_db_event('pmpro_membership_levelmeta', array('meta_id' => $meta_id, 'msg_type' => $msg_type)); | |
} else { | |
foreach ($meta_id as $id) { | |
$this->add_db_event('pmpro_membership_levelmeta', array('meta_id' => $id, 'msg_type' => $msg_type)); | |
} | |
} | |
} | |
function pmpro_change_membership_level_handler($level_id, $user_id, $cancel_level) { | |
$this->add_db_event('pmpro_membership_level_change', array('level_id' => $level_id, 'user_id' => $user_id)); | |
} | |
function pmpro_added_discount_code_handler($discount_code) { | |
$this->add_db_event('pmpro_discount_codes', array('id' => $discount_code->id, 'msg_type' => 'added')); | |
} | |
function pmpro_updated_discount_code_handler($discount_code) { | |
$this->add_db_event('pmpro_discount_codes', array('id' => $discount_code->id, 'msg_type' => 'edit')); | |
} | |
function pmpro_delete_discount_code_handler($discount_code_id) { | |
$this->add_db_event('pmpro_discount_codes', array('id' => $discount_code_id, 'msg_type' => 'delete')); | |
} | |
function pmpro_save_discount_code_handler($discount_code_id) { | |
$this->add_db_event('pmpro_discount_codes', array('id' => $discount_code_id, 'msg_type' => 'save')); | |
} | |
function pmpro_used_discount_code_handler($code_id, $user_id, $order_id) { | |
$this->add_db_event('pmpro_discount_code_used', array('code_id' => $code_id, 'user_id' => $user_id, 'order_id' => $order_id)); | |
} | |
function pmpro_save_discount_code_level($code_id, $level_id) { | |
$this->add_db_event('pmpro_discount_code_level_save', array('code_id' => $code_id, 'level_id' => $level_id)); | |
} | |
function pmpro_approvals_member_approve($user_id, $level_id) { | |
$this->add_db_event('pmpro_approvals_member', array('user_id' => $user_id, 'level_id' => $level_id, 'msg_type' => 'approve')); | |
} | |
function pmpro_approvals_member_deny($user_id, $level_id) { | |
$this->add_db_event('pmpro_approvals_member', array('user_id' => $user_id, 'level_id' => $level_id, 'msg_type' => 'deny')); | |
} | |
function pmpro_approvals_member_reset($user_id, $level_id) { | |
$this->add_db_event('pmpro_approvals_member', array('user_id' => $user_id, 'level_id' => $level_id, 'msg_type' => 'reset')); | |
} | |
function pmpro_approvals_member_clean($user_id, $level_id) { | |
$this->add_db_event('pmpro_approvals_member', array('user_id' => $user_id, 'level_id' => $level_id, 'msg_type' => 'clean')); | |
} | |
function pmproap_addon_packages_member_add($user_id, $post_id) { | |
$this->add_db_event('pmpro_addon_packages', array('user_id' => $user_id, 'post_id' => $post_id, 'msg_type' => 'add')); | |
} | |
function pmproap_addon_packages_member_remove($user_id, $post_id) { | |
$this->add_db_event('pmpro_addon_packages', array('user_id' => $user_id, 'post_id' => $post_id, 'msg_type' => 'remove')); | |
} | |
/* ADDING ACTION AND LISTENERS FOR CAPTURING EVENTS. */ | |
public function add_actions_and_listeners() { | |
/* CAPTURING EVENTS FOR WP_COMMENTS TABLE */ | |
add_action('delete_comment', array($this, 'comment_action_handler')); | |
add_action('wp_set_comment_status', array($this, 'comment_action_handler')); | |
add_action('trashed_comment', array($this, 'comment_action_handler')); | |
add_action('untrashed_comment', array($this, 'comment_action_handler')); | |
add_action('wp_insert_comment', array($this, 'comment_action_handler')); | |
add_action('comment_post', array($this, 'comment_action_handler')); | |
add_action('edit_comment', array($this, 'comment_action_handler')); | |
/* CAPTURING EVENTS FOR WP_COMMENTMETA TABLE */ | |
add_action('added_comment_meta', array($this, 'commentmeta_insert_handler' ), 10, 2); | |
add_action('updated_comment_meta', array($this, 'commentmeta_modification_handler'), 10, 4); | |
add_action('deleted_comment_meta', array($this, 'commentmeta_modification_handler'), 10, 4); | |
/* CAPTURING EVENTS FOR WP_USERMETA TABLE */ | |
add_action('added_user_meta', array($this, 'usermeta_insert_handler' ), 10, 2); | |
add_action('updated_user_meta', array($this, 'usermeta_modification_handler' ), 10, 4); | |
add_action('deleted_user_meta', array($this, 'usermeta_modification_handler' ), 10, 4); | |
add_action('added_usermeta', array( $this, 'usermeta_modification_handler'), 10, 4); | |
add_action('update_usermeta', array( $this, 'usermeta_modification_handler'), 10, 4); | |
add_action('delete_usermeta', array( $this, 'usermeta_modification_handler'), 10, 4); | |
/* CAPTURING EVENTS FOR WP_USERS TABLE */ | |
add_action('user_register', array($this, 'userid_action_handler')); | |
add_action('password_reset', array($this, 'userid_action_handler')); | |
add_action('profile_update', array($this, 'userid_action_handler')); | |
add_action('deleted_user', array($this, 'userid_action_handler')); | |
/* CAPTURING EVENTS FOR WP_POSTS TABLE */ | |
add_action('delete_post', array($this, 'post_action_handler')); | |
add_action('trash_post', array($this, 'post_action_handler')); | |
add_action('untrash_post', array($this, 'post_action_handler')); | |
add_action('edit_post', array($this, 'post_action_handler')); | |
add_action('save_post', array($this, 'post_action_handler')); | |
add_action('wp_insert_post', array($this, 'post_action_handler')); | |
add_action('edit_attachment', array($this, 'post_action_handler')); | |
add_action('add_attachment', array($this, 'post_action_handler')); | |
add_action('delete_attachment', array($this, 'post_action_handler')); | |
add_action('private_to_published', array($this, 'post_action_handler')); | |
add_action('wp_restore_post_revision', array($this, 'post_action_handler')); | |
/* CAPTURING EVENTS FOR WP_POSTMETA TABLE */ | |
// Why events for both delete and deleted | |
add_action('added_post_meta', array($this, 'postmeta_insert_handler'), 10, 4); | |
add_action('update_post_meta', array($this, 'postmeta_modification_handler'), 10, 4); | |
add_action('updated_post_meta', array($this, 'postmeta_modification_handler'), 10, 4); | |
add_action('delete_post_meta', array($this, 'postmeta_modification_handler'), 10, 4); | |
add_action('deleted_post_meta', array($this, 'postmeta_modification_handler'), 10, 4); | |
add_action('added_postmeta', array($this, 'postmeta_action_handler'), 10, 3); | |
add_action('update_postmeta', array($this, 'postmeta_action_handler'), 10, 3); | |
add_action('delete_postmeta', array($this, 'postmeta_action_handler'), 10, 3); | |
/* CAPTURING EVENTS FOR WP_LINKS TABLE */ | |
add_action('edit_link', array($this, 'link_action_handler')); | |
add_action('add_link', array($this, 'link_action_handler')); | |
add_action('delete_link', array($this, 'link_action_handler')); | |
/* CAPTURING EVENTS FOR WP_TERM AND WP_TERM_TAXONOMY TABLE */ | |
add_action('created_term', array($this, 'term_handler'), 10, 3); | |
add_action('edited_term', array( $this, 'term_handler' ), 10, 3); | |
add_action('edited_terms', array($this, 'edited_terms_handler'), 10, 2); | |
add_action('delete_term', array($this, 'delete_term_handler'), 10, 4); | |
add_action('edit_term_taxonomy', array($this, 'term_taxonomy_handler'), 10, 2); | |
add_action('delete_term_taxonomy', array($this, 'term_taxonomy_handler')); | |
add_action('edit_term_taxonomies', array($this, 'term_taxonomies_handler')); | |
add_action('add_term_relationship', array($this, 'term_relationship_handler'), 10, 2); | |
add_action('delete_term_relationships', array($this, 'term_relationships_handler'), 10, 2); | |
add_action('set_object_terms', array($this, 'set_object_terms_handler'), 10, 3); | |
add_action('switch_theme', array($this, 'theme_action_handler')); | |
add_action('activate_plugin', array($this, 'plugin_action_handler')); | |
add_action('deactivate_plugin', array($this, 'plugin_action_handler')); | |
/* CAPTURING EVENTS FOR WP_OPTIONS */ | |
add_action('deleted_option', array($this, 'option_handler')); | |
add_action('updated_option', array($this, 'option_handler')); | |
add_action('added_option', array($this, 'option_handler')); | |
/* CAPTURING EVENTS FOR FILES UPLOAD */ | |
add_action('wp_handle_upload', array($this, 'upload_handler')); | |
/* These are applicable only in case of WPMU */ | |
/* XNOTE: Handle registration_log_handler from within the server */ | |
add_action('wpmu_new_blog', array($this, 'wpmu_new_blog_create_handler'), 10, 1); | |
add_action('delete_site_option',array($this, 'sitemeta_handler'), 10, 1); | |
add_action('add_site_option', array($this, 'sitemeta_handler'), 10, 1); | |
add_action('update_site_option', array($this, 'sitemeta_handler'), 10, 1); | |
$is_woo_dyn = $this->settings->getOption('bvWooDynSync'); | |
if ($is_woo_dyn == 'yes') { | |
add_action('woocommerce_resume_order', array($this, 'woocommerce_resume_order_handler'), 10, 1); | |
add_action('woocommerce_new_order_item', array($this, 'woocommerce_new_order_item_handler'), 10, 3); | |
add_action('woocommerce_update_order_item', array($this, 'woocommerce_update_order_item_handler'), 10, 2); | |
add_action('woocommerce_delete_order_item', array($this, 'woocommerce_delete_order_item_handler'), 10, 1); | |
add_action('woocommerce_delete_order_items', array($this, 'woocommerce_delete_order_items_handler'), 10, 1); | |
add_action('added_order_item_meta', array($this, 'woocommerce_order_term_meta_handler' ), 10, 4); | |
add_action('updated_order_item_meta', array($this, 'woocommerce_order_term_meta_handler'), 10, 4); | |
add_action('deleted_order_item_meta', array($this, 'woocommerce_order_term_meta_handler'), 10, 4); | |
add_action('woocommerce_attribute_added', array($this, 'woocommerce_attribute_added_handler' ), 10, 2 ); | |
add_action('woocommerce_attribute_updated', array($this, 'woocommerce_attribute_updated_handler'), 10, 3 ); | |
add_action('woocommerce_attribute_deleted', array($this, 'woocommerce_attribute_deleted_handler'), 10, 3 ); | |
add_action('woocommerce_tax_rate_added', array($this, 'woocommerce_tax_rate_handler'), 10, 2); | |
add_action('woocommerce_tax_rate_deleted', array($this, 'woocommerce_tax_rate_deleted_handler'), 10, 1); | |
add_action('woocommerce_tax_rate_updated', array($this, 'woocommerce_tax_rate_handler'), 10, 2); | |
add_action('woocommerce_new_webhook', array($this, 'woocommerce_webhook_handler'), 10, 1); | |
add_action('woocommerce_webhook_updated', array($this, 'woocommerce_webhook_handler'), 10, 1); | |
add_action('woocommerce_webhook_deleted', array($this, 'woocommerce_webhook_delete_handler'), 10, 2); | |
add_action('woocommerce_download_product', array($this, 'woocommerce_download_product_handler'), 10, 6); | |
add_action('woocommerce_grant_product_download_access', array($this, 'woocommerce_grant_product_download_access_handler'), 10, 1); | |
add_action('woocommerce_ajax_revoke_access_to_product_download', array($this, 'woocommerce_revoke_access_to_product_download_handler'), 10, 4); | |
add_action('woocommerce_deleted_order_downloadable_permissions', array($this, 'woocommerce_deleted_order_downloadable_permissions_handler'), 10, 1); | |
add_filter('woocommerce_process_product_file_download_paths_remove_access_to_old_file', array($this, 'woocommerce_downloadable_product_permissions_delete_handler', 10, 4)); | |
add_action('woocommerce_new_payment_token', array($this, 'woocommerce_payment_token_handler'), 10, 1); | |
add_action('woocommerce_payment_token_created', array($this, 'woocommerce_payment_token_handler'), 10, 1); | |
add_action('woocommerce_payment_token_updated', array($this, 'woocommerce_payment_token_handler'), 10, 1); | |
add_action('woocommerce_payment_token_deleted', array($this, 'woocommerce_payment_token_deleted_handler'), 10, 2); | |
add_action('added_payment_token_meta', array($this, 'woocommerce_payment_token_meta_handler' ), 10, 4); | |
add_action('updated_payment_token_meta', array($this, 'woocommerce_payment_token_meta_handler'), 10, 4); | |
add_action('deleted_payment_token_meta', array($this, 'woocommerce_payment_token_meta_handler'), 10, 4); | |
add_action('woocommerce_shipping_zone_method_added', array($this, 'woocommerce_shipping_zone_method_added_handler'), 10, 3); | |
add_action('woocommerce_shipping_zone_method_status_toggled', array($this, 'woocommerce_shipping_zone_method_status_toggled_handler'), 10, 4); | |
add_action('woocommerce_shipping_zone_method_deleted', array($this, 'woocommerce_shipping_zone_method_deleted_handler'), 10, 3); | |
add_action('woocommerce_delete_shipping_zone', array($this, 'woocommerce_delete_shipping_zone_handler'), 10, 1); | |
add_action('woocommerce_delete_shipping_zone_method', array($this, 'woocommerce_delete_shipping_zone_method_handler'), 10, 1); | |
add_action('woocommerce_api_create_product_attribute', array($this, 'woocommerce_api_product_attribute_handler'), 10, 2); | |
add_action('woocommerce_api_edit_product_attribute', array($this, 'woocommerce_api_product_attribute_handler'), 10, 2); | |
add_action('woocommerce_note_created', array($this, 'woocommerce_note_created_handler'), 10, 1); | |
add_action('woocommerce_note_updated', array($this, 'woocommerce_note_modification_handler'), 10, 1); | |
add_action('woocommerce_note_deleted', array($this, 'woocommerce_note_modification_handler'), 10, 1); | |
add_action('woocommerce_analytics_update_order_stats', array($this, 'woocommerce_analytics_order_stats_modification_handler'), 10, 1); | |
add_action('woocommerce_analytics_delete_order_stats', array($this, 'woocommerce_analytics_order_stats_modification_handler'), 10, 1); | |
add_action('woocommerce_analytics_update_product', array($this, 'woocommerce_analytics_product_update_handler'), 10, 2); | |
add_action('woocommerce_analytics_delete_product', array($this, 'woocommerce_analytics_product_delete_handler'), 10, 2); | |
add_action('woocommerce_analytics_new_customer', array($this, 'woocommerce_analytics_new_customer_handler'), 10, 1); | |
add_action('woocommerce_analytics_update_customer', array($this, 'woocommerce_analytics_customer_modification_handler'), 10, 1); | |
add_action('woocommerce_analytics_delete_customer', array($this, 'woocommerce_analytics_customer_modification_handler'), 10, 1); | |
add_action('woocommerce_analytics_update_coupon', array($this, 'woocommerce_analytics_coupon_update_handler'), 10, 2); | |
add_action('woocommerce_analytics_delete_coupon', array($this, 'woocommerce_analytics_coupon_delete_handler'), 10, 2); | |
add_action('woocommerce_analytics_update_tax', array($this, 'woocommerce_analytics_tax_update_handler'), 10, 2); | |
add_action('woocommerce_analytics_delete_tax', array($this, 'woocommerce_analytics_tax_delete_handler'), 10, 2); | |
add_action('woocommerce_updated_product_stock', array($this, 'woocommerce_product_update_handler'), 10, 1); | |
add_action('woocommerce_updated_product_sales', array($this, 'woocommerce_product_update_handler'), 10, 1); | |
add_action('woocommerce_updated_product_price', array($this, 'woocommerce_product_update_handler'), 10, 1); | |
} | |
// orders | |
add_action('pmpro_added_order', array($this, 'pmpro_added_order_handler'), 10, 1); | |
add_action('pmpro_updated_order', array($this, 'pmpro_updated_order_handler'), 10, 1); | |
add_action('pmpro_delete_order', array($this, 'pmpro_delete_order_handler'), 10, 2); | |
// orders meta | |
add_action('added_pmpro_membership_order_meta', array($this, 'pmpro_membership_order_meta_handler'), 10, 4); | |
add_action('updated_pmpro_membership_order_meta', array($this, 'pmpro_membership_order_meta_handler'), 10, 4); | |
add_action('deleted_pmpro_membership_order_meta', array($this, 'pmpro_membership_order_meta_handler'), 10, 4); | |
// membership levels | |
add_action('pmpro_added_membership_level', array($this, 'pmpro_added_membership_level_handler'), 10, 1); | |
add_action('pmpro_updated_membership_level', array($this, 'pmpro_updated_membership_level_handler'), 10, 1); | |
add_action('pmpro_delete_membership_level', array($this, 'pmpro_delete_membership_level_handler'), 10, 1); | |
add_action('pmpro_save_membership_level', array($this, 'pmpro_save_membership_level_handler'), 10, 1); | |
// membership levels meta | |
add_action('added_pmpro_membership_level_meta', array($this, 'pmpro_membership_level_meta_handler'), 10, 4); | |
add_action('updated_pmpro_membership_level_meta', array($this, 'pmpro_membership_level_meta_handler'), 10, 4); | |
add_action('deleted_pmpro_membership_level_meta', array($this, 'pmpro_membership_level_meta_handler'), 10, 4); | |
// memberships | |
add_action('pmpro_after_change_membership_level', array($this, 'pmpro_change_membership_level_handler'), 10, 3); | |
// discount codes | |
add_action('pmpro_added_discount_code', array($this, 'pmpro_added_discount_code_handler'), 10, 1); | |
add_action('pmpro_updated_discount_code', array($this, 'pmpro_updated_discount_code_handler'), 10, 1); | |
add_action('pmpro_delete_discount_code', array($this, 'pmpro_delete_discount_code_handler'), 10, 1); | |
add_action('pmpro_save_discount_code', array($this, 'pmpro_save_discount_code_handler'), 10, 1); | |
add_action('pmpro_discount_code_used', array($this, 'pmpro_used_discount_code_handler'), 10, 3); | |
// discount codes levels | |
add_action('pmpro_save_discount_code_level', array($this, 'pmpro_save_discount_code_level_handler'), 10, 2); | |
// member approvals | |
add_action('pmpro_approvals_after_approve_member', array($this, 'pmpro_approvals_member_approve'), 10, 2); | |
add_action('pmpro_approvals_after_deny_member', array($this, 'pmpro_approvals_member_deny'), 10, 2); | |
add_action('pmpro_approvals_after_reset_member', array($this, 'pmpro_approvals_member_reset'), 10, 2); | |
add_action('pmpro_approvals_after_cleaned_approval_meta', array($this, 'pmpro_approvals_member_clean'), 10, 2); | |
// addon packages | |
add_action('pmproap_action_add_to_package', array($this, 'pmproap_addon_packages_member_add'), 10, 2); | |
add_action('pmproap_action_remove_from_package', array($this, 'pmproap_addon_packages_member_remove'), 10, 2); | |
} | |
} | |
endif; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment