<?php namespace WPDataAccess\Dashboard; use WPDataAccess\Data_Tables\WPDA_Data_Tables; use WPDataAccess\Plugin_Table_Models\WPDA_Publisher_Model; use WPDataAccess\WPDA; class WPDA_Widget_Publication extends WPDA_Widget { protected $pub_id; protected $pub_content; protected $table_name; protected $search_header; public function __construct( $args = array() ) { parent::__construct( $args ); $this->can_share = true; $this->can_refresh = true; if ( isset( $args['pub_id'] ) ) { $this->pub_id = $args['pub_id']; $embedding = isset( $args['embedding'] ) && true === $args['embedding']; $wpda_data_tables = new WPDA_Data_Tables(); $this->pub_content = $wpda_data_tables->show( $this->pub_id, '', '', '', '', '', '', '', '', '', '', '', '', true, $embedding ); $wpda_publication = WPDA_Publisher_Model::get_publication( $this->pub_id ); $this->table_name = $wpda_publication['0']['pub_table_name']; try { $json = json_decode( $wpda_publication['0']['pub_table_options_advanced'] ); if ( isset( $json->wpda_searchbox ) && ('header' === $json->wpda_searchbox || 'both' === $json->wpda_searchbox) ) { $this->search_header = true; } } catch ( \Exception $e ) { $this->search_header = false; } } } public function do_shortcode( $widget ) { // Not implemented (use Data Tables short code) } public function do_embed( $widget, $target_element ) { } protected function js( $is_backend = true ) { ?> <script type="application/javascript"> jQuery(function() { jQuery("#wpda-widget-<?php echo esc_attr( $this->widget_id ); ?>").find(".wpda-widget-refresh").on("click", function(e, action = null) { if (action==="refresh") { jQuery("#<?php echo esc_attr( $this->table_name ) . esc_attr( $this->pub_id ); ?>").DataTable().ajax.json(); } else { jQuery("#<?php echo esc_attr( $this->table_name ) . esc_attr( $this->pub_id ); ?>").DataTable().draw("page"); } jQuery("#<?php echo esc_attr( $this->table_name ) . esc_attr( $this->pub_id ); ?>").DataTable().responsive.recalc(); <?php if ( $this->search_header && $is_backend ) { ?> post_publication_widget("<?php echo esc_attr( $this->table_name ); ?>", "<?php echo esc_attr( $this->pub_id ); ?>"); <?php } ?> }); }); </script> <?php } protected function container() { ob_start(); echo parent::container(); // phpcs:ignore WordPress.Security.EscapeOutput $post_publication = ( $this->search_header ? "post_publication_widget('{$this->table_name}', '{$this->pub_id}');" : '' ); $post_content = "\n\t\t\t\t<div id='wpda-panel-pub-id-{$this->pub_id}' style='display: block'>\n\t\t\t\t\t{$this->pub_content}\n\t\t\t\t</div>\n\t\t\t\t<script type='application/javascript'>\n\t\t\t\tjQuery(function() {\n\t\t\t\t\tsetTimeout(waitUntilWidgetIsLoaded_{$this->pub_id}, 1000);\n\t\t\t\t\tfunction waitUntilWidgetIsLoaded_{$this->pub_id}() {\n\t\t\t\t\t\tif (jQuery('#wpda-widget-{$this->widget_id} div.ui-widget-content').length>0) {\n\t\t\t\t\t\t\tjQuery('#wpda-widget-{$this->widget_id} div.ui-widget-content').html('');\n\t\t\t\t\t\t\tjQuery('#wpda-panel-pub-id-{$this->pub_id}').appendTo(jQuery('#wpda-widget-{$this->widget_id} div.ui-widget-content'));\n\t\t\t\t\t\t\tjQuery('#{$this->table_name}{$this->pub_id}').DataTable().responsive.recalc();\n\t\t\t\t\t\t\tjQuery('#{$this->table_name}{$this->pub_id}').DataTable().columns.adjust();\n\t\t\t\t\t\t\t{$post_publication}\n\t\t\t\t\t\t\t// console.log('WP Data Access data table libraries loaded...');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsetTimeout(waitUntilWidgetIsLoaded_{$this->pub_id}, 1000);\n\t\t\t\t\t\t\tconsole.log('Waiting for WP Data Access data table libraries to be loaded...');\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t</script>\n\t\t\t"; echo $post_content; // phpcs:ignore WordPress.Security.EscapeOutput return ob_get_clean(); } public static function widget() { $panel_name = ( isset( $_REQUEST['wpda_panel_name'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['wpda_panel_name'] ) ) : '' ); // input var okay.; $panel_pub_id = ( isset( $_REQUEST['wpda_panel_pub_id'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['wpda_panel_pub_id'] ) ) : '' ); // input var okay.; $panel_column = ( isset( $_REQUEST['wpda_panel_column'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['wpda_panel_column'] ) ) : '1' ); // input var okay.; $column_position = ( isset( $_REQUEST['wpda_column_position'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['wpda_column_position'] ) ) : 'prepend' ); // input var okay.; $widget_sequence_nr = ( isset( $_REQUEST['wpda_widget_sequence_nr'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['wpda_widget_sequence_nr'] ) ) : '1' ); // input var okay.; $wdg = new WPDA_Widget_Publication(array( 'name' => $panel_name, 'pub_id' => $panel_pub_id, 'column' => $panel_column, 'position' => $column_position, 'widget_id' => $widget_sequence_nr, )); WPDA::sent_header( 'text/html; charset=UTF-8' ); echo $wdg->container(); // phpcs:ignore WordPress.Security.EscapeOutput wp_die(); } public static function refresh() { echo static::msg( 'ERROR', 'Method not available for this panel type' ); // phpcs:ignore WordPress.Security.EscapeOutput wp_die(); } }