WP_Debug_Data::get_wp_media()private staticWP 6.7.0

Gets the WordPress media section of the debug data.

Method of the class: WP_Debug_Data{}

No Hooks.

Return

Array.

Usage

$result = WP_Debug_Data::get_wp_media(): array;

Changelog

Since 6.7.0 Introduced.

WP_Debug_Data::get_wp_media() code WP 6.8

private static function get_wp_media(): array {
	// Spare few function calls.
	$not_available = __( 'Not available' );

	// Populate the media fields.
	$fields['image_editor'] = array(
		'label' => __( 'Active editor' ),
		'value' => _wp_image_editor_choose(),
	);

	// Get ImageMagic information, if available.
	if ( class_exists( 'Imagick' ) ) {
		// Save the Imagick instance for later use.
		$imagick             = new Imagick();
		$imagemagick_version = $imagick->getVersion();
	} else {
		$imagemagick_version = __( 'Not available' );
	}

	$fields['imagick_module_version'] = array(
		'label' => __( 'ImageMagick version number' ),
		'value' => ( is_array( $imagemagick_version ) ? $imagemagick_version['versionNumber'] : $imagemagick_version ),
	);

	$fields['imagemagick_version'] = array(
		'label' => __( 'ImageMagick version string' ),
		'value' => ( is_array( $imagemagick_version ) ? $imagemagick_version['versionString'] : $imagemagick_version ),
	);

	$imagick_version = phpversion( 'imagick' );

	$fields['imagick_version'] = array(
		'label' => __( 'Imagick version' ),
		'value' => ( $imagick_version ) ? $imagick_version : __( 'Not available' ),
	);

	if ( ! function_exists( 'ini_get' ) ) {
		$fields['ini_get'] = array(
			'label' => __( 'File upload settings' ),
			'value' => sprintf(
			/* translators: %s: ini_get() */
				__( 'Unable to determine some settings, as the %s function has been disabled.' ),
				'ini_get()'
			),
			'debug' => 'ini_get() is disabled',
		);
	} else {
		// Get the PHP ini directive values.
		$file_uploads        = ini_get( 'file_uploads' );
		$post_max_size       = ini_get( 'post_max_size' );
		$upload_max_filesize = ini_get( 'upload_max_filesize' );
		$max_file_uploads    = ini_get( 'max_file_uploads' );
		$effective           = min( wp_convert_hr_to_bytes( $post_max_size ), wp_convert_hr_to_bytes( $upload_max_filesize ) );

		// Add info in Media section.
		$fields['file_uploads']        = array(
			'label' => __( 'File uploads' ),
			'value' => $file_uploads ? __( 'Enabled' ) : __( 'Disabled' ),
			'debug' => $file_uploads,
		);
		$fields['post_max_size']       = array(
			'label' => __( 'Max size of post data allowed' ),
			'value' => $post_max_size,
		);
		$fields['upload_max_filesize'] = array(
			'label' => __( 'Max size of an uploaded file' ),
			'value' => $upload_max_filesize,
		);
		$fields['max_effective_size']  = array(
			'label' => __( 'Max effective file size' ),
			'value' => size_format( $effective ),
		);
		$fields['max_file_uploads']    = array(
			'label' => __( 'Max simultaneous file uploads' ),
			'value' => $max_file_uploads,
		);
	}

	// If Imagick is used as our editor, provide some more information about its limitations.
	if ( 'WP_Image_Editor_Imagick' === _wp_image_editor_choose() && isset( $imagick ) && $imagick instanceof Imagick ) {
		$limits = array(
			'area'   => ( defined( 'imagick::RESOURCETYPE_AREA' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_AREA ) ) : $not_available ),
			'disk'   => ( defined( 'imagick::RESOURCETYPE_DISK' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_DISK ) : $not_available ),
			'file'   => ( defined( 'imagick::RESOURCETYPE_FILE' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_FILE ) : $not_available ),
			'map'    => ( defined( 'imagick::RESOURCETYPE_MAP' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_MAP ) ) : $not_available ),
			'memory' => ( defined( 'imagick::RESOURCETYPE_MEMORY' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_MEMORY ) ) : $not_available ),
			'thread' => ( defined( 'imagick::RESOURCETYPE_THREAD' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_THREAD ) : $not_available ),
			'time'   => ( defined( 'imagick::RESOURCETYPE_TIME' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_TIME ) : $not_available ),
		);

		$limits_debug = array(
			'imagick::RESOURCETYPE_AREA'   => ( defined( 'imagick::RESOURCETYPE_AREA' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_AREA ) ) : 'not available' ),
			'imagick::RESOURCETYPE_DISK'   => ( defined( 'imagick::RESOURCETYPE_DISK' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_DISK ) : 'not available' ),
			'imagick::RESOURCETYPE_FILE'   => ( defined( 'imagick::RESOURCETYPE_FILE' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_FILE ) : 'not available' ),
			'imagick::RESOURCETYPE_MAP'    => ( defined( 'imagick::RESOURCETYPE_MAP' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_MAP ) ) : 'not available' ),
			'imagick::RESOURCETYPE_MEMORY' => ( defined( 'imagick::RESOURCETYPE_MEMORY' ) ? size_format( $imagick->getResourceLimit( imagick::RESOURCETYPE_MEMORY ) ) : 'not available' ),
			'imagick::RESOURCETYPE_THREAD' => ( defined( 'imagick::RESOURCETYPE_THREAD' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_THREAD ) : 'not available' ),
			'imagick::RESOURCETYPE_TIME'   => ( defined( 'imagick::RESOURCETYPE_TIME' ) ? $imagick->getResourceLimit( imagick::RESOURCETYPE_TIME ) : 'not available' ),
		);

		$fields['imagick_limits'] = array(
			'label' => __( 'Imagick Resource Limits' ),
			'value' => $limits,
			'debug' => $limits_debug,
		);

		try {
			$formats = Imagick::queryFormats( '*' );
		} catch ( Exception $e ) {
			$formats = array();
		}

		$fields['imagemagick_file_formats'] = array(
			'label' => __( 'ImageMagick supported file formats' ),
			'value' => ( empty( $formats ) ) ? __( 'Unable to determine' ) : implode( ', ', $formats ),
			'debug' => ( empty( $formats ) ) ? 'Unable to determine' : implode( ', ', $formats ),
		);
	}

	// Get GD information, if available.
	if ( function_exists( 'gd_info' ) ) {
		$gd = gd_info();
	} else {
		$gd = false;
	}

	$fields['gd_version'] = array(
		'label' => __( 'GD version' ),
		'value' => ( is_array( $gd ) ? $gd['GD Version'] : $not_available ),
		'debug' => ( is_array( $gd ) ? $gd['GD Version'] : 'not available' ),
	);

	$gd_image_formats     = array();
	$gd_supported_formats = array(
		'GIF Create' => 'GIF',
		'JPEG'       => 'JPEG',
		'PNG'        => 'PNG',
		'WebP'       => 'WebP',
		'BMP'        => 'BMP',
		'AVIF'       => 'AVIF',
		'HEIF'       => 'HEIF',
		'TIFF'       => 'TIFF',
		'XPM'        => 'XPM',
	);

	foreach ( $gd_supported_formats as $format_key => $format ) {
		$index = $format_key . ' Support';
		if ( isset( $gd[ $index ] ) && $gd[ $index ] ) {
			array_push( $gd_image_formats, $format );
		}
	}

	if ( ! empty( $gd_image_formats ) ) {
		$fields['gd_formats'] = array(
			'label' => __( 'GD supported file formats' ),
			'value' => implode( ', ', $gd_image_formats ),
		);
	}

	// Get Ghostscript information, if available.
	if ( function_exists( 'exec' ) ) {
		$gs = exec( 'gs --version' );

		if ( empty( $gs ) ) {
			$gs       = $not_available;
			$gs_debug = 'not available';
		} else {
			$gs_debug = $gs;
		}
	} else {
		$gs       = __( 'Unable to determine if Ghostscript is installed' );
		$gs_debug = 'unknown';
	}

	$fields['ghostscript_version'] = array(
		'label' => __( 'Ghostscript version' ),
		'value' => $gs,
		'debug' => $gs_debug,
	);

	return array(
		'label'  => __( 'Media Handling' ),
		'fields' => $fields,
	);
}