File: /var/www/zaklada/wp-content/plugins/dinamo-foundation-plugin/heart-messages/messages_table.php
<?php
if(!class_exists('WP_List_Table')){
require_once( ABSPATH . 'wp-admin/includes/screen.php' );
require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
}
class Dinamo_Orders_List_Table extends WP_List_Table {
/**
* Constructor, we override the parent to pass our own arguments
* We usually focus on three parameters: singular and plural labels, as well as whether the class supports AJAX.
*/
function __construct() {
parent::__construct( array(
'singular'=> 'wp_list_text_link', //Singular label
'plural' => 'wp_list_test_links', //plural label, also this well be one of the table css class
'ajax' => false //We won't support Ajax for this table
) );
}
function extra_tablenav( $which ) {
add_thickbox(); ?>
<?php if ( $which == "top" ){
echo "<h1>Messages</h1>";
}
}
function get_columns() {
return $columns= array(
'id'=>('ID'),
'message'=>__('Message'),
'actions'=>__('Actions'),
);
}
/**
* Display the rows of records in the table
* @return string, echo the markup of the rows
*/
function display_rows() {
//Get the records registered in the prepare_items method
$records = $this->items;
//Get the columns registered in the get_columns and get_sortable_columns methods
list( $columns, $hidden ) = $this->get_column_info();
$message_serv = new dinamo_donator_messages_service();
//Loop for each record
if(!empty($records)){foreach($records as $rec){
//Open the line
echo '<tr id="">';
foreach ( $columns as $column_name => $column_display_name ) {
//Style attributes for each col
$class = "class='$column_name column-$column_name'";
$style = "";
if ( in_array( $column_name, $hidden ) ) $style = ' style="display:none;"';
$attributes = $class . $style;
$message_item = $rec;
//edit link
$editlink = '/wp-admin/link.php?action=edit';
//Display the cell
switch ( $column_name ) {
case "id" :
if(!is_null($message_item)) {
echo '<td ' . $attributes . '>' . $message_item->id . '</td>';
} else {
echo '<td></td>';
}
break;
case "message" :
if(!is_null($message_item)) {
echo '<td ' . $attributes . '><span class="'. ($message_item->approved ? 'message-approved' : 'message-disapproved') .'">' . $message_item->message . '</span>';
echo '</td>';
}else{
echo '<td></td>';
}
break;
case "actions":
echo '<td '.$attributes. '>';
if($message_item) {
if (current_user_can('administrator')) {
echo '<button class="button button-secondary edit-message-button" onclick="ShowModal(' . $message_item->id . ');">Edit</button>';
echo '<div id="myModal-' . $message_item->id . '" data-id="' . $message_item->id . '" class="modal">
<div class="modal-content" >
<span class="close"onclick="closeEdit(' . $message_item->id . ')">×</span>
<p id="alert-' . $message_item->id . '" class="alert-class"></p>
<textarea id="message-' . $message_item->id . '" class="msg-class msgId-' . $message_item->id . '" name="message"> ' . $message_item->message . '</textarea>
<br>
<button class="btn-full button-secondary" onclick="edit(' . $message_item->id . ');">Save</button>
</div> </div>';
echo '<a data-message-id="' . $rec->id . '" class="table-button delete-message button-secondary">Delete</a>';
}
if ($message_item->approved) {
echo '<a data-message-id="' . $rec->id . '" class="table-button approve-message button-primary">Disapprove Message</a>';
} else {
echo '<a data-message-id="' . $rec->id . '" class="table-button approve-message button-primary">Approve Message</a>';
}
}
echo '</td>';
break;
}
}
//Close the line
echo'</tr>';
}}
}
function display_tablenav( $which ) {
?>
<div class="tablenav <?php echo esc_attr( $which ); ?>">
<div class="alignleft">
<?php $this->extra_tablenav( $which ); ?>
</div>
<div class="alignright">
<?php $this->pagination( $which );?>
</div>
<br class="clear" />
</div>
<?php
}
/**
* Prepare the table with different parameters, pagination, columns and table elements
*/
function prepare_items() {
global $wpdb, $_wp_column_headers;
$screen = get_current_screen();
$order_status = null;
$language = get_current_language();
if(!empty($_GET["order_status"])) {
$order_status = $_GET["order_status"];
}
$search = "";
if(!empty($_GET["search"])) {
$search = $_GET["search"];
}
//How many to display per page?
$perpage = 80;
//Which page is this?
$paged = !empty($_GET["paged"]) ? $_GET["paged"] : '';
if(empty($paged) || !is_numeric($paged) || $paged<=0 ){ $paged=1; }
//order status
// 0 - active
// 1 - cancelled
$cancelled = null;
if($order_status == "1"){
$cancelled = 1;
}
$messages_service = new dinamo_donator_messages_service();
$filtered_messages = $messages_service->get_filter_messages($perpage, $paged, $language);
$totalpages = ceil($filtered_messages["total"]/$perpage);
$this->set_pagination_args( array(
"total_items" =>$filtered_messages["total"],
"total_pages" => $totalpages,
"per_page" => $perpage,
) );
//The pagination links are automatically built according to those parameters
/* -- Register the Columns -- */
$columns = $this->get_columns();
$this->_column_headers = array(
$this->get_columns(),
array(), //hidden columns if applicable
$this->get_sortable_columns()
);
/* -- Fetch the items -- */
$this->items = $filtered_messages["data"];
}
}
add_action( 'admin_menu', 'heart_messages_menu' );
function heart_messages_menu() {
add_menu_page(
'Messages',
'Messages',
'manage_options',
'heart-messages',
'heart_messages_page',
'dashicons-heart'
);
}
function heart_messages_page(){
$wp_list_table = new Dinamo_Orders_List_Table();
$wp_list_table->prepare_items();
echo '<div class="wrap">';
$wp_list_table->display();
echo '</div>';
}
add_action('admin_head', 'custom_messages_table_styles');
function custom_messages_table_styles() {
echo '<style>
</style>';
}
?>