Newer
Older
Jochen Stals
committed
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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?php
// by Jochen Stals - ONE-agency - www.one-agency.be
/**
* Implementation of hook_views_api()
*
* This hook will tell views2 that heartbeat activity is available
*/
function heartbeat_views_api() {
return array(
'api' => 2,
'path' => drupal_get_path('module', 'heartbeat'),
);
}
/**
* Implementation of hook_perm().
*/
function heartbeat_perm() {
return array('configure heartbeat');
}
/**
* Implementation of hook_menu().
*/
function heartbeat_menu() {
$items = array();
// Administer list
$items['admin/settings/heartbeat'] = array(
'title' => t('heartbeat settings'),
'description' => t('Administer settings for heartbeat.'),
'page callback' => 'drupal_get_form',
'page arguments' => array('heartbeat_admin_settings'),
'access arguments' => array('configure heartbeat'),
'file' => 'heartbeat.admin.inc',
);
// Tabs
$items['admin/settings/heartbeat/settings'] = array(
'title' => 'Heartbeat settings',
'type' => MENU_DEFAULT_LOCAL_TASK,
'weight' => 5,
);
return $items;
}
/**
* Class to handle user activity data
*
*/
class user_activity {
// Private members are prefixed with m_
private $m_uid = 0;
private $m_uid_target = 0;
private $m_nid_target = 0;
private $m_message = '';
private $m_event = '';
private $m_variables = array();
private $m_variables_string = '';
/**
* constructor
*/
function __construct($data=null) {
if(isset($data)) {
$this->set_data($data);
}
}
/**
* Set data into members
*/
public function set_data($data) {
if(isset($data['m_uid']))
$this->m_uid = $data['m_uid'];
if(isset($data['m_uid_target']))
$this->m_uid_target = $data['m_uid_target'];
if(isset($data['m_nid_target']))
$this->m_nid_target = $data['m_nid_target'];
if(isset($data['m_message']))
$this->m_message = $data['m_message'];
if(isset($data['m_event']))
$this->m_event = $data['m_event'];
if(isset($data['m_variables_string']))
$this->m_variables_string = $data['m_variables_string'];
// if the data variables have not been included
// as normal members, do so now to be available when asked for
if($this->m_variables == array() && $this->m_variables_string != '') {
$this->variables2array($this->m_variables_string);
}
}
/**
* Method gets a user_activity variable
*
* @desc The magic getter method fetches a variable
* in members. If not found there, it will always
* check the variables as well
*/
public function __get($variable) {
// a private member is asked
$var = null;
if( isset( $this->{'m_'.$variable} ) ) {
$var = $this->{'m_'.$variable};
}
else if(array_key_exists($variable, $this->m_variables)) {
$var = $this->m_variables[$variable];
}
return $var;
}
/**
* public function to set variables into readable array
*/
public function variables2array($string) {
$array = explode(";", $string);
if(!empty($array)) {
foreach($array as $var => $value) {
$this->m_variables[$var] = (string)$value;
}
}
return $this->m_variables;
}
/**
* Public function to save activity to database
*/
public function save() {
// Log relational message to user activity
db_query("INSERT INTO user_activity SET
uid=%d, uid_target=%d, nid_target=%d,
message='%s', timestamp=%d, event='%s', variables='%s'",
$this->m_uid, $this->m_uid_target, $this->m_nid_target,
$this->m_message, $_SERVER['REQUEST_TIME'], $this->m_event, $this->m_variables_string );
}
} // eof class user_activity