forked from TheMacLab/game-on
/
go_messages.php
102 lines (100 loc) · 3.68 KB
/
go_messages.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
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
98
99
100
101
102
<?php
add_action('admin_bar_init','go_messages_bar');
function go_messages_bar(){
global $wpdb;
global $wp_admin_bar;
$messages = get_user_meta(get_current_user_id(), 'go_admin_messages',true);
if((int)$messages[0] > 0){
$style = 'background: -webkit-radial-gradient(5px -9px, circle, white 8%, red 26px);';
} else {
$style = 'background: -webkit-radial-gradient(5px -9px, circle, white 8%, green 26px);';
$wp_admin_bar->add_menu( array(
'title' => 'You have no messages from admin',
'href' => '#',
'parent' => 'go_messages'
));
}
if (!is_admin_bar_showing() || !is_user_logged_in()) {
return;
}
$wp_admin_bar->add_menu( array(
'title' => '<div style="padding-top:5px;"><div id="go_messages_bar" style="'.$style.'">'.(int)$messages[0].'</div></div>',
'href' => '#',
'id' => 'go_messages',
));
if (!empty($messages[1])) {
foreach ($messages[1] as $date => $values) {
if (preg_match("/[<>]+/", $values[0])) {
$title_temp = preg_replace("/(<a\s?href=\".*\">)+/", '', $values[0]);
$title = preg_replace("/(<\/a>)+/", '', $title_temp);
} else {
$title = $values[0];
}
$style = '';
$is_seen = true;
if ((int)$values[1] == 1) {
$style = 'color: rgba(255, 215, 0, .4);';
$is_seen = false;
}
if ($is_seen == false) {
$seen_elem = date('m-d-Y',$date)." <a class='go_messages_anchor' onClick='go_mark_seen({$date}, \"unseen\"); go_change_seen({$date}, \"unseen\", this);' style='display: inline;' href='#'>Mark Seen</a> <a class='go_messages_anchor' onClick='go_mark_seen({$date}, \"remove\");' style='display:inline;' href='#'>Remove</a>";
} else {
$seen_elem = date('m-d-Y',$date)." <a class='go_messages_anchor' onClick='go_mark_seen({$date}, \"seen\"); go_change_seen({$date}, \"seen\", this);' style='display: inline;' href='#'>Mark Unseen</a> <a class='go_messages_anchor' onClick='go_mark_seen({$date}, \"remove\");' style='display:inline;' href='#'>Remove</a>";
}
$wp_admin_bar->add_menu( array(
'title' => '<div style="'.$style.'">'.$title.'...</div>',
'href' => '#',
'id' => $date,
'parent' => 'go_messages'
));
$wp_admin_bar->add_menu( array(
'title' => $seen_elem,
'parent' => $date,
'meta' => array('html' => '<div class="go_message_container" style="width:350px;">'.$values[0].'</div>'),
'id' => rand()
));
}
}
}
add_action('wp_ajax_go_mark_read','go_mark_read');
function go_mark_read(){
global $wpdb;
$messages = get_user_meta(get_current_user_id(), 'go_admin_messages',true);
if($_POST['type'] == 'unseen'){
if($messages[1][$_POST['date']][1] == 1){
$messages[1][$_POST['date']][1] = 0;
(int)$messages[0] = (int)$messages[0] - 1;
}
} elseif($_POST['type'] == 'remove') {
if($messages[1][$_POST['date']][1] == 1){
(int)$messages[0] = (int)$messages[0] - 1;
}
unset($messages[1][$_POST['date']]);
} else if ($_POST['type'] == 'seen'){
if($messages[1][$_POST['date']][1] == 0){
$messages[1][$_POST['date']][1] = 1;
(int)$messages[0] = (int)$messages[0] + 1;
}
}
update_user_meta( get_current_user_id(), 'go_admin_messages', $messages);
echo JSON_encode(array(0 => $_POST['date'], 1 => $_POST['type'], 2 => $messages[0]));
die();
}
function go_message_user($user_id, $message){
$current_messages = get_user_meta($user_id, 'go_admin_messages',true);
$current_messages[1][time()] = array($message, 1);
krsort($current_messages[1]);
if(count($current_messages[1]) > 9){
array_pop($current_messages[1]);
}
if(!$current_messages[0]){
$current_messages[0] = 1;
} else {
(int)$current_messages[0] = (int)$current_messages[0] + 1;
if((int)$current_messages[0] > 9){
(int)$current_messages[0] = 9;
}
}
update_user_meta( $user_id, 'go_admin_messages', $current_messages);
}
?>