<?php
/**
 * WP Multi – Modul: Statistik & Banner
 *
 * Automatisch aus wp-multi.php ausgelagert. Wird über den Loader in
 * wp-multi.php eingebunden (nur wenn das WP Multi Toolkit aktiv ist).
 */

if (!defined('ABSPATH')) { exit; }

/*
* Statistik & Banner
*/


// Funktion zum Einbinden von CSS direkt im Plugin-Code
function statistik_manager_inline_styles() {
    ?>
    <style>
        /* CSS für das Statistik Manager Plugin */
        .statistik-manager-bookmarks {
            font-family: Arial, sans-serif;
            margin-top: 20px;
        }
        .statistik-manager-bookmarks ul {
            list-style-type: none;
            padding: 0;
        }
        .statistik-manager-bookmarks li {
            margin-bottom: 10px;
        }
        .statistik-manager-bookmarks a {
            text-decoration: none;
            color: #0073aa;
            font-size: 1.6em; /* Größerer Text für den Titel */
        }
        .statistik-manager-bookmarks a:hover {
            color: #005177;
        }
        .delete-bookmark-btn {
            background-color: #f44336;
            color: white;
            border: none;
            padding: 5px 10px;
            cursor: pointer;
            margin-right: 10px; /* Abstand zwischen Button und Titel */
            margin-bottom: 10px; /* Mehr Abstand nach unten */
        }
        .delete-bookmark-btn:hover {
            background-color: #d32f2f;
        }
        .form-field {
            margin-bottom: 15px;
        }
        .form-field label {
            display: block;
            margin-bottom: 5px;
        }
        .form-field input {
            width: 100%;
            padding: 8px;
            border: 1px solid #ccc;
            border-radius: 4px;
        }
        .form-field button {
            background-color: #0073aa;
            color: white;
            border: none;
            padding: 10px 20px;
            cursor: pointer;
        }
        .form-field button:hover {
            background-color: #005177;
        }
    </style>
    <?php
}
add_action('wp_head', 'statistik_manager_inline_styles');

// Font Awesome einbinden
function statistik_manager_enqueue_fontawesome() {
    wp_enqueue_style('fontawesome', 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css', [], null);
}
add_action('wp_enqueue_scripts', 'statistik_manager_enqueue_fontawesome');

// Sprachdateien laden
function statistik_manager_load_textdomain() {
    load_plugin_textdomain('statistik-manager', false, dirname(plugin_basename(WP_MULTI_FILE)) . '/languages');
}
add_action('plugins_loaded', 'statistik_manager_load_textdomain');

// Funktion zum Abrufen der Statistiken
function statistik_manager_get_statistics() {
    global $wpdb;

    // Beiträge
    $posts_count = wp_count_posts()->publish;

    // Kommentare
    $comments_count = wp_count_comments()->total_comments;

    // Kategorien
    $selected_categories = get_option('statistik_manager_selected_categories', []);
    $categories_count = 0;

    if (!empty($selected_categories)) {
        $categories_count = count($selected_categories);
    } else {
        // Alle Kategorien zählen, wenn keine ausgewählt wurden
        $categories_count = wp_count_terms('category');
    }

    // Serien (angenommen, Serien sind benutzerdefinierte Taxonomie)
    $series_count = 0;
    if (taxonomy_exists('series')) {
        $count = wp_count_terms('series');
        $series_count = is_wp_error($count) ? 0 : (int) $count;
    }

    // Eröffnungsdatum
    $opening_date = get_option('statistik_manager_opening_date', '');

    return [
        'posts_count' => $posts_count,
        'comments_count' => $comments_count,
        'categories_count' => $categories_count,
        'series_count' => $series_count,
        'opening_date' => $opening_date
    ];
}

		// Banner-Funktion
		function statistik_manager_display_banner($position) {
			if (!get_option('statistik_manager_banner_enabled', 1)) {
				return;
			}

			$banner_text = get_option('statistik_manager_banner_text', 'Willkommen auf unserer Webseite!');
			$banner_color = get_option('statistik_manager_banner_color', '#0073aa');
			$banner_position = get_option('statistik_manager_banner_position', 'top');
			$font_size = get_option('statistik_manager_banner_font_size', 'medium');
			$banner_icon = get_option('statistik_manager_banner_icon', 'fas fa-info-circle'); // Standard-Icon
			$show_icon = get_option('statistik_manager_show_icon', 1); // Option zur Aktivierung des Icons

			// Schriftgröße je nach Auswahl setzen
			switch ($font_size) {
				case 'small':
					$font_size_css = '14px';
					break;
				case 'medium':
					$font_size_css = '18px';
					break;
				case 'large':
					$font_size_css = '24px';
					break;
				default:
					$font_size_css = '18px';
			}

			if ($banner_position !== $position) {
				return;
			}

			// Standard-Styles für das Banner
			$style = "background-color: " . esc_attr($banner_color) . ";
					  color: #fff;
					  text-align: center;
					  padding: 10px;
					  width: 100%;
					  height: 50px; /* Feste Höhe */
					  line-height: 30px; /* Zentrierte Schrift */
					  z-index: 9999;
					  position: fixed;
					  top: 0;
					  left: 0;";

			$text_style = "font-size: " . esc_attr($font_size_css) . ";"; 
			$icon_style = "font-size: 24px; margin-right: 8px;"; // Feste Größe für Icon

			echo '<div class="statistik-manager-banner" id="statistik-manager-banner" style="' . esc_attr($style) . '">';
			
			// Icon nur anzeigen, wenn gewünscht
			if ($show_icon && !empty($banner_icon)) {
				echo '<i class="' . esc_attr($banner_icon) . '" style="' . esc_attr($icon_style) . '"></i>';
			}

			echo '<span style="' . esc_attr($text_style) . '">' . esc_html($banner_text) . '</span>';
			echo '</div>';
		}

		// Funktion für das Banner im Header (nach <body>)
		function statistik_manager_display_banner_header() {
			add_action('wp_body_open', function() {
				statistik_manager_display_banner('top');
			});
		}

		// Falls `wp_body_open` nicht unterstützt wird, als Fallback `wp_footer` nutzen
		function statistik_manager_display_banner_header_fallback() {
			add_action('wp_footer', function() {
				statistik_manager_display_banner('top');
			}, 5);
		}

		// Funktion für das Banner im Footer
		function statistik_manager_display_banner_footer() {
			add_action('wp_footer', function() {
				statistik_manager_display_banner('bottom');
			}, 10);
		}

		// Banner laden (Header mit Fallback)
		if (function_exists('wp_body_open')) {
			statistik_manager_display_banner_header();
		} else {
			statistik_manager_display_banner_header_fallback();
		}

		// Fix: Admin-Leiste (Wenn Admin angemeldet ist, Banner nach unten verschieben)
		function statistik_manager_admin_bar_fix() {
			if (is_admin_bar_showing()) {
				echo '<style>
					#statistik-manager-banner {
						top: 32px !important; /* Admin-Leiste ausgleichen */
					}
					body {
						padding-top: 82px !important; /* Extra Platz für Admin-Leiste */
					}
				</style>';
			} else {
				echo '<style>
					body {
						padding-top: 70px !important; /* Standard Abstand */
					}
				</style>';
			}
		}
		add_action('wp_head', 'statistik_manager_admin_bar_fix');

// Shortcode für die Anzeige der Statistiken
function statistik_manager_shortcode() {
    $statistics = statistik_manager_get_statistics();
    $webseitenname = get_bloginfo('name');

    $output = '<div class="statistik-manager">';
    $output .= '<h3>Statistikübersicht</h3>';
    $output .= '<div class="statistik-items">';

    if (get_option('statistik_manager_show_posts')) {
        $output .= '<div class="stat-item"><i class="fas fa-file-alt"></i>';
        $output .= '<p><strong>Beiträge:</strong></br> ' . esc_html($statistics['posts_count']) . '</p></div>';
    }
    if (get_option('statistik_manager_show_comments')) {
        $output .= '<div class="stat-item"><i class="fas fa-comments"></i>';
        $output .= '<p><strong>Kommentare:</strong></br> ' . esc_html($statistics['comments_count']) . '</p></div>';
    }
    if (get_option('statistik_manager_show_categories')) {
        $output .= '<div class="stat-item"><i class="fas fa-th-list"></i>';
        $output .= '<p><strong>Kategorien:</strong></br> ' . esc_html($statistics['categories_count']) . '</p></div>';
    }
    if (get_option('statistik_manager_show_series')) {
        $output .= '<div class="stat-item"><i class="fas fa-tv"></i>';
        $output .= '<p><strong>Serien:</strong></br> ' . esc_html($statistics['series_count']) . '</p></div>';
    }
    $output .= '</div>';

    // Eröffnungsdatum anzeigen, wenn gesetzt
    if (!empty($statistics['opening_date'])) {
        $formatted_date = date('d.m.Y', strtotime($statistics['opening_date']));
        $output .= '<div class="stat-opening-date">';
        $output .= '<i class="fas fa-calendar-alt"></i>'; 
        $output .= '<p><strong>' . sprintf(__('%s wurde am %s eröffnet.', 'statistik-manager'), esc_html($webseitenname), esc_html($formatted_date)) . '</strong></p>';
        $output .= '</div>';
    }

    $output .= '</div>';
    return $output;
}

add_shortcode('statistik_manager', 'statistik_manager_shortcode');

// Admin-Panel CSS einbinden, nur auf der Plugin-Seite
// Das frühere seitenspezifische admin-style.css wurde durch das gemeinsame
// Design-System (wp-multi-toolkit/assets/admin.css) ersetzt.

// Frontend CSS nur einbinden, wenn der Shortcode verwendet wird
function statistik_manager_enqueue_frontend_styles() {
    if (has_shortcode(get_post()->post_content, 'statistik_manager')) {
        wp_enqueue_style('statistik-manager-frontend-style', plugins_url('css/style.css', WP_MULTI_FILE));
    }
}
add_action('wp_enqueue_scripts', 'statistik_manager_enqueue_frontend_styles');

// Der Menüpunkt "Statistik & Notice" wird zentral in wp_multi_register_admin_menus() registriert.

// Funktion für die Plugin-Optionen-Seite
function statistik_manager_options_page() {
    wpmt_admin_page_open(
        __('Statistik & Notice', 'statistik-manager'),
        __('Statistik-Shortcode, Lesezeichen und Frontend-Banner konfigurieren', 'statistik-manager')
    );

    wpmt_admin_card_open(__('Einstellungen', 'statistik-manager'));
    ?>
                <form method="post" action="options.php">
                    <?php
                    settings_fields('statistik_manager_settings_group');
                    do_settings_sections('statistik_manager');
                    ?>
                    <h2><?php _e('Statistiken anzeigen', 'statistik-manager'); ?></h2>
                    <table class="form-table">
                        <tr valign="top">
                            <th scope="row"><?php _e('Anzeigen', 'statistik-manager'); ?></th>
                            <td>
                                <input type="checkbox" name="statistik_manager_show_posts" value="1" <?php checked(get_option('statistik_manager_show_posts'), 1); ?> />
                                <label for="statistik_manager_show_posts"><?php _e('Beiträge anzeigen', 'statistik-manager'); ?></label><br>
                                <input type="checkbox" name="statistik_manager_show_comments" value="1" <?php checked(get_option('statistik_manager_show_comments'), 1); ?> />
                                <label for="statistik_manager_show_comments"><?php _e('Kommentare anzeigen', 'statistik-manager'); ?></label><br>
                                <input type="checkbox" name="statistik_manager_show_categories" value="1" <?php checked(get_option('statistik_manager_show_categories'), 1); ?> />
                                <label for="statistik_manager_show_categories"><?php _e('Kategorien anzeigen', 'statistik-manager'); ?></label><br>
                                <input type="checkbox" name="statistik_manager_show_series" value="1" <?php checked(get_option('statistik_manager_show_series'), 1); ?> />
                                <label for="statistik_manager_show_series"><?php _e('Serien anzeigen', 'statistik-manager'); ?></label>
                            </td>
                        </tr>
                    </table>

                    <h2><?php _e('Kategorien auswählen', 'statistik-manager'); ?></h2>
                    <table class="form-table">
                        <tr valign="top">
                            <th scope="row"><?php _e('Angezeigte Kategorien', 'statistik-manager'); ?></th>
                            <td>
                                <?php
                                $categories = get_terms(array(
                                    'taxonomy' => 'category',
                                    'orderby' => 'name',
                                    'order' => 'ASC',
                                    'hide_empty' => false,
                                ));

                                if (!empty($categories) && !is_wp_error($categories)) :
                                    $selected_categories = get_option('statistik_manager_selected_categories', []);
                                    ?>
                                    <select name="statistik_manager_selected_categories[]" multiple="multiple" style="width: 300px; height: 150px;">
                                        <?php foreach ($categories as $category) : ?>
                                            <option value="<?php echo esc_attr($category->term_id); ?>"
                                                <?php echo in_array($category->term_id, $selected_categories) ? 'selected' : ''; ?>>
                                                <?php echo esc_html($category->name); ?>
                                            </option>
                                        <?php endforeach; ?>
                                    </select>
                                <?php endif; ?>
                            </td>
                        </tr>
                    </table>

                    <h2><?php _e('Eröffnungsdatum der Webseite', 'statistik-manager'); ?></h2>
                    <table class="form-table">
                        <tr valign="top">
                            <th scope="row"><?php _e('Eröffnungsdatum', 'statistik-manager'); ?></th>
                            <td>
                                <input type="date" name="statistik_manager_opening_date" value="<?php echo esc_attr(get_option('statistik_manager_opening_date')); ?>" />
                            </td>
                        </tr>
                    </table>

                    <h2>Banner-Einstellungen</h2>
				<table class="form-table">
					<tr>
						<th>Banner anzeigen</th>
						<td>
							<input type="checkbox" name="statistik_manager_banner_enabled" value="1" <?php checked(get_option('statistik_manager_banner_enabled', 1)); ?> />
							<label for="statistik_manager_banner_enabled">Banner aktivieren</label>
						</td>
					</tr>
					<tr>
						<th>Banner Text</th>
						<td><input type="text" name="statistik_manager_banner_text" value="<?php echo esc_attr(get_option('statistik_manager_banner_text', 'Willkommen auf unserer Webseite!')); ?>" /></td>
					</tr>
					<tr>
						<th>Banner Farbe</th>
						<td><input type="color" name="statistik_manager_banner_color" value="<?php echo esc_attr(get_option('statistik_manager_banner_color', '#0073aa')); ?>" /></td>
					</tr>
					<tr>
						<th>Banner Position</th>
						<td>
							<select name="statistik_manager_banner_position">
								<option value="top" <?php selected(get_option('statistik_manager_banner_position'), 'top'); ?>>Oben</option>
								<option value="bottom" <?php selected(get_option('statistik_manager_banner_position'), 'bottom'); ?>>Unten</option>
							</select>
						</td>
					</tr>
					<tr>
					<th>Icon auswählen</th>
					<td>
						<select name="statistik_manager_banner_icon">
							<option value="fas fa-info-circle" <?php selected(get_option('statistik_manager_banner_icon'), 'fas fa-info-circle'); ?>>ℹ️ Info</option>
							<option value="fas fa-exclamation-triangle" <?php selected(get_option('statistik_manager_banner_icon'), 'fas fa-exclamation-triangle'); ?>>⚠️ Warnung</option>
							<option value="fas fa-bell" <?php selected(get_option('statistik_manager_banner_icon'), 'fas fa-bell'); ?>>🔔 Benachrichtigung</option>
							<option value="fas fa-thumbs-up" <?php selected(get_option('statistik_manager_banner_icon'), 'fas fa-thumbs-up'); ?>>👍 Daumen hoch</option>
							<option value="">Kein Icon</option>
						</select>
					</td>
				</tr>
				<tr>
					<th>Icon anzeigen</th>
					<td>
						<input type="checkbox" name="statistik_manager_show_icon" value="1" <?php checked(get_option('statistik_manager_show_icon', 1)); ?> />
						<label for="statistik_manager_show_icon">Icon anzeigen</label>
					</td>
				</tr>
				<tr>
					<th>Schriftgröße</th>
					<td>
						<select name="statistik_manager_banner_font_size">
							<option value="small" <?php selected(get_option('statistik_manager_banner_font_size'), 'small'); ?>>Klein</option>
							<option value="medium" <?php selected(get_option('statistik_manager_banner_font_size'), 'medium'); ?>>Mittel</option>
							<option value="large" <?php selected(get_option('statistik_manager_banner_font_size'), 'large'); ?>>Groß</option>
						</select>
					</td>
				</tr>
				</table>

                    <?php submit_button(); ?>
                </form>
    <?php
    wpmt_admin_card_close();

    echo '<div class="wpm-grid wpm-grid--2">';

    wpmt_admin_card_open(__('Kurzanleitung: Statistik-Box', 'statistik-manager'));
    ?>
    <ol>
        <li><strong>Shortcode einfügen:</strong> Füge <code>[statistik_manager]</code> an der gewünschten Stelle in einem Beitrag oder einer Seite ein.</li>
        <li><strong>Statistiken wählen:</strong> Beiträge, Kommentare, Kategorien und Serien lassen sich einzeln ein- und ausblenden.</li>
        <li><strong>Kategorien:</strong> Wähle aus, welche Kategorien in die Zählung einbezogen werden.</li>
        <li><strong>Eröffnungsdatum:</strong> Wird automatisch in der Statistik-Box angezeigt.</li>
        <li><strong>Banner:</strong> Ein konfigurierbares Hinweis-Banner kann im Header oder Footer der Website eingeblendet werden.</li>
    </ol>
    <?php
    wpmt_admin_card_close();

    wpmt_admin_card_open(__('Kurzanleitung: Lesezeichen', 'statistik-manager'));
    ?>
    <ol>
        <li><strong>Anzeigen:</strong> Der Shortcode <code>[display_bookmarks]</code> listet die gespeicherten Lesezeichen der Besucher auf.</li>
        <li><strong>Hinzufügen:</strong> Über <code>[add_bookmark]</code> erhalten Besucher ein Formular zum Speichern eines Lesezeichens.</li>
        <li><strong>Löschen:</strong> Nur der Besitzer eines Lesezeichens kann es über den Löschen-Button entfernen.</li>
    </ol>
    <p><?php printf(__('Weitere Plugins der WP-Multi-Familie findest du auf %s.', 'statistik-manager'), '<a href="https://git.viper.ipv64.net/M_Viper" target="_blank">git.viper.ipv64.net</a>'); ?></p>
    <?php
    wpmt_admin_card_close();

    echo '</div>';

    wpmt_admin_page_close();
}

// Optionen registrieren
function statistik_manager_register_settings() {
    register_setting('statistik_manager_settings_group', 'statistik_manager_show_posts');
    register_setting('statistik_manager_settings_group', 'statistik_manager_show_comments');
    register_setting('statistik_manager_settings_group', 'statistik_manager_show_categories');
    register_setting('statistik_manager_settings_group', 'statistik_manager_show_series');
    register_setting('statistik_manager_settings_group', 'statistik_manager_selected_categories');
    register_setting('statistik_manager_settings_group', 'statistik_manager_opening_date');
    register_setting('statistik_manager_settings_group', 'statistik_manager_banner_text');
	register_setting('statistik_manager_settings_group', 'statistik_manager_banner_color', [
		'sanitize_callback' => 'sanitize_hex_color',
	]);
	register_setting('statistik_manager_settings_group', 'statistik_manager_banner_position');
	register_setting('statistik_manager_settings_group', 'statistik_manager_banner_enabled');
	register_setting('statistik_manager_settings_group', 'statistik_manager_banner_icon', [
		'sanitize_callback' => function($value) {
			// Icon-Wert besteht aus mehreren space-getrennten CSS-Klassen (z. B. "fas fa-bell")
			$classes = array_map('sanitize_html_class', explode(' ', (string) $value));
			return implode(' ', array_filter($classes));
		},
	]);
    register_setting('statistik_manager_settings_group', 'statistik_manager_show_icon');
    register_setting('statistik_manager_settings_group', 'statistik_manager_banner_font_size');

}
add_action('admin_init', 'statistik_manager_register_settings');

// Standardwerte setzen
function statistik_manager_set_default_options() {
    if (get_option('statistik_manager_show_posts') === false) {
        update_option('statistik_manager_show_posts', 1);
    }
    if (get_option('statistik_manager_show_comments') === false) {
        update_option('statistik_manager_show_comments', 1);
    }
    if (get_option('statistik_manager_show_categories') === false) {
        update_option('statistik_manager_show_categories', 1);
    }
    if (get_option('statistik_manager_show_series') === false) {
        update_option('statistik_manager_show_series', 1);
    }
    if (get_option('statistik_manager_selected_categories') === false) {
        update_option('statistik_manager_selected_categories', []);
    }
	if (get_option('statistik_manager_banner_enabled') === false) {
        update_option('statistik_manager_banner_enabled', 1);
    }
	if (get_option('statistik_manager_banner_font_size') === false) {
    update_option('statistik_manager_banner_font_size', 'medium');
}

}
add_action('admin_init', 'statistik_manager_set_default_options');