' . __('Invalid access key.', 'wp-digital-download') . '';
}
$orders = $wpdb->get_results($wpdb->prepare(
"SELECT o.*, p.post_title as product_name, l.license_key,
(SELECT COUNT(*) FROM {$wpdb->prefix}wpdd_downloads d WHERE d.order_id = o.id) as download_count
FROM {$wpdb->prefix}wpdd_orders o
LEFT JOIN {$wpdb->posts} p ON o.product_id = p.ID
LEFT JOIN {$wpdb->prefix}wpdd_licenses l ON o.id = l.order_id
WHERE o.customer_email = %s
AND o.status = 'completed'
ORDER BY o.purchase_date DESC",
$email
));
} elseif (is_user_logged_in()) {
$current_user = wp_get_current_user();
// Get orders by user ID or email (to include guest purchases before account creation)
$orders = $wpdb->get_results($wpdb->prepare(
"SELECT o.*, p.post_title as product_name, l.license_key,
(SELECT COUNT(*) FROM {$wpdb->prefix}wpdd_downloads d WHERE d.order_id = o.id) as download_count
FROM {$wpdb->prefix}wpdd_orders o
LEFT JOIN {$wpdb->posts} p ON o.product_id = p.ID
LEFT JOIN {$wpdb->prefix}wpdd_licenses l ON o.id = l.order_id
WHERE (o.customer_id = %d OR o.customer_email = %s)
AND o.status = 'completed'
ORDER BY o.purchase_date DESC",
$current_user->ID,
$current_user->user_email
));
} else {
return '
' .
sprintf(
__('Please login to view your purchases.', 'wp-digital-download'),
wp_login_url(get_permalink())
) . '
' . __('Invalid order.', 'wp-digital-download') . '';
}
global $wpdb;
$order_id = sanitize_text_field($_GET['order_id']);
// Get order details along with download token
$order = $wpdb->get_row($wpdb->prepare(
"SELECT o.*, p.post_title as product_name, dl.token as download_token
FROM {$wpdb->prefix}wpdd_orders o
LEFT JOIN {$wpdb->posts} p ON o.product_id = p.ID
LEFT JOIN {$wpdb->prefix}wpdd_download_links dl ON o.id = dl.order_id
WHERE o.order_number = %s",
$order_id
));
if (!$order) {
return '
' . __('Order not found.', 'wp-digital-download') . '
';
}
ob_start();
?>
order_number); ?>
product_name); ?>
$amount, 2); ?>
download_token) {
$download_url = add_query_arg(array(
'wpdd_download_token' => $order->download_token
), home_url());
} else {
// For legacy orders without tokens, create one now
if (class_exists('WPDD_Download_Handler')) {
$token = WPDD_Download_Handler::ensure_download_token($order->id);
if ($token) {
$download_url = add_query_arg(array(
'wpdd_download_token' => $token
), home_url());
} else {
// Still fallback to old method if token creation fails
$download_args = array('wpdd_download' => $order->id);
// For guest users, include email and authentication key
if (!is_user_logged_in()) {
$download_args['customer_email'] = $order->customer_email;
$download_args['key'] = substr(md5($order->customer_email . AUTH_KEY), 0, 10);
}
$download_url = wp_nonce_url(
add_query_arg($download_args),
'wpdd_download_' . $order->id
);
}
} else {
// Fallback if WPDD_Download_Handler class not found
$download_args = array('wpdd_download' => $order->id);
// For guest users, include email and authentication key
if (!is_user_logged_in()) {
$download_args['customer_email'] = $order->customer_email;
$download_args['key'] = substr(md5($order->customer_email . AUTH_KEY), 0, 10);
}
$download_url = wp_nonce_url(
add_query_arg($download_args),
'wpdd_download_' . $order->id
);
}
}
?>
'; // close product info box
// Add CSS for the product info box
$product_info .= '';
// Add the product info box before the content
return $product_info . $content;
}
public static function creator_dashboard_shortcode($atts) {
if (!is_user_logged_in()) {
return '
' . __('Please log in to view your creator dashboard.', 'wp-digital-download') . '
';
}
$user_id = get_current_user_id();
// Check if user is a creator
if (!WPDD_Creator::is_creator($user_id)) {
return '
' . __('This dashboard is only available for creators.', 'wp-digital-download') . '
';
}
global $wpdb;
// Get creator stats
$total_earnings = WPDD_Creator::get_creator_total_earnings($user_id);
$net_earnings = WPDD_Creator::get_creator_net_earnings($user_id);
$current_balance = WPDD_Creator::get_creator_balance($user_id);
$commission_rate = floatval(get_option('wpdd_commission_rate', 0));
$currency = get_option('wpdd_currency', 'USD');
$paypal_email = get_user_meta($user_id, 'wpdd_paypal_email', true);
// Get recent sales
$recent_sales = $wpdb->get_results($wpdb->prepare(
"SELECT o.*, p.post_title as product_name,
(o.total * %f / 100) as platform_fee,
(o.total * (100 - %f) / 100) as creator_earning
FROM {$wpdb->prefix}wpdd_orders o
INNER JOIN {$wpdb->posts} p ON o.product_id = p.ID
WHERE p.post_author = %d
AND o.status = 'completed'
ORDER BY o.purchase_date DESC
LIMIT 20",
$commission_rate,
$commission_rate,
$user_id
));
// Get payout history
$payouts = $wpdb->get_results($wpdb->prepare(
"SELECT * FROM {$wpdb->prefix}wpdd_payouts
WHERE creator_id = %d
ORDER BY created_at DESC
LIMIT 10",
$user_id
));
ob_start();
?>
0) {
echo '
' . sprintf(__('Automatic payouts are triggered when balance reaches %s', 'wp-digital-download'), wpdd_format_price($threshold, $currency)) . '