| 1 |
<?php |
| 2 |
|
| 3 |
if (!class_exists('WP_List_Table')) { |
| 4 |
require_once(ABSPATH . 'wp-admin/includes/class-wp-list-table.php'); |
| 5 |
} |
| 6 |
|
| 7 |
/** |
| 8 |
* 推送记录表类 |
| 9 |
*/ |
| 10 |
class Ggpush_Record_Table extends WP_List_Table |
| 11 |
{ |
| 12 |
public function __construct() |
| 13 |
{ |
| 14 |
parent::__construct(array( |
| 15 |
'singular' => 'ggpush_record', |
| 16 |
'plural' => 'ggpush_records', |
| 17 |
'ajax' => false |
| 18 |
)); |
| 19 |
} |
| 20 |
|
| 21 |
public function get_columns() |
| 22 |
{ |
| 23 |
return array( |
| 24 |
'cb' => '<input type="checkbox" />', |
| 25 |
'record_id' => 'Id', |
| 26 |
'record_platform' => '推送平台', |
| 27 |
'record_mode' => '推送方式', |
| 28 |
'record_num' => '推送链接数量', |
| 29 |
'record_result_status' => '推送状态', |
| 30 |
'record_result_code' => '推送结果状态码', |
| 31 |
'record_date' => '推送时间' |
| 32 |
); |
| 33 |
} |
| 34 |
|
| 35 |
public function column_default($item, $column_name) |
| 36 |
{ |
| 37 |
if (isset($item[$column_name])) { |
| 38 |
return $item[$column_name]; |
| 39 |
} |
| 40 |
return ''; |
| 41 |
} |
| 42 |
|
| 43 |
public function column_record_platform($item) |
| 44 |
{ |
| 45 |
$page = sanitize_title($_REQUEST['page']); |
| 46 |
$actions = array( |
| 47 |
'detail' => sprintf('<a href="?page=%s&action=%s&record_id=%d&_wpnonce=%s">详� |
| 48 |
</a>', $page, 'detail', $item['record_id'], wp_create_nonce('bulk-ggpush_records')), |
| 49 |
'delete' => sprintf('<a href="?page=%s&action=%s&record_id=%d&_wpnonce=%s">删除</a>', $page, 'delete', $item['record_id'], wp_create_nonce('bulk-ggpush_records')), |
| 50 |
); |
| 51 |
|
| 52 |
return sprintf('%1$s %2$s', Ggpush_Api::format_record_platform($item['record_platform']), $this->row_actions($actions)); |
| 53 |
} |
| 54 |
|
| 55 |
public function column_record_mode($item) |
| 56 |
{ |
| 57 |
return Ggpush_Api::format_record_mode($item['record_mode']); |
| 58 |
} |
| 59 |
|
| 60 |
public function column_record_result_status($item) |
| 61 |
{ |
| 62 |
return Ggpush_Api::format_result_status($item['record_result_status']); |
| 63 |
} |
| 64 |
|
| 65 |
function column_cb($item) |
| 66 |
{ |
| 67 |
return sprintf( |
| 68 |
'<input type="checkbox" name="ids[]" value="%d" />', $item['record_id'] |
| 69 |
); |
| 70 |
} |
| 71 |
|
| 72 |
public function get_bulk_actions() |
| 73 |
{ |
| 74 |
return array( |
| 75 |
'delete' => '删除勾选的数据', |
| 76 |
'delete_1' => '删除1天之前的数据', |
| 77 |
'delete_3' => '删除3天之前的数据', |
| 78 |
'delete_30' => '删除30天之前的数据', |
| 79 |
'delete_all' => '删除所有的数据' |
| 80 |
); |
| 81 |
} |
| 82 |
|
| 83 |
public function prepare_items() |
| 84 |
{ |
| 85 |
global $wpdb; |
| 86 |
$table_name = $wpdb->prefix . $this->_args['plural']; |
| 87 |
$columns = $this->get_columns(); |
| 88 |
$hidden = array(); |
| 89 |
$sortable = array(); |
| 90 |
$this->_column_headers = array($columns, $hidden, $sortable); |
| 91 |
$per_page = 10; |
| 92 |
$current_page = $this->get_pagenum(); |
| 93 |
if (1 < $current_page) { |
| 94 |
$offset = $per_page * ($current_page - 1); |
| 95 |
} else { |
| 96 |
$offset = 0; |
| 97 |
} |
| 98 |
$map = array(); |
| 99 |
if (!empty($_GET['record_platform'])) { |
| 100 |
$map[] = '`record_platform` = ' . intval($_GET['record_platform']); |
| 101 |
} |
| 102 |
if (!empty($_GET['record_mode'])) { |
| 103 |
$map[] = '`record_mode` = ' . intval($_GET['record_mode']); |
| 104 |
} |
| 105 |
if (!empty($_GET['record_status'])) { |
| 106 |
$map[] = '`record_result_status` = ' . intval($_GET['record_status']); |
| 107 |
} |
| 108 |
if (isset($_GET['record_code']) && is_numeric($_GET['record_code'])) { |
| 109 |
$map[] = '`record_result_code` = ' . intval($_GET['record_code']); |
| 110 |
} |
| 111 |
$where = ''; |
| 112 |
if (!empty($map)) { |
| 113 |
$where = 'WHERE ' . implode(' AND ', $map); |
| 114 |
} |
| 115 |
$sql = 'SELECT * FROM `' . $table_name . '` ' . $where . ' ORDER BY `record_id` DESC LIMIT %d, %d'; |
| 116 |
$items = $wpdb->get_results($wpdb->prepare($sql, $offset, $per_page), ARRAY_A); |
| 117 |
$count = $wpdb->get_var('SELECT COUNT(`record_id`) FROM `' . $table_name . '` ' . $where); |
| 118 |
$this->items = $items; |
| 119 |
$this->set_pagination_args(array( |
| 120 |
'total_items' => $count, |
| 121 |
'per_page' => $per_page, |
| 122 |
'total_pages' => ceil($count / $per_page) |
| 123 |
)); |
| 124 |
} |
| 125 |
|
| 126 |
/** |
| 127 |
* 没有数据 |
| 128 |
* @return void |
| 129 |
*/ |
| 130 |
public function no_items() |
| 131 |
{ |
| 132 |
?> |
| 133 |
暂无推送记录 |
| 134 |
<?php |
| 135 |
} |
| 136 |
|
| 137 |
public function extra_tablenav($which) |
| 138 |
{ |
| 139 |
if ('top' === $which) { |
| 140 |
$record_platform = Ggpush_Plugin::get('record_platform', 0); |
| 141 |
$record_mode = Ggpush_Plugin::get('record_mode', 0); |
| 142 |
$record_status = Ggpush_Plugin::get('record_status', 0); |
| 143 |
$record_code = Ggpush_Plugin::get('record_code', ''); |
| 144 |
?> |
| 145 |
<div class="alignleft actions"> |
| 146 |
<label for="filter-by-platform" class="screen-reader-text">按推送平台筛选</label> |
| 147 |
<select name="record_platform" id="filter-by-platform"> |
| 148 |
<option value="0" <?php selected($record_platform,0);?>>推送平台</option> |
| 149 |
<option value="1" <?php selected($record_platform,1);?>>百度</option> |
| 150 |
<option value="2" <?php selected($record_platform,2);?>>360</option> |
| 151 |
<option value="3" <?php selected($record_platform,3);?>>搜狗</option> |
| 152 |
<option value="4" <?php selected($record_platform,4);?>>头条</option> |
| 153 |
<option value="5" <?php selected($record_platform,5);?>>神马</option> |
| 154 |
<option value="6" <?php selected($record_platform,6);?>>� |
| 155 |
应</option> |
| 156 |
<option value="7" <?php selected($record_platform,7);?>>谷歌</option> |
| 157 |
<option value="8" <?php selected($record_platform,8);?>>IndexNow</option> |
| 158 |
<option value="9" <?php selected($record_platform,9);?>>Yandex</option> |
| 159 |
<option value="10" <?php selected($record_platform,10);?>>Seznam.cz</option> |
| 160 |
</select> |
| 161 |
<label for="filter-by-mode" class="screen-reader-text">按推送方式筛选</label> |
| 162 |
<select name="record_mode" id="filter-by-mode"> |
| 163 |
<option value="0" <?php selected($record_mode,0);?>>推送方式</option> |
| 164 |
<option value="1" <?php selected($record_mode,1);?>>普通收录</option> |
| 165 |
<option value="2" <?php selected($record_mode,2);?>>快速抓取</option> |
| 166 |
<option value="3" <?php selected($record_mode,3);?>>Js提交</option> |
| 167 |
<option value="4" <?php selected($record_mode,4);?>>Api提交</option> |
| 168 |
<option value="5" <?php selected($record_mode,5);?>>IndexNow</option> |
| 169 |
</select> |
| 170 |
<label for="filter-by-status" class="screen-reader-text">按推送状态筛选</label> |
| 171 |
<select name="record_status" id="filter-by-status"> |
| 172 |
<option value="0" <?php selected($record_status,0);?>>推送状态</option> |
| 173 |
<option value="1" <?php selected($record_status,1);?>>成功</option> |
| 174 |
<option value="2" <?php selected($record_status,2);?>>失败</option> |
| 175 |
<option value="3" <?php selected($record_status,3);?>>未知</option> |
| 176 |
</select> |
| 177 |
<label for="filter-by-code" class="screen-reader-text">按推送结果状态码筛选</label> |
| 178 |
<select name="record_code" id="filter-by-code"> |
| 179 |
<option value="" <?php selected($record_code,'');?>>推送结果状态码</option> |
| 180 |
<option value="0" <?php selected($record_code,0);?>>0</option> |
| 181 |
<option value="200" <?php selected($record_code,200);?>>200</option> |
| 182 |
<option value="202" <?php selected($record_code,202);?>>202</option> |
| 183 |
<option value="301" <?php selected($record_code,301);?>>301</option> |
| 184 |
<option value="302" <?php selected($record_code,302);?>>302</option> |
| 185 |
<option value="400" <?php selected($record_code,400);?>>400</option> |
| 186 |
<option value="401" <?php selected($record_code,401);?>>401</option> |
| 187 |
<option value="403" <?php selected($record_code,403);?>>403</option> |
| 188 |
<option value="404" <?php selected($record_code,404);?>>404</option> |
| 189 |
<option value="405" <?php selected($record_code,405);?>>405</option> |
| 190 |
<option value="413" <?php selected($record_code,413);?>>413</option> |
| 191 |
<option value="422" <?php selected($record_code,422);?>>422</option> |
| 192 |
<option value="500" <?php selected($record_code,500);?>>500</option> |
| 193 |
<option value="502" <?php selected($record_code,502);?>>502</option> |
| 194 |
<option value="503" <?php selected($record_code,503);?>>503</option> |
| 195 |
</select> |
| 196 |
<input type="submit" name="filter_action" id="post-query-submit" class="button" value="筛选"> |
| 197 |
</div> |
| 198 |
<?php |
| 199 |
} |
| 200 |
} |
| 201 |
} |