Making WordPress.org


Ignore:
Timestamp:
04/15/2024 01:37:55 PM (2 years 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.