/wp-content/plugins/wordpress-seo/admin/banner/class-admin-banner-spot.php

https://bitbucket.org/carloskikea/helpet · PHP · 120 lines · 41 code · 16 blank · 63 comment · 1 complexity · 2f16480741d490056da0ab7785c43853 MD5 · raw file

  1. <?php
  2. /**
  3. * WPSEO plugin file.
  4. *
  5. * @package WPSEO\Admin\Banner
  6. */
  7. /**
  8. * Represents the an admin banner spot.
  9. */
  10. class WPSEO_Admin_Banner_Spot {
  11. /** @var string */
  12. private $title;
  13. /** @var string */
  14. private $description = '';
  15. /** @var string */
  16. private $extra = '';
  17. /** @var WPSEO_Admin_Banner[] */
  18. private $banners = array();
  19. /**
  20. * WPSEO_Admin_Banner_Spot constructor.
  21. *
  22. * @param string $title The title for the spot.
  23. * @param WPSEO_Admin_Banner_Renderer $banner_renderer The renderer for the banner.
  24. */
  25. public function __construct( $title, WPSEO_Admin_Banner_Renderer $banner_renderer = null ) {
  26. $this->title = $title;
  27. $this->banner_renderer = ( is_null( $banner_renderer ) ? new WPSEO_Admin_Banner_Renderer() : $banner_renderer );
  28. }
  29. /**
  30. * Returns the title.
  31. *
  32. * @return string
  33. */
  34. public function get_title() {
  35. return $this->title;
  36. }
  37. /**
  38. * Returns the description.
  39. *
  40. * @return string
  41. */
  42. public function get_description() {
  43. return $this->description;
  44. }
  45. /**
  46. * Returns the extra content.
  47. *
  48. * @return string
  49. */
  50. public function get_extra() {
  51. return $this->extra;
  52. }
  53. /**
  54. * Sets the description
  55. *
  56. * @param string $description The description.
  57. */
  58. public function set_description( $description ) {
  59. $this->description = $description;
  60. }
  61. /**
  62. * Sets the "extra"
  63. *
  64. * @param string $extra The "extra".
  65. */
  66. public function set_extra( $extra ) {
  67. $this->extra = $extra;
  68. }
  69. /**
  70. * Adds an admin banner.
  71. *
  72. * @param WPSEO_Admin_Banner $banner The banner to add.
  73. */
  74. public function add_banner( WPSEO_Admin_Banner $banner ) {
  75. $this->banners[] = $banner;
  76. }
  77. /**
  78. * Renders the banner.
  79. *
  80. * @return string
  81. */
  82. public function render_banner() {
  83. if ( ! $this->has_banners() ) {
  84. return '';
  85. }
  86. return $this->banner_renderer->render( $this->get_random_banner() );
  87. }
  88. /**
  89. * Checks if there are any banners set.
  90. *
  91. * @return bool
  92. */
  93. public function has_banners() {
  94. return ! empty( $this->banners );
  95. }
  96. /**
  97. * Returns a random banner.
  98. *
  99. * @return null|WPSEO_Admin_Banner
  100. */
  101. protected function get_random_banner() {
  102. return $this->banners[ array_rand( $this->banners, 1 ) ];
  103. }
  104. }