function ewww_image_optimizer_install_pngout() { if (FALSE === current_user_can('install_plugins')) { wp_die(__('You don\'t have permission to install image optimizer utilities.', EWWW_IMAGE_OPTIMIZER_DOMAIN)); } if (PHP_OS != 'WINNT') { $tar = ewww_image_optimizer_find_binary('tar', 't'); } if (empty($tar) && PHP_OS != 'WINNT') { $pngout_error = __('tar command not found', EWWW_IMAGE_OPTIMIZER_DOMAIN); } if (PHP_OS == 'Linux') { $os_string = 'linux'; } if (PHP_OS == 'FreeBSD') { $os_string = 'bsd'; } $latest = '20130221'; if (empty($pngout_error)) { if (PHP_OS == 'Linux' || PHP_OS == 'FreeBSD') { $download_result = ewww_image_optimizer_escapeshellarg(download_url('http://static.jonof.id.au/dl/kenutils/pngout-' . $latest . '-' . $os_string . '-static.tar.gz')); if (is_wp_error($download_result)) { $pngout_error = $download_result->get_error_message(); } else { $arch_type = php_uname('m'); exec("{$tar} xzf {$download_result} -C " . ewww_image_optimizer_escapeshellarg(EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH) . ' pngout-' . $latest . '-' . $os_string . '-static/' . $arch_type . '/pngout-static'); if (!rename(EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH . 'pngout-' . $latest . '-' . $os_string . '-static/' . $arch_type . '/pngout-static', EWWW_IMAGE_OPTIMIZER_TOOL_PATH . 'pngout-static')) { if (empty($pngout_error)) { $pngout_error = __("could not move pngout", EWWW_IMAGE_OPTIMIZER_DOMAIN); } } if (!chmod(EWWW_IMAGE_OPTIMIZER_TOOL_PATH . 'pngout-static', 0755)) { if (empty($pngout_error)) { $pngout_error = __("could not set permissions", EWWW_IMAGE_OPTIMIZER_DOMAIN); } } $pngout_version = ewww_image_optimizer_tool_found(ewww_image_optimizer_escapeshellarg(EWWW_IMAGE_OPTIMIZER_TOOL_PATH) . 'pngout-static', 'p'); } } if (PHP_OS == 'Darwin') { $download_result = ewww_image_optimizer_escapeshellarg(download_url('http://static.jonof.id.au/dl/kenutils/pngout-' . $latest . '-darwin.tar.gz')); if (is_wp_error($download_result)) { $pngout_error = $download_result->get_error_message(); } else { exec("{$tar} xzf {$download_result} -C " . ewww_image_optimizer_escapeshellarg(EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH) . ' pngout-' . $latest . '-darwin/pngout'); if (!rename(EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH . 'pngout-' . $latest . '-darwin/pngout', EWWW_IMAGE_OPTIMIZER_TOOL_PATH . 'pngout-static')) { if (empty($pngout_error)) { $pngout_error = __("could not move pngout", EWWW_IMAGE_OPTIMIZER_DOMAIN); } } if (!chmod(EWWW_IMAGE_OPTIMIZER_TOOL_PATH . 'pngout-static', 0755)) { if (empty($pngout_error)) { $pngout_error = __("could not set permissions", EWWW_IMAGE_OPTIMIZER_DOMAIN); } } $pngout_version = ewww_image_optimizer_tool_found(ewww_image_optimizer_escapeshellarg(EWWW_IMAGE_OPTIMIZER_TOOL_PATH) . 'pngout-static', 'p'); } } } if (PHP_OS == 'WINNT') { $download_result = download_url('http://advsys.net/ken/util/pngout.exe'); if (is_wp_error($download_result)) { $pngout_error = $download_result->get_error_message(); } else { if (!rename($download_result, EWWW_IMAGE_OPTIMIZER_TOOL_PATH . 'pngout.exe')) { if (empty($pngout_error)) { $pngout_error = __("could not move pngout", EWWW_IMAGE_OPTIMIZER_DOMAIN); } } $pngout_version = ewww_image_optimizer_tool_found('"' . EWWW_IMAGE_OPTIMIZER_TOOL_PATH . 'pngout.exe"', 'p'); } } if (!empty($pngout_version)) { $sendback = add_query_arg('pngout', 'success', remove_query_arg(array('pngout', 'error'), wp_get_referer())); } if (!isset($sendback)) { $sendback = add_query_arg(array('pngout' => 'failed', 'error' => urlencode($pngout_error)), remove_query_arg(array('pngout', 'error'), wp_get_referer())); } wp_redirect($sendback); exit(0); }
function ewww_image_optimizer_install_pngout() { ewwwio_debug_message('<b>' . __FUNCTION__ . '()</b>'); $permissions = apply_filters('ewww_image_optimizer_admin_permissions', ''); if (FALSE === current_user_can($permissions)) { wp_die(esc_html__('You do not have permission to install image optimizer utilities.', EWWW_IMAGE_OPTIMIZER_DOMAIN)); } if (PHP_OS != 'WINNT') { $tar = ewww_image_optimizer_find_nix_binary('tar', 't'); } if (empty($tar) && PHP_OS != 'WINNT') { $pngout_error = __('tar command not found', EWWW_IMAGE_OPTIMIZER_DOMAIN); } if (PHP_OS == 'Linux') { $os_string = 'linux'; } if (PHP_OS == 'FreeBSD') { $os_string = 'bsd'; } $latest = '20150319'; $tool_path = trailingslashit(EWWW_IMAGE_OPTIMIZER_TOOL_PATH); if (empty($pngout_error)) { if (PHP_OS == 'Linux' || PHP_OS == 'FreeBSD') { $download_result = ewww_image_optimizer_escapeshellarg(download_url('http://static.jonof.id.au/dl/kenutils/pngout-' . $latest . '-' . $os_string . '-static.tar.gz')); if (is_wp_error($download_result)) { $pngout_error = $download_result->get_error_message(); } else { $arch_type = php_uname('m'); exec("{$tar} xzf {$download_result} -C " . ewww_image_optimizer_escapeshellarg(EWWW_IMAGE_OPTIMIZER_BINARY_PATH) . ' pngout-' . $latest . '-' . $os_string . '-static/' . $arch_type . '/pngout-static'); if (file_exists(EWWW_IMAGE_OPTIMIZER_BINARY_PATH . 'pngout-' . $latest . '-' . $os_string . '-static/' . $arch_type . '/pngout-static')) { if (!rename(EWWW_IMAGE_OPTIMIZER_BINARY_PATH . 'pngout-' . $latest . '-' . $os_string . '-static/' . $arch_type . '/pngout-static', $tool_path . 'pngout-static')) { if (empty($pngout_error)) { $pngout_error = __("could not move pngout", EWWW_IMAGE_OPTIMIZER_DOMAIN); } } if (!chmod($tool_path . 'pngout-static', 0755)) { if (empty($pngout_error)) { $pngout_error = __("could not set permissions", EWWW_IMAGE_OPTIMIZER_DOMAIN); } } $pngout_version = ewww_image_optimizer_tool_found(ewww_image_optimizer_escapeshellarg($tool_path) . 'pngout-static', 'p'); } else { $pngout_error = __('extraction of files failed', EWWW_IMAGE_OPTIMIZER_DOMAIN); } } } if (PHP_OS == 'Darwin') { $download_result = ewww_image_optimizer_escapeshellarg(download_url('http://static.jonof.id.au/dl/kenutils/pngout-' . $latest . '-darwin.tar.gz')); if (is_wp_error($download_result)) { $pngout_error = $download_result->get_error_message(); } else { exec("{$tar} xzf {$download_result} -C " . ewww_image_optimizer_escapeshellarg(EWWW_IMAGE_OPTIMIZER_BINARY_PATH) . ' pngout-' . $latest . '-darwin/pngout'); if (file_exists(EWWW_IMAGE_OPTIMIZER_BINARY_PATH . 'pngout-' . $latest . '-' . $os_string . '-static/' . $arch_type . '/pngout-static')) { if (!rename(EWWW_IMAGE_OPTIMIZER_BINARY_PATH . 'pngout-' . $latest . '-darwin/pngout', $tool_path . 'pngout-static')) { if (empty($pngout_error)) { $pngout_error = __('could not move pngout', EWWW_IMAGE_OPTIMIZER_DOMAIN); } } if (!chmod($tool_path . 'pngout-static', 0755)) { if (empty($pngout_error)) { $pngout_error = __('could not set permissions', EWWW_IMAGE_OPTIMIZER_DOMAIN); } } $pngout_version = ewww_image_optimizer_tool_found(ewww_image_optimizer_escapeshellarg($tool_path) . 'pngout-static', 'p'); } else { $pngout_error = __('extraction of files failed', EWWW_IMAGE_OPTIMIZER_DOMAIN); } } } } if (PHP_OS == 'WINNT') { $download_result = download_url('http://advsys.net/ken/util/pngout.exe'); if (is_wp_error($download_result)) { $pngout_error = $download_result->get_error_message(); } else { if (!rename($download_result, $tool_path . 'pngout.exe')) { if (empty($pngout_error)) { $pngout_error = __("could not move pngout", EWWW_IMAGE_OPTIMIZER_DOMAIN); } } $pngout_version = ewww_image_optimizer_tool_found('"' . $tool_path . 'pngout.exe"', 'p'); } } if (!empty($pngout_version)) { $sendback = add_query_arg('ewww_pngout', 'success', remove_query_arg(array('ewww_pngout', 'ewww_error'), wp_get_referer())); } if (!isset($sendback)) { $sendback = add_query_arg(array('ewww_pngout' => 'failed', 'ewww_error' => urlencode($pngout_error)), remove_query_arg(array('ewww_pngout', 'ewww_error'), wp_get_referer())); } wp_redirect(esc_url_raw($sendback)); ewwwio_memory(__FUNCTION__); exit(0); }