|
1
|
|
|
<?php |
|
2
|
|
|
/** |
|
3
|
|
|
* Add a widget to the dashboard. |
|
4
|
|
|
* |
|
5
|
|
|
* @since 2.2.3 |
|
6
|
|
|
*/ |
|
7
|
|
|
class PPP_Dashboard_Shares { |
|
8
|
|
|
|
|
9
|
|
|
/** |
|
10
|
|
|
* The ID of this widget. |
|
11
|
|
|
*/ |
|
12
|
|
|
const wid = 'ppp_dashboard_shares'; |
|
13
|
|
|
|
|
14
|
|
|
/** |
|
15
|
|
|
* Hook to wp_dashboard_setup to add the widget. |
|
16
|
|
|
* |
|
17
|
|
|
* @since 2.2.3 |
|
18
|
|
|
*/ |
|
19
|
|
|
public static function init() { |
|
20
|
|
|
if ( ! current_user_can( 'manage_options' ) ) { |
|
21
|
|
|
return; |
|
22
|
|
|
} |
|
23
|
|
|
|
|
24
|
|
|
wp_add_dashboard_widget( |
|
25
|
|
|
self::wid, |
|
26
|
|
|
__( 'Upcoming Shares', 'ppp-tweets' ), |
|
27
|
|
|
array( 'PPP_Dashboard_Shares', 'widget' ), |
|
28
|
|
|
array( 'PPP_Dashboard_Shares', 'config' ) |
|
29
|
|
|
); |
|
30
|
|
|
} |
|
31
|
|
|
|
|
32
|
|
|
/** |
|
33
|
|
|
* Load the widget code |
|
34
|
|
|
* |
|
35
|
|
|
* @since 2.2.3 |
|
36
|
|
|
*/ |
|
37
|
|
|
public static function widget() { |
|
38
|
|
|
$number = self::get_count(); |
|
39
|
|
|
$shares = ppp_get_shceduled_crons(); |
|
40
|
|
|
|
|
41
|
|
|
if ( ! empty( $shares ) ) { |
|
42
|
|
|
$limited_shares = array_slice( $shares, 0, $number, true ); |
|
43
|
|
|
?> |
|
44
|
|
|
<div id="future-tweets" class="activity-block"> |
|
45
|
|
|
<h4><?php _e( 'Post-Related shares', 'ppp-tweets' ); ?></h4> |
|
46
|
|
|
<ul> |
|
47
|
|
|
<?php |
|
48
|
|
|
foreach ( $limited_shares as $key => $share ) { |
|
49
|
|
|
$ppp_data = $share; |
|
50
|
|
|
$timestamp = $ppp_data['timestamp']; |
|
51
|
|
|
|
|
52
|
|
|
$name_parts = explode( '_', $ppp_data['args'][1] ); |
|
53
|
|
|
$service = isset( $name_parts[3] ) ? $name_parts[3] : 'tw'; |
|
54
|
|
|
$builder = 'ppp_' . $service . '_build_share_message'; |
|
55
|
|
|
|
|
56
|
|
|
$post_id = $ppp_data['args'][0]; |
|
57
|
|
|
$date = $timestamp + ( get_option( 'gmt_offset' ) * 3600 ); |
|
58
|
|
|
$content = ''; |
|
59
|
|
|
if ( function_exists( $builder ) ) { |
|
60
|
|
|
$content = $builder( $ppp_data['args'][0], $ppp_data['args'][1], false ); |
|
61
|
|
|
} |
|
62
|
|
|
|
|
63
|
|
|
$regex = "@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?)@"; |
|
64
|
|
|
$content = preg_replace( $regex, '', $content ); |
|
65
|
|
|
?> |
|
66
|
|
|
<li> |
|
67
|
|
|
<span class="meta"><i class="dashicons icon-ppp-<?php echo $service; ?>"></i> <?php echo date_i18n( 'M jS, ' . get_option( 'time_format' ), $date ); ?></span> |
|
68
|
|
|
<a href="<?php echo admin_url( 'post.php?post=' . $post_id . '&action=edit' ); ?>"><?php echo $content; ?></a> |
|
69
|
|
|
</li> |
|
70
|
|
|
<?php } ?> |
|
71
|
|
|
</ul> |
|
72
|
|
|
<p> |
|
73
|
|
|
<a class="button-primary" href="<?php echo admin_url( 'admin.php?page=ppp-schedule-info' ); ?>"><?php _e( 'View Full Schedule', 'ppp-txt' ); ?></a> |
|
74
|
|
|
</p> |
|
75
|
|
|
</div> |
|
76
|
|
|
<?php |
|
77
|
|
|
} else { |
|
78
|
|
|
$args = array( |
|
79
|
|
|
'numberposts' => 1, |
|
80
|
|
|
'orderby' => 'post_date', |
|
81
|
|
|
'order' => 'DESC', |
|
82
|
|
|
'post_type' => ppp_allowed_post_types(), |
|
83
|
|
|
'post_status' => array( 'draft', 'publish', 'future' ), |
|
84
|
|
|
); |
|
85
|
|
|
|
|
86
|
|
|
$recent_posts = wp_get_recent_posts( $args, ARRAY_A ); |
|
87
|
|
|
$recent_post = $recent_posts[0]; |
|
88
|
|
|
$post_type = get_post_type_object( $recent_post['post_type'] ); |
|
89
|
|
|
$post_type_name = $post_type->labels->singular_name; |
|
90
|
|
|
$edit_url = admin_url( 'post.php?post=' . $recent_post['ID'] . '&action=edit' ); |
|
91
|
|
|
|
|
92
|
|
|
switch( $recent_post['post_status'] ) { |
|
93
|
|
|
case 'draft': |
|
94
|
|
|
$relative_time = __( '<a href="%s">Configure them</a> for your draft ' . $post_type_name, 'ppp-txt' ); |
|
95
|
|
|
break; |
|
96
|
|
|
case 'future': |
|
97
|
|
|
$relative_time = __( '<a href="%s">Schedule one</a> for your upcoming ' . $post_type_name, 'ppp-txt' ); |
|
98
|
|
|
break; |
|
99
|
|
|
case 'publish': |
|
100
|
|
|
default: |
|
101
|
|
|
$relative_time = __( '<a href="%s">Schedule one</a> for your most recent ' . $post_type_name, 'ppp-txt' ); |
|
102
|
|
|
break; |
|
103
|
|
|
|
|
104
|
|
|
} |
|
105
|
|
|
?><span><em> |
|
106
|
|
|
<?php _e( 'No scheduled shares at this time.', 'ppp-txt' ); ?> |
|
107
|
|
|
<?php printf( $relative_time, $edit_url ); ?> |
|
108
|
|
|
</em></span><?php |
|
109
|
|
|
} |
|
110
|
|
|
|
|
111
|
|
|
do_action( 'ppp_dashboard_shares' ); |
|
112
|
|
|
} |
|
113
|
|
|
|
|
114
|
|
|
/** |
|
115
|
|
|
* Load widget config code. |
|
116
|
|
|
* |
|
117
|
|
|
* This is what will display when an admin clicks |
|
118
|
|
|
* |
|
119
|
|
|
* @since 2.2.3 |
|
120
|
|
|
*/ |
|
121
|
|
|
public static function config() { |
|
122
|
|
|
if ( ! empty( $_POST['number_of_tweets'] ) ) { |
|
123
|
|
|
update_option( 'ppp_dashboard_twitter_count', absint( $_POST['number_of_tweets'] ) ); |
|
124
|
|
|
} |
|
125
|
|
|
|
|
126
|
|
|
$number = self::get_count(); |
|
127
|
|
|
?> |
|
128
|
|
|
<p><input type="number" size="3" min="1" max="99" step="1" value="<?php echo $number; ?>" id="ppp-number-of-tweets" name="number_of_tweets" /> <label for="ppp-number-of-tweets"><?php _e( 'Number of Tweets to Show.', 'ppp-txt' ); ?></label></p> |
|
129
|
|
|
<?php |
|
130
|
|
|
|
|
131
|
|
|
} |
|
132
|
|
|
|
|
133
|
|
|
/** |
|
134
|
|
|
* Gets the count of tweets to show |
|
135
|
|
|
* |
|
136
|
|
|
* @since 2.2.3 |
|
137
|
|
|
* @return int The Number of tweets to show |
|
138
|
|
|
*/ |
|
139
|
|
|
private static function get_count() { |
|
140
|
|
|
$stored_count = get_option( 'ppp_dashboard_shares_count' ); |
|
141
|
|
|
|
|
142
|
|
|
$stored_count = empty( $stored_count ) || ! is_numeric( $stored_count ) ? 5 : absint( $stored_count ); |
|
143
|
|
|
|
|
144
|
|
|
return ! empty( $stored_count ) ? $stored_count : 5; |
|
145
|
|
|
} |
|
146
|
|
|
|
|
147
|
|
|
} |
|
148
|
|
|
add_action('wp_dashboard_setup', array('PPP_Dashboard_Shares','init') ); |
|
149
|
|
|
|