/** * Checks if a file is at its download limit * * This limit refers to the maximum number of times files connected to a product * can be downloaded. * * @since 1.3.1 * @uses EDD_Logging::get_log_count() * @param int $download_id Download ID * @param int $payment_id Payment ID * @param int $file_id File ID * @param int $price_id Price ID * @return bool True if at limit, false otherwise */ function edd_is_file_at_download_limit($download_id = 0, $payment_id = 0, $file_id = 0, $price_id = false) { // Checks to see if at limit $logs = new EDD_Logging(); $meta_query = array('relation' => 'AND', array('key' => '_edd_log_file_id', 'value' => (int) $file_id), array('key' => '_edd_log_payment_id', 'value' => (int) $payment_id), array('key' => '_edd_log_price_id', 'value' => (int) $price_id)); $ret = false; $download_count = $logs->get_log_count($download_id, 'file_download', $meta_query); $download_limit = edd_get_file_download_limit($download_id); $unlimited_purchase = edd_payment_has_unlimited_downloads($payment_id); if (!empty($download_limit) && empty($unlimited_purchase)) { if ($download_count >= $download_limit) { $ret = true; // Check to make sure the limit isn't overwritten // A limit is overwritten when purchase receipt is resent $limit_override = edd_get_file_download_limit_override($download_id, $payment_id); if (!empty($limit_override) && $download_count < $limit_override) { $ret = false; } } } return (bool) apply_filters('edd_is_file_at_download_limit', $ret, $download_id, $payment_id, $file_id); }