-
Notifications
You must be signed in to change notification settings - Fork 12
/
zoneboard-block.php
61 lines (51 loc) · 1.17 KB
/
zoneboard-block.php
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
<?php
class ZoneboardBlock {
var $title;
var $links;
function __construct( $data ) {
if ( is_array( $data ) || is_object( $data ) ) {
$this->init_with_data( $data );
}
}
function init_with_data( $data ) {
$this->import( $data );
if ( $this->icon ) {
$this->icon = new ZoneboardBlockIcon( $this->icon );
}
$this->handle_callbacks();
}
function handle_callbacks() {
if (isset($this->callback) && is_string($this->callback)) {
if (strstr($this->callback, '::')) {
$funcs = explode('::', $this->callback);
$class = $funcs[0];
$this->callback = array('StoreyImport', 'render_dashboard_widget');
}
}
}
function import( $info ) {
if ( is_object( $info ) ) {
$info = get_object_vars( $info );
}
if ( is_array( $info ) ) {
foreach ( $info as $key => $value ) {
if ( !empty( $key ) ) {
$this->$key = $value;
}
}
}
}
}
class ZoneboardBlockIcon {
function __construct( $icon_slug ) {
$this->slug = $icon_slug;
if ( strstr( $this->slug, 'fa-' ) ) {
$this->class = 'fa';
} else if ( strstr( $this->slug, 'dashicons-' ) ) {
$this->class = 'dashicons';
}
}
function __toString() {
return $this->slug;
}
}