Making WordPress.org


Ignore:
Timestamp:
04/15/2024 01:37:55 PM (20 months ago)
Author:
amieiro
Message:

Translate: Sync "Translation Events" from GitHub

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/details.php

    r13298 r13529  
    55use Exception;
    66use GP;
     7use Wporg\TranslationEvents\Attendee\Attendee;
     8use Wporg\TranslationEvents\Attendee\Attendee_Repository;
     9use Wporg\TranslationEvents\Event\Event_Repository_Interface;
    710use Wporg\TranslationEvents\Routes\Route;
    811use Wporg\TranslationEvents\Stats_Calculator;
     
    1316 */
    1417class Details_Route extends Route {
     18    private Event_Repository_Interface $event_repository;
     19    private Attendee_Repository $attendee_repository;
     20
     21    public function __construct() {
     22        parent::__construct();
     23        $this->event_repository    = Translation_Events::get_event_repository();
     24        $this->attendee_repository = Translation_Events::get_attendee_repository();
     25    }
     26
    1527    public function handle( string $event_slug ): void {
    1628        $user  = wp_get_current_user();
    1729        $event = get_page_by_path( $event_slug, OBJECT, Translation_Events::CPT );
     30        if ( ! $event ) {
     31            $this->die_with_404();
     32        }
     33        $event = $this->event_repository->get_event( $event->ID );
    1834        if ( ! $event ) {
    1935            $this->die_with_404();
     
    2642         */
    2743        $can_crud_event = apply_filters( 'gp_translation_events_can_crud_event', GP::$permission->current_user_can( 'admin' ) );
    28         if ( 'publish' !== $event->post_status && ! $can_crud_event ) {
     44        if ( 'publish' !== $event->status() && ! $can_crud_event ) {
    2945            $this->die_with_error( esc_html__( 'You are not authorized to view this page.', 'gp-translation-events' ), 403 );
    3046        }
    3147
    32         $event_id            = $event->ID;
    33         $event_title         = $event->post_title;
    34         $event_description   = $event->post_content;
    35         $event_start         = get_post_meta( $event->ID, '_event_start', true ) ?: '';
    36         $event_end           = get_post_meta( $event->ID, '_event_end', true ) ?: '';
    37         $attending_event_ids = get_user_meta( $user->ID, Translation_Events::USER_META_KEY_ATTENDING, true ) ?: array();
    38         $user_is_attending   = isset( $attending_event_ids[ $event_id ] );
     48        $event_id          = $event->id();
     49        $event_title       = $event->title();
     50        $event_description = $event->description();
     51        $event_start       = $event->start();
     52        $event_end         = $event->end();
     53
     54        $attendee          = $this->attendee_repository->get_attendee( $event->id(), $user->ID );
     55        $user_is_attending = $attendee instanceof Attendee;
    3956
    4057        $stats_calculator = new Stats_Calculator();
    4158        try {
    42             $event_stats  = $stats_calculator->for_event( $event );
    43             $contributors = $stats_calculator->get_contributors( $event );
     59            $event_stats   = $stats_calculator->for_event( $event->id() );
     60            $contributors  = $stats_calculator->get_contributors( $event->id() );
     61            $attendees     = $stats_calculator->get_attendees_not_contributing( $event->id() );
     62            $attendee_repo = $this->attendee_repository;
     63            $hosts         = $this->attendee_repository->get_hosts( $event->id() );
     64            $projects      = $stats_calculator->get_projects( $event->id() );
    4465        } catch ( Exception $e ) {
    4566            // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
     
    4869        }
    4970
     71        $is_editable_event = true;
     72        if ( $event_end->is_in_the_past() || $stats_calculator->event_has_stats( $event->id() ) ) {
     73            $is_editable_event = false;
     74        }
     75
    5076        $this->tmpl( 'event', get_defined_vars() );
    5177    }
Note: See TracChangeset for help on using the changeset viewer.