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;
}