function ewww_image_optimizer_admin_init()
{
    global $ewww_debug;
    $ewww_debug .= "<b>ewww_image_optimizer_admin_init()</b><br>";
    // make sure the bundled tools are installed
    if (!ewww_image_optimizer_get_option('ewww_image_optimizer_skip_bundle')) {
        ewww_image_optimizer_install_tools();
    }
    ewww_image_optimizer_init();
    // Check if this is an unsupported OS (not Linux or Mac OSX or FreeBSD or Windows or SunOS)
    if (EWWW_IMAGE_OPTIMIZER_CLOUD) {
        ewww_image_optimizer_disable_tools();
    } elseif ('Linux' != PHP_OS && 'Darwin' != PHP_OS && 'FreeBSD' != PHP_OS && 'WINNT' != PHP_OS && 'SunOS' != PHP_OS) {
        // call the function to display a notice
        add_action('network_admin_notices', 'ewww_image_optimizer_notice_os');
        add_action('admin_notices', 'ewww_image_optimizer_notice_os');
        // turn off all the tools
        ewww_image_optimizer_disable_tools();
    } else {
        //Otherwise, we run the function to check for optimization utilities
        add_action('network_admin_notices', 'ewww_image_optimizer_notice_utils');
        add_action('admin_notices', 'ewww_image_optimizer_notice_utils');
    }
    if (function_exists('is_plugin_active_for_network') && is_plugin_active_for_network('ewww-image-optimizer/ewww-image-optimizer.php')) {
        // network version is simply incremented any time we need to make changes to this section for new defaults
        if (get_site_option('ewww_image_optimizer_network_version') < 1) {
            add_site_option('ewww_image_optimizer_disable_pngout', TRUE);
            add_site_option('ewww_image_optimizer_optipng_level', 2);
            add_site_option('ewww_image_optimizer_pngout_level', 2);
            update_site_option('ewww_image_optimizer_network_version', '1');
        }
        // set network settings if they have been POSTed
        if (!empty($_POST['ewww_image_optimizer_optipng_level'])) {
            if (empty($_POST['ewww_image_optimizer_skip_check'])) {
                $_POST['ewww_image_optimizer_skip_check'] = '';
            }
            update_site_option('ewww_image_optimizer_skip_check', $_POST['ewww_image_optimizer_skip_check']);
            if (empty($_POST['ewww_image_optimizer_skip_bundle'])) {
                $_POST['ewww_image_optimizer_skip_bundle'] = '';
            }
            update_site_option('ewww_image_optimizer_skip_bundle', $_POST['ewww_image_optimizer_skip_bundle']);
            if (empty($_POST['ewww_image_optimizer_debug'])) {
                $_POST['ewww_image_optimizer_debug'] = '';
            }
            update_site_option('ewww_image_optimizer_debug', $_POST['ewww_image_optimizer_debug']);
            if (empty($_POST['ewww_image_optimizer_jpegtran_copy'])) {
                $_POST['ewww_image_optimizer_jpegtran_copy'] = '';
            }
            update_site_option('ewww_image_optimizer_jpegtran_copy', $_POST['ewww_image_optimizer_jpegtran_copy']);
            if (empty($_POST['ewww_image_optimizer_png_lossy'])) {
                $_POST['ewww_image_optimizer_png_lossy'] = '';
            }
            update_site_option('ewww_image_optimizer_png_lossy', $_POST['ewww_image_optimizer_png_lossy']);
            if (empty($_POST['ewww_image_optimizer_lossy_skip_full'])) {
                $_POST['ewww_image_optimizer_lossy_skip_full'] = '';
            }
            update_site_option('ewww_image_optimizer_lossy_skip_full', $_POST['ewww_image_optimizer_lossy_skip_full']);
            update_site_option('ewww_image_optimizer_optipng_level', $_POST['ewww_image_optimizer_optipng_level']);
            update_site_option('ewww_image_optimizer_pngout_level', $_POST['ewww_image_optimizer_pngout_level']);
            if (empty($_POST['ewww_image_optimizer_disable_jpegtran'])) {
                $_POST['ewww_image_optimizer_disable_jpegtran'] = '';
            }
            update_site_option('ewww_image_optimizer_disable_jpegtran', $_POST['ewww_image_optimizer_disable_jpegtran']);
            if (empty($_POST['ewww_image_optimizer_disable_optipng'])) {
                $_POST['ewww_image_optimizer_disable_optipng'] = '';
            }
            update_site_option('ewww_image_optimizer_disable_optipng', $_POST['ewww_image_optimizer_disable_optipng']);
            if (empty($_POST['ewww_image_optimizer_disable_gifsicle'])) {
                $_POST['ewww_image_optimizer_disable_gifsicle'] = '';
            }
            update_site_option('ewww_image_optimizer_disable_gifsicle', $_POST['ewww_image_optimizer_disable_gifsicle']);
            if (empty($_POST['ewww_image_optimizer_disable_pngout'])) {
                $_POST['ewww_image_optimizer_disable_pngout'] = '';
            }
            update_site_option('ewww_image_optimizer_disable_pngout', $_POST['ewww_image_optimizer_disable_pngout']);
            if (empty($_POST['ewww_image_optimizer_delete_originals'])) {
                $_POST['ewww_image_optimizer_delete_originals'] = '';
            }
            update_site_option('ewww_image_optimizer_delete_originals', $_POST['ewww_image_optimizer_delete_originals']);
            if (empty($_POST['ewww_image_optimizer_jpg_to_png'])) {
                $_POST['ewww_image_optimizer_jpg_to_png'] = '';
            }
            update_site_option('ewww_image_optimizer_jpg_to_png', $_POST['ewww_image_optimizer_jpg_to_png']);
            if (empty($_POST['ewww_image_optimizer_png_to_jpg'])) {
                $_POST['ewww_image_optimizer_png_to_jpg'] = '';
            }
            update_site_option('ewww_image_optimizer_png_to_jpg', $_POST['ewww_image_optimizer_png_to_jpg']);
            if (empty($_POST['ewww_image_optimizer_gif_to_png'])) {
                $_POST['ewww_image_optimizer_gif_to_png'] = '';
            }
            update_site_option('ewww_image_optimizer_gif_to_png', $_POST['ewww_image_optimizer_gif_to_png']);
            if (empty($_POST['ewww_image_optimizer_jpg_background'])) {
                $_POST['ewww_image_optimizer_jpg_background'] = '';
            }
            update_site_option('ewww_image_optimizer_jpg_background', $_POST['ewww_image_optimizer_jpg_background']);
            if (empty($_POST['ewww_image_optimizer_jpg_quality'])) {
                $_POST['ewww_image_optimizer_jpg_quality'] = '';
            }
            update_site_option('ewww_image_optimizer_jpg_quality', $_POST['ewww_image_optimizer_jpg_quality']);
            if (empty($_POST['ewww_image_optimizer_disable_convert_links'])) {
                $_POST['ewww_image_optimizer_disable_convert_links'] = '';
            }
            update_site_option('ewww_image_optimizer_disable_convert_links', $_POST['ewww_image_optimizer_disable_convert_links']);
            if (empty($_POST['ewww_image_optimizer_cloud_key'])) {
                $_POST['ewww_image_optimizer_cloud_key'] = '';
            }
            update_site_option('ewww_image_optimizer_cloud_key', $_POST['ewww_image_optimizer_cloud_key']);
            if (empty($_POST['ewww_image_optimizer_cloud_jpg'])) {
                $_POST['ewww_image_optimizer_cloud_jpg'] = '';
            }
            update_site_option('ewww_image_optimizer_cloud_jpg', $_POST['ewww_image_optimizer_cloud_jpg']);
            if (empty($_POST['ewww_image_optimizer_cloud_png'])) {
                $_POST['ewww_image_optimizer_cloud_png'] = '';
            }
            update_site_option('ewww_image_optimizer_cloud_png', $_POST['ewww_image_optimizer_cloud_png']);
            if (empty($_POST['ewww_image_optimizer_cloud_png_compress'])) {
                $_POST['ewww_image_optimizer_cloud_png_compress'] = '';
            }
            update_site_option('ewww_image_optimizer_cloud_png_compress', $_POST['ewww_image_optimizer_cloud_png_compress']);
            if (empty($_POST['ewww_image_optimizer_cloud_gif'])) {
                $_POST['ewww_image_optimizer_cloud_gif'] = '';
            }
            update_site_option('ewww_image_optimizer_cloud_gif', $_POST['ewww_image_optimizer_cloud_gif']);
            if (empty($_POST['ewww_image_optimizer_auto'])) {
                $_POST['ewww_image_optimizer_auto'] = '';
            }
            update_site_option('ewww_image_optimizer_auto', $_POST['ewww_image_optimizer_auto']);
            if (empty($_POST['ewww_image_optimizer_aux_paths'])) {
                $_POST['ewww_image_optimizer_aux_paths'] = '';
            }
            update_site_option('ewww_image_optimizer_aux_paths', ewww_image_optimizer_aux_paths_sanitize($_POST['ewww_image_optimizer_aux_paths']));
            if (empty($_POST['ewww_image_optimizer_enable_cloudinary'])) {
                $_POST['ewww_image_optimizer_enable_cloudinary'] = '';
            }
            update_site_option('ewww_image_optimizer_enable_cloudinary', $_POST['ewww_image_optimizer_enable_cloudinary']);
            if (empty($_POST['ewww_image_optimizer_delay'])) {
                $_POST['ewww_image_optimizer_delay'] = '';
            }
            update_site_option('ewww_image_optimizer_delay', intval($_POST['ewww_image_optimizer_delay']));
            if (empty($_POST['ewww_image_optimizer_interval'])) {
                $_POST['ewww_image_optimizer_interval'] = '';
            }
            update_site_option('ewww_image_optimizer_interval', intval($_POST['ewww_image_optimizer_interval']));
            add_action('network_admin_notices', 'ewww_image_optimizer_network_settings_saved');
        }
    }
    // register all the EWWW IO settings
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_skip_check');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_skip_bundle');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_debug');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_jpegtran_copy');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_png_lossy');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_lossy_skip_full');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_optipng_level');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_pngout_level');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_jpegtran_path');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_optipng_path');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_gifsicle_path');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_disable_jpegtran');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_disable_optipng');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_disable_gifsicle');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_disable_pngout');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_delete_originals');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_jpg_to_png');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_png_to_jpg');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_gif_to_png');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_jpg_background', 'ewww_image_optimizer_jpg_background_sanitize');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_jpg_quality', 'ewww_image_optimizer_jpg_quality_sanitize');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_disable_convert_links');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_bulk_resume');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_bulk_attachments');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_aux_resume');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_aux_attachments');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_aux_type');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_cloud_key');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_cloud_jpg');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_cloud_png');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_cloud_png_compress');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_cloud_gif');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_auto');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_aux_paths', 'ewww_image_optimizer_aux_paths_sanitize');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_enable_cloudinary');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_delay', 'intval');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_interval', 'intval');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_import_status');
    // setup scheduled optimization if the user has enabled it, and it isn't already scheduled
    if (ewww_image_optimizer_get_option('ewww_image_optimizer_auto') == TRUE && !wp_next_scheduled('ewww_image_optimizer_auto')) {
        $ewww_debug .= "scheduling auto-optimization<br>";
        wp_schedule_event(time(), 'hourly', 'ewww_image_optimizer_auto');
    } elseif (ewww_image_optimizer_get_option('ewww_image_optimizer_auto') == TRUE) {
        $ewww_debug .= "auto-optimization already scheduled: " . wp_next_scheduled('ewww_image_optimizer_auto') . "<br>";
    } elseif (wp_next_scheduled('ewww_image_optimizer_auto')) {
        $ewww_debug .= "un-scheduling auto-optimization<br>";
        wp_clear_scheduled_hook('ewww_image_optimizer_auto');
        if (function_exists('is_plugin_active_for_network') && is_plugin_active_for_network('ewww-image-optimizer/ewww-image-optimizer.php')) {
            global $wpdb;
            if (function_exists('wp_get_sites')) {
                add_filter('wp_is_large_network', 'ewww_image_optimizer_large_network', 20, 0);
                $blogs = wp_get_sites(array('network_id' => $wpdb->siteid, 'limit' => 10000));
                remove_filter('wp_is_large_network', 'ewww_image_optimizer_large_network', 20, 0);
            } else {
                $query = "SELECT blog_id FROM {$wpdb->blogs} WHERE site_id = '{$wpdb->siteid}' ";
                $blogs = $wpdb->get_results($query, ARRAY_A);
            }
            foreach ($blogs as $blog) {
                switch_to_blog($blog['blog_id']);
                wp_clear_scheduled_hook('ewww_image_optimizer_auto');
            }
            restore_current_blog();
        }
    }
    // require the files that do the bulk processing
    require_once EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH . 'bulk.php';
    require_once EWWW_IMAGE_OPTIMIZER_PLUGIN_PATH . 'aux-optimize.php';
    // queue the function that contains custom styling for our progressbars, but only in wp 3.8+
    global $wp_version;
    if (substr($wp_version, 0, 3) >= 3.8) {
        add_action('admin_enqueue_scripts', 'ewww_image_optimizer_progressbar_style');
    }
}
function ewww_image_optimizer_tool_init()
{
    global $ewww_debug;
    //	global $ewww_admin;
    $ewww_debug .= "<b>ewww_image_optimizer_tool_init()</b><br>";
    /*	if ( $admin ) {
    		$ewww_debug .= 'we are in the admin, feel free to shout<br>';
    	} else {
    		$ewww_debug .= 'no admin, be quiet<br>';
    	}*/
    // make sure the bundled tools are installed
    if (!ewww_image_optimizer_get_option('ewww_image_optimizer_skip_bundle')) {
        ewww_image_optimizer_install_tools();
    }
    //	if ( $admin ) {
    //then we run the function to check for optimization utilities
    add_action('network_admin_notices', 'ewww_image_optimizer_notice_utils');
    add_action('admin_notices', 'ewww_image_optimizer_notice_utils');
    //	} else {
    if (EWWW_IMAGE_OPTIMIZER_CLOUD) {
        $ewww_debug .= 'cloud options enabled, shutting off binaries<br>';
        ewww_image_optimizer_disable_tools();
    }
    //		ewww_image_optimizer_notice_utils();
    //	}
}
function ewww_image_optimizer_exec_init()
{
    global $ewww_debug;
    $ewww_debug .= "<b>ewww_image_optimizer_exec_init()</b><br>";
    if (function_exists('is_plugin_active_for_network') && is_plugin_active_for_network(EWWW_IMAGE_OPTIMIZER_PLUGIN_FILE_REL)) {
        // set the binary-specific network settings if they have been POSTed
        if (isset($_POST['ewww_image_optimizer_delay'])) {
            if (empty($_POST['ewww_image_optimizer_skip_check'])) {
                $_POST['ewww_image_optimizer_skip_check'] = '';
            }
            update_site_option('ewww_image_optimizer_skip_check', $_POST['ewww_image_optimizer_skip_check']);
            if (empty($_POST['ewww_image_optimizer_skip_bundle'])) {
                $_POST['ewww_image_optimizer_skip_bundle'] = '';
            }
            update_site_option('ewww_image_optimizer_skip_bundle', $_POST['ewww_image_optimizer_skip_bundle']);
            if (!empty($_POST['ewww_image_optimizer_optipng_level'])) {
                update_site_option('ewww_image_optimizer_optipng_level', $_POST['ewww_image_optimizer_optipng_level']);
                update_site_option('ewww_image_optimizer_pngout_level', $_POST['ewww_image_optimizer_pngout_level']);
            }
            if (empty($_POST['ewww_image_optimizer_disable_jpegtran'])) {
                $_POST['ewww_image_optimizer_disable_jpegtran'] = '';
            }
            update_site_option('ewww_image_optimizer_disable_jpegtran', $_POST['ewww_image_optimizer_disable_jpegtran']);
            if (empty($_POST['ewww_image_optimizer_disable_optipng'])) {
                $_POST['ewww_image_optimizer_disable_optipng'] = '';
            }
            update_site_option('ewww_image_optimizer_disable_optipng', $_POST['ewww_image_optimizer_disable_optipng']);
            if (empty($_POST['ewww_image_optimizer_disable_gifsicle'])) {
                $_POST['ewww_image_optimizer_disable_gifsicle'] = '';
            }
            update_site_option('ewww_image_optimizer_disable_gifsicle', $_POST['ewww_image_optimizer_disable_gifsicle']);
            if (empty($_POST['ewww_image_optimizer_disable_pngout'])) {
                $_POST['ewww_image_optimizer_disable_pngout'] = '';
            }
            update_site_option('ewww_image_optimizer_disable_pngout', $_POST['ewww_image_optimizer_disable_pngout']);
        }
    }
    // register all the binary-specific EWWW IO settings
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_skip_check');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_skip_bundle');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_optipng_level');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_pngout_level');
    //	register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_jpegtran_path');
    //	register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_optipng_path');
    //	register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_gifsicle_path');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_disable_jpegtran');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_disable_optipng');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_disable_gifsicle');
    register_setting('ewww_image_optimizer_options', 'ewww_image_optimizer_disable_pngout');
    // If cloud is fully enabled, we're going to skip all the checks related to the bundled tools
    if (EWWW_IMAGE_OPTIMIZER_CLOUD) {
        ewww_image_optimizer_disable_tools();
        // Check if this is an unsupported OS (not Linux or Mac OSX or FreeBSD or Windows or SunOS)
    } elseif ('Linux' != PHP_OS && 'Darwin' != PHP_OS && 'FreeBSD' != PHP_OS && 'WINNT' != PHP_OS && 'SunOS' != PHP_OS) {
        // call the function to display a notice
        add_action('network_admin_notices', 'ewww_image_optimizer_notice_os');
        add_action('admin_notices', 'ewww_image_optimizer_notice_os');
        // turn off all the tools
        ewww_image_optimizer_disable_tools();
    } else {
        // make sure the bundled tools are installed
        if (!ewww_image_optimizer_get_option('ewww_image_optimizer_skip_bundle')) {
            ewww_image_optimizer_install_tools();
        }
        //then we run the function to check for optimization utilities
        add_action('network_admin_notices', 'ewww_image_optimizer_notice_utils');
        add_action('admin_notices', 'ewww_image_optimizer_notice_utils');
    }
}
function ewww_image_optimizer_tool_init()
{
    ewwwio_debug_message('<b>' . __FUNCTION__ . '()</b>');
    // make sure the bundled tools are installed
    if (!ewww_image_optimizer_get_option('ewww_image_optimizer_skip_bundle')) {
        ewww_image_optimizer_install_tools();
    }
    // check for optimization utilities and register a notice if something is missing
    add_action('network_admin_notices', 'ewww_image_optimizer_notice_utils');
    add_action('admin_notices', 'ewww_image_optimizer_notice_utils');
    if (EWWW_IMAGE_OPTIMIZER_CLOUD) {
        ewwwio_debug_message('cloud options enabled, shutting off binaries');
        ewww_image_optimizer_disable_tools();
    }
    //	ewww_image_optimizer_debug_log();
}
function ewww_image_optimizer_notice_utils()
{
    global $ewww_debug;
    $ewww_debug = "{$ewww_debug} <b>ewww_image_optimizer_notice_utils()</b><br>";
    // query the php settings for safe mode
    if (ini_get('safe_mode')) {
        // display a warning to the user
        echo "<div id='ewww-image-optimizer-warning-opt-png' class='error'><p><strong>PHP's Safe Mode is turned on. This plugin cannot operate in safe mode.</strong></p></div>";
    }
    // make sure the bundled tools are installed
    if (!get_site_option('ewww_image_optimizer_skip_bundle')) {
        ewww_image_optimizer_install_tools();
    }
    // attempt to retrieve values for utility paths, and store them in the appropriate variables
    list($jpegtran_path, $optipng_path, $gifsicle_path, $pngout_path) = ewww_image_optimizer_path_check();
    // store those values back into an array, probably a more efficient way of doing this
    $required = array('JPEGTRAN' => $jpegtran_path, 'OPTIPNG' => $optipng_path, 'GIFSICLE' => $gifsicle_path, 'PNGOUT' => $pngout_path);
    // if the user has disabled the utility checks
    if (get_site_option('ewww_image_optimizer_skip_check') == TRUE) {
        // set a variable for each tool
        $skip_jpegtran_check = true;
        $skip_optipng_check = true;
        $skip_gifsicle_check = true;
        $skip_pngout_check = true;
    } else {
        // set the variables false otherwise
        $skip_jpegtran_check = false;
        $skip_optipng_check = false;
        $skip_gifsicle_check = false;
        $skip_pngout_check = false;
    }
    // if the user has disabled a variable, we aren't going to bother checking to see if it is there
    if (get_site_option('ewww_image_optimizer_disable_jpegtran')) {
        $skip_jpegtran_check = true;
    }
    if (get_site_option('ewww_image_optimizer_disable_optipng')) {
        $skip_optipng_check = true;
    }
    if (get_site_option('ewww_image_optimizer_disable_gifsicle')) {
        $skip_gifsicle_check = true;
    }
    if (get_site_option('ewww_image_optimizer_disable_pngout')) {
        $skip_pngout_check = true;
    }
    // we are going to store our validation results in $missing
    $missing = array();
    // go through each of the required tools
    foreach ($required as $key => $req) {
        // if the tool wasn't found, add it to the $missing array if we are supposed to check the tool in question
        switch ($key) {
            case 'JPEGTRAN':
                if (!$skip_jpegtran_check && $req === false) {
                    $missing[] = 'jpegtran';
                }
                define('EWWW_IMAGE_OPTIMIZER_' . $key, $jpegtran_path);
                break;
            case 'OPTIPNG':
                if (!$skip_optipng_check && $req === false) {
                    $missing[] = 'optipng';
                }
                define('EWWW_IMAGE_OPTIMIZER_' . $key, $optipng_path);
                break;
            case 'GIFSICLE':
                if (!$skip_gifsicle_check && $req === false) {
                    $missing[] = 'gifsicle';
                }
                define('EWWW_IMAGE_OPTIMIZER_' . $key, $gifsicle_path);
                break;
            case 'PNGOUT':
                if (!$skip_pngout_check && $req === false) {
                    $missing[] = 'pngout';
                }
                define('EWWW_IMAGE_OPTIMIZER_' . $key, $pngout_path);
                break;
        }
    }
    // expand the missing utilities list for use in the error message
    $msg = implode(', ', $missing);
    // if there is a message, display the warning
    if (!empty($msg)) {
        echo "<div id='ewww-image-optimizer-warning-opt-png' class='updated'><p><strong>EWWW Image Optimizer requires <a href='http://jpegclub.org/jpegtran/'>jpegtran</a>, <a href='http://optipng.sourceforge.net/'>optipng</a> or <a href='http://advsys.net/ken/utils.htm'>pngout</a>, and <a href='http://www.lcdf.org/gifsicle/'>gifsicle</a>.</strong> You are missing: {$msg}. Please install via the <a href='options-general.php?page=ewww-image-optimizer/ewww-image-optimizer.php'>Settings Page</a>. If the one-click install links don't work for you, try the <a href='http://wordpress.org/extend/plugins/ewww-image-optimizer/installation/'>Installation Instructions</a>.</p></div>";
    }
    // Check if exec is disabled
    $disabled = ini_get('disable_functions');
    if (preg_match('/[^_]exec/', $disabled)) {
        //display a warning if exec() is disabled, can't run much of anything without it
        echo "<div id='ewww-image-optimizer-warning-opt-png' class='error'><p><strong>EWWW Image Optimizer requires exec().</strong> Your system administrator has disabled this function.</p></div>";
    }
}
function ewww_image_optimizer_tool_init($admin = true)
{
    // make sure the bundled tools are installed
    if (!ewww_image_optimizer_get_option('ewww_image_optimizer_skip_bundle')) {
        ewww_image_optimizer_install_tools();
    }
    if ($admin) {
        //then we run the function to check for optimization utilities
        add_action('network_admin_notices', 'ewww_image_optimizer_notice_utils');
        add_action('admin_notices', 'ewww_image_optimizer_notice_utils');
    } else {
        ewww_image_optimizer_notice_utils();
    }
}