settings->pageId();$page=$id?get_post($id):null;$published=$page&&$page->post_type==='page'&&$page->post_status==='publish'; $canonical=$published&&has_shortcode($page->post_content,'abece_booking'); $legacy=$published&&has_shortcode($page->post_content,'sports_booking'); return ['reservation_page_id'=>$id?:null,'pages'=>$this->settings->publishedPages(),'url'=>$published?get_permalink($id):null,'edit_url'=>$page&¤t_user_can('edit_post',$id)?get_edit_post_link($id,'raw'):null,'shortcode_present'=>$canonical||$legacy,'shortcode_status'=>$canonical?'canonical':($legacy?'legacy':'missing')]; } public function save(array $input): array {BookingValidator::fields($input,['reservation_page_id']);$id=CatalogValidator::integer($input['reservation_page_id']??null,'reservation_page_id',1,PHP_INT_MAX,true);if($id){$page=get_post($id);if(!$page||$page->post_type!=='page'||$page->post_status!=='publish')CatalogValidator::invalid('reservation_page_id',__('Select a published WordPress page.','abece-booking'));}$this->settings->save(['reservation_page_id'=>$id??0]);return $this->get();} public static function bookingUrl(array $b): ?string {$id=(new SettingsRepository())->pageId();$p=$id?get_post($id):null;if(!$p||$p->post_type!=='page'||$p->post_status!=='publish')return null;return add_query_arg('booking',$b['reference'],get_permalink($p));} }