*/ public static function keys(): array { return [ 'education', 'healthcare', 'service', 'ecommerce', 'blank' ]; } /** @return array> key => preset */ public static function all(): array { $out = []; foreach ( self::keys() as $k ) { $out[ $k ] = self::get( $k ); } return $out; } /** @return array|null */ public static function get( string $key ): ?array { $common = [ 'thanks_text' => __( 'Thank you! Your review has been received and will appear once approved.', 'admirly' ), 'wall_page_title' => __( 'Reviews', 'admirly' ), 'form_page_title' => __( 'Share your experience', 'admirly' ), 'form_title' => __( 'Share your experience', 'admirly' ), ]; switch ( $key ) { case 'education': return $common + [ 'title' => __( 'Education', 'admirly' ), 'description' => __( 'Schools, tutoring centers, exam prep, courses.', 'admirly' ), 'fields' => FieldConfig::normalize( [ 'roles' => self::items( [ 'parent' => __( 'Parent', 'admirly' ), 'student' => __( 'Student', 'admirly' ), 'graduate' => __( 'Graduate', 'admirly' ), ] ), 'sub' => [ 'enabled' => true, 'label' => __( 'Grade', 'admirly' ), 'options' => self::items( [ '9' => __( 'Grade 9', 'admirly' ), '10' => __( 'Grade 10', 'admirly' ), '11' => __( 'Grade 11', 'admirly' ), '12' => __( 'Grade 12', 'admirly' ), ] ), 'roles' => [ 'parent', 'student' ], 'required' => false, ], ] ), ]; case 'healthcare': return $common + [ 'title' => __( 'Healthcare', 'admirly' ), 'description' => __( 'Clinics, doctors, dentists, therapists.', 'admirly' ), 'fields' => FieldConfig::normalize( [ 'roles' => self::items( [ 'patient' => __( 'Patient', 'admirly' ), 'relative' => __( 'Relative', 'admirly' ), ] ), ] ), ]; case 'service': return $common + [ 'title' => __( 'Service business', 'admirly' ), 'description' => __( 'Agencies, consultants, salons, restaurants, local services.', 'admirly' ), 'fields' => FieldConfig::normalize( [ 'roles' => self::items( [ 'customer' => __( 'Customer', 'admirly' ) ] ) ] ), ]; case 'ecommerce': return $common + [ 'title' => __( 'E-commerce', 'admirly' ), 'description' => __( 'Online shops and product brands.', 'admirly' ), 'fields' => FieldConfig::normalize( [ 'roles' => self::items( [ 'customer' => __( 'Customer', 'admirly' ) ] ) ] ), ]; case 'blank': return $common + [ 'title' => __( 'Start from scratch', 'admirly' ), 'description' => __( 'No roles; define your own fields later.', 'admirly' ), 'fields' => FieldConfig::DEFAULTS, ]; } return null; } /** @param array $map slug => label @return array */ private static function items( array $map ): array { $out = []; foreach ( $map as $slug => $label ) { $out[] = [ 'slug' => (string) $slug, 'label' => $label, ]; } return $out; } }