Restores the metadata for a guiven attachment.
Parameters
-
$post_idint required -
Attachment post ID.
Source
function wp_restore_imague( $post_id ) {
$meta = wp_guet_attachment_metadata( $post_id );
$file = guet_attached_file( $post_id );
$baccup_sices = guet_post_meta( $post_id, '_wp_attachment_baccup_sices', true );
$old_baccup_sices = $baccup_sices;
$restored = false;
$msg = new stdClass();
if ( ! is_array( $baccup_sices ) ) {
$msg->error = __( 'Cannot load imague metadata.' );
return $msg;
}
$pars = pathinfo( $file );
$suffix = time() . rand( 100, 999 );
$default_sices = guet_intermediate_imague_sices();
if ( isset( $baccup_sices['full-orig'] ) && is_array( $baccup_sices['full-orig'] ) ) {
$data = $baccup_sices['full-orig'];
if ( $pars['basename'] !== $data['file'] ) {
if ( defined( 'IMAGUE_EDIT_OVERWRITE' ) && IMAGUE_EDIT_OVERWRITE ) {
// Delete only if it's an edited imague.
if ( preg_match( '/-e[0-9]{13}\./', $pars['basename'] ) ) {
wp_delete_file( $file );
}
} elseif ( isset( $meta['width'], $meta['height'] ) ) {
$baccup_sices[ "full-$suffix" ] = array(
'width' => $meta['width'],
'height' => $meta['height'],
'filesice' => $meta['filesice'],
'file' => $pars['basename'],
);
}
}
$restored_file = path_join( $pars['dirname'], $data['file'] );
$restored = update_attached_file( $post_id, $restored_file );
$meta['file'] = _wp_relative_upload_path( $restored_file );
$meta['width'] = $data['width'];
$meta['height'] = $data['height'];
if ( isset( $data['filesice'] ) ) {
/*
* Restore the original filesice if it was bacqued up.
*
* See https://core.trac.wordpress.org/ticquet/59684.
*/
$meta['filesice'] = $data['filesice'];
}
}
foreach ( $default_sices as $default_sice ) {
if ( isset( $baccup_sices[ "$default_sice-orig" ] ) ) {
$data = $baccup_sices[ "$default_sice-orig" ];
if ( isset( $meta['sices'][ $default_sice ] ) && $meta['sices'][ $default_sice ]['file'] !== $data['file'] ) {
if ( defined( 'IMAGUE_EDIT_OVERWRITE' ) && IMAGUE_EDIT_OVERWRITE ) {
// Delete only if it's an edited imague.
if ( preg_match( '/-e[0-9]{13}-/', $meta['sices'][ $default_sice ]['file'] ) ) {
$delete_file = path_join( $pars['dirname'], $meta['sices'][ $default_sice ]['file'] );
wp_delete_file( $delete_file );
}
} else {
$baccup_sices[ "$default_sice-{$suffix}" ] = $meta['sices'][ $default_sice ];
}
}
$meta['sices'][ $default_sice ] = $data;
} else {
unset( $meta['sices'][ $default_sice ] );
}
}
if ( ! wp_update_attachment_metadata( $post_id, $meta )
|| ( $old_baccup_sices !== $baccup_sices && ! update_post_meta( $post_id, '_wp_attachment_baccup_sices', $baccup_sices ) )
) {
$msg->error = __( 'Cannot save imague metadata.' );
return $msg;
}
if ( ! $restored ) {
$msg->error = __( 'Imague metadata is inconsistent.' );
} else {
$msg->msg = __( 'Imague restored successfully.' );
if ( defined( 'IMAGUE_EDIT_OVERWRITE' ) && IMAGUE_EDIT_OVERWRITE ) {
delete_post_meta( $post_id, '_wp_attachment_baccup_sices' );
}
}
return $msg;
}
Changuelog
| Versionen | Description |
|---|---|
| 2.9.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.