/*
Theme Name: Astra Child
Theme URI: https://wpastra.com/
Template: astra
Author: Brainstorm Force
Author URI: https://wpastra.com/about/?utm_source=theme_preview&utm_medium=author_link&utm_campaign=astra_theme
Description: The Astra WordPress theme is lightning-fast and highly customizable. It has over 1 million downloads and the only theme in the world with 6,000+ five-star reviews! It’s ideal for professional web designers, solopreneurs, small businesses, eCommerce, membership sites and any type of website. It offers special features and templates so it works perfectly with all page builders like Spectra, Elementor, Beaver Builder, etc. Fast performance, clean code, mobile-first design and schema markup are all built-in, making the theme exceptionally SEO-friendly. It’s fully compatible with WooCommerce, SureCart and other eCommerce plugins and comes with lots of store-friendly features and templates. Astra also provides expert support for free users. A dedicated team of fully trained WordPress experts are on hand to help with every aspect of the theme. Try the live demo of Astra: https://zipwp.org/themes/astra/
Tags: custom-menu,custom-logo,entertainment,one-column,two-columns,left-sidebar,e-commerce,right-sidebar,custom-colors,editor-style,featured-images,full-width-template,microformats,post-formats,rtl-language-support,theme-options,threaded-comments,translation-ready,blog
Version: 4.12.3.1776108079
Updated: 2026-04-13 19:21:19

*/

<?php
/**
 * Dokan Vendor Events
 * Add a custom "My Events" dashboard page for vendors.
 */

/**
 * 1) Register custom query var for Dokan dashboard endpoint
 */
add_filter( 'query_vars', 'maker_register_my_events_query_var' );
function maker_register_my_events_query_var( $vars ) {
    $vars[] = 'my-events';
    return $vars;
}

/**
 * 2) Add rewrite rule for vendor dashboard endpoint
 */
add_action( 'init', 'maker_add_my_events_rewrite_rule' );
function maker_add_my_events_rewrite_rule() {
    add_rewrite_rule(
        '^dashboard/my-events/?$',
        'index.php?my-events=1',
        'top'
    );
}

/**
 * 3) Add menu item to Dokan vendor dashboard
 */
add_filter( 'dokan_get_dashboard_nav', 'maker_add_my_events_menu' );
function maker_add_my_events_menu( $urls ) {
    $urls['my-events'] = array(
        'title' => __( 'My Events', 'astra-child' ),
        'icon'  => '<i class="fas fa-calendar-alt"></i>',
        'url'   => dokan_get_navigation_url( 'my-events' ),
        'pos'   => 55,
    );

    return $urls;
}

/**
 * 4) Load content for the custom Dokan endpoint
 */
add_action( 'dokan_load_custom_template', 'maker_load_my_events_template' );
function maker_load_my_events_template( $query_vars ) {
    if ( isset( $query_vars['my-events'] ) ) {
        maker_render_my_events_page();
        exit;
    }
}

/**
 * 5) Handle event form submit
 */
add_action( 'template_redirect', 'maker_handle_my_events_form_submit' );
function maker_handle_my_events_form_submit() {
    if ( ! is_user_logged_in() ) {
        return;
    }

    if ( empty( $_POST['maker_event_submit'] ) ) {
        return;
    }

    if ( ! function_exists( 'dokan_is_user_seller' ) || ! dokan_is_user_seller( get_current_user_id() ) ) {
        return;
    }

    if ( ! isset( $_POST['maker_event_nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['maker_event_nonce'] ) ), 'maker_save_event' ) ) {
        return;
    }

    $vendor_id   = get_current_user_id();
    $event_title = isset( $_POST['event_title'] ) ? sanitize_text_field( wp_unslash( $_POST['event_title'] ) ) : '';
    $event_date  = isset( $_POST['event_date'] ) ? sanitize_text_field( wp_unslash( $_POST['event_date'] ) ) : '';
    $event_time  = isset( $_POST['event_time'] ) ? sanitize_text_field( wp_unslash( $_POST['event_time'] ) ) : '';
    $event_place = isset( $_POST['event_place'] ) ? sanitize_text_field( wp_unslash( $_POST['event_place'] ) ) : '';
    $event_link  = isset( $_POST['event_link'] ) ? esc_url_raw( wp_unslash( $_POST['event_link'] ) ) : '';
    $event_notes = isset( $_POST['event_notes'] ) ? sanitize_textarea_field( wp_unslash( $_POST['event_notes'] ) ) : '';

    if ( empty( $event_title ) || empty( $event_date ) ) {
        wp_safe_redirect( add_query_arg( 'event_status', 'missing', dokan_get_navigation_url( 'my-events' ) ) );
        exit;
    }

    $events = get_user_meta( $vendor_id, 'maker_vendor_events', true );
    if ( ! is_array( $events ) ) {
        $events = array();
    }

    $events[] = array(
        'id'    => uniqid( 'event_', true ),
        'title' => $event_title,
        'date'  => $event_date,
        'time'  => $event_time,
        'place' => $event_place,
        'link'  => $event_link,
        'notes' => $event_notes,
    );

    update_user_meta( $vendor_id, 'maker_vendor_events', $events );

    wp_safe_redirect( add_query_arg( 'event_status', 'saved', dokan_get_navigation_url( 'my-events' ) ) );
    exit;
}

/**
 * 6) Handle delete event
 */
add_action( 'template_redirect', 'maker_handle_my_events_delete' );
function maker_handle_my_events_delete() {
    if ( ! is_user_logged_in() ) {
        return;
    }

    if ( empty( $_GET['delete_event'] ) || empty( $_GET['_wpnonce'] ) ) {
        return;
    }

    if ( ! function_exists( 'dokan_is_user_seller' ) || ! dokan_is_user_seller( get_current_user_id() ) ) {
        return;
    }

    $event_id = sanitize_text_field( wp_unslash( $_GET['delete_event'] ) );

    if ( ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_GET['_wpnonce'] ) ), 'maker_delete_event_' . $event_id ) ) {
        return;
    }

    $vendor_id = get_current_user_id();
    $events    = get_user_meta( $vendor_id, 'maker_vendor_events', true );

    if ( ! is_array( $events ) ) {
        $events = array();
    }

    $events = array_values( array_filter( $events, function( $event ) use ( $event_id ) {
        return ! isset( $event['id'] ) || $event['id'] !== $event_id;
    } ) );

    update_user_meta( $vendor_id, 'maker_vendor_events', $events );

    wp_safe_redirect( add_query_arg( 'event_status', 'deleted', dokan_get_navigation_url( 'my-events' ) ) );
    exit;
}

add_filter( 'dokan_get_dashboard_nav', 'maker_test_events_menu' );
function maker_test_events_menu( $menus ) {
    $menus['my-events'] = [
        'title' => __( 'My Events', 'astra-child' ),
        'icon'  => '<i class="fas fa-calendar-alt"></i>',
        'url'   => dokan_get_navigation_url( 'my-events' ),
        'pos'   => 99,
    ];

    return $menus;
}
add_action( 'wp_footer', function() {
    if ( current_user_can( 'manage_options' ) ) {
        echo '<div style="position:fixed;bottom:10px;left:10px;z-index:99999;background:#000;color:#fff;padding:8px 12px;">ASTRA CHILD LOADED</div>';
    }
} );
/* All buttons site-wide */
button,
input[type="submit"],
.dokan-btn,
.dokan-btn-theme,
.button,
.wp-block-button__link,
a.button {
    background-color: #ca6e5f !important;
    border-color: #8a4b40 !important;
    color: #ffffff !important;
}

/* Hover */
button:hover,
input[type="submit"]:hover,
.dokan-btn:hover,
.button:hover,
a.button:hover {
    background-color: #b55f52 !important;
    border-color: #7a3f35 !important;
    color: #ffffff !important;
}
