ize_width The width of the fullsize image.
* @param int $fullsize_height The height of the fullsize image.
* @param int $thumbnail_width The width of the thumbnail.
* @param int $thumbnail_height The height of the thumbnail.
* @param bool $crop Whether to crop or not.
*
* @return array|false An array of the filename, thumbnail width, and thumbnail height,
* or false on failure to resize such as the thumbnail being larger than the fullsize image.
*/
public function get_thumbnail( $editor, $fullsize_width, $fullsize_height, $thumbnail_width, $thumbnail_height, $crop ) {
$dims = image_resize_dimensions( $fullsize_width, $fullsize_height, $thumbnail_width, $thumbnail_height, $crop );
if ( ! $dims ) {
return false;
}
list( , , , , $dst_w, $dst_h ) = $dims;
$suffix = "{$dst_w}x{$dst_h}";
$file_ext = strtolower( pathinfo( $this->get_fullsizepath(), PATHINFO_EXTENSION ) );
return array(
'filename' => $editor->generate_filename( $suffix, null, $file_ext ),
'width' => $dst_w,
'height' => $dst_h,
);
}
/**
* Update the post content of any public post types (posts and pages by default)
* that make use of this attachment.
*
* @since 3.0.0
*
* @param array|string $args {
* Optional. Array or string of arguments for controlling the updating.
*
* @type array $post_type The post types to update. Defaults to public post types (posts and pages by default).
* @type array $post_ids Specific post IDs to update as opposed to any that uses the attachment.
* @type int $posts_per_loop How many posts to query at a time to keep memory usage down. You shouldn't need to modify this.
* }
*
* @return array|WP_Error List of post IDs that were modified. The key is the post ID and the value is either the post ID again or a WP_Error object if wp_update_post() failed.
*/
public function update_usages_in_posts( $args = array() ) {
// Temporarily disabled until it can be even better tested for edge cases
return array();
$args = wp_parse_args( $args, array(
'post_type' => array(),
'post_ids' => array(),
'posts_per_loop' => 10,
) );
if ( empty( $args['post_type'] ) ) {
$args['post_type'] = array_values( get_post_types( array( 'public' => true ) ) );
unset( $args['post_type']['attachment'] );
}
$offset = 0;
$posts_updated = array();
while ( true ) {
$posts = get_posts( array(
'numberposts' => $args['posts_per_loop'],
'offset' => $offset,
'orderby' => 'ID',
'order' => 'ASC',
'include' => $args['post_ids'],
'post_type' => $args['post_type'],
's' => 'wp-image-' . $this->attachment->ID,
// For faster queries.
'update_post_meta_cache' => false,
'update_post_term_cache' => false,
) );
if ( ! $posts ) {
break;
}
$offset += $args['posts_per_loop'];
foreach ( $posts as $post ) {
$content = $post->post_content;
$search = array();
$replace = array();
// Find all tags for this attachment and update them.
preg_match_all(
'# ]+wp-image-' . $this->attachment->ID . '[^>]+/>#i',
$content,
$matches,
PREG_SET_ORDER
);
if ( $matches ) {
foreach ( $matches as $img_tag ) {
preg_match( '# class="([^"]+)?size-([^" ]+)#i', $img_tag[0], $thumbnail_size );
if ( $thumbnail_size ) {
$thumbnail = image_downsize( $this->attachment->ID, $thumbnail_size[2] );
if ( ! $thumbnail ) {
continue;
}
$search[] = $img_tag[0];
$img_tag[0] = preg_replace( '# src="[^"]+"#i', ' src="' . esc_url( $thumbnail[0] ) . '"', $img_tag[0] );
$img_tag[0] = preg_replace(
'# width="[^"]+" height="[^"]+"#i',
' width="' . esc_attr( $thumbnail[1] ) . '" height="' . esc_attr( $thumbnail[2] ) . '"',
$img_tag[0]
);
$replace[] = $img_tag[0];
}
}
}
$content = str_replace( $search, $replace, $content );
$search = array();
$replace = array();
// Update the width in any [caption] shortcodes.
preg_match_all(
'#\[caption id="attachment_' . $this->attachment->ID . '"([^\]]+)? width="[^"]+"\]([^\[]+)size-([^" ]+)([^\[]+)\[\/caption\]#i',
$content,
$matches,
PREG_SET_ORDER
);
if ( $matches ) {
foreach ( $matches as $match ) {
$thumbnail = image_downsize( $this->attachment->ID, $match[3] );
if ( ! $thumbnail ) {
continue;
}
$search[] = $match[0];
$replace[] = '[caption id="attachment_' . $this->attachment->ID . '"' . $match[1] . ' width="' . esc_attr( $thumbnail[1] ) . '"]' . $match[2] . 'size-' . $match[3] . $match[4] . '[/caption]';
}
}
$content = str_replace( $search, $replace, $content );
$updated_post_object = (object) array(
'ID' => $post->ID,
'post_content' => $content,
);
$posts_updated[ $post->ID ] = wp_update_post( $updated_post_object, true );
}
}
return $posts_updated;
}
/**
* Returns information about the current attachment for use in the REST API.
*
* @since 3.0.0
*
* @return array|WP_Error The attachment name, fullsize URL, registered thumbnail size status, and any unregistered sizes, or WP_Error on error.
*/
public function get_attachment_info() {
$fullsizepath = $this->get_fullsizepath();
if ( is_wp_error( $fullsizepath ) ) {
$fullsizepath->add_data( array( 'attachment' => $this->attachment ) );
return $fullsizepath;
}
$editor = wp_get_image_editor( $fullsizepath );
if ( is_wp_error( $editor ) ) {
// Display a more helpful error message.
if ( 'image_no_editor' === $editor->get_error_code() ) {
$editor = new WP_Error( 'image_no_editor', __( 'The current image editor cannot process this file type.', 'regenerate-thumbnails' ) );
}
$editor->add_data( array(
'attachment' => $this->attachment,
'status' => 415,
) );
return $editor;
}
$metadata = wp_get_attachment_metadata( $this->attachment->ID );
if ( false === $metadata || ! is_array( $metadata ) ) {
return new WP_Error(
'regenerate_thumbnails_regenerator_no_metadata',
__( 'Unable to load the metadata for this attachment.', 'regenerate-thumbnails' ),
array(
'status' => 404,
'attachment' => $this->attachment,
)
);
}
if ( ! isset( $metadata['sizes'] ) ) {
$metadata['sizes'] = array();
}
// PDFs don't have width/height set.
$width = ( isset( $metadata['width'] ) ) ? $metadata['width'] : null;
$height = ( isset( $metadata['height'] ) ) ? $metadata['height'] : null;
require_once( ABSPATH . '/wp-admin/includes/image.php' );
$preview = false;
if ( file_is_displayable_image( $fullsizepath ) ) {
$preview = wp_get_attachment_url( $this->attachment->ID );
} elseif (
is_array( $metadata['sizes'] ) &&
is_array( $metadata['sizes']['full'] ) &&
! empty( $metadata['sizes']['full']['file'] )
) {
$preview = str_replace(
wp_basename( $fullsizepath ),
$metadata['sizes']['full']['file'],
wp_get_attachment_url( $this->attachment->ID )
);
if ( ! file_exists( $preview ) ) {
$preview = false;
}
}
$response = array(
'name' => ( $this->attachment->post_title ) ? $this->attachment->post_title : sprintf( __( 'Attachment %d', 'regenerate-thumbnails' ), $this->attachment->ID ),
'preview' => $preview,
'relative_path' => _wp_get_attachment_relative_path( $fullsizepath ) . DIRECTORY_SEPARATOR . wp_basename( $fullsizepath ),
'edit_url' => get_edit_post_link( $this->attachment->ID, 'raw' ),
'width' => $width,
'height' => $height,
'registered_sizes' => array(),
'unregistered_sizes' => array(),
);
$wp_upload_dir = dirname( $fullsizepath ) . DIRECTORY_SEPARATOR;
$registered_sizes = RegenerateThumbnails()->get_thumbnail_sizes();
if ( 'application/pdf' === get_post_mime_type( $this->attachment ) ) {
$registered_sizes = array_intersect_key(
$registered_sizes,
array(
'thumbnail' => true,
'medium' => true,
'large' => true,
)
);
}
// Check the status of all currently registered sizes.
foreach ( $registered_sizes as $size ) {
// Width and height are needed to generate the thumbnail filename.
if ( $width && $height ) {
$thumbnail = $this->get_thumbnail( $editor, $width, $height, $size['width'], $size['height'], $size['crop'] );
if ( $thumbnail ) {
$size['filename'] = wp_basename( $thumbnail['filename'] );
$size['fileexists'] = file_exists( $thumbnail['filename'] );
} else {
$size['filename'] = false;
$size['fileexists'] = false;
}
} elseif ( ! empty( $metadata['sizes'][ $size['label'] ]['file'] ) ) {
$size['filename'] = wp_basename( $metadata['sizes'][ $size['label'] ]['file'] );
$size['fileexists'] = file_exists( $wp_upload_dir . $metadata['sizes'][ $size['label'] ]['file'] );
} else {
$size['filename'] = false;
$size['fileexists'] = false;
}
$response['registered_sizes'][] = $size;
}
if ( ! $width && ! $height && is_array( $metadata['sizes']['full'] ) ) {
$response['registered_sizes'][] = array(
'label' => 'full',
'width' => $metadata['sizes']['full']['width'],
'height' => $metadata['sizes']['full']['height'],
'filename' => $metadata['sizes']['full']['file'],
'fileexists' => file_exists( $wp_upload_dir . $metadata['sizes']['full']['file'] ),
);
}
// Look at the attachment metadata and see if we have any extra files from sizes that are no longer registered.
foreach ( $metadata['sizes'] as $label => $size ) {
if ( ! file_exists( $wp_upload_dir . $size['file'] ) ) {
continue;
}
// An unregistered size could match a registered size's dimensions. Ignore these.
foreach ( $response['registered_sizes'] as $registered_size ) {
if ( $size['file'] === $registered_size['filename'] ) {
continue 2;
}
}
if ( ! empty( $registered_sizes[ $label ] ) ) {
/* translators: Used for listing old sizes of currently registered thumbnails */
$label = sprintf( __( '%s (old)', 'regenerate-thumbnails' ), $label );
}
$response['unregistered_sizes'][] = array(
'label' => $label,
'width' => $size['width'],
'height' => $size['height'],
'filename' => $size['file'],
'fileexists' => true,
);
}
return $response;
}
}
nasser ، كاتب في أزاميل : الصفحة 479 من 521
الرئيسية/ nasser (صفحه 479)
2015-04-10
العراق
ازاميل/ متابعة: ذكرت مصادر إخبارية محسوبة على تنظيم الدولة أن مقاتلي التنظيم سيطروا على منطقة البوفراج شمالي الرمادي، فيما اكد مصدر أمني أن تنظيم الدولة سيطر على منطقة البوفراج وان …
أكمل القراءة »
2015-04-10
الخليج
أزاميل/ متابعة: أقرّ #البرلمان_الباكستاني مشروع قانون في شأن #اليمن، اليوم، يدعو مختلف الفصائل إلى حل خلافاتها سلمياً، ويعبر عن “رغبته” في أن تلتزم #باكستان الحياد. صوت البرلمان الباكستاني بالاجماع اليوم الجمعة …
أكمل القراءة »
2015-04-10
العراق
#أزاميل/ واشنطن-وكالات: قال نائب الرئيس الأمريكي جو #بايدن، الخميس 09 أبريل، إن #تنظيم_الدولة كان السبب في توحد القادة العراقيين في معركة مشتركة منذ أعلن التنظيم إقامة “خلافة” في شمال العراق الصيف الماضي”. ورأى …
أكمل القراءة »
2015-04-10
الرئيسية
أزاميل/ متابعة: قال نائب الرئيس الأمركي بايدن، الخميس، أنه يتحدث مع رئيس الوزراء العراقي حيدر العبادي اكثر مما يتحدث مع زوجته! جاء ذلك صمن حديث له قال فيه إن “تنظيم الدولة …
أكمل القراءة »
2015-04-10
الرئيسية
أزاميل/ متابعة: انتشرت للفنانة نجوى كرم مجموعة صورٍ مع الفنان العراقي ماجد المهندس، تعود إلى كواليس حفلهما الغنائي الذي جمعهما ضمن فعاليات مهرجان “فبراير الكويت” الذي أقامته أخيراً شركة روتانا، وهي …
أكمل القراءة »
2015-04-10
الرئيسية
أزاميل/ متابعة: يقال إنه مع التقدم في العمر يبدأ الدماغ بالتراجع بمجرد تأثر وظائفه سلباً، إلا أن المفاجأة هي ان ذلك قد يبدأ في اواخر العشرينيات من العمر! لكن قبل التخوّف …
أكمل القراءة »
2015-04-10
صحة وحياة
أزاميل/ متابعة: من دون الدماغ لا نستطيع أن نتحرك. ومن دون الدماغ لا يمكننا أن ننطق، ومن دونه لا نتذكر، ولا يمكن أن نتعلم أو نفهم، ومن دون الدماغ لا يمكننا …
أكمل القراءة »
2015-04-10
الخليج
أزاميل/ متابعة: رأى الرئيس #سعدالحريري أنه “لم يكن ينقص #لبنان والمشاكل التي يراكمها “#حزبالله” على رؤوس اللبنانيين، سوى إقحام “#تلفزيون_لبنان” في حلبة الملاكمة الإعلامية والسياسية، واستدراجه الى فخ المشاركة، في حفلة …
أكمل القراءة »
2015-04-10
الخليج
أزاميل/ متابعة:كشفت صحيفة “الأخبار” عن طلب “المفوض السامي السعودي في لبنان” كما اسمته، علي عواض العسيري، من وسائل الإعلام اللبنانية عدم استضافة شخصيات ومحللين قريبين من حزب الله. وافاد موقع …
أكمل القراءة »
2015-04-10
العراق
أزاميل/ متابعة: شاهد #الشرطة_الاتحادية كيف تقتل قناصا يرتدي حزاما ناسفا داخل بيت في #تكريت
أكمل القراءة »
2015-04-10
خبر وفيديو
أزاميل/ متابعة: شاهد العثور على اكبر مع من تفخيخ في تكريت، ويحتوي على 400 طن من مادتي c4 و TNT. https://www.youtube.com/watch?v=V486o36Q1AU
أكمل القراءة »
2015-04-10
الرئيسية
أزاميل/ متابعة: مشاهد من عمليات لبيك يا رسول الله منذ بدايتها فضلا عن مشاهد من معركة تكريت ومعارك شرسة مع داعش، وفي النهاية هزيمة داعش وتحرير تكريت. https://www.youtube.com/watch?v=lK0tLiRDt0E
أكمل القراءة »
We are using cookies to give you the best experience on our website.
You can find out more about which cookies we are using or switch them off in settings .
Accept
Close GDPR Cookie Settings
Privacy Overview
This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.
Strictly Necessary Cookies
Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.
If you disable this cookie, we will not be able to save your preferences. This means that every time you visit this website you will need to enable or disable cookies again.