@@ -356,12 +356,16 @@ function convert_post_to_sponsor( $post, $type = 'direct', $logo_options = [] )
356
356
357
357
$ sponsor_sitewide_settings = Settings::get_settings ();
358
358
359
- $ sponsor_byline = get_post_meta ( $ post ->ID , 'newspack_sponsor_byline_prefix ' , true );
360
- $ sponsor_url = get_post_meta ( $ post ->ID , 'newspack_sponsor_url ' , true );
361
- $ sponsor_flag = get_post_meta ( $ post ->ID , 'newspack_sponsor_flag_override ' , true );
362
- $ sponsor_scope = get_post_meta ( $ post ->ID , 'newspack_sponsor_sponsorship_scope ' , true );
363
- $ sponsor_disclaimer = get_post_meta ( $ post ->ID , 'newspack_sponsor_disclaimer_override ' , true );
364
- $ sponsor_logo = get_logo_info ( $ post ->ID , $ logo_options );
359
+ $ sponsor_byline = get_post_meta ( $ post ->ID , 'newspack_sponsor_byline_prefix ' , true );
360
+ $ sponsor_url = get_post_meta ( $ post ->ID , 'newspack_sponsor_url ' , true );
361
+ $ sponsor_flag = get_post_meta ( $ post ->ID , 'newspack_sponsor_flag_override ' , true );
362
+ $ sponsor_scope = get_post_meta ( $ post ->ID , 'newspack_sponsor_sponsorship_scope ' , true );
363
+ $ sponsor_byline_display = get_post_meta ( $ post ->ID , 'newspack_sponsor_native_byline_display ' , true );
364
+ $ sponsor_category_display = get_post_meta ( $ post ->ID , 'newspack_sponsor_native_category_display ' , true );
365
+ $ sponsor_underwriter_style = get_post_meta ( $ post ->ID , 'newspack_sponsor_underwriter_style ' , true );
366
+ $ sponsor_underwriter_placement = get_post_meta ( $ post ->ID , 'newspack_sponsor_underwriter_placement ' , true );
367
+ $ sponsor_disclaimer = get_post_meta ( $ post ->ID , 'newspack_sponsor_disclaimer_override ' , true );
368
+ $ sponsor_logo = get_logo_info ( $ post ->ID , $ logo_options );
365
369
366
370
// Check for single-sponsor overrides, default to site-wide options.
367
371
if ( empty ( $ sponsor_byline ) ) {
@@ -374,7 +378,7 @@ function convert_post_to_sponsor( $post, $type = 'direct', $logo_options = [] )
374
378
$ sponsor_disclaimer = str_replace ( '[sponsor name] ' , $ post ->post_title , $ sponsor_sitewide_settings ['disclaimer ' ] );
375
379
}
376
380
377
- return [
381
+ $ sponsor = [
378
382
'sponsor_type ' => $ type ,
379
383
'sponsor_id ' => $ post ->ID ,
380
384
'sponsor_name ' => $ post ->post_title ,
@@ -387,6 +391,16 @@ function convert_post_to_sponsor( $post, $type = 'direct', $logo_options = [] )
387
391
'sponsor_scope ' => ! empty ( $ sponsor_scope ) ? $ sponsor_scope : 'native ' , // Default: native, not underwritten.
388
392
'sponsor_disclaimer ' => $ sponsor_disclaimer ,
389
393
];
394
+
395
+ if ( 'native ' === $ sponsor ['sponsor_scope ' ] ) {
396
+ $ sponsor ['sponsor_byline_display ' ] = $ sponsor_byline_display ;
397
+ $ sponsor ['sponsor_category_display ' ] = $ sponsor_category_display ;
398
+ } else {
399
+ $ sponsor ['sponsor_underwriter_style ' ] = $ sponsor_underwriter_style ;
400
+ $ sponsor ['sponsor_underwriter_placement ' ] = $ sponsor_underwriter_placement ;
401
+ }
402
+
403
+ return $ sponsor ;
390
404
}
391
405
392
406
/**
@@ -423,3 +437,69 @@ function get_logo_info( $sponsor_id, $logo_options = [] ) {
423
437
424
438
return $ logo_info ;
425
439
}
440
+
441
+ /**
442
+ * If at least one native sponsor is set to display both sponsors and authors, show the authors.
443
+ *
444
+ * @param array $sponsors Array of sponsors.
445
+ *
446
+ * @return boolean True if we should display both sponsors and categories, false if we should display only sponsors.
447
+ */
448
+ function newspack_display_sponsors_and_authors ( $ sponsors ) {
449
+ if ( ! is_array ( $ sponsors ) ) {
450
+ return false ;
451
+ }
452
+
453
+ // If the post is set to display author, show it.
454
+ $ override = get_post_meta ( get_the_ID (), 'newspack_sponsor_native_byline_display ' , true );
455
+ if ( 'author ' === $ override ) {
456
+ return true ;
457
+ }
458
+ if ( 'sponsor ' === $ override ) {
459
+ return false ;
460
+ }
461
+
462
+ return array_reduce (
463
+ $ sponsors ,
464
+ function ( $ acc , $ sponsor ) {
465
+ if ( isset ( $ sponsor ['sponsor_byline_display ' ] ) && 'author ' === $ sponsor ['sponsor_byline_display ' ] ) {
466
+ $ acc = true ;
467
+ }
468
+ return $ acc ;
469
+ },
470
+ false
471
+ );
472
+ }
473
+
474
+ /**
475
+ * If at least one native sponsor is set to display both sponsors and categories, show the categories.
476
+ *
477
+ * @param array $sponsors Array of sponsors.
478
+ *
479
+ * @return boolean True if we should display both sponsors and categories, false if we should display only sponsors.
480
+ */
481
+ function newspack_display_sponsors_and_categories ( $ sponsors ) {
482
+ if ( ! is_array ( $ sponsors ) ) {
483
+ return false ;
484
+ }
485
+
486
+ // If the post is set to display categories, show them.
487
+ $ override = get_post_meta ( get_the_ID (), 'newspack_sponsor_native_category_display ' , true );
488
+ if ( 'category ' === $ override ) {
489
+ return true ;
490
+ }
491
+ if ( 'sponsor ' === $ override ) {
492
+ return false ;
493
+ }
494
+
495
+ return array_reduce (
496
+ $ sponsors ,
497
+ function ( $ acc , $ sponsor ) {
498
+ if ( isset ( $ sponsor ['sponsor_category_display ' ] ) && 'category ' === $ sponsor ['sponsor_category_display ' ] ) {
499
+ $ acc = true ;
500
+ }
501
+ return $ acc ;
502
+ },
503
+ false
504
+ );
505
+ }
0 commit comments