• Namespace
  • Class
  • Tree
  • Deprecated
  • Todo
  • Hooks

Namespaces

  • None
  • SIW
    • Admin
    • API
    • Async
    • Batch
    • Compatibility
    • Data
    • Elements
    • Email
    • External
    • Forms
    • Modules
    • Newsletter
    • Page_Builder
    • Plato
    • Widgets
    • WooCommerce
      • Admin
      • Checkout
      • Email
      • Export
      • Frontend
      • Import

Classes

  • SIW\Admin\Admin
  • SIW\Admin\Admin_Bar
  • SIW\Admin\Notices
  • SIW\Admin\Options_Page
  • SIW\Admin\Properties_Page
  • SIW\Admin\Shortcodes
  • SIW\Admin\User_Columns
  • SIW\Animation
  • SIW\API\Endpoint
  • SIW\API\Newsletter_Subscribe
  • SIW\API\Postcode_Lookup
  • SIW\Assets
  • SIW\Async\Process_Stockphoto_Upload
  • SIW\Async\Request
  • SIW\Attachment
  • SIW\Autoloader
  • SIW\Batch\Count_Workcamps
  • SIW\Batch\Delete_Applications
  • SIW\Batch\Delete_Old_Posts
  • SIW\Batch\Delete_Orphaned_Variations
  • SIW\Batch\Delete_Workcamps
  • SIW\Batch\Job
  • SIW\Batch\Send_Workcamp_Approval_Emails
  • SIW\Batch\Update_Dutch_Workcamps
  • SIW\Batch\Update_Free_Places
  • SIW\Batch\Update_SEO_Noindex
  • SIW\Batch\Update_Taxonomies
  • SIW\Batch\Update_Workcamp_Tariffs
  • SIW\Batch\Update_Workcamp_Visibility
  • SIW\Batch\Update_Workcamps
  • SIW\Bootstrap
  • SIW\Compatibility\Caldera_Forms
  • SIW\Compatibility\Mailpoet
  • SIW\Compatibility\Meta_Box
  • SIW\Compatibility\Password_Protected
  • SIW\Compatibility\Pinnacle_Premium
  • SIW\Compatibility\Plugins
  • SIW\Compatibility\Safe_Redirect_Manager
  • SIW\Compatibility\SiteOrigin_Page_Builder
  • SIW\Compatibility\The_SEO_Framework
  • SIW\Compatibility\UpdraftPlus
  • SIW\Compatibility\WooCommerce
  • SIW\Compatibility\WordPress
  • SIW\Compatibility\WP_Rocket
  • SIW\Compatibility\WP_Sentry_Integration
  • SIW\Compatibility\WPML
  • SIW\CSS
  • SIW\Data\Continent
  • SIW\Data\Country
  • SIW\Data\Currency
  • SIW\Data\Language
  • SIW\Data\Social_Network
  • SIW\Data\Work_Type
  • SIW\Elements
  • SIW\Elements\Accordion
  • SIW\Elements\Carousel
  • SIW\Elements\Chart
  • SIW\Elements\Google_Maps
  • SIW\Elements\Interactive_Map
  • SIW\Elements\Interactive_Map_Destinations
  • SIW\Elements\Interactive_Map_ESC
  • SIW\Elements\Interactive_Map_Netherlands
  • SIW\Elements\Modal
  • SIW\Elements\Pie_Chart
  • SIW\Elements\Tablist
  • SIW\Elements\Taxonomy_Filter
  • SIW\Elements\World_Map
  • SIW\Email\Configuration
  • SIW\Email\Template
  • SIW\External\Exchange_Rates
  • SIW\External\Mailjet
  • SIW\External\Postcode_Lookup
  • SIW\External\Spam_Check
  • SIW\Formatting
  • SIW\Forms
  • SIW\Forms\Form
  • SIW\Forms\Processor_Spam_Check
  • SIW\Head
  • SIW\htaccess
  • SIW\HTML
  • SIW\i18n
  • SIW\Icons
  • SIW\Login
  • SIW\Media_Taxonomies
  • SIW\Modules\Cache_Rebuild
  • SIW\Modules\Cookie_Notice
  • SIW\Modules\Google_Analytics
  • SIW\Modules\Menu_Cart
  • SIW\Modules\Social_Share
  • SIW\Modules\Topbar
  • SIW\Newsletter\Confirmation_Email
  • SIW\Newsletter\Confirmation_Page
  • SIW\Newsletter\Hash
  • SIW\Options
  • SIW\Page_Builder\Animation
  • SIW\Page_Builder\Visibility
  • SIW\Plato\Download_File
  • SIW\Plato\Export
  • SIW\Plato\Export_Application
  • SIW\Plato\Import
  • SIW\Plato\Import_Dutch_Workcamps
  • SIW\Plato\Import_FPL
  • SIW\Plato\Import_Workcamps
  • SIW\Plato\Plato_Interface
  • SIW\Properties
  • SIW\Scheduler
  • SIW\Shortcodes
  • SIW\Update
  • SIW\Upload_Subdir
  • SIW\Util
  • SIW\Widgets
  • SIW\Widgets\Accordion
  • SIW\Widgets\Calendar
  • SIW\Widgets\Carousel
  • SIW\Widgets\Contact
  • SIW\Widgets\CTA
  • SIW\Widgets\Dutch_Projects
  • SIW\Widgets\Features
  • SIW\Widgets\Google_Maps
  • SIW\Widgets\Infobox
  • SIW\Widgets\Map
  • SIW\Widgets\Newsletter
  • SIW\Widgets\Organisation
  • SIW\Widgets\Pie_Chart
  • SIW\Widgets\Quick_Search_Form
  • SIW\Widgets\Quick_Search_Results
  • SIW\Widgets\Quote
  • SIW\Widgets\Tabs
  • SIW\Widgets\Widget
  • SIW\WooCommerce\Admin\Coupon
  • SIW\WooCommerce\Admin\Order
  • SIW\WooCommerce\Admin\Order_Columns
  • SIW\WooCommerce\Admin\Product
  • SIW\WooCommerce\Admin\Product_Columns
  • SIW\WooCommerce\Admin\Stockphoto_Page
  • SIW\WooCommerce\Checkout\Discount
  • SIW\WooCommerce\Checkout\Fields
  • SIW\WooCommerce\Checkout\Form
  • SIW\WooCommerce\Checkout\Newsletter
  • SIW\WooCommerce\Checkout\Terms
  • SIW\WooCommerce\Checkout\Validation
  • SIW\WooCommerce\Email\Customer_On_Hold_Order
  • SIW\WooCommerce\Email\Customer_Processing_Order
  • SIW\WooCommerce\Email\Emails
  • SIW\WooCommerce\Email\New_Order
  • SIW\WooCommerce\Export\Order
  • SIW\WooCommerce\Frontend\Archive
  • SIW\WooCommerce\Frontend\Archive_Header
  • SIW\WooCommerce\Frontend\Product
  • SIW\WooCommerce\Frontend\Product_Tabs
  • SIW\WooCommerce\Import\Product
  • SIW\WooCommerce\Import\Product_Image
  • SIW\WooCommerce\Import\Product_Variations
  • SIW_Content_Type
  • SIW_Content_Type_TM_Country
  • SIW_Post_Type
  • SIW_Post_Type_Agenda
  • SIW_Post_Type_Vacatures
  • SIW_Taxonomy

Functions

  • siw_generate_event_json_ld
  • siw_generate_interactive_map
  • siw_generate_job_json_ld
  • siw_get_board_titles
  • siw_get_continent
  • siw_get_continents
  • siw_get_countries
  • siw_get_country
  • siw_get_currencies
  • siw_get_currency
  • siw_get_data
  • siw_get_data_file_ids
  • siw_get_days
  • siw_get_dutch_provinces
  • siw_get_email_settings
  • siw_get_event_data
  • siw_get_featured_job
  • siw_get_genders
  • siw_get_interactive_maps
  • siw_get_job_data
  • siw_get_language
  • siw_get_language_skill_levels
  • siw_get_languages
  • siw_get_nationalities
  • siw_get_option
  • siw_get_project_types
  • siw_get_social_networks
  • siw_get_testimonial_quote
  • siw_get_testimonial_quote_categories
  • siw_get_upcoming_events
  • siw_get_work_type
  • siw_get_work_types
  • siw_meta
  • siw_newsletter_get_lists
  • siw_newsletter_get_subscriber_count
  • siw_newsletter_send_confirmation_email
  • siw_newsletter_subscribe
  • siw_set_option
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 
<?php
/*
 * (c)2018 SIW Internationale Vrijwilligersprojecten
 */

use SIW\Formatting;

/**
 * Geeft array met gegevens van toekomstige evenementen terug
 *
 * @param  int $number
 * @param  string $min_date
 * @param  string $max_date
 *
 * @return array
 */
function siw_get_upcoming_events( $number, $min_date = '', $max_date = '' ) {

    if ( empty( $min_date ) ) {
        $min_date = strtotime( date( 'Y-m-d' ) );
    }

    $meta_query_args = [
        'relation' => 'AND',
        [
            'key'     => 'siw_agenda_eind',
            'value'   => $min_date,
            'compare' => '>='
        ],

    ];
    if ( ! empty( $max_date ) ) {
        $meta_query_args[] = [
            'key'     => 'siw_agenda_start',
            'value'   => $max_date,
            'compare' => '<='
        ];
    }

    $query_args = [
        'post_type'           => 'agenda',
        'posts_per_page'      => $number,
        'post_status'         => 'publish',
        'ignore_sticky_posts' => true,
        'meta_key'            => 'siw_agenda_start',
        'orderby'             => 'meta_value_num',
        'order'               => 'ASC',
        'meta_query'          => $meta_query_args,
        'fields'              => 'ids'
    ];

    $events_ids = get_posts( $query_args );

    $upcoming_events = [];
    foreach ( $events_ids as $event_id ) {
        $upcoming_events[] = siw_get_event_data( $event_id );
    }

    return $upcoming_events;
}

/* TODO: verwijderen oude evenmenten */



/**
 * Haal gegevens van agenda-evenement op
 *
 * @param int $post_id
 *
 * @return array
 */
function siw_get_event_data( $post_id ) {

    $start_ts   = get_post_meta( $post_id, 'siw_agenda_start', true );
    $end_ts     = get_post_meta( $post_id, 'siw_agenda_eind', true );

    $event_data = [
        'permalink'               => get_permalink( $post_id ),
        'title'                   => get_the_title( $post_id ),
        'excerpt'                 => get_the_excerpt( $post_id ),
        'post_thumbnail_url'      => get_the_post_thumbnail_url( $post_id ), //TODO: is dit nog nodig?
        'start_date'              => date( 'Y-m-d', $start_ts ),
        'end_date'                => date( 'Y-m-d', $end_ts ),
        'start_time'              => date( 'H:i', $start_ts ),
        'end_time'                => date( 'H:i', $end_ts ),
        'program'                 => get_post_meta( $post_id, 'siw_agenda_programma', true ),
        'description'             => get_post_meta( $post_id, 'siw_agenda_beschrijving', true ),
        'highlight_quote'         => get_post_meta( $post_id, 'siw_agenda_highlight_quote', true ),
        'location'                => get_post_meta( $post_id, 'siw_agenda_locatie', true ),
        'address'                 => get_post_meta( $post_id, 'siw_agenda_adres', true ),
        'postal_code'             => get_post_meta( $post_id, 'siw_agenda_postcode', true ),
        'city'                    => get_post_meta( $post_id, 'siw_agenda_plaats', true ),
        'application'             => get_post_meta( $post_id, 'siw_agenda_aanmelden', true ),
        'application_explanation' => get_post_meta( $post_id, 'siw_agenda_aanmelden_toelichting', true ),
        'application_link_url'    => get_post_meta( $post_id, 'siw_agenda_aanmelden_link_url', true ),
        'application_link_text'   => get_post_meta( $post_id, 'siw_agenda_aanmelden_link_tekst', true ),
        'text_after_hide_form'    => get_post_meta( $post_id, 'siw_agenda_tekst_na_verbergen_formulier', true ),
    ];
    $event_data['date_range'] = Formatting::format_date_range( $event_data['start_date'], $event_data['end_date'] , false );
    $event_data['duration'] = sprintf( '%s, %s&nbsp;-&nbsp;%s', $event_data['date_range'], $event_data['start_time'], $event_data['end_time'] );

    $event_data['json_ld'] = siw_generate_event_json_ld( $event_data );


    return $event_data;
}


/**
 * Genereer structured data voor evenement
 *
 * @param array $event
 * @return string
 */
function siw_generate_event_json_ld( $event ) {

    //TODO: standaard afbeelding voor infodag -> setting

    $data = [
        '@context'      => 'http://schema.org',
        '@type'         => 'event',
        'name'          => esc_attr( $event['title'] ),
        'description'   => esc_attr( $event['excerpt'] ),
        'image'         => esc_url( $event['post_thumbnail_url'] ),
        'startDate'     => esc_attr( $event['start_date'] ),
        'endDate'       => esc_attr( $event['end_date'] ),
        'url'           => esc_url( $event['permalink'] ),
        'location'      => [
            '@type'     => 'Place',
            'name'      => esc_attr( $event['location'] ),
            'address'   => esc_attr( sprintf('%s, %s %s', $event['address'], $event['postal_code'], $event['city'] ) ),
        ],
    ];
    return Formatting::generate_json_ld( $data );
}
SIW API documentation generated by ApiGen