Changeset 13529 for sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/edit.php
- Timestamp:
- 04/15/2024 01:37:55 PM (20 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/routes/event/edit.php
r13298 r13529 3 3 namespace Wporg\TranslationEvents\Routes\Event; 4 4 5 use DateTime;6 use DateTimeZone;7 use Exception;5 use Wporg\TranslationEvents\Attendee\Attendee; 6 use Wporg\TranslationEvents\Attendee\Attendee_Repository; 7 use Wporg\TranslationEvents\Event\Event_Repository_Interface; 8 8 use Wporg\TranslationEvents\Routes\Route; 9 9 use Wporg\TranslationEvents\Stats_Calculator; … … 14 14 */ 15 15 class Edit_Route extends Route { 16 private Event_Repository_Interface $event_repository; 17 private Attendee_Repository $attendee_repository; 18 19 public function __construct() { 20 parent::__construct(); 21 $this->event_repository = Translation_Events::get_event_repository(); 22 $this->attendee_repository = Translation_Events::get_attendee_repository(); 23 } 24 16 25 public function handle( int $event_id ): void { 17 26 global $wp; … … 20 29 exit; 21 30 } 22 $event = get_post( $event_id ); 23 if ( ! $event || Translation_Events::CPT !== $event->post_type || ! ( current_user_can( 'edit_post', $event->ID ) || intval( $event->post_author ) === get_current_user_id() ) ) { 31 $event = $this->event_repository->get_event( $event_id ); 32 $attendee = $this->attendee_repository->get_attendee( $event->id(), get_current_user_id() ); 33 34 if ( ! $event || ! ( ( $attendee instanceof Attendee && $attendee->is_host() ) || current_user_can( 'edit_post', $event->id() ) || $event->author_id() === get_current_user_id() ) ) { 24 35 $this->die_with_error( esc_html__( 'Event does not exist, or you do not have permission to edit it.', 'gp-translation-events' ), 403 ); 25 36 } 26 if ( 'trash' === $event-> post_status) {37 if ( 'trash' === $event->status() ) { 27 38 $this->die_with_error( esc_html__( 'You cannot edit a trashed event', 'gp-translation-events' ), 403 ); 28 39 } 29 40 30 41 include ABSPATH . 'wp-admin/includes/post.php'; 31 $event_ form_title = 'Edit Event';42 $event_page_title = 'Edit Event'; 32 43 $event_form_name = 'edit_event'; 33 44 $css_show_url = ''; 34 $event_title = $event-> post_title;35 $event_description = $event-> post_content;36 $event_status = $event-> post_status;37 list( $permalink, $post_name ) = get_sample_permalink( $event _id);45 $event_title = $event->title(); 46 $event_description = $event->description(); 47 $event_status = $event->status(); 48 list( $permalink, $post_name ) = get_sample_permalink( $event->id() ); 38 49 $permalink = str_replace( '%pagename%', $post_name, $permalink ); 39 50 $event_url = get_site_url() . gp_url( wp_make_link_relative( $permalink ) ); 40 $event_timezone = get_post_meta( $event_id, '_event_timezone', true ) ?: ''; 51 $event_timezone = $event->timezone(); 52 $event_start = $event->start(); 53 $event_end = $event->end(); 41 54 $create_delete_button = false; 42 55 $visibility_delete_button = 'inline-flex'; 43 56 57 if ( $event->end()->is_in_the_past() ) { 58 $this->die_with_error( esc_html__( 'You cannot edit a past event.', 'gp-translation-events' ), 403 ); 59 } 60 44 61 $stats_calculator = new Stats_Calculator(); 45 if ( ! $stats_calculator->event_has_stats( $event ) ) { 62 63 if ( $stats_calculator->event_has_stats( $event->id() ) ) { 64 $this->die_with_error( esc_html__( 'You cannot edit an event with translations.', 'gp-translation-events' ), 403 ); 65 } 66 67 if ( ! $stats_calculator->event_has_stats( $event->id() ) ) { 46 68 $current_user = wp_get_current_user(); 47 if ( $current_user->ID === $event->post_author || current_user_can( 'manage_options') ) {69 if ( ( $current_user->ID === $event->author_id() || ( $attendee instanceof Attendee && $attendee->is_host() ) || current_user_can( 'manage_options' ) ) && ! $event->end()->is_in_the_past() ) { 48 70 $create_delete_button = true; 49 71 } 50 72 } 51 73 52 try {53 $event_start = self::convertToTimezone( get_post_meta( $event_id, '_event_start', true ), $event_timezone );54 $event_end = self::convertToTimezone( get_post_meta( $event_id, '_event_end', true ), $event_timezone );55 } catch ( Exception $e ) {56 // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log57 error_log( $e );58 $this->die_with_error( esc_html__( 'Something is wrong.', 'gp-translation-events' ) );59 }60 61 74 $this->tmpl( 'events-form', get_defined_vars() ); 62 75 } 63 64 /**65 * Convert date time stored in UTC to a date time in a time zone.66 *67 * @param string $date_time The date time in UTC.68 * @param string $time_zone The time zone.69 *70 * @return string The date time in the time zone.71 * @throws Exception When date is invalid.72 */73 private static function convertToTimezone( string $date_time, string $time_zone ): string {74 return ( new DateTime( $date_time, new DateTimeZone( 'UTC' ) ) )->setTimezone( new DateTimeZone( $time_zone ) )->format( 'Y-m-d H:i:s' );75 }76 76 }
Note: See TracChangeset
for help on using the changeset viewer.