mirror of
				https://github.com/dwaxweiler/connector-mobilizon
				synced 2025-06-05 21:59:25 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace MobilizonConnector;
 | |
| 
 | |
| class EventsListBlock {
 | |
| 
 | |
|   public static function initAndReturnScriptName(): string {
 | |
|     $scriptName = NAME . '-block-starter';
 | |
|     wp_register_script($scriptName, plugins_url(NAME . '/front/block-events-loader.js'), [
 | |
|         'wp-block-editor',
 | |
|         'wp-blocks',
 | |
|         'wp-components',
 | |
|         'wp-i18n'
 | |
|       ]);
 | |
|     register_block_type(NAME . '/events-list', [
 | |
|       'api_version' => 2,
 | |
|       'title' => __('Events List', 'connector-mobilizon'),
 | |
|       'description' =>  __('A list of the upcoming events of the connected Mobilizon instance.', 'connector-mobilizon'),
 | |
|       'category' => 'widgets',
 | |
|       'icon' => 'list-view',
 | |
|       'supports' => [
 | |
|         'html' => false
 | |
|       ],
 | |
|       'attributes' => [
 | |
|         'eventsCount' => [
 | |
|           'type' => 'number',
 | |
|           'default' => 3,
 | |
|         ],
 | |
|         'groupName' => [
 | |
|           'type' => 'string',
 | |
|         ],
 | |
|       ],
 | |
|       'editor_script' => $scriptName,
 | |
|       'render_callback' => 'MobilizonConnector\EventsListBlock::render',
 | |
|     ]);
 | |
|     return $scriptName;
 | |
|   }
 | |
| 
 | |
|   public static function render($block_attributes, $content) {
 | |
|     $url = Settings::getUrl();
 | |
|     $eventsCount = $block_attributes['eventsCount'];
 | |
|     $groupName = isset($block_attributes['groupName']) ? $block_attributes['groupName'] : '';
 | |
|     $classNamePrefix = 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);
 | |
|       }
 | |
| 
 | |
|       $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;
 | |
|   }
 | |
| }
 |