PluginProbe
Elementor Website Builder – more than just a page builder / 4.2.2
Elementor Website Builder – more than just a page builder v4.2.2
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
elementor / core / common / modules / event-tracker / personal-data.php

personal-data.php in Elementor Website Builder – more than just a page builder 4.2.2, at core/common/modules/event-tracker/personal-data.php

86 lines 1.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Elementor\Core\Common\Modules\EventTracker;
3
4 use Elementor\Core\Base\Base_Object;
5 use Elementor\Core\Common\Modules\EventTracker\DB as Events_DB_Manager;
6 use Elementor\Plugin;
7
8 if ( ! defined( 'ABSPATH' ) ) {
9 exit; // Exit if accessed directly.
10 }
11
12 class Personal_Data extends Base_Object {
13
14 const WP_KEY = 'elementor-event-tracker';
15
16 /**
17 * Get Title
18 *
19 * @since 3.6.0
20 *
21 * @return string
22 */
23 private function get_title() {
24 return esc_html__( 'Elementor Event Tracker', 'elementor' );
25 }
26
27 /**
28 * Erase all the submissions related to specific email.
29 *
30 * Since event data is saved globally per site and not per user, we remove all saved events from the DB upon a
31 * user's data deletion request.
32 *
33 * @return array
34 */
35 private function erase_data() {
36 // Get number of events saved in the DB.
37 /** @var Events_DB_Manager $event_tracker_db_manager */
38 $event_tracker_db_manager = Plugin::$instance->common
39 ->get_component( 'event-tracker' )
40 ->get_component( 'events-db' );
41
42 $events = $event_tracker_db_manager->get_event_ids_from_db();
43 $events_count = count( $events );
44
45 DB::reset_table();
46
47 // Validate table deleted
48 $updated_events = $event_tracker_db_manager->get_event_ids_from_db();
49 $updated_events_count = count( $updated_events );
50
51 return [
52 'items_removed' => $events_count - $updated_events_count,
53 'items_retained' => 0,
54 'messages' => [],
55 'done' => 0 === $updated_events_count,
56 ];
57 }
58
59 /**
60 * Add eraser to the list of erasers.
61 *
62 * @param $erasers
63 *
64 * @return array[]
65 */
66 private function add_eraser( $erasers ) {
67 return $erasers + [
68 self::WP_KEY => [
69 'eraser_friendly_name' => $this->get_title(),
70 'callback' => function () {
71 return $this->erase_data();
72 },
73 ],
74 ];
75 }
76
77 /**
78 * Personal_Data constructor.
79 */
80 public function __construct() {
81 add_filter( 'wp_privacy_personal_data_erasers', function ( $exporters ) {
82 return $this->add_eraser( $exporters );
83 } );
84 }
85 }
86