Language_Pack_Upgrader::clear_destination()
最后更新于:2021-11-25 19:54:05
Language_Pack_Upgrader::clear_destination( string$remote_destination)Clears existing translations where this item is going to be installed into.
参数
- $remote_destination
-
(string) (Required) The location on the remote filesystem to be cleared.
响应
(bool|GC_Error) True upon success, GC_Error on failure.
源文件
文件: gc-admin/includes/class-language-pack-upgrader.php
public function clear_destination( $remote_destination ) {
global $gc_filesystem;
$language_update = $this->skin->language_update;
$language_directory = GC_LANG_DIR . '/'; // Local path for use with glob().
if ( 'core' === $language_update->type ) {
$files = array(
$remote_destination . $language_update->language . '.po',
$remote_destination . $language_update->language . '.mo',
$remote_destination . 'admin-' . $language_update->language . '.po',
$remote_destination . 'admin-' . $language_update->language . '.mo',
$remote_destination . 'admin-network-' . $language_update->language . '.po',
$remote_destination . 'admin-network-' . $language_update->language . '.mo',
$remote_destination . 'continents-cities-' . $language_update->language . '.po',
$remote_destination . 'continents-cities-' . $language_update->language . '.mo',
);
$json_translation_files = glob( $language_directory . $language_update->language . '-*.json' );
if ( $json_translation_files ) {
foreach ( $json_translation_files as $json_translation_file ) {
$files[] = str_replace( $language_directory, $remote_destination, $json_translation_file );
}
}
} else {
$files = array(
$remote_destination . $language_update->slug . '-' . $language_update->language . '.po',
$remote_destination . $language_update->slug . '-' . $language_update->language . '.mo',
);
$language_directory = $language_directory . $language_update->type . 's/';
$json_translation_files = glob( $language_directory . $language_update->slug . '-' . $language_update->language . '-*.json' );
if ( $json_translation_files ) {
foreach ( $json_translation_files as $json_translation_file ) {
$files[] = str_replace( $language_directory, $remote_destination, $json_translation_file );
}
}
}
$files = array_filter( $files, array( $gc_filesystem, 'exists' ) );
// No files to delete.
if ( ! $files ) {
return true;
}
// Check all files are writable before attempting to clear the destination.
$unwritable_files = array();
// Check writability.
foreach ( $files as $file ) {
if ( ! $gc_filesystem->is_writable( $file ) ) {
// Attempt to alter permissions to allow writes and try again.
$gc_filesystem->chmod( $file, FS_CHMOD_FILE );
if ( ! $gc_filesystem->is_writable( $file ) ) {
$unwritable_files[] = $file;
}
}
}
if ( ! empty( $unwritable_files ) ) {
return new GC_Error( 'files_not_writable', $this->strings['files_not_writable'], implode( ', ', $unwritable_files ) );
}
foreach ( $files as $file ) {
if ( ! $gc_filesystem->delete( $file ) ) {
return new GC_Error( 'remove_old_failed', $this->strings['remove_old_failed'] );
}
}
return true;
}