__( 'Adventskalender-Teilnahmen', 'adventura-interactive-advent-calendar' ), 'callback' => array( $this, 'export' ), ); return $exporters; } public function register_eraser( $erasers ) { $erasers['adventura'] = array( 'eraser_friendly_name' => __( 'Adventskalender-Teilnahmen', 'adventura-interactive-advent-calendar' ), 'callback' => array( $this, 'erase' ), ); return $erasers; } /** * Export all entries belonging to an e-mail address. * * @param string $email_address E-mail to export. * @param int $page Page (unused — small dataset). * @return array */ public function export( $email_address, $page = 1 ) { global $wpdb; $table = ADVK_Entries::table_name(); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Custom-table read; table name from $wpdb->prefix, email bound via prepare(); caching N/A to a one-off privacy export. $rows = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$table} WHERE email = %s ORDER BY created_at ASC", $email_address ) ); $export_items = array(); foreach ( (array) $rows as $row ) { $data = array( array( 'name' => __( 'Türchen', 'adventura-interactive-advent-calendar' ), 'value' => (int) $row->day ), array( 'name' => __( 'Datum', 'adventura-interactive-advent-calendar' ), 'value' => $row->created_at ), array( 'name' => __( 'Vorname', 'adventura-interactive-advent-calendar' ), 'value' => $row->first_name ), array( 'name' => __( 'Nachname', 'adventura-interactive-advent-calendar' ), 'value' => $row->last_name ), array( 'name' => __( 'E-Mail', 'adventura-interactive-advent-calendar' ), 'value' => $row->email ), array( 'name' => __( 'Los-Nummer', 'adventura-interactive-advent-calendar' ), 'value' => $row->losnr ), array( 'name' => __( 'Richtige Antworten', 'adventura-interactive-advent-calendar' ), 'value' => $row->correct_count . ' / ' . $row->total_questions ), array( 'name' => __( 'Gewinner', 'adventura-interactive-advent-calendar' ), 'value' => $row->is_winner ? __( 'Ja', 'adventura-interactive-advent-calendar' ) : __( 'Nein', 'adventura-interactive-advent-calendar' ) ), array( 'name' => __( 'IP-Adresse', 'adventura-interactive-advent-calendar' ), 'value' => $row->ip ), ); $export_items[] = array( 'group_id' => self::GROUP, 'group_label' => __( 'Adventskalender-Teilnahmen', 'adventura-interactive-advent-calendar' ), 'item_id' => 'advk-entry-' . (int) $row->id, 'data' => $data, ); } return array( 'data' => $export_items, 'done' => true, ); } /** * Erase all entries belonging to an e-mail address. * * @param string $email_address E-mail to erase. * @param int $page Page (unused). * @return array */ public function erase( $email_address, $page = 1 ) { global $wpdb; $table = ADVK_Entries::table_name(); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Custom-table erase; table name from $wpdb->prefix, email bound via prepare(); caching N/A to a one-off privacy erasure. $removed = $wpdb->query( $wpdb->prepare( "DELETE FROM {$table} WHERE email = %s", $email_address ) ); return array( 'items_removed' => (int) $removed > 0, 'items_retained' => false, 'messages' => array(), 'done' => true, ); } /** * Suggest privacy-policy text for the site's policy page. */ public function privacy_policy_content() { if ( ! function_exists( 'wp_add_privacy_policy_content' ) ) { return; } $content = wp_kses_post( '
' . __( 'Wenn du an unserem Adventskalender teilnimmst, speichern wir deinen Vor- und Nachnamen, deine E-Mail-Adresse, deine Quiz-Antworten, das jeweilige Türchen, eine Los-Nummer sowie deine IP-Adresse. Diese Daten dienen ausschließlich der Durchführung des Gewinnspiels und der Benachrichtigung im Gewinnfall.', 'adventura-interactive-advent-calendar' ) . '
' . '' . __( 'Du kannst jederzeit Auskunft über die zu deiner E-Mail-Adresse gespeicherten Daten verlangen oder deren Löschung beantragen. Dafür nutzen wir die WordPress-Werkzeuge zum Export und zur Löschung personenbezogener Daten.', 'adventura-interactive-advent-calendar' ) . '
' ); wp_add_privacy_policy_content( __( 'Adventura', 'adventura-interactive-advent-calendar' ), $content ); } }