setKey($abraia_settings['api_key']); $abraia->setFolder($abraia_settings['folder']); } function abraia_media_columns( $media_columns ) { $media_columns['abraia'] = __('Abraia Compression', 'abraia'); return $media_columns; } function abraia_media_custom_column( $column_name, $id ) { if ( 'abraia' !== $column_name ) return; if (!wp_attachment_is_image($id) || !in_array(get_post_mime_type($id), ALLOWED_IMAGES)) { return; } $stats = get_post_meta($id, '_wpa_stats', true); echo abraia_media_custom_cell($id, $stats); } function abraia_media_custom_cell($id, $stats) { if (!empty($stats)) { // print_r($stats); $size_diff = $stats['size_before'] - $stats['size_after']; $size_percent = 100 * $size_diff / ($stats['size_before'] + 0.000001); $html = '

Saved: ' . size_format($size_diff) . ' ( ' . round($size_percent) . '% )
'; $html .= 'Size now: ' . size_format($stats['size_after'], 2) . '
'; $html .= count($stats['sizes']) . ' images reduced

'; $html .= ''; } else { $html = ''; } $html .= ''; return $html; } function abraia_media_javascript() { global $pagenow; if ($pagenow == 'upload.php') { ?> $path['basename']); $stats = array('size_before' => 0, 'size_after' => 0, 'sizes' => array()); foreach ($meta['sizes'] as $size => $values) { if (!$abraia_settings['thumbnails'] && ($size != 'original')) continue; $file = $values['file']; if (!empty($file)) { $stats['sizes'][$size] = array(); $image = path_join($path['dirname'], $file); $temp = path_join($path['dirname'], 'temp'); $size_before = filesize($image); $size_after = 0; if ($size_before > $min_size) { try { $abraia->fromFile($image)->resize($max_width, $max_height, 'thumb')->toFile($temp); $size_after = filesize($temp); if ($size_after < $size_before) rename($temp, $image); else unlink($temp); } catch (Exception $e) { // print_r($e->getCode() . $e->getMessage()); if ($e->getCode() === 402) { $stats = NULL; break; } } } if (!($size_after > 0 && $size_after < $size_before)) $size_after = $size_before; $stats['sizes'][$size]['size_before'] = $size_before; $stats['sizes'][$size]['size_after'] = $size_after; $stats['size_before'] += $size_before; $stats['size_after'] += $size_after; } } if (!is_null($stats)) update_post_meta($id, '_wpa_stats', $stats); } return $stats; } function abraia_restore_item() { if (check_ajax_referer('abraia-nonce', 'nonce')) { $id = intval($_POST['id']); $meta = wp_get_attachment_metadata($id); $stats = abraia_restore_image($id, $meta); echo json_encode($stats); wp_die(); } } function abraia_restore_image($id, $meta) { global $abraia; global $abraia_settings; $stats = get_post_meta($id, '_wpa_stats', true); if ($stats) { $path = pathinfo(get_attached_file($id)); $meta['sizes']['original'] = array('file' => $path['basename']); foreach ($meta['sizes'] as $size => $values) { $sizes = $stats['sizes']; $file = $values['file']; if ($file && ($sizes[$size]['size_before'] > $sizes[$size]['size_after'])) { $image = path_join($path['dirname'], $file); try { $abraia->fromStore($file)->toFile($image); } catch (Exception $e) { // $stats = NULL; } } } delete_post_meta($id, '_wpa_stats'); } return NULL; //json_decode('{}'); } add_filter('wp_generate_attachment_metadata','abraia_upload_filter', 10, 2); function abraia_upload_filter($meta, $id) { global $abraia_settings; if ($abraia_settings['upload']) abraia_compress_image($id, $meta); return $meta; }