PluginProbe
Time Clock – A WordPress Employee & Volunteer Time Clock Plugin / 1.2
Time Clock – A WordPress Employee & Volunteer Time Clock Plugin v1.2
trunk 1.0 1.0.1 1.1 1.1.1 1.1.2 1.2 1.2.1 1.2.2 1.2.3 1.3 1.3.1 1.3.2
time-clock / includes / admin / activity.php

activity.php in Time Clock – A WordPress Employee & Volunteer Time Clock Plugin 1.2, at includes/admin/activity.php

463 lines 13.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
4
5
6 // register meta boxs
7 function etimeclockwp_clock_register_meta_boxes() {
8 global $post;
9
10 add_meta_box('meta-box-id-activity', __('Day Details', 'etimeclockwp'), 'etimeclockwp_callback_activity', 'etimeclockwp_clock','normal');
11 add_meta_box('meta-box-id-status', __( 'Details', 'etimeclockwp' ), 'etimeclockwp_callback_status', 'etimeclockwp_clock','side');
12
13 }
14 add_action('add_meta_boxes', 'etimeclockwp_clock_register_meta_boxes');
15
16
17 // activity metabox
18 function etimeclockwp_callback_activity($post) {
19 global $meta_box, $post;
20
21
22 // see if new post
23 if ($post->post_status == 'auto-draft') {
24
25
26 echo "<table><tr><td>";
27 echo __('User: ', 'etimeclockwp');
28 echo "</td><td>";
29
30 $users = get_posts(
31 array(
32 'posts_per_page' => -1,
33 'post_type' => 'etimeclockwp_users'
34 )
35 );
36
37 foreach($users as $post) {
38 $values[$post->post_title] = $post->ID;
39 }
40
41 echo "<select name='user_id'>";
42
43 if (isset($_GET['user'])) {
44 $current = $_GET['user'];
45 } else {
46 $current = '';
47 }
48
49 foreach ($values as $label => $value) {
50 echo "<option value='$value'"; if ($current == $value) { echo "SELECTED"; } echo ">$label</option>";
51 }
52 echo "</select>";
53
54 echo "</td></tr><tr><td>";
55
56 echo __('Date: ', 'etimeclockwp');
57 echo "</td><td>";
58
59
60 $wp_date_format = etimeclockwp_get_option('date-format');
61 $date_now = date_i18n($wp_date_format);
62
63 echo "<input type='text' id='etimeclockwp-new-activity' class='etimeclockwp_cell_width' value='$date_now'><input type='hidden' id='etimeclockwp-new-activity-real' name='real-date' value=''>";
64
65 echo '<input type="hidden" name="etimeclockwp_MetaNonce" value="', wp_create_nonce(basename(__FILE__)), '" />';
66
67 echo '<input type="hidden" name="etimeclockwp_submit" value="1" />';
68
69 echo "</td></tr><tr><td></td><td><input id='publish' class='button-primary' type='submit' value='"; echo __('Save','etimeclockwp'); echo "' accesskey='p' tabindex='5' name='save'>";
70
71 echo "</td></tr></table>";
72
73
74 // existing post
75 } else {
76
77 echo "<div class='etimeclockwp_meta_box'>";
78
79 echo "<style>#post-body-content { margin-bottom: 0px; }</style>";
80
81
82 // Use nonce for verification
83 echo '<input type="hidden" name="etimeclockwp_MetaNonce" value="', wp_create_nonce(basename(__FILE__)), '" />';
84
85 echo '<input type="hidden" name="etimeclockwp_submit_activity" value="1" />';
86
87 echo '<table>';
88
89 $metavalue = get_post_meta($post->ID);
90
91
92 $wp_date_format = etimeclockwp_get_option('date-format');
93 $wp_time_format = etimeclockwp_get_option('time-format');
94
95 $wp_date_format_timestamp = 'Y-m-d';
96 $wp_time_format_timestamp = 'H:i:s';
97
98 $timestamp_now = date_i18n($wp_date_format_timestamp.' '.$wp_time_format_timestamp);
99 $date_now = date_i18n($wp_date_format);
100 $time_now = date_i18n($wp_time_format);
101
102 // url nonnces
103 $nonce_edit = wp_create_nonce('etimeclockwp_new');
104 $nonce_delete = wp_create_nonce('etimeclockwp_delete');
105 $nonce_add = wp_create_nonce('etimeclockwp_add');
106
107 $post_excerpt = $post->post_excerpt;
108
109 foreach($metavalue as $key => $val) {
110
111 if (substr($key, 0, 5) === "etime") {
112
113 $key_pure = $key;
114
115 $key = explode('_', $key);
116 $key = $key[0];
117
118 $timestamp_array = explode('|', $val[0]);
119
120 $timestampdb = $timestamp_array[0];
121
122 if ($key == 'etimeclockwp-in') {
123 $key = etimeclockwp_get_option('clock-in');
124 $day = $timestampdb;
125 }
126
127 if ($key == 'etimeclockwp-out') {
128 $key = etimeclockwp_get_option('clock-out');
129 }
130
131 if ($key == 'etimeclockwp-breakon') {
132 $key = etimeclockwp_get_option('leave-on-break');
133 }
134
135 if ($key == 'etimeclockwp-breakoff') {
136 $key = etimeclockwp_get_option('return-from-break');
137 }
138
139 $datetime = date_i18n($wp_date_format.' '.$wp_time_format,$timestampdb);
140 $date = date_i18n($wp_date_format,$timestampdb);
141 $time = date_i18n($wp_time_format,$timestampdb);
142
143 $timestamp = date_i18n($wp_date_format_timestamp.' '.$wp_time_format_timestamp,$timestampdb);
144
145 if (isset($timestamp_array[1])) {
146 $order = $timestamp_array[1];
147 echo "<tr><td class='etimeclockwp_cell_title_width'>"; echo $key; echo ": </td><td>".$datetime."</td><td>&nbsp; <a href='#' class='etimeclockwp-entry-edit' data-nonce='$nonce_edit' data-timestamp='".$timestamp."' data-date='".$date."' data-time='".$time."' data-order='".$order."' data-pure='".$key_pure."'>".__('Edit','etimeclockwp')."</a> - <a href='#' class='etimeclockwp-entry-delete' data-nonce='$nonce_delete' data-date='".$date."' data-time='".$time."' data-pure='".$key_pure."'>".__('Delete','etimeclockwp')."</a></td></tr>";
148 } else {
149 echo "<tr><td class='etimeclockwp_cell_title_width'>"; echo $key; echo ": </td><td>".$datetime."</td></tr>";
150 }
151 }
152
153 }
154
155 echo "</tr>";
156
157 echo '</table>';
158 echo "</div>";
159
160
161
162 // entry - delete
163 echo "<div class='etimeclockwp-holder'>";
164 echo "<div id='etimeclockwp-div-delete' class='etimeclockwp-div'>";
165
166 echo "<div class='etimeclockwp-menu'>";
167 echo __('Delete Entry','etimeclockwp');
168 echo "</div><br />";
169
170 echo "<div id='etimeclockwp-date'></div>";
171 echo "<input type='hidden' id='etimeclockwp-datepure' value=''>";
172 echo "<input type='hidden' class='etimeclockwp-postid' value='".$post->ID."'>";
173 echo "<input type='hidden' id='etimeclockwp_delete_nonce' value=''>";
174
175 echo "<div class='etimeclockwp-entry'><br />";
176 echo "<input type='submit' class='button button-primary etimeclockwp-entry-button etimeclockwp-date-confirm-delete' value=' ". __('Confirm','etimeclockwp')." '>";
177 echo "<input type='submit' class='button button-secondary etimeclockwp-entry-button etimeclockwp-cancel' value=' ". __('Cancel','etimeclockwp')." '>";
178 echo "</div>";
179
180 echo "<br />";
181
182 echo "</div>";
183 echo "</div>";
184
185 // entry - edit
186 echo "<div class='etimeclockwp-holder'>";
187 echo "<div id='etimeclockwp-div-edit' class='etimeclockwp-div'>";
188
189 echo "<div class='etimeclockwp-menu'>";
190 echo __('Edit Entry','etimeclockwp');
191 echo "</div><br />";
192
193 echo "<center><input type='text' id='etimeclockwp-date-edit' value=''></center>";
194 echo "<input type='hidden' class='etimeclockwp-postid' value='".$post->ID."'>";
195 echo "<input type='hidden' id='etimeclockwp-actualdate-edit' value=''>";
196 echo "<input type='hidden' id='etimeclockwp-puredate' value=''>";
197 echo "<input type='hidden' id='etimeclockwp-order' value=''>";
198 echo "<input type='hidden' id='etimeclockwp_edit_nonce' value=''>";
199
200 echo "<div class='etimeclockwp-entry'><br />";
201 echo "<input type='submit' class='button button-primary etimeclockwp-entry-button etimeclockwp-date-confirm-edit' value=' ". __('Confirm','etimeclockwp')." '>";
202 echo "<input type='submit' class='button button-secondary etimeclockwp-entry-button etimeclockwp-cancel' value=' ". __('Cancel','etimeclockwp')." '>";
203 echo "</div>";
204
205 echo "<br />";
206
207 echo "</div>";
208 echo "</div>";
209
210 // entry - new
211 echo "<div class='etimeclockwp-holder'>";
212 echo "<div id='etimeclockwp-div-new' class='etimeclockwp-div'>";
213
214 echo "<div class='etimeclockwp-menu'>";
215 echo __('New Entry','etimeclockwp');
216 echo "</div><br />";
217
218 echo "<center>";
219 echo "<select id='etimeclockwp-entry-dropdown-new'>";
220 echo "<option value='in'>".etimeclockwp_get_option('clock-in')."</option>";
221 echo "<option value='out'>".etimeclockwp_get_option('clock-out')."</option>";
222 echo "<option value='breakon'>".etimeclockwp_get_option('leave-on-break')."</option>";
223 echo "<option value='breakoff'>".etimeclockwp_get_option('return-from-break')."</option>";
224 echo "</select>";
225 echo "</center>";
226
227 echo "<br /><center><input type='text' id='etimeclockwp-date-new' class='etimeclockwp_cell_width' value=''></center>";
228 echo "<input type='hidden' class='etimeclockwp-postid' value='".$post->ID."'>";
229 echo "<input type='hidden' id='etimeclockwp-actualdate-new' value=''>";
230 echo "<input type='hidden' id='etimeclockwp_new_nonce' value=''>";
231
232 echo "<div class='etimeclockwp-entry'><br />";
233 echo "<input type='submit' class='button button-primary etimeclockwp-entry-button etimeclockwp-date-confirm-new' value=' ". __('Confirm','etimeclockwp')." '>";
234 echo "<input type='submit' class='button button-secondary etimeclockwp-entry-button etimeclockwp-cancel' value=' ". __('Cancel','etimeclockwp')." '>";
235 echo "</div>";
236
237 echo "<br />";
238
239 echo "</div>";
240 echo "</div>";
241
242 }
243 }
244
245
246 // status metabox
247 function etimeclockwp_callback_status($post) {
248 global $meta_box, $post;
249
250 echo "<div class='etimeclockwp_meta_box'>";
251
252 echo '<table width="100%">';
253
254 echo "<tr><td>";
255
256 echo "<br />";
257
258 echo __('User','etimeclockwp');
259 echo ":";
260 echo "</td><td align='right'><br />";
261 echo get_the_title($post->post_title);
262 echo "</td></tr>";
263
264 echo "</tr><tr><td><br />";
265 echo __('Date Worked','etimeclockwp');
266 echo ":";
267 echo "</td><td align='right'><br />";
268 echo get_the_date(etimeclockwp_get_option('date-format'),$post->ID);
269 echo "</td></tr>";
270
271 echo "</tr><tr><td><br />";
272 echo __('Total Time Worked','etimeclockwp');
273 echo ":";
274 echo "</td><td align='right'><br />";
275 echo etimeclockwp_get_time_worked($post);
276 echo "</td></tr>";
277
278 echo "</td></tr></table><br />";
279
280 echo "</div>";
281 }
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302 // user table - fill table columns with data
303 function etimeclockwp_manage_activity_columns( $column, $post_id ) {
304 global $post;
305
306 switch( $column ) {
307
308 case 'name' :
309 echo $id = "<a href='post.php?post=$post_id&action=edit'><b>"; echo get_the_title($post->post_title); echo "</b></a>";
310 break;
311
312 case 'date_work' :
313 echo get_the_date(etimeclockwp_get_option('date-format'),$post_id);
314 break;
315
316 case 'time_worked' :
317 echo etimeclockwp_get_time_worked($post);
318 break;
319
320
321 default :
322 break;
323 }
324 }
325 add_action( 'manage_etimeclockwp_clock_posts_custom_column', 'etimeclockwp_manage_activity_columns', 10, 2 );
326
327
328 // titles for admin button table
329 function etimeclockwp_clock_columns($columns) {
330
331 $columns = array(
332 'cb' => '<input type="checkbox" />',
333 'name' => __( 'User Name','etimeclockwp'),
334 'date_work' => __( 'Work Date','etimeclockwp'),
335 'time_worked' => __( 'Time Worked','etimeclockwp'),
336 );
337
338 return $columns;
339 }
340 add_filter('manage_edit-etimeclockwp_clock_columns','etimeclockwp_clock_columns');
341
342
343 // set default column for orders & customers table
344 function etimeclockwp_clock_list_table_primary_column( $column, $screen ) {
345
346 if ('edit-etimeclockwp_clock' === $screen) {
347 $column = 'name';
348 }
349 return $column;
350 }
351 add_filter( 'list_table_primary_column', 'etimeclockwp_clock_list_table_primary_column', 10, 2 );
352
353
354 // users table - remove quick links
355 function etimeclockwp_activity_quick_links($actions, $post) {
356
357 if ($post->post_type =="etimeclockwp_clock") {
358 unset($actions['inline hide-if-no-js']);
359 unset($actions['edit']);
360 }
361 return $actions;
362 }
363 add_filter('post_row_actions','etimeclockwp_activity_quick_links', 10, 2);
364
365
366 // users table - update message
367 add_filter('post_updated_messages', 'codex_etimeclockwp_clock_updated_messages');
368 function codex_etimeclockwp_clock_updated_messages( $messages ) {
369 global $post, $post_ID;
370
371 $messages['etimeclockwp_clock'] = array(
372 1 => __('User Activity updated.'),
373 );
374
375 return $messages;
376 }
377
378
379 // users table - remove subsubsub menu links
380 function etimeclockwp_clock_table_sub_menu_links( $views ) {
381
382 unset($views['private']);
383 unset($views['mine']);
384 unset($views['publish']);
385
386 return $views;
387 }
388 add_filter('views_edit-etimeclockwp_clock','etimeclockwp_clock_table_sub_menu_links');
389
390
391
392
393
394
395
396
397
398
399
400 // display user dropdown menu
401 function etimeclockwp_admin_posts_filter_activity(){
402
403 // get current post type
404 if (isset($_GET['post_type'])) {
405 $type = $_GET['post_type'];
406 } else {
407 $type = '';
408 }
409
410 //only add filter to post type you want
411 if ('etimeclockwp_clock' == $type) {
412
413 $users = get_posts(
414 array(
415 'posts_per_page' => -1,
416 'post_type' => 'etimeclockwp_users'
417 )
418 );
419
420 foreach($users as $post) {
421 $values[$post->post_title] = $post->ID;
422 }
423 ?>
424
425 <select name="user">
426 <option value=""><?php echo __('All users', 'etimeclockwp'); ?></option>
427
428 <?php
429 if (isset($_GET['user'])) {
430 $current = $_GET['user'];
431 } else {
432 $current = '';
433 }
434
435 foreach ($values as $label => $value) {
436 echo "<option value='$value'"; if ($current == $value) { echo "SELECTED"; } echo ">$label</option>";
437 }
438 ?>
439 </select>
440
441 <?php
442 }
443 }
444 add_action( 'restrict_manage_posts', 'etimeclockwp_admin_posts_filter_activity' );
445
446
447 // add filter to query for dropdown menu
448 function etimeclockwp_posts_filter_activity( $query ) {
449 global $pagenow;
450
451 // get current post type
452 if (isset($_GET['post_type'])) {
453 $type = sanitize_text_field($_GET['post_type']);
454 } else {
455 $type = '';
456 }
457
458 if ( 'etimeclockwp_clock' == $type && is_admin() && $pagenow =='edit.php' && isset($_GET['user']) && $_GET['user'] != '' && $query->is_main_query() ) {
459 $query->query_vars['title'] = sanitize_text_field($_GET['user']);
460 }
461
462 }
463 add_filter( 'parse_query', 'etimeclockwp_posts_filter_activity' );