Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
save_bvnghean.vn
/
wp-content
/
plugins
/
wpDataTables_v1.6.1
/
controllers
:
wdt_functions.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /** * @package wpDataTables * @version 1.6.0 */ /** * Main wpDataTables functions */ ?> <?php /** * The installation/activation method, installs the plugin table */ function wpdatatables_activation(){ global $wpdb; $tables_table_name = $wpdb->prefix .'wpdatatables'; $tables_sql = "CREATE TABLE {$tables_table_name} ( id INT( 11 ) NOT NULL AUTO_INCREMENT, title varchar(255) NOT NULL, show_title tinyint(1) NOT NULL default '1', table_type varchar(55) NOT NULL, content text NOT NULL, filtering tinyint(1) NOT NULL default '1', filtering_form tinyint(1) NOT NULL default '0', sorting tinyint(1) NOT NULL default '1', tools tinyint(1) NOT NULL default '1', server_side tinyint(1) NOT NULL default '0', editable tinyint(1) NOT NULL default '0', inline_editing tinyint(1) NOT NULL default '0', popover_tools tinyint(1) NOT NULL default '0', editor_roles varchar(255) NOT NULL default '', mysql_table_name varchar(255) NOT NULL default '', edit_only_own_rows tinyint(1) NOT NULL default 0, userid_column_id int( 11 ) NOT NULL default 0, display_length int(3) NOT NULL default '10', auto_refresh int(3) NOT NULL default 0, fixed_columns tinyint(1) NOT NULL default '-1', chart enum('none','area','bar','column','line','pie') NOT NULL, chart_title varchar(255) NOT NULL, fixed_layout tinyint(1) NOT NULL default '0', responsive tinyint(1) NOT NULL default '0', scrollable tinyint(1) NOT NULL default '0', word_wrap tinyint(1) NOT NULL default '0', hide_before_load tinyint(1) NOT NULL default '0', var1 VARCHAR( 255 ) NOT NULL default '', var2 VARCHAR( 255 ) NOT NULL default '', var3 VARCHAR( 255 ) NOT NULL default '', tabletools_config VARCHAR( 255 ) NOT NULL default '', UNIQUE KEY id (id) ) DEFAULT CHARSET=utf8 COLLATE utf8_general_ci"; $columns_table_name = $wpdb->prefix.'wpdatatables_columns'; $columns_sql = "CREATE TABLE {$columns_table_name} ( id INT( 11 ) NOT NULL AUTO_INCREMENT, table_id int(11) NOT NULL, orig_header varchar(255) NOT NULL, display_header varchar(255) NOT NULL, filter_type enum('null_str','text','number','number-range','date-range','select','checkbox') NOT NULL, column_type enum('autodetect','string','int','float','date','link','email','image','formula') NOT NULL, input_type enum('none','text','textarea','date','link','email','selectbox','multi-selectbox','attachment') NOT NULL default 'text', input_mandatory tinyint(1) NOT NULL default '0', id_column tinyint(1) NOT NULL default '0', group_column tinyint(1) NOT NULL default '0', sort_column tinyint(1) NOT NULL default '0', hide_on_phones tinyint(1) NOT NULL default '0', hide_on_tablets tinyint(1) NOT NULL default '0', use_in_chart tinyint(1) NOT NULL default '0', chart_horiz_axis tinyint(1) NOT NULL default '0', visible tinyint(1) NOT NULL default '1', sum_column tinyint(1) NOT NULL default '0', skip_thousands_separator tinyint(1) NOT NULL default '0', width VARCHAR( 4 ) NOT NULL default '', possible_values TEXT NOT NULL default '', default_value VARCHAR(100) NOT NULL default '', css_class VARCHAR(255) NOT NULL default '', text_before VARCHAR(255) NOT NULL default '', text_after VARCHAR(255) NOT NULL default '', formatting_rules TEXT NOT NULL default '', calc_formula TEXT NOT NULL default '', color VARCHAR(255) NOT NULL default '', pos int(11) NOT NULL default '0', UNIQUE KEY id (id) ) DEFAULT CHARSET=utf8 COLLATE utf8_general_ci"; $charts_table_name = $wpdb->prefix.'wpdatacharts'; $charts_sql = "CREATE TABLE {$charts_table_name} ( id int(11) NOT NULL AUTO_INCREMENT, wpdatatable_id int(11) NOT NULL, title varchar(255) NOT NULL, engine enum('google','highcharts') NOT NULL, type varchar(255) NOT NULL, json_render_data text NOT NULL, UNIQUE KEY id (id) ) DEFAULT CHARSET=utf8 COLLATE utf8_general_ci"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($tables_sql); dbDelta($columns_sql); dbDelta($charts_sql); if(!get_option('wdtUseSeparateCon')){ update_option('wdtUseSeparateCon', false); } if(!get_option('wdtMySqlHost')){ update_option('wdtMySqlHost', ''); } if(!get_option('wdtMySqlDB')){ update_option('wdtMySqlDB', ''); } if(!get_option('wdtMySqlUser')){ update_option('wdtMySqlUser', ''); } if(!get_option('wdtMySqlPwd')){ update_option('wdtMySqlPwd', ''); } if(!get_option('wdtMySqlPort')){ update_option('wdtMySqlPort', '3306'); } if(!get_option('wdtRenderCharts')){ update_option('wdtRenderCharts', 'below'); } if(!get_option('wdtRenderFilter')){ update_option('wdtRenderFilter', 'footer'); } if(!get_option('wdtRenderFilter')){ update_option('wdtTopOffset', '0'); } if(!get_option('wdtLeftOffset')){ update_option('wdtLeftOffset', '0'); } if(!get_option('wdtDateFormat')){ update_option('wdtDateFormat', 'd/m/Y'); } if(!get_option('wdtInterfaceLanguage')){ update_option('wdtInterfaceLanguage', ''); } if(!get_option('wdtTablesPerPage')){ update_option('wdtTablesPerPage', 10); } if(!get_option('wdtNumberFormat')){ update_option('wdtNumberFormat', 1); } if(!get_option('wdtDecimalPlaces')){ update_option('wdtDecimalPlaces', 2); } if(!get_option('wdtNumbersAlign')){ update_option('wdtNumbersAlign', true); } if(!get_option('wdtCustomJs')){ update_option('wdtCustomJs', ''); } if(!get_option('wdtCustomCss')){ update_option('wdtCustomCss', ''); } if(!get_option('wdtMinifiedJs')){ update_option('wdtMinifiedJs', true); } if(!get_option('wdtTabletWidth')){ update_option('wdtTabletWidth', 1024); } if(!get_option('wdtMobileWidth')){ update_option('wdtMobileWidth', 480); } if(!get_option('wdtPurchaseCode')){ update_option('wdtPurchaseCode', ''); } } function wpdatatables_deactivation(){ } /** * Uninstall hook */ function wpdatatables_uninstall(){ global $wpdb; delete_option('wdtUseSeparateCon'); delete_option('wdtMySqlHost'); delete_option('wdtMySqlDB'); delete_option('wdtMySqlUser'); delete_option('wdtMySqlPwd'); delete_option('wdtRenderCharts'); delete_option('wdtTopOffset'); delete_option('wdtLeftOffset'); delete_option('wdtDateFormat'); delete_option('wdtInterfaceLanguage'); $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}wpdatatables"); $wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}wpdatatables_columns"); } // Make sure we don't expose any info if called directly if ( !function_exists( 'add_action' ) ) { echo "Hi there! I'm just a plugin, not much I can do when called directly."; exit; } /** * Helper method which gets the columns from DB * for a provided table ID */ function wdt_get_columns_by_table_id( $table_id ) { global $wpdb; // get the columns from DB do_action( 'wpdatatables_before_get_columns_metadata', $table_id ); $query = 'SELECT * FROM '.$wpdb->prefix.'wpdatatables_columns WHERE table_id='.$table_id.' ORDER BY pos'; $columns = $wpdb->get_results( $query ); $columns = stripslashes_deep( $columns ); $columns = apply_filters( 'wpdatatables_filter_columns_metadata', $columns, $table_id ); return $columns; } /** * Helper method which gets the column's data from DB * for a provided column ID */ function wdt_get_column_data( $column_id ) { global $wpdb; $query = "SELECT * FROM {$wpdb->prefix}wpdatatables_columns WHERE id='$column_id'"; $column = $wpdb->get_row( $query, ARRAY_A ); $column = stripslashes_deep( $column ); return $column; } /** * Helper function which returns all data for a table */ function wdt_get_table_by_id( $table_id ){ global $wpdb; do_action( 'wpdatatables_before_get_table_metadata', $table_id ); $query = "SELECT * FROM {$wpdb->prefix}wpdatatables WHERE id={$table_id}"; $data = $wpdb->get_row( $query, ARRAY_A ); $data['content'] = stripslashes($data['content']); if( !empty( $data['tabletools_config'] ) ){ $data['tabletools_config'] = unserialize( $data['tabletools_config'] ); }else{ if( !empty( $data['tools'] ) ){ $data['tabletools_config'] = array( 'columns' => true, 'copy' => true, 'print' => true, 'excel' => true, 'csv' => true, 'pdf' => true ); } } $data = apply_filters( 'wpdatatables_filter_table_metadata', $data, $table_id ); return $data; } /** * Helper function that returns the wpDataTable object (without applying rendering rules) */ function wdt_get_wpdatatable( $id, $disable_limit = false ){ if( empty( $id ) ){ return false; } $table_data = wdt_get_table_by_id( $id ); $table_data['disable_limit'] = $disable_limit; $column_data = wdt_get_columns_by_table_id( $id ); $tbl = new WPDataTable(); $tbl->setWpId( $id ); $column_data_prepared = $tbl->prepareColumnData( $column_data, $table_data ); $tbl->fillFromData( $table_data, $column_data_prepared ); $tbl->reorderColumns( $column_data_prepared['column_order'] ); $tbl = apply_filters( 'wpdatatables_filter_initial_table_construct', $tbl ); //can be used for creating new table type return $tbl; } /** * Helper func that prints out the table */ function wdt_output_table( $id, $no_scripts = 0 ) { global $wp_scripts; echo wpdatatable_shortcode_handler( array('id'=>$id, 'no_scripts' => $no_scripts ) ); } /** * Handler for the chart shortcode */ function wpdatachart_shortcode_handler( $atts, $content = null ){ global $wpdb; extract( shortcode_atts( array( 'id' => '0' ), $atts ) ); if( !$id ){ return false; } do_action( 'wpdatatables_before_render_chart', $id ); $wpDataChart = new WPDataChart(); $wpDataChart->setId( $id ); $wpDataChart->loadFromDB(); return $wpDataChart->renderChart(); } /** * Handler for the table shortcode */ function wpdatatable_shortcode_handler( $atts, $content = null ) { global $wpdb, $wdt_var1, $wdt_var2, $wdt_var3, $wdt_export_file_name; extract( shortcode_atts( array( 'id' => '0', 'show_only_chart' => false, 'no_scripts' => 0, 'var1' => '%%no_val%%', 'var2' => '%%no_val%%', 'var3' => '%%no_val%%', 'export_file_name' => '%%no_val%%' ), $atts ) ); // Protection if(!$id){ return false; } $table_data = wdt_get_table_by_id( $id ); if( empty( $table_data['content'] ) ){ return __('wpDataTable with provided ID not found!','wpdatatables'); } $column_data = wdt_get_columns_by_table_id( $id ); // Do action before rendering a table do_action( 'wpdatatables_before_render_table', $id ); // Shortcode variables $wdt_var1 = $var1 !== '%%no_val%%' ? $var1 : $table_data['var1']; $wdt_var2 = $var2 !== '%%no_val%%' ? $var2 : $table_data['var2']; $wdt_var3 = $var3 !== '%%no_val%%' ? $var3 : $table_data['var3']; $wdt_export_file_name = $export_file_name !== '%%no_val%%' ? $export_file_name : ''; // Preparing column properties $tbl = new WPDataTable(); $tbl->setWpId( $id ); if(empty($table_data['content'])){ return __('wpDataTable with provided ID not found!','wpdatatables'); } $column_data_prepared = $tbl->prepareColumnData( $column_data, $table_data ); $tbl->fillFromData( $table_data, $column_data_prepared ); $tbl = apply_filters( 'wpdatatables_filter_initial_table_construct', $tbl );//can be used for creating new table type $tbl->reorderColumns( $column_data_prepared['column_order'] ); $tbl->wdtDefineColumnsWidth( $column_data_prepared['column_widths'] ); $tbl->setColumnsPossibleValues( $column_data_prepared['column_possible_values'] ); if(!$no_scripts){ wp_enqueue_script('jquery-ui-core'); wp_enqueue_script('jquery-ui-progressbar'); wp_enqueue_script('jquery-ui-datepicker'); wp_enqueue_script('jquery-ui-button'); wp_enqueue_style( 'dashicons' ); wp_enqueue_script('wdt_google_charts','//www.google.com/jsapi'); wp_enqueue_script('formstone-selecter',WDT_JS_PATH.'selecter/jquery.fs.selecter.min.js'); wp_enqueue_style('formstone-selecter',WDT_CSS_PATH.'jquery.fs.selecter.css'); wp_enqueue_script('wpdatatables-icheck',WDT_JS_PATH.'icheck/icheck.min.js'); wp_enqueue_style('wpdatatables-icheck',WDT_CSS_PATH.'icheck.minimal.css'); wp_enqueue_script('remodal-popup',WDT_JS_PATH.'popup/jquery.remodal.min.js'); wp_enqueue_style('remodal-popup',WDT_CSS_PATH.'jquery.remodal.css'); wp_enqueue_script('pickadate-main',WDT_JS_PATH.'datepicker/picker.js'); wp_enqueue_script('pickadate-date',WDT_JS_PATH.'datepicker/picker.date.js'); wp_enqueue_style('pickadate-main',WDT_CSS_PATH.'datepicker.default.css'); wp_enqueue_style('pickadate-date',WDT_CSS_PATH.'datepicker.default.date.css'); }else{ $tbl->disableScripts(); } $tbl->prepareRenderingRules( $column_data ); $output_str = ''; if(!$show_only_chart){ if( $table_data['show_title'] ){ if( $table_data['title'] ){ $output_str .= apply_filters('wpdatatables_filter_table_title', (empty($table_data['title']) ? '' : '<h2>'. $table_data['title'] .'</h2>'), $id ); } } $output_str .= $tbl->generateTable(); }else{ if( get_option('wdtMinifiedJs') ){ wp_enqueue_script( 'wpdatatables',WDT_JS_PATH.'wpdatatables/wpdatatables.min.js' ); }else{ wp_enqueue_script( 'wpdatatables',WDT_JS_PATH.'wpdatatables/wpdatatables.js' ); } } if($table_data['chart'] != 'none') { $tbl->setChartType(ucfirst($table_data['chart'])); $tbl->setChartTitle($table_data['chart_title']); $output_str = $tbl->renderChart('wdt_'.$tbl->getId().'_chart') . $output_str; if(get_option('wdtRenderCharts')=='above'){ $output_str = '<div id="wdt_'.$tbl->getId().'_chart" class="wpDataTables wdt_chart"></div>'.$output_str; }else{ $output_str .= '<div id="wdt_'.$tbl->getId().'_chart" class="wpDataTables wdt_chart"></div>'; } } // Generate the style block $output_str .= "<style>\n"; // Columns text before and after $output_str .= $tbl->getColumnsCSS(); // Table layout $customCss = get_option('wdtCustomCss'); if($table_data['fixed_layout'] || $table_data['word_wrap']) { $output_str .= ($table_data['fixed_layout'] ? "table.wpDataTable { table-layout: fixed !important; }\n" : ''); $output_str .= ($table_data['word_wrap'] ? "table.wpDataTable td, table.wpDataTable th { white-space: normal !important; }\n" : ''); } if($customCss){ $output_str .= stripslashes_deep($customCss); } if(get_option('wdtNumbersAlign')){ $output_str .= "table.wpDataTable td.numdata { text-align: right !important; }\n"; } $output_str .= "</style>\n"; add_action( 'wp_footer', 'wdt_render_script_style_block', 99999 ); $output_str = apply_filters( 'wpdatatables_filter_rendered_table', $output_str, $id ); return $output_str; } function wdt_render_script_style_block(){ $customJs = get_option('wdtCustomJs'); $script_block_html = ''; $style_block_html = ''; if($customJs){ $script_block_html .= '<script type="text/javascript">'.stripslashes_deep($customJs).'</script>'; } echo $script_block_html; // Color and font settings $wdtFontColorSettings = get_option('wdtFontColorSettings'); if(!empty($wdtFontColorSettings)){ $wdtFontColorSettings = unserialize($wdtFontColorSettings); $tpl = new PDTTpl(); $tpl->addData('wdtFontColorSettings',$wdtFontColorSettings); $tpl->setTemplate( 'style_block.inc.php' ); $style_block_html = $tpl->returnData(); $style_block_html = apply_filters( 'wpdatatables_filter_style_block', $style_block_html ); } echo $style_block_html; } /** * Returns system fonts */ function wdt_get_system_fonts(){ $system_fonts = array( 'Georgia, serif', 'Palatino Linotype, Book Antiqua, Palatino, serif', 'Times New Roman, Times, serif', 'Arial, Helvetica, sans-serif', 'Impact, Charcoal, sans-serif', 'Lucida Sans Unicode, Lucida Grande, sans-serif', 'Tahoma, Geneva, sans-serif', 'Verdana, Geneva, sans-serif', 'Courier New, Courier, monospace', 'Lucida Console, Monaco, monospace' ); $system_fonts = apply_filters( 'wpdatatables_get_system_fonts', $system_fonts ); return $system_fonts; } /** * Checks if current user can edit */ function wdt_current_user_can_edit( $table_editor_roles, $id ){ $wp_roles = new WP_Roles(); $user_can_edit = false; $table_editor_roles = strtolower($table_editor_roles); $editor_roles_arr = array(); if(empty($table_editor_roles)){ $user_can_edit = true; }else{ $editor_roles_arr = explode(',',$table_editor_roles); $all_roles = $wp_roles->get_names(); $current_user = wp_get_current_user(); if(!($current_user instanceof WP_User)){ return false; } foreach($current_user->roles as $user_role){ if( in_array( strtolower( $all_roles[$user_role] ), $editor_roles_arr ) ){ $user_can_edit = true; break; } } } return apply_filters('wpdatatables_allow_edit_table', $user_can_edit, $editor_roles_arr, $id); } /** * Removes all dangerous strings from query */ function wpdatatables_sanitize_query( $query ){ $query = str_replace('DELETE', '', $query); $query = str_replace('DROP', '', $query); $query = str_replace('INSERT', '', $query); $query = stripslashes($query); return $query; } /** * Buttons for "insert wpDataTable" and "insert wpDataCharts" in WP MCE editor */ add_action( 'init', 'wpdatatables_mce_buttons' ); function wpdatatables_mce_buttons() { add_filter( "mce_external_plugins", "wpdatatables_add_buttons" ); add_filter( 'mce_buttons', 'wpdatatables_register_buttons' ); } function wpdatatables_add_buttons( $plugin_array ) { $plugin_array['wpdatatables'] = WDT_JS_PATH . '/wpdatatables/wpdatatables_mce.js'; return $plugin_array; } function wpdatatables_register_buttons( $buttons ) { array_push( $buttons, 'wpdatatable', 'wpdatachart' ); return $buttons; } /** * Loads the translations */ function wpdatatables_load_textdomain(){ load_plugin_textdomain( 'wpdatatables', false, dirname( plugin_basename( dirname( __FILE__ ) ) ) .'/languages/'.get_locale().'/'); } /** * Workaround for NULLs in WP */ add_filter( 'query', 'wpdatatables_support_nulls' ); function wpdatatables_support_nulls( $query ){ $query = str_ireplace( "'NULL'", "NULL", $query ); $query = str_replace('null_str','null',$query); return $query; } /** * Auto update function */ if('' !== get_option('wdtPurchaseCode')){ $file_path = plugin_basename( __FILE__ ); $file_path_arr = explode( '/', $file_path ); global $wdt_plugin_slug; $wdt_plugin_slug = $file_path_arr[0].'/wpdatatables.php'; add_filter ('pre_set_site_transient_update_plugins', 'wpdatatables_transient_update'); function wpdatatables_transient_update($transient){ global $wdt_plugin_slug; // Remote version $remote_version = WDTTools::checkRemoteVersion(); if(version_compare(WDT_CURRENT_VERSION, $remote_version, '<')){ $obj = new stdClass(); $obj->slug = $wdt_plugin_slug; $obj->new_version = $remote_version; $obj->url = 'http://wpdatatables.com/verified-download.php?purchase_code='.get_option('wdtPurchaseCode'); $obj->package = 'http://wpdatatables.com/verified-download.php?purchase_code='.get_option('wdtPurchaseCode'); $transient->response[ $wdt_plugin_slug ] = $obj; } return $transient; } add_filter( 'plugins_api', 'wpdatatables_plugins_api', 10, 3 ); function wpdatatables_plugins_api( $false, $action, $arg ){ global $wdt_plugin_slug; if ( property_exists($arg, 'slug') && ($arg->slug === $wdt_plugin_slug || $arg->slug == 'wpdatatables.php')) { $information = WDTTools::checkRemoteInfo(); return $information; } return false; } } /** * Optional Visual Composer integration */ if( function_exists( 'vc_map' ) ){ /** * Get all tables non-paged for the Visual Composer integration */ function wdt_get_all_tables_vc(){ global $wpdb; $query = "SELECT id, title FROM {$wpdb->prefix}wpdatatables ORDER BY id"; $all_tables = $wpdb->get_results( $query, ARRAY_A ); $return_tables = array(); foreach( $all_tables as $table ){ $return_tables[ $table['title'] ] = $table['id']; } return $return_tables; } /** * Get all charts non-paged for the Visual Composer integration */ function wdt_get_all_charts_vc(){ global $wpdb; $query = "SELECT id, title FROM {$wpdb->prefix}wpdatacharts ORDER BY id"; $all_charts = $wpdb->get_results( $query, ARRAY_A ); $return_tables = array(); foreach( $all_charts as $chart ){ $return_tables[ $chart['title'] ] = $chart['id']; } return $return_tables; } /** * Insert wpDataTable button */ vc_map( array( 'name' => 'wpDataTable', 'base' => 'wpdatatable', 'description' => __('Interactive Responsive Table','wpdatatable'), 'category' => __('Content'), 'icon' => plugin_dir_url( dirname( __FILE__ ) ).'/assets/img/vc-icon.png', 'params' => array( array( 'type' => 'dropdown', 'class' => '', 'heading' => __('wpDataTable', 'wpdatatables'), 'admin_label' => true, 'param_name' => 'id', 'value' => wdt_get_all_tables_vc(), 'description' => __('Choose the wpDataTable from a dropdown', 'wpdatatables') ), array( 'type' => 'textfield', 'heading' => __('Variable placeholder #1', 'wpdatatables'), 'param_name' => 'var1', 'value' => '', 'group' => __( 'Variables', 'wpdatatables' ), 'description' => __( 'If you used the VAR1 placeholder you can assign a value to it here', 'wpdatatables' ) ), array( 'type' => 'textfield', 'heading' => __('Variable placeholder #2', 'wpdatatables'), 'param_name' => 'var2', 'value' => '', 'group' => __( 'Variables', 'wpdatatables' ), 'description' => __( 'If you used the VAR2 placeholder you can assign a value to it here', 'wpdatatables' ) ), array( 'type' => 'textfield', 'heading' => __('Variable placeholder #3', 'wpdatatables'), 'param_name' => 'var3', 'value' => '', 'group' => __( 'Variables', 'wpdatatables' ), 'description' => __( 'If you used the VAR3 placeholder you can assign a value to it here', 'wpdatatables' ) ) ) ) ); /** * Insert wpDataChart button */ vc_map( array( 'name' => 'wpDataChart', 'base' => 'wpdatachart', 'description' => __('Google or Highcharts chart based on a wpDataTable','wpdatatable'), 'category' => __('Content'), 'icon' => plugin_dir_url( dirname( __FILE__ ) ).'/assets/img/vc-charts-icon.png', "params" => array( array( "type" => "dropdown", "class" => "", "heading" => __('wpDataChart', 'wpdatatables'), "param_name" => "id", 'admin_label' => true, "value" => wdt_get_all_charts_vc(), "description" => __("Choose one of wpDataCharts from the list", 'wpdatatables') ) ) ) ); } ?>