Language_Pack_Upgrader::check_package()publicWP 3.7.0

Checks that the package source contains .mo and .po files.

Hooked to the upgrader_source_selection filter by Language_Pack_Upgrader::bulk_upgrade().

Method of the class: Language_Pack_Upgrader{}

No Hooks.

Return

String|WP_Error. The source as passed, or a WP_Error object on failure.

Usage

$Language_Pack_Upgrader = new Language_Pack_Upgrader();
$Language_Pack_Upgrader->check_package( $source, $remote_source );
$source(string|WP_Error) (required)
The path to the downloaded package source.
$remote_source(string) (required)
Remote file source location.

Notes

  • Global. WP_Filesystem_Base. $wp_filesystem WordPress filesystem subclass.

Changelog

Since 3.7.0 Introduced.

Language_Pack_Upgrader::check_package() code WP 6.5.2

public function check_package( $source, $remote_source ) {
	global $wp_filesystem;

	if ( is_wp_error( $source ) ) {
		return $source;
	}

	// Check that the folder contains a valid language.
	$files = $wp_filesystem->dirlist( $remote_source );

	// Check to see if a .po and .mo exist in the folder.
	$po = false;
	$mo = false;
	foreach ( (array) $files as $file => $filedata ) {
		if ( str_ends_with( $file, '.po' ) ) {
			$po = true;
		} elseif ( str_ends_with( $file, '.mo' ) ) {
			$mo = true;
		}
	}

	if ( ! $mo || ! $po ) {
		return new WP_Error(
			'incompatible_archive_pomo',
			$this->strings['incompatible_archive'],
			sprintf(
				/* translators: 1: .po, 2: .mo */
				__( 'The language pack is missing either the %1$s or %2$s files.' ),
				'<code>.po</code>',
				'<code>.mo</code>'
			)
		);
	}

	return $source;
}