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