83 lines
2.2 KiB
PHP
83 lines
2.2 KiB
PHP
<?php
|
|
namespace FileBird\Classes\Attachment;
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
use FileBird\Utils\Singleton;
|
|
use FileBird\Classes\Helpers;
|
|
|
|
class AttachmentSize {
|
|
use Singleton;
|
|
|
|
const META_KEY = 'fb_filesize';
|
|
|
|
public function __construct() {
|
|
add_filter( 'manage_media_columns', array( $this, 'manage_media_columns' ) );
|
|
add_action( 'manage_media_custom_column', array( $this, 'manage_media_custom_column' ), 10, 2 );
|
|
add_filter( 'manage_upload_sortable_columns', array( $this, 'manage_upload_sortable_columns' ) );
|
|
add_action( 'added_post_meta', array( $this, 'added_post_meta' ), 10, 4 );
|
|
}
|
|
|
|
public function manage_media_columns( $posts_columns ) {
|
|
$posts_columns[ self::META_KEY ] = __( 'File Size', 'filebird' );
|
|
return $posts_columns;
|
|
}
|
|
|
|
public function manage_upload_sortable_columns( $columns ) {
|
|
$columns[ self::META_KEY ] = self::META_KEY;
|
|
return $columns;
|
|
}
|
|
|
|
public function manage_media_custom_column( $column_name, $post_id ) {
|
|
if ( self::META_KEY === $column_name ) {
|
|
echo esc_html( size_format( Helpers::get_bytes( $post_id ), 2 ) );
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function added_post_meta( $meta_id, $post_id, $meta_key, $meta_value ) {
|
|
if ( '_wp_attachment_metadata' === $meta_key ) {
|
|
$bytes = Helpers::get_bytes( $post_id );
|
|
if ( $bytes ) {
|
|
update_post_meta( $post_id, self::META_KEY, $bytes );
|
|
}
|
|
}
|
|
}
|
|
|
|
public function apiCallback( \WP_REST_Request $request ) {
|
|
$page = intval( $request->get_param( 'page' ) );
|
|
if ( $page < 1 ) {
|
|
$page = 1;
|
|
}
|
|
|
|
$result = array();
|
|
|
|
$args = array(
|
|
'post_type' => 'attachment',
|
|
'posts_per_page' => 50,
|
|
'post_status' => 'inherit',
|
|
'fields' => 'ids',
|
|
'paged' => $page,
|
|
);
|
|
|
|
$query = new \WP_Query( $args );
|
|
$ids = $query->posts;
|
|
|
|
wp_reset_postdata();
|
|
|
|
if ( is_array( $ids ) && count( $ids ) > 0 ) {
|
|
foreach ( $ids as $id ) {
|
|
$bytes = Helpers::get_bytes( $id );
|
|
if ( $bytes ) {
|
|
update_post_meta( $id, self::META_KEY, $bytes );
|
|
}
|
|
}
|
|
$result['success'] = true;
|
|
$result['next'] = '1';
|
|
} else {
|
|
$result['success'] = true;
|
|
$result['next'] = '0';
|
|
}
|
|
return new \WP_REST_Response( $result );
|
|
}
|
|
} |