Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

<?php
/**
 * Plugin Name: Planificare Curs 6 Săptămâni
 * Description: Sistem de planificare pentru cursuri de 6 săptămâni în WordPress
 * Version: 1.0
 * Author: Tu
 */

// Înregistrare Custom Post Type pentru Cursuri
function curs_post_type() {
    $labels = array(
        'name' => 'Cursuri',
        'singular_name' => 'Curs',
        'add_new' => 'Adaugă Curs Nou',
        'add_new_item' => 'Adaugă Curs Nou',
        'edit_item' => 'Editează Curs',
        'new_item' => 'Curs Nou',
        'view_item' => 'Vezi Curs',
        'search_items' => 'Caută Cursuri',
        'not_found' => 'Nu s-au găsit cursuri',
        'menu_name' => 'Cursuri'
    );

    $args = array(
        'labels' => $labels,
        'public' => true,
        'has_archive' => true,
        'menu_icon' => 'dashicons-calendar-alt',
        'supports' => array('title', 'editor', 'thumbnail'),
        'rewrite' => array('slug' => 'cursuri'),
        'show_in_rest' => true,
    );

    register_post_type('curs', $args);
}
add_action('init', 'curs_post_type');

// Adăugare Metabox pentru detaliile cursului
function curs_add_metaboxes() {
    add_meta_box(
        'curs_detalii',
        'Detalii Curs',
        'curs_detalii_callback',
        'curs',
        'normal',
        'high'
    );
}
add_action('add_meta_boxes', 'curs_add_metaboxes');

// Callback pentru metabox
function curs_detalii_callback($post) {
    wp_nonce_field('curs_save_meta', 'curs_meta_nonce');
    
    $data_start = get_post_meta($post->ID, '_curs_data_start', true);
    $durata_saptamani = get_post_meta($post->ID, '_curs_durata_saptamani', true) ?: 6;
    
    echo '<div style="margin-bottom: 20px;">';
    echo '<label style="display: block; margin-bottom: 5px;"><strong>Data de Start:</strong></label>';
    echo '<input type="date" name="curs_data_start" value="' . esc_attr($data_start) . '" style="width: 100%;" />';
    echo '</div>';
    
    echo '<div style="margin-bottom: 20px;">';
    echo '<label style="display: block; margin-bottom: 5px;"><strong>Durată (săptămâni):</strong></label>';
    echo '<input type="number" name="curs_durata_saptamani" value="' . esc_attr($durata_saptamani) . '" min="1" max="52" style="width: 100px;" />';
    echo '</div>';
    
    echo '<h3>Planificare Săptămânală</h3>';
    
    for ($i = 1; $i <= 6; $i++) {
        $titlu = get_post_meta($post->ID, '_curs_saptamana_' . $i . '_titlu', true);
        $continut = get_post_meta($post->ID, '_curs_saptamana_' . $i . '_continut', true);
        
        echo '<div style="border: 1px solid #ddd; padding: 15px; margin-bottom: 15px; background: #f9f9f9;">';
        echo '<h4>Săptămâna ' . $i . '</h4>';
        
        echo '<label style="display: block; margin-bottom: 5px;"><strong>Titlu:</strong></label>';
        echo '<input type="text" name="curs_saptamana_' . $i . '_titlu" value="' . esc_attr($titlu) . '" style="width: 100%; margin-bottom: 10px;" placeholder="Ex: Introducere în..." />';
        
        echo '<label style="display: block; margin-bottom: 5px;"><strong>Conținut:</strong></label>';
        echo '<textarea name="curs_saptamana_' . $i . '_continut" rows="4" style="width: 100%;" placeholder="Descriere detaliată a săptămânii...">' . esc_textarea($continut) . '</textarea>';
        
        echo '</div>';
    }
}

// Salvare date metabox
function curs_save_meta($post_id) {
    if (!isset($_POST['curs_meta_nonce']) || !wp_verify_nonce($_POST['curs_meta_nonce'], 'curs_save_meta')) {
        return;
    }
    
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }
    
    if (!current_user_can('edit_post', $post_id)) {
        return;
    }
    
    if (isset($_POST['curs_data_start'])) {
        update_post_meta($post_id, '_curs_data_start', sanitize_text_field($_POST['curs_data_start']));
    }
    
    if (isset($_POST['curs_durata_saptamani'])) {
        update_post_meta($post_id, '_curs_durata_saptamani', intval($_POST['curs_durata_saptamani']));
    }
    
    for ($i = 1; $i <= 6; $i++) {
        if (isset($_POST['curs_saptamana_' . $i . '_titlu'])) {
            update_post_meta($post_id, '_curs_saptamana_' . $i . '_titlu', sanitize_text_field($_POST['curs_saptamana_' . $i . '_titlu']));
        }
        
        if (isset($_POST['curs_saptamana_' . $i . '_continut'])) {
            update_post_meta($post_id, '_curs_saptamana_' . $i . '_continut', sanitize_textarea_field($_POST['curs_saptamana_' . $i . '_continut']));
        }
    }
}
add_action('save_post_curs', 'curs_save_meta');

// Afișare planificare pe frontend (adaugă în single-curs.php sau folosește filtru)
function curs_afisare_planificare($content) {
    if (is_singular('curs') && in_the_loop() && is_main_query()) {
        $post_id = get_the_ID();
        $data_start = get_post_meta($post_id, '_curs_data_start', true);
        $durata = get_post_meta($post_id, '_curs_durata_saptamani', true) ?: 6;
        
        $html = '<div class="curs-planificare" style="margin-top: 30px;">';
        
        if ($data_start) {
            $data_inceput = new DateTime($data_start);
            $data_sfarsit = clone $data_inceput;
            $data_sfarsit->modify('+' . ($durata - 1) . ' weeks');
            
            $html .= '<div style="background: #f0f8ff; padding: 20px; border-left: 4px solid #0073aa; margin-bottom: 30px;">';
            $html .= '<h3 style="margin-top: 0;">📅 Informații Curs</h3>';
            $html .= '<p><strong>Data de start:</strong> ' . $data_inceput->format('d.m.Y') . '</p>';
            $html .= '<p><strong>Data de finalizare:</strong> ' . $data_sfarsit->format('d.m.Y') . '</p>';
            $html .= '<p><strong>Durată:</strong> ' . $durata . ' săptămâni</p>';
            $html .= '</div>';
        }
        
        $html .= '<h2>📚 Planificare Săptămânală</h2>';
        
        for ($i = 1; $i <= $durata; $i++) {
            $titlu = get_post_meta($post_id, '_curs_saptamana_' . $i . '_titlu', true);
            $continut = get_post_meta($post_id, '_curs_saptamana_' . $i . '_continut', true);
            
            if ($titlu || $continut) {
                if ($data_start) {
                    $data_saptamana = clone $data_inceput;
                    $data_saptamana->modify('+' . ($i - 1) . ' weeks');
                    $data_text = $data_saptamana->format('d.m.Y');
                }
                
                $html .= '<div style="border: 1px solid #ddd; padding: 20px; margin-bottom: 20px; border-radius: 5px; background: white;">';
                $html .= '<h3 style="color: #0073aa; margin-top: 0;">Săptămâna ' . $i;
                if (isset($data_text)) {
                    $html .= ' <span style="font-size: 0.8em; color: #666;">(' . $data_text . ')</span>';
                }
                $html .= '</h3>';
                
                if ($titlu) {
                    $html .= '<h4 style="margin: 10px 0;">' . esc_html($titlu) . '</h4>';
                }
                
                if ($continut) {
                    $html .= '<p>' . nl2br(esc_html($continut)) . '</p>';
                }
                
                $html .= '</div>';
            }
        }
        
        $html .= '</div>';
        
        return $content . $html;
    }
    
    return $content;
}
add_filter('the_content', 'curs_afisare_planificare');

// Shortcode pentru afișarea unui curs specific
function curs_shortcode($atts) {
    $atts = shortcode_atts(array(
        'id' => 0,
    ), $atts);
    
    if (!$atts['id']) {
        return '<p>ID curs lipsă!</p>';
    }
    
    $post = get_post($atts['id']);
    if (!$post || $post->post_type !== 'curs') {
        return '<p>Curs negăsit!</p>';
    }
    
    setup_postdata($post);
    $content = apply_filters('the_content', $post->post_content);
    wp_reset_postdata();
    
    return $content;
}
add_shortcode('curs_planificare', 'curs_shortcode');

One Response

Leave a Reply to A WordPress Commenter Cancel reply

Your email address will not be published. Required fields are marked *