Changeset 13683 for sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-repository.php
- Timestamp:
- 05/09/2024 08:33:51 AM (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
sites/trunk/wordpress.org/public_html/wp-content/plugins/wporg-gp-translation-events/includes/event/event-repository.php
r13529 r13683 21 21 } 22 22 23 /** 24 * Get or create the parent post for the year. 25 * 26 * @return int|WP_Error 27 */ 28 private function get_year_post_id( string $year ) { 29 $year_post = get_page_by_path( $year, OBJECT, self::POST_TYPE ); 30 if ( ! $year_post ) { 31 return wp_insert_post( 32 array( 33 'post_type' => self::POST_TYPE, 34 'post_title' => $year, 35 'post_name' => $year, 36 'post_status' => 'publish', 37 'post_content' => '', 38 ) 39 ); 40 } 41 return $year_post->ID; 42 } 43 23 44 public function insert_event( Event $event ) { 45 $post_parent = $this->get_year_post_id( $event->start()->utc()->format( 'Y' ) ); 46 if ( is_wp_error( $post_parent ) ) { 47 return $post_parent; 48 } 49 24 50 $event_id_or_error = wp_insert_post( 25 51 array( … … 29 55 'post_content' => $event->description(), 30 56 'post_status' => $event->status(), 57 'post_parent' => $post_parent, 31 58 ) 32 59 ); … … 41 68 42 69 public function update_event( Event $event ) { 70 $post_parent = $this->get_year_post_id( $event->start()->utc()->format( 'Y' ) ); 71 if ( is_wp_error( $post_parent ) ) { 72 return $post_parent; 73 } 43 74 $event_id_or_error = wp_update_post( 44 75 array( … … 48 79 'post_content' => $event->description(), 49 80 'post_status' => $event->status(), 81 'post_parent' => $post_parent, 50 82 ) 51 83 ); … … 58 90 } 59 91 60 public function delete_event( Event $event ) {92 public function trash_event( Event $event ) { 61 93 $result = wp_trash_post( $event->id() ); 62 94 if ( ! $result ) { 63 95 return false; 64 96 } 97 return $event; 98 } 99 100 public function delete_event( Event $event ) { 101 $result = wp_delete_post( $event->id(), true ); 102 if ( ! $result ) { 103 return false; 104 } 105 106 // Delete attendees. 107 $attendees = $this->attendee_repository->get_attendees( $event->id() ); 108 foreach ( $attendees as $attendee ) { 109 $this->attendee_repository->remove_attendee( $event->id(), $attendee->user_id() ); 110 } 111 112 // Delete stats. 113 global $wpdb, $gp_table_prefix; 114 // phpcs:disable WordPress.DB.DirectDatabaseQuery.DirectQuery 115 // phpcs:disable WordPress.DB.DirectDatabaseQuery.NoCaching 116 $wpdb->delete( 117 "{$gp_table_prefix}event_actions", 118 array( 'event_id' => $event->id() ), 119 array( '%d' ), 120 ); 121 // phpcs:enable 122 65 123 return $event; 66 124 } … … 153 211 } 154 212 213 public function get_trashed_events( int $page = - 1, int $page_size = - 1 ): Events_Query_Result { 214 return $this->execute_events_query( 215 $page, 216 $page_size, 217 array( 218 'post_status' => 'trash', 219 ) 220 ); 221 } 222 223 public function get_current_events_for_user( int $user_id, int $page = -1, int $page_size = -1 ): Events_Query_Result { 224 $now = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) ); 225 226 // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_query 227 // phpcs:disable WordPress.DB.SlowDBQuery.slow_db_query_meta_key 228 return $this->execute_events_query( 229 $page, 230 $page_size, 231 array( 232 'meta_query' => array( 233 array( 234 'key' => '_event_start', 235 'value' => $now->format( 'Y-m-d H:i:s' ), 236 'compare' => '<=', 237 'type' => 'DATETIME', 238 ), 239 array( 240 'key' => '_event_end', 241 'value' => $now->format( 'Y-m-d H:i:s' ), 242 'compare' => '>=', 243 'type' => 'DATETIME', 244 ), 245 ), 246 'meta_key' => '_event_start', 247 'orderby' => 'meta_value', 248 'order' => 'ASC', 249 ), 250 $this->attendee_repository->get_events_for_user( $user_id ), 251 ); 252 // phpcs:enable 253 } 254 155 255 public function get_current_and_upcoming_events_for_user( int $user_id, int $page = -1, int $page_size = -1 ): Events_Query_Result { 156 256 $now = new DateTimeImmutable( 'now', new DateTimeZone( 'UTC' ) ); … … 414 514 415 515 private function update_event_meta( Event $event ) { 516 $hosts = $this->attendee_repository->get_hosts( $event->id() ); 517 $hosts_ids = array_map( 518 function ( $host ) { 519 return $host->user_id(); 520 }, 521 $hosts 522 ); 523 $hosts_ids = implode( ', ', $hosts_ids ); 416 524 update_post_meta( $event->id(), '_event_start', $event->start()->utc()->format( 'Y-m-d H:i:s' ) ); 417 525 update_post_meta( $event->id(), '_event_end', $event->end()->utc()->format( 'Y-m-d H:i:s' ) ); 418 526 update_post_meta( $event->id(), '_event_timezone', $event->timezone()->getName() ); 527 update_post_meta( $event->id(), '_hosts', $hosts_ids ); 419 528 } 420 529 }
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)