<?php
/**
 * Système de vues pour les reels
 */

// Initialiser les métadonnées de vues à la création d'un reel
add_action('save_post_wprg_reel', 'wprg_init_views_meta');
function wprg_init_views_meta($post_id) {
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
    if (wp_is_post_revision($post_id)) return;
    
    $views = get_post_meta($post_id, '_wprg_views', true);
    if ($views === '') {
        update_post_meta($post_id, '_wprg_views', 0);
    }
}

// AJAX: Incrémenter le compteur de vues
add_action('wp_ajax_wprg_increment_view', 'wprg_increment_view');
add_action('wp_ajax_nopriv_wprg_increment_view', 'wprg_increment_view');
function wprg_increment_view() {
    // Vérifier le nonce
    if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'wprg_views_nonce')) {
        wp_send_json_error('Security check failed');
    }
    
    $post_id = intval($_POST['post_id']);
    
    // Vérifier si le post existe
    if (!get_post_status($post_id)) {
        wp_send_json_error('Reel non trouvé');
    }
    
    // Vérifier le type de post
    if (get_post_type($post_id) !== 'wprg_reel') {
        wp_send_json_error('Type de post incorrect');
    }
    
    // Récupérer le nombre actuel de vues
    $views = get_post_meta($post_id, '_wprg_views', true);
    $views = $views ? intval($views) : 0;
    
    // Incrémenter
    $new_views = $views + 1;
    update_post_meta($post_id, '_wprg_views', $new_views);
    
    // Forcer la mise à jour du cache
    clean_post_cache($post_id);
    
    wp_send_json_success(array(
        'views' => $new_views,
        'formatted_views' => wprg_format_number($new_views)
    ));
}

// AJAX: Récupérer le nombre de vues
add_action('wp_ajax_wprg_get_views', 'wprg_get_views');
add_action('wp_ajax_nopriv_wprg_get_views', 'wprg_get_views');
function wprg_get_views() {
    // Vérifier le nonce
    if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'wprg_views_nonce')) {
        wp_send_json_error('Security check failed');
    }
    
    $post_id = intval($_POST['post_id']);
    
    if (!get_post_status($post_id)) {
        wp_send_json_error('Reel non trouvé');
    }
    
    $views = get_post_meta($post_id, '_wprg_views', true) ?: 0;
    
    wp_send_json_success(array(
        'views' => intval($views),
        'formatted_views' => wprg_format_number($views)
    ));
}

// Fonction utilitaire pour formater les nombres (k, M)
function wprg_format_number($num) {
    $num = intval($num);
    if ($num >= 1000000) {
        return round($num / 1000000, 1) . 'M';
    } elseif ($num >= 1000) {
        return round($num / 1000, 1) . 'k';
    }
    return number_format($num);
}

// Fonction utilitaire pour obtenir le nombre de vues formaté
function wprg_get_formatted_views($post_id) {
    $views = get_post_meta($post_id, '_wprg_views', true) ?: 0;
    return wprg_format_number($views);
}