connector-wordpress/source/includes/EventsListShortcut.php

49 lines
1.5 KiB
PHP

<?php
namespace MobilizonConnector;
class EventsListShortcut {
public static function init() {
add_shortcode(NAME . '-events-list', 'MobilizonConnector\EventsListShortcut::inflate');
}
public static function inflate($atts = [], $content = null) {
// Normalize attribute keys, lowercase.
$atts = array_change_key_case((array) $atts, CASE_LOWER);
// Override default attributes with user attributes.
$atts_with_overriden_defaults = shortcode_atts(
array(
'events-count' => DEFAULT_EVENTS_COUNT,
'group-name' => '',
), $atts
);
$url = Settings::getUrl();
$eventsCount = $atts_with_overriden_defaults['events-count'];
$groupName = $atts_with_overriden_defaults['group-name'];
ob_start();
try {
if ($groupName) {
$events = GraphQlClient::get_upcoming_events_by_group_name($url, (int) $eventsCount, $groupName);
} else {
$events = GraphQlClient::get_upcoming_events($url, (int) $eventsCount);
}
$classNamePrefix = NAME;
$locale = get_locale();
$isShortOffsetNameShown = Settings::isShortOffsetNameShown();
$timeZone = wp_timezone_string();
require dirname(__DIR__) . '/view/events-list.php';
} catch (GeneralException $e) {
require dirname(__DIR__) . '/view/events-list-not-loaded.php';
} catch (GroupNotFoundException $e) {
require dirname(__DIR__) . '/view/events-list-group-not-found.php';
}
$output = ob_get_clean();
return $output;
}
}