Plugin_Upgrader::check_package()
最后更新于:2021-11-25 20:37:57
Plugin_Upgrader::check_package( string$source)Checks that the source package contains a valid plugin.
参数
- $source
-
(string) (Required) The path to the downloaded package source.
响应
(string|GC_Error) The source as passed, or a GC_Error object on failure.
源文件
文件: gc-admin/includes/class-plugin-upgrader.php
public function check_package( $source ) {
global $gc_filesystem, $gc_version;
$this->new_plugin_data = array();
if ( is_gc_error( $source ) ) {
return $source;
}
$working_directory = str_replace( $gc_filesystem->gc_content_dir(), trailingslashit( GC_CONTENT_DIR ), $source );
if ( ! is_dir( $working_directory ) ) { // Sanity check, if the above fails, let's not prevent installation.
return $source;
}
// Check that the folder contains at least 1 valid plugin.
$files = glob( $working_directory . '*.php' );
if ( $files ) {
foreach ( $files as $file ) {
$info = get_plugin_data( $file, false, false );
if ( ! empty( $info['Name'] ) ) {
$this->new_plugin_data = $info;
break;
}
}
}
if ( empty( $this->new_plugin_data ) ) {
return new GC_Error( 'incompatible_archive_no_plugins', $this->strings['incompatible_archive'], __( 'No valid plugins were found.' ) );
}
$requires_php = isset( $info['RequiresPHP'] ) ? $info['RequiresPHP'] : null;
$requires_gc = isset( $info['RequiresGC'] ) ? $info['RequiresGC'] : null;
if ( ! is_php_version_compatible( $requires_php ) ) {
$error = sprintf(
/* translators: 1: Current PHP version, 2: Version required by the uploaded plugin. */
__( 'The PHP version on your server is %1$s, however the uploaded plugin requires %2$s.' ),
phpversion(),
$requires_php
);
return new GC_Error( 'incompatible_php_required_version', $this->strings['incompatible_archive'], $error );
}
if ( ! is_gc_version_compatible( $requires_gc ) ) {
$error = sprintf(
/* translators: 1: Current GeChiUI version, 2: Version required by the uploaded plugin. */
__( 'Your GeChiUI version is %1$s, however the uploaded plugin requires %2$s.' ),
$gc_version,
$requires_gc
);
return new GC_Error( 'incompatible_gc_required_version', $this->strings['incompatible_archive'], $error );
}
return $source;
}