BossBey File Manager
PHP:
8.2.30
OS:
Linux
User:
imagivibe
Root
/
home
/
imagivibe
/
www
/
wp-content
/
plugins
/
cookie-notice
/
includes
📤 Upload
📝 New File
📁 New Folder
Close
Editing: privacy-consent-list-table.php
<?php // exit if accessed directly if ( ! defined( 'ABSPATH' ) ) exit; /** * Cookie_Notice_Privacy_Consent_List_Table class. * * @class Cookie_Notice_Privacy_Consent_List_Table */ class Cookie_Notice_Privacy_Consent_List_Table extends WP_List_Table { private $cn_empty_init = false; private $cn_source = []; private $cn_forms = []; /** * Set source. * * @param array $source * * @return void */ public function cn_set_source( $source ) { $this->cn_source = $source; } /** * Set source forms. * * @param array $forms * * @return void */ public function cn_set_forms( $forms ) { $this->cn_forms = $forms; } /** * Set empty init. * * @return void */ public function cn_empty_init() { $this->cn_empty_init = true; } /** * Display extra controls between bulk actions and pagination. * * @param string $which * * @return void */ protected function extra_tablenav( $which ) { // skip top navigation if ( $which === 'top' ) return; echo '<span class="spinner"></span>'; } /** * Generate table navigation. * * @param string $which * * @return void */ protected function display_tablenav( $which ) { // avoid different nonce and skip top navigation if ( $which === 'top' ) return; // skip static source and sources with less than 11 forms if ( $this->cn_source['type'] === 'static' || $this->get_pagination_arg( 'total_items' ) < 11 ) return; echo ' <div class="tablenav bottom">'; if ( $this->has_items() ) { echo ' <div class="alignleft actions bulkactions">'; $this->bulk_actions( $which ); echo ' </div>'; } $this->pagination( $which ); $this->extra_tablenav( $which ); echo ' <br class="clear" /> </div>'; } /** * Get a list of CSS classes. * * @return array */ protected function get_table_classes() { if ( $this->cn_source['type'] === 'static' ) return parent::get_table_classes(); return [ 'widefat', 'fixed', 'striped', esc_attr( 'table-view-' . get_user_setting( 'posts_list_mode', 'list' ) ), $this->_args['plural'], 'loading' ]; } /** * Display search box. * * @param string $text * @param string $input_id * * @return void */ public function search_box( $text, $input_id ) { if ( empty( $_REQUEST['s'] ) && ! $this->has_items() ) return; /* update input id $input_id .= '-search-input'; echo ' <p class="search-box"> <label class="screen-reader-text" for="' . esc_attr( $input_id ) . '">' . esc_html( $text ) . ':</label> <input type="search" id="' . esc_attr( $input_id ) . '" name="s" value="" /> <a id="' . esc_attr( $this->cn_source['id'] . '-search-submit' ) . '" class="button" href="' .esc_url( remove_query_arg( wp_removable_query_args(), set_url_scheme( 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ) ) ) . '">' . esc_html( $text ) . '</a> </p>'; */ } /** * Print column headers. * * @param bool $with_id * * @return void */ public function print_column_headers( $with_id = true ) { // do not print column ids parent::print_column_headers( false ); } /** * Handle AJAX request. * * @return void */ function ajax_response() { check_ajax_referer( 'cn-privacy-consent-list-table-nonce', 'nonce' ); $this->prepare_items(); ob_start(); if ( ! empty( $_REQUEST['no_placeholder'] ) ) $this->display_rows(); else $this->display_rows_or_placeholder(); $rows = ob_get_clean(); ob_start(); $this->print_column_headers(); $headers = ob_get_clean(); ob_start(); $this->pagination( 'bottom' ); $pagination = ob_get_clean(); $response = [ 'rows' => $rows, 'column_headers' => $headers, 'pagination' => $pagination ]; // get pagination data $total_items = $this->get_pagination_arg( 'total_items' ); $total_pages = $this->get_pagination_arg( 'total_pages' ); if ( isset( $total_items ) ) $response['total_items_i18n'] = sprintf( _n( '1 form', '%s forms', $total_items ), number_format_i18n( $total_items ) ); if ( isset( $total_pages ) ) { $response['total_pages'] = $total_pages; $response['total_pages_i18n'] = number_format_i18n( $total_pages ); } wp_send_json_success( $response ); } /** * Prepare items for table. * * @return void */ public function prepare_items() { // get main instance $cn = Cookie_Notice(); // get consent logs if ( is_multisite() && $cn->is_network_admin() && $cn->is_plugin_network_active() && $cn->network_options['general']['global_override'] ) $privacy_consent = get_site_option( 'cookie_notice_privacy_consent_' . $this->cn_source['id'], [] ); else $privacy_consent = get_option( 'cookie_notice_privacy_consent_' . $this->cn_source['id'], [] ); $items = []; $data = $this->cn_forms; foreach ( $data['forms'] as $form ) { $items[] = [ 'title' => $this->cn_source['type'] === 'dynamic' ? $form['title'] : $form['name'], 'id' => $form['id'], 'fields' => count( $form['fields'] ), 'date' => $this->cn_source['type'] === 'dynamic' ? $form['date'] : '-', 'status' => array_key_exists( $form['id'], $privacy_consent ) && array_key_exists( 'status', $privacy_consent[$form['id']] ) ? $privacy_consent[$form['id']]['status'] : false ]; } if ( $this->cn_source['type'] === 'dynamic' ) { $this->set_pagination_args( [ 'total_items' => empty( $data['total'] ) ? 0 : (int) $data['total'], 'total_pages' => empty( $data['max_pages'] ) ? 0 : (int) $data['max_pages'], // 'per_page' => $per_page, 'orderby' => ! empty( $_POST['orderby'] ) ? sanitize_key( $_POST['orderby'] ) : 'title', 'order' => ! empty( $_POST['order'] ) ? sanitize_key( $_POST['order'] ) : 'asc' ] ); } $this->_column_headers = [ $this->get_columns(), [ 'date' ], $this->get_sortable_columns(), '' ]; $this->items = $items; } /** * Define columns in listing table. * * @return array */ public function get_columns() { $columns = [ 'title' => __( 'Form Title', 'cookie-notice' ), 'id' => __( 'Form ID', 'cookie-notice' ), 'fields' => __( 'Fields', 'cookie-notice' ), 'date' => __( 'Date', 'cookie-notice' ), 'status' => __( 'Status', 'cookie-notice' ) ]; return $columns; } /** * Define sortable columns. * * @return array */ public function get_sortable_columns() { if ( $this->cn_source['type'] === 'static' ) return []; else return [ 'title' => [ 'title', false ] // 'date' => [ 'date', true ] ]; } /** * Define what data to show on each column of the table. * * @param array $item * @param string $column_name * * @return string */ public function column_default( $item, $column_name ) { return esc_html( $item[$column_name] ); } /** * Display form title. * * @param array $item * * @return string */ public function column_title( $item ) { return '<a href="#">' . esc_html( $item['title'] ) . '</a>'; } /** * Display status. * * @param array $item * * @return string */ public function column_status( $item ) { return '<input type="checkbox" name="" value="1" class="cn-privacy-consent-form-status" data-source="' . esc_attr( $this->cn_source['id'] ) . '" data-form_id="' . esc_attr( $item['id'] ) . '" ' . checked( $item['status'], true, false ) . ' />'; } /** * Display bulk actions. * * @return array */ public function get_bulk_actions() { return []; } /** * Display empty result. * * @return void */ public function no_items() { // display spinner for the first visit for dynamic source if ( $this->cn_source['type'] === 'dynamic' && $this->cn_empty_init ) { $this->cn_empty_init = false; echo '<span class="spinner inside is-active"></span>'; } else echo __( 'No forms found.', 'cookie-notice' ); } }
Save
Cancel