true,'outstanding_balance_grace_hours'=>0,'self_link_enabled'=>true,'self_link_method'=>'email_or_member_number_dob','memberships_enabled'=>true,'enable_bank_transfer'=>false,'enable_qr_payment'=>false,'reservation_page_id'=>0,'bank_account'=>['country'=>'CZ','recipient_name'=>null,'account_number'=>null,'bank_code'=>null,'iban'=>null,'bic'=>null,'currency'=>'CZK']]+\ABeCe\Booking\Service\BookingRulesService::DEFAULTS as $key=>$value)if(get_option('abece_booking_'.$key,$missing)===$missing)add_option('abece_booking_'.$key,$value,'',false);} public function membership(): array {return ['memberships_enabled'=>(bool)get_option('abece_booking_memberships_enabled',true),'self_link_enabled'=>(bool)get_option('abece_booking_self_link_enabled',true),'self_link_method'=>get_option('abece_booking_self_link_method','email_or_member_number_dob')];} public function save(array $data): void {foreach($data as $key=>$value)update_option('abece_booking_'.$key,$value,false);} public function membershipDataExists(): bool {global $wpdb;return (bool)$wpdb->get_var($wpdb->prepare('SELECT EXISTS(SELECT 1 FROM %i WHERE is_active=1) OR EXISTS(SELECT 1 FROM %i WHERE rule_type=%s) OR EXISTS(SELECT 1 FROM %i WHERE access_mode IN (%s,%s))',\ABeCe\Booking\Infrastructure\Database\Tables::name( $wpdb, 'members' ),\ABeCe\Booking\Infrastructure\Database\Tables::name( $wpdb, 'price_rules' ),'member_share_discount',\ABeCe\Booking\Infrastructure\Database\Tables::name( $wpdb, 'resources' ),'members_only','members_priority'));} public function pageId(): int {return (int)get_option('abece_booking_reservation_page_id',0);} public function publishedPages(): array {return array_map(static fn($p)=>['id'=>$p->ID,'title'=>wp_strip_all_tags(get_the_title($p))],get_posts(['post_type'=>'page','post_status'=>'publish','numberposts'=>-1,'orderby'=>'title','order'=>'ASC']));} }