__('autotermsschedulelog', 'simple-tags'),
'plural' => __('autotermsschedulelogs', 'simple-tags'),
'ajax' => false
]);
}
public function get_st_autoterms()
{
$per_page = $this->get_items_per_page('st_autoterms_schedule_logs_per_page', 20);
$current_page = $this->get_pagenum();
// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reading GET parameters for sorting display, no state change
$orderby = (!empty($_REQUEST['orderby'])) ? sanitize_text_field(wp_unslash($_REQUEST['orderby'])) : 'ID';
// phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Reading GET parameter for sort order display, no state change
$order = (!empty($_REQUEST['order'])) ? sanitize_text_field(wp_unslash($_REQUEST['order'])) : 'desc';
return taxopress_autoterms_logs_data($per_page, $current_page, $orderby, $order, true);
}
public static function record_count()
{
return get_st_autoterms()['counts'];
}
public function single_row($item)
{
$class = ['st-autoterm-log-tr'];
$id = 'st-autoterm-log-' . md5($item->ID);
echo sprintf('
', esc_attr($id), esc_attr(implode(' ', $class)));
$this->single_row_columns($item);
echo '
';
}
public function get_columns()
{
$columns = [
'cb' => '',
'title' => esc_html__('Post', 'simple-tags'),
'post_type' => esc_html__('Post type', 'simple-tags'),
'taxonomy' => esc_html__('Taxonomy', 'simple-tags'),
'terms' => esc_html__('Terms added', 'simple-tags'),
'date' => esc_html__('Date', 'simple-tags')
];
return $columns;
}
public function column_default($item, $column_name)
{
return isset($item->$column_name) ? $item->$column_name : '—';
}
public function no_items()
{
esc_html_e('Schedule log is empty.', 'simple-tags');
}
protected function column_cb($item)
{
return sprintf('', 'taxopress_autoterms_schedule_logs', $item->ID);
}
protected function get_bulk_actions()
{
$actions = [
'taxopress-autoterms-delete-logs' => esc_html__('Delete', 'simple-tags')
];
return $actions;
}
public function process_bulk_action()
{
$query_arg = '_wpnonce';
$action = 'bulk-' . $this->_args['plural'];
$checked = $result = isset($_REQUEST[$query_arg]) ? wp_verify_nonce(sanitize_key(wp_unslash($_REQUEST[$query_arg])), $action) : false;
if (!$checked || !current_user_can('simple_tags')) {
return;
}
if ($this->current_action() === 'taxopress-autoterms-delete-logs') {
$taxopress_autoterms_schedule_logs = isset($_REQUEST['taxopress_autoterms_schedule_logs']) ? array_map('sanitize_text_field', (array) wp_unslash($_REQUEST['taxopress_autoterms_schedule_logs'])) : [];
if (!empty($taxopress_autoterms_schedule_logs)) {
foreach ($taxopress_autoterms_schedule_logs as $taxopress_autoterms_log) {
wp_delete_post($taxopress_autoterms_log, true);
}
}
}
}
protected function get_sortable_columns()
{
$sortable_columns = [
'title' => ['title', true],
'date' => ['date', true]
];
return $sortable_columns;
}
protected function handle_row_actions($item, $column_name, $primary)
{
$auto_term_log_post_id = get_post_meta($item->ID, '_taxopress_log_post_id', true);
$actions = [
'edit' => sprintf(
'%s',
add_query_arg(
[
'action' => 'edit',
'post' => $auto_term_log_post_id,
],
admin_url('post.php')
),
__('Edit Main Post', 'simple-tags')
),
'delete' => sprintf(
'%s',
add_query_arg(
[
'page' => 'st_autoterms_schedule',
'action' => 'taxopress-delete-autoterm-log',
'taxopress_autoterms_log' => esc_attr($item->ID),
'_wpnonce' => wp_create_nonce('autoterm-action-request-nonce')
],
admin_url('admin.php')
),
__('Delete Log', 'simple-tags')
),
];
return $column_name === $primary ? $this->row_actions($actions, false) : '';
}
protected function column_title($item)
{
$auto_term_log_post_id = get_post_meta($item->ID, '_taxopress_log_post_id', true);
$title = sprintf(
'%2$s',
add_query_arg(
[
'action' => 'edit',
'post' => $auto_term_log_post_id,
],
admin_url('post.php')
),
esc_html(get_the_title($auto_term_log_post_id))
);
return $title;
}
protected function column_post_type($item)
{
$auto_term_log_post_id = get_post_meta($item->ID, '_taxopress_log_post_id', true);
$auto_term_log_posttype = get_post_type_object(get_post_type($auto_term_log_post_id));
return ($auto_term_log_posttype && !is_wp_error($auto_term_log_posttype)) ? $auto_term_log_posttype->labels->singular_name : '—';
}
protected function column_taxonomy($item)
{
$taxopress_log_taxonomy = get_post_meta($item->ID, '_taxopress_log_taxonomy', true);
$taxopress_log_taxonomy_data = get_taxonomy($taxopress_log_taxonomy);
return ($taxopress_log_taxonomy_data && !is_wp_error($taxopress_log_taxonomy_data)) ? $taxopress_log_taxonomy_data->labels->singular_name : '—';
}
protected function column_terms($item)
{
$taxopress_log_terms = get_post_meta($item->ID, '_taxopress_log_terms', true);
if ($taxopress_log_terms && !empty(trim($taxopress_log_terms))) {
return ' ' . esc_html(ucwords($taxopress_log_terms)) . ' ';
} else {
return ' ' . esc_html__('None', 'simple-tags') . ' ';
}
}
protected function column_date($item)
{
return get_the_date('l F j, Y h:i A', $item->ID);
}
public function prepare_items()
{
$this->_column_headers = $this->get_column_info();
$this->process_bulk_action();
$per_page = $this->get_items_per_page('st_autoterms_schedule_logs_per_page', 20);
$results = $this->get_st_autoterms();
$data = $results['posts'];
$total_items = $results['counts'];
$current_page = $this->get_pagenum();
$this->items = $data;
$this->set_pagination_args([
'total_items' => $total_items,
'per_page' => $per_page,
'total_pages' => ceil($total_items / $per_page)
]);
}
}