/**
 * Replace Wildcards
 *
 * @since  1.3
 */
function dedo_search_replace_wildcards($string, $id)
{
    // id
    if (strpos($string, '%id%') !== false) {
        $string = str_replace('%id%', $id, $string);
    }
    // url
    if (strpos($string, '%url%') !== false) {
        $value = dedo_download_link($id);
        $string = str_replace('%url%', $value, $string);
    }
    // title
    if (strpos($string, '%title%') !== false) {
        $value = get_the_title($id);
        $string = str_replace('%title%', $value, $string);
    }
    // date
    if (strpos($string, '%date%') !== false) {
        $value = get_the_date(apply_filters('dedo_shortcode_date_format', ''));
        $string = str_replace('%date%', $value, $string);
    }
    // filesize
    if (strpos($string, '%filesize%') !== false) {
        $value = size_format(get_post_meta($id, '_dedo_file_size', true), 1);
        $string = str_replace('%filesize%', $value, $string);
    }
    // downloads
    if (strpos($string, '%count%') !== false) {
        $value = number_format_i18n(get_post_meta($id, '_dedo_file_count', true));
        $string = str_replace('%count%', $value, $string);
    }
    // file name
    if (strpos($string, '%filename%') !== false) {
        $value = dedo_get_file_name(get_post_meta($id, '_dedo_file_url', true));
        $string = str_replace('%filename%', $value, $string);
    }
    // file extension
    if (strpos($string, '%ext%') !== false) {
        $value = strtoupper(dedo_get_file_ext(get_post_meta($id, '_dedo_file_url', true)));
        $string = str_replace('%ext%', $value, $string);
    }
    // file mime
    if (strpos($string, '%mime%') !== false) {
        $value = dedo_get_file_mime(get_post_meta($id, '_dedo_file_url', true));
        $string = str_replace('%mime%', $value, $string);
    }
    return apply_filters('dedo_search_replace_wildcards', $string, $id);
}
/**
 * Download Post Type Column Contents
 *
 * @since  1.0
 */
function dedo_download_column_contents($column_name, $post_id)
{
    // File column
    if ($column_name == 'file') {
        $file_url = get_post_meta($post_id, '_dedo_file_url', true);
        $file_url = dedo_get_file_name($file_url);
        echo !$file_url ? '<span class="blank">--</span>' : esc_attr($file_url);
    }
    // Filesize column
    if ($column_name == 'filesize') {
        $file_size = get_post_meta($post_id, '_dedo_file_size', true);
        $file_size = !$file_size ? 0 : size_format($file_size, 1);
        echo !$file_size ? '<span class="blank">--</span>' : esc_attr($file_size);
    }
    // Shortcode column
    if ($column_name == 'shortcode') {
        echo '<code>[ddownload id="' . esc_attr($post_id) . '"]</code>';
    }
    // Count column
    if ($column_name == 'downloads') {
        $count = get_post_meta($post_id, '_dedo_file_count', true);
        $count = !$count ? 0 : number_format_i18n($count);
        echo esc_attr($count);
    }
    // Members only column
    if ('members_only' == $column_name) {
        $file = get_post_meta($post_id, '_dedo_file_options', true);
        if (isset($file['members_only'])) {
            echo 1 == $file['members_only'] ? '<span class="true" title="' . __('Yes', 'delightful-downloads') . '"></span>' : '<span class="false" title="' . __('No', 'delightful-downloads') . '"></span>';
        } else {
            echo '<span class="blank" title="' . __('Inherit', 'delightful-downloads') . '">--</span>';
        }
    }
    // Open browser column
    if ('open_browser' == $column_name) {
        $file = get_post_meta($post_id, '_dedo_file_options', true);
        if (isset($file['open_browser'])) {
            echo 1 == $file['open_browser'] ? '<span class="true" title="' . __('Yes', 'delightful-downloads') . '"></span>' : '<span class="false" title="' . __('No', 'delightful-downloads') . '"></span>';
        } else {
            echo '<span class="blank" title="' . __('Inherit', 'delightful-downloads') . '">--</span>';
        }
    }
}
/**
 * Update Status Ajax
 *
 * @since  1.5
*/
function dedo_download_update_status_ajax()
{
    global $dedo_statistics;
    // Check for nonce and permission
    if (!check_ajax_referer('dedo_download_update_status', 'nonce', false) || !current_user_can(apply_filters('dedo_cap_add_new', 'edit_pages'))) {
        echo json_encode(array('status' => 'error', 'content' => __('Failed security check!', 'delightful-downloads')));
        die;
    }
    $file_url = trim($_REQUEST['url']);
    if ($result = dedo_get_file_status($file_url)) {
        // Cache remote file sizes, for 15 mins
        if ('remote' === $result['type']) {
            $cached_remotes = get_transient('dedo_remote_file_sizes');
            if (false === $cached_remotes || !isset($cached_remotes[esc_url_raw($file_url)])) {
                $cached_remotes[esc_url_raw($file_url)] = $result['size'];
                set_transient('dedo_remote_file_sizes', $cached_remotes, 900);
            }
        }
        // Add extra data to result
        $result['size'] = size_format($result['size'], 1);
        $result['icon'] = dedo_get_file_icon($file_url);
        $result['filename'] = dedo_get_file_name($file_url);
        // Exists
        echo json_encode(array('status' => 'success', 'content' => $result));
    } else {
        $result['filename'] = dedo_get_file_name($file_url);
        echo json_encode(array('status' => 'error', 'content' => $result));
    }
    die;
}