/wp-content/plugins/wpdatatables/source/class.wdtbrowsechartstable.php

https://gitlab.com/ogar.vasily/activetables · PHP · 243 lines · 205 code · 32 blank · 6 comment · 7 complexity · 97e6ef8314f28e58036a23f3a6ade8a9 MD5 · raw file

  1. <?php
  2. /**
  3. * Browse charts for the admin panel
  4. */
  5. if( ! class_exists( 'WP_List_Table' ) ) {
  6. require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
  7. }
  8. class WDTBrowseChartsTable extends WP_List_Table {
  9. public function get_columns(){
  10. return array(
  11. 'cb' => '<input type="checkbox" />',
  12. 'id' => 'ID',
  13. 'title' => 'Title',
  14. 'engine' => 'Render Engine',
  15. 'type' => 'Chart Type',
  16. 'shortcode' => 'Shortcode'
  17. );
  18. }
  19. public function get_sortable_columns(){
  20. return array(
  21. 'id' => array('id', true),
  22. 'title' => array('title', false),
  23. 'engine' => array('engine', false),
  24. 'type' => array('type', false)
  25. );
  26. }
  27. public function get_chart_count(){
  28. global $wpdb;
  29. $query = "SELECT COUNT(*) FROM {$wpdb->prefix}wpdatacharts";
  30. $count = $wpdb->get_var( $query );
  31. return $count;
  32. }
  33. /**
  34. * Get all tables for the browser
  35. */
  36. function get_all_charts(){
  37. global $wpdb;
  38. $query = "SELECT id, title, type, engine
  39. FROM {$wpdb->prefix}wpdatacharts ";
  40. if(isset($_REQUEST['s'])){
  41. $query .= " WHERE title LIKE '%".sanitize_text_field($_POST['s'])."%' ";
  42. }
  43. if(isset($_REQUEST['orderby'])){
  44. if( in_array(
  45. $_REQUEST['orderby'],
  46. array(
  47. 'id',
  48. 'title',
  49. 'engine',
  50. 'type'
  51. )
  52. )
  53. ){
  54. $query .= " ORDER BY ".$_GET['orderby'];
  55. if($_REQUEST['order'] == 'desc'){
  56. $query .= " DESC ";
  57. }else{
  58. $query .= " ASC ";
  59. }
  60. }
  61. }else{
  62. $query .= " ORDER BY id ASC ";
  63. }
  64. if(isset($_REQUEST['paged'])){
  65. $paged = (int) $_REQUEST['paged'];
  66. }else{
  67. $paged = 1;
  68. }
  69. $tables_per_page = get_option('wdtTablesPerPage') ? get_option('wdtTablesPerPage') : 10;
  70. $query .= " LIMIT ".($paged-1)*$tables_per_page.", ".$tables_per_page;
  71. $all_charts = apply_filters( 'wpdatatables_filter_browse_charts', $wpdb->get_results( $query, ARRAY_A ) );
  72. return $all_charts;
  73. }
  74. public function column_default( $item, $column_name ){
  75. switch( $column_name ){
  76. case 'shortcode':
  77. return '[wpdatachart id='.$item['id'].']';
  78. break;
  79. case 'id':
  80. case 'title':
  81. default:
  82. return $item[ $column_name ];
  83. break;
  84. }
  85. }
  86. public function column_title($item){
  87. $actions = array(
  88. 'edit' => '<a href="admin.php?page=wpdatatables-chart-wizard&chart_id='.$item['id'].'" title="'.__('Edit','wpdatatables').'">'.__('Edit','wpdatatables').'</a>',
  89. 'trash' => '<a class="submitdelete" title="'.__('Delete','wpdatatables').'" href="admin.php?page=wpdatatables-charts&action=delete&chart_id='.$item['id'].'" rel="'.$item['id'].'">'.__('Delete','wpdatatables').'</a>'
  90. );
  91. return '<a href="admin.php?page=wpdatatables-chart-wizard&chart_id='.$item['id'].'">'.$item['title'].'</a> '.$this->row_actions($actions);
  92. }
  93. public function get_bulk_actions() {
  94. $actions = array(
  95. 'delete' => 'Delete'
  96. );
  97. return $actions;
  98. }
  99. public function column_cb($item) {
  100. return sprintf(
  101. '<input type="checkbox" name="chart_id[]" value="%s" />', $item['id']
  102. );
  103. }
  104. public function column_type( $item ){
  105. switch( $item['type'] ){
  106. case 'google_column_chart':
  107. return __( 'Google column chart', 'wpdatatables' );
  108. break;
  109. case 'google_histogram':
  110. return __( 'Google Histogram', 'wpdatatables' );
  111. break;
  112. case 'google_bar_chart':
  113. return __( 'Google Bar Chart', 'wpdatatables' );
  114. break;
  115. case 'google_area_chart':
  116. return __( 'Google Area Chart', 'wpdatatables' );
  117. break;
  118. case 'google_stepped_area_chart':
  119. return __( 'Google Stepped Area Chart', 'wpdatatables' );
  120. break;
  121. case 'google_line_chart':
  122. return __( 'Google Line Chart', 'wpdatatables' );
  123. break;
  124. case 'google_pie_chart':
  125. return __( 'Google Pie Chart', 'wpdatatables' );
  126. break;
  127. case 'google_bubble_chart':
  128. return __( 'Google Bubble Chart', 'wpdatatables' );
  129. break;
  130. case 'google_donut_chart':
  131. return __( 'Google Donut Chart', 'wpdatatables' );
  132. break;
  133. case 'google_gauge_chart':
  134. return __( 'Google Gauge Chart', 'wpdatatables' );
  135. break;
  136. case 'google_scatter_chart':
  137. return __( 'Google Scatter Chart', 'wpdatatables' );
  138. break;
  139. case 'highcharts_line_chart':
  140. return __( 'Highcharts Line Chart', 'wpdatatables' );
  141. break;
  142. case 'highcharts_basic_area_chart':
  143. return __( 'Highcharts Basic Area Chart', 'wpdatatables' );
  144. break;
  145. case 'highcharts_stacked_area_chart':
  146. return __( 'Highcharts Stacked Area Chart', 'wpdatatables' );
  147. break;
  148. case 'highcharts_basic_bar_chart':
  149. return __( 'Highcharts Basic Bar Chart', 'wpdatatables' );
  150. break;
  151. case 'highcharts_stacked_bar_chart':
  152. return __( 'Highcharts Stacked Bar Chart', 'wpdatatables' );
  153. break;
  154. case 'highcharts_basic_column_chart':
  155. return __( 'Highcharts Basic Column Chart', 'wpdatatables' );
  156. break;
  157. case 'highcharts_stacked_column_chart':
  158. return __( 'Highcharts Stacked Column Chart', 'wpdatatables' );
  159. break;
  160. case 'highcharts_pie_chart':
  161. return __( 'Highcharts Pie Chart', 'wpdatatables' );
  162. break;
  163. case 'highcharts_pie_with_gradient_chart':
  164. return __( 'Highcharts Pie With Gradient Chart', 'wpdatatables' );
  165. break;
  166. case 'highcharts_donut_chart':
  167. return __( 'Highcharts Donut Chart', 'wpdatatables' );
  168. break;
  169. case 'highcharts_scatter_plot':
  170. return __( 'Highcharts Scatter Plot', 'wpdatatables' );
  171. break;
  172. case 'highcharts_3d_column_chart':
  173. return __( 'Highcharts 3D Column Chart', 'wpdatatables' );
  174. break;
  175. case 'highcharts_3d_pie_chart':
  176. return __( 'Highcharts 3D Pie Chart', 'wpdatatables' );
  177. break;
  178. case 'highcharts_3d_donut_chart':
  179. return __( 'Highcharts 3D Donut Chart', 'wpdatatables' );
  180. break;
  181. case 'highcharts_angular_gauge_chart':
  182. return __( 'Highcharts Angular Gauge Chart', 'wpdatatables' );
  183. break;
  184. case 'highcharts_solid_gauge_chart':
  185. return __( 'Highcharts Solid Gauge Chart', 'wpdatatables' );
  186. break;
  187. default:
  188. return $item;
  189. break;
  190. }
  191. }
  192. public function prepare_items(){
  193. $current_page = $this->get_pagenum();
  194. $per_page = get_option('wdtTablesPerPage') ? get_option('wdtTablesPerPage') : 10;
  195. $columns = $this->get_columns();
  196. $hidden = array();
  197. $sortable = $this->get_sortable_columns();
  198. $this->_column_headers = array($columns, $hidden, $sortable);
  199. $this->set_pagination_args(
  200. array(
  201. 'total_items' => $this->get_chart_count(),
  202. 'per_page' => $per_page
  203. )
  204. );
  205. $this->items = $this->get_all_charts();
  206. }
  207. public function no_items() {
  208. _e( 'No wpDataCharts in the system yet.', 'wpdatatables' );
  209. }
  210. }
  211. ?>