PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 2.0.5
Taskbuilder – Project Management & Task Management Tool With Kanban Board v2.0.5
6.0.5 6.0.2 6.0.3 6.0.4 6.0.1 6.0.0 5.0.8 5.0.9 4.0.9 5.0.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 All 57 releases
taskbuilder / includes / class-wppm-functions.php

class-wppm-functions.php in Taskbuilder – Project Management & Task Management Tool With Kanban Board 2.0.5, at includes/class-wppm-functions.php

769 lines 34.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 exit; // Exit if accessed directly
4 }
5 if ( ! class_exists( 'WPPM_Functions' ) ) :
6 final class WPPM_Functions {
7 // Array sanitization
8 public static function sanitize_array($array) {
9 if(!empty($array)){
10 foreach ( $array as $key => $value ) {
11 if ( is_array( $value ) ) {
12 $value = $this->sanitize_array($value);
13 }
14 else {
15 $value = sanitize_text_field( $value );
16 }
17 }
18 }
19 return $array;
20 }
21
22 public static function create_project($args){
23 global $wpdb,$current_user;
24 $values = array(
25 'created_by'=>$current_user->ID,
26 'project_name'=>$args['name'],
27 'description'=>isset($args['wppm_proj_description']) ? $args['wppm_proj_description']:"",
28 'start_date'=>isset($args['wppm_start_date']) ?$args['wppm_start_date']:"",
29 'end_date'=>isset($args['wppm_end_date'])? $args['wppm_end_date']:"",
30 'status'=>isset($args['status'])? $args['status']:"1",
31 'cat_id'=>isset($args['wppm_create_project_category']) ? $args['wppm_create_project_category']:"",
32 'users'=>isset($args['user_names']) ? implode(",",$args['user_names']):"",
33 'date_created'=>isset($args['date_created'])? $args['date_created']:date("Y-m-d h:i:sa"),
34 );
35 $wpdb->insert($wpdb->prefix .'wppm_project', $values);
36 $project_id = $wpdb->insert_id;
37 return $project_id;
38 }
39
40 public static function create_task($args){
41 global $wpdb,$current_user,$wppmfunction;
42 $values = array(
43 'created_by'=>(isset($args['created_by'])) ? $args['created_by']: $current_user->ID,
44 'task_name'=>$args['name'],
45 'description'=>(isset($args['wppm_task_description']))?$args['wppm_task_description']:"",
46 'project'=>(isset($args['wppm_task_project']))?$args['wppm_task_project']:"",
47 'start_date'=>(isset($args['wppm_task_start_date']))?$args['wppm_task_start_date']:"",
48 'end_date'=>(isset($args['wppm_task_end_date']))?$args['wppm_task_end_date']:"",
49 'status'=>(isset($args['status']))?$args['status']:"1",
50 'priority'=>(isset($args['wppm_create_task_priority']))?$args['wppm_create_task_priority']:"",
51 'users'=>(!empty($args['user_names']))?implode(",",$args['user_names']):"",
52 'date_created'=>isset($args['date_created'])? $args['date_created']:date("Y-m-d h:i:sa"),
53 'task_auth_code'=> $wppmfunction->getRandomString(10),
54 'active'=>1
55 );
56 $wpdb->insert($wpdb->prefix .'wppm_task', $values);
57 $task_id = $wpdb->insert_id;
58 return $task_id;
59 }
60
61 public static function create_checklist($args){
62 global $wpdb,$current_user,$wppmfunction;
63 $values = array(
64 'task_id'=>$args['task_id'],
65 'checklist_name' => $args['checklist_name'],
66 'created_by'=> $args['created_by']
67 );
68 $wpdb->insert($wpdb->prefix .'wppm_checklist', $values);
69 $checklist_id = $wpdb->insert_id;
70 return $checklist_id;
71 }
72
73 public static function create_checklist_item($args){
74 global $wpdb,$current_user,$wppmfunction;
75 $chk_items_values = array(
76 'checklist_id' => $args['checklist_id'],
77 'item_name' => $args['item_name'],
78 'checked'=>$args['checked'],
79 'members'=>$args['members'],
80 'due_date'=> $args['due_date']
81 );
82 $wpdb->insert($wpdb->prefix .'wppm_checklist_items', $chk_items_values);
83 $checklist_item_id = $wpdb->insert_id;
84 return $checklist_item_id;
85 }
86
87 public static function wppm_submit_task_comment($args){
88 global $wpdb;
89 $wpdb->insert($wpdb->prefix.'wppm_task_comment',$args);
90 $comment_id = $wpdb->insert_id;
91 return $comment_id;
92 }
93
94 // Random string
95 public static function getRandomString($length = 8) {
96 $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
97 $string = '';
98 for ($i = 0; $i < $length; $i++) {
99 $string .= $characters[mt_rand(0, strlen($characters) - 1)];
100 }
101 return $string;
102 }
103
104 public static function wppm_get_auth_code($id){
105 global $wpdb;
106 $auth_code = $wpdb->get_var( "SELECT task_auth_code FROM {$wpdb->prefix}wppm_task where id=$id" );
107 $auth_code = isset($auth_code) ? $auth_code : "";
108 return $auth_code;
109 }
110
111 public static function get_task_fields($task_id,$select_field){
112 global $wpdb;
113 $task_field_value = '';
114 if (apply_filters('wppm_get_select_field',true,$task_id,$select_field)) {
115 $get_task_field_value = $wpdb->get_var(" SELECT $select_field FROM {$wpdb->prefix}wppm_task WHERE id='$task_id' ");
116 $task_field_value = $get_task_field_value ? $get_task_field_value : '';
117 }
118 return stripslashes($task_field_value);
119 }
120
121 public static function get_project_fields($proj_id,$select_field){
122 global $wpdb;
123 $project_field_value = '';
124 if (apply_filters('wppm_get_select_proj_field',true,$proj_id,$select_field)) {
125 $get_project_field_value = $wpdb->get_var(" SELECT $select_field FROM {$wpdb->prefix}wppm_project WHERE id='$proj_id' ");
126 $project_field_value = $get_project_field_value ? $get_project_field_value : '';
127 }
128 return stripslashes($project_field_value);
129 }
130
131 public function get_task($task_id){
132 global $wpdb;
133 $task_data = array();
134 $task = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_task WHERE id='$task_id' ");
135 if( $task ){
136 $task_data = json_decode(json_encode($task), true);
137 }
138 return $task_data;
139 }
140
141 public function get_checklist($task_id){
142 global $wpdb;
143 $checklist_data = array();
144 $checklist = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_checklist WHERE task_id='$task_id' ");
145 if( $checklist ){
146 $checklist_data = json_decode(json_encode($checklist), true);
147 }
148 return $checklist_data;
149 }
150
151 public function get_checklist_items($checklist_id){
152 global $wpdb;
153 $checklist_items_data = array();
154 $checklist_items = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_checklist_items WHERE checklist_id='$checklist_id' ");
155 if( $checklist_items ){
156 $checklist_items_data = json_decode(json_encode($checklist_items), true);
157 }
158 return $checklist_items_data;
159 }
160
161 public function get_project($project_id){
162 global $wpdb;
163 $project_data = array();
164 $project = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project WHERE id='$project_id' ");
165 if( $project ){
166 $project_data = json_decode(json_encode($project), true);
167 }
168 return $project_data;
169 }
170
171 public function get_attachment($attachment_id){
172 global $wpdb;
173 $attachment_data = array();
174 $attachment = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_attachments WHERE id='$attachment_id' ");
175 if( $attachment ){
176 $attachment_data = json_decode(json_encode($attachment), true);
177 }
178 return $attachment_data;
179 }
180
181 public function has_permission($permission, $task_id){
182 global $current_user,$wppmfunction,$wpdb;
183 $wppm_edit_tasks_permission = get_option('wppm_default_edit_tasks_permission');
184 if(empty($comment_id)){
185 $comment_id = 0;
186 }
187 $task_data = $wppmfunction->get_task($task_id);
188 $task_comment = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_task_comment WHERE task_id = $task_id AND id = $comment_id");
189
190 if(!empty($task_data['project'])){
191 $project_id = $task_data['project'];
192 $project_user_role = $wpdb->get_var("SELECT role_id FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = $project_id AND user_id = $current_user->ID");
193 $project_users = $wpdb->get_var("SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = $project_id");
194 $project_users_arr = explode(',',(string)$project_users);
195 }
196 $response = false;
197 $flag = false;
198 if(!empty($task_data)){
199 $co_worker = $task_data['users'];
200 $co_worker_array = explode(",",(string)$co_worker);
201 }
202 if((!empty($project_user_role)) && ($project_user_role == 1) && in_array($current_user->ID,$project_users_arr)){
203 $flag= true;
204 }
205 if(!empty($project_id)){
206 $public_proj_meta = $wpdb->get_var( "SELECT meta_value FROM {$wpdb->prefix}wppm_project_meta where project_id= $project_id AND meta_key='public_project'");
207 }
208 switch ($permission) {
209 case 'change_status':
210 case 'view_task':
211 ((!empty($co_worker_array)) && (in_array($current_user->ID,$co_worker_array )) )|| ($current_user->ID == $task_data['created_by']) || $public_proj_meta==1 || ($flag==true) ? $response = true: $response = false;
212 break;
213 case 'change_task_details':
214 (($flag==true) || ($current_user->ID == $task_data['created_by']) || $wppm_edit_tasks_permission == 1) ? $response = true: $response = false;
215 break;
216 case 'delete_task':
217 case 'clone_task':
218 (($flag==true) || ($current_user->ID == $task_data['created_by'])) ? $response = true: $response = false;
219 break;
220 case 'assign_task_users':
221 case 'change_raised_by':
222 (($flag==true) ? $response = true: $response = false);
223 break;
224 }
225 return apply_filters( 'wppm_has_permission', $response, $task_id, $permission );
226 }
227
228 public function has_comment_permission($permission, $task_id,$comment_id){
229 global $current_user,$wppmfunction,$wpdb;
230 if(empty($comment_id)){
231 $comment_id = 0;
232 }
233 $task_data = $wppmfunction->get_task($task_id);
234 $project_user = array();
235 $task_comment = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_task_comment WHERE task_id = $task_id AND id = $comment_id");
236
237 if(isset($task_data['project'])){
238 $project_id = $task_data['project'];
239 $project_user = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = $project_id AND user_id = $current_user->ID");
240 $project_users = $wpdb->get_var("SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = $project_id");
241 $project_users_arr = explode(',',(string)$project_users);
242 }
243 $response = false;
244 $flag = false;
245 if(!empty($task_data)){
246 $co_worker = $task_data['users'];
247 $co_worker_array = explode(",",(string)$co_worker);
248 }
249 if((!empty($project_user)) && ($project_user->role_id == 1) && in_array($current_user->ID,$project_users_arr)){
250 $flag= true;
251 }
252 switch ($permission) {
253 case 'delete_task_thread':
254 case 'edit_task_comment':
255 (($flag==true) || ($current_user->ID == $task_comment->created_by)) ? $response = true: $response = false;
256 break;
257 }
258 return apply_filters( 'wppm_has_comment_permission', $response, $task_id, $comment_id, $permission );
259 }
260
261 public function has_project_permission($permission,$project_id){
262 global $current_user,$wppmfunction,$wpdb ;
263 $project_data = $wppmfunction->get_project($project_id);
264 $project_user = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = $project_id AND user_id = $current_user->ID");
265 $project_users = $wpdb->get_var("SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = $project_id");
266 $project_users_arr = explode(',',(string)$project_users);
267 $user = wp_get_current_user();
268 if(!empty($project_data)){
269 $co_worker = $project_data['users'];
270 $co_worker_array = explode(",",(string)$co_worker);
271 }
272 switch ($permission) {
273 case 'view_project':
274 ((!empty($co_worker_array)) && (in_array($current_user->ID,$co_worker_array )) )? $response = true: $response = false;
275 break;
276 case 'change_project_status':
277 case 'assign_project_users':
278 case 'change_project_raised_by':
279 case 'change_project_details':
280 case 'delete_project':
281 $flag = false;
282 if( (!empty($project_user)) && ($project_user->role_id == 1) && in_array($current_user->ID,$project_users_arr)){
283 $flag = true;
284 }
285 ((!empty($co_worker_array)) && (in_array($current_user->ID,$co_worker_array) && $flag==true)) ? $response = true: $response = false;
286 break;
287 }
288 return apply_filters( 'wppm_has_project_permission', $response, $project_id, $permission );
289 }
290
291 public function change_status($task_id, $status_id){
292 global $wpdb,$wppmfunction;
293 $task_data = $wppmfunction->get_task($task_id);
294 $prev_status = $task_data['status'];
295 $values=array(
296 'status'=>$status_id
297 );
298 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
299 $old_task_status_meta = $wppmfunction->get_task_meta($task_id,'old_task_status',true);
300 if(!empty($old_task_status_meta)){
301 $wppmfunction->delete_task_meta($task_id,'old_task_status');
302 }
303 $wppmfunction->add_task_meta($task_id,'old_task_status',$prev_status);
304
305 do_action('wppm_set_change_task_status', $task_id, $status_id, $prev_status);
306 }
307
308 public function change_raised_by($task_id, $user_id){
309 global $wpdb;
310 $values=array(
311 'created_by'=>$user_id
312 );
313 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
314 }
315
316 public function change_task_label($task_id, $task_label){
317 global $wpdb;
318 $values=array(
319 'task_name'=>stripslashes($task_label)
320 );
321 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
322 }
323
324 public function change_task_project_label($task_id, $project_label){
325 global $wpdb;
326 $values=array(
327 'project'=>$project_label
328 );
329 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
330 }
331
332 public function change_start_date($task_id, $task_start_date){
333 global $wpdb;
334 $values=array(
335 'start_date'=>$task_start_date
336 );
337 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
338 }
339
340 public function change_end_date($task_id, $task_end_date){
341 global $wpdb;
342 $values=array(
343 'end_date'=>$task_end_date
344 );
345 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
346 }
347
348 public function change_priority($task_id, $task_priority){
349 global $wpdb;
350 $values=array(
351 'priority'=>$task_priority
352 );
353 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
354 }
355
356 public function change_description($task_id, $task_description){
357 global $wpdb;
358 $values=array(
359 'description'=>$task_description
360 );
361 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
362 }
363
364 public function change_project($task_id,$proj_id){
365 global $wpdb,$wppmfunction;
366 $task_data = $wppmfunction->get_task($task_id);
367 $old_proj = $task_data['project'];
368 $project_data = $wppmfunction->get_project($proj_id);
369 $task_assign_users = $task_data['users'];
370 $tusers_array = array();
371 if(!empty($task_data['users'])){
372 $task_users_array = explode(",",(string)$task_assign_users);
373 }
374 if(!empty($project_data['users'])){
375 $project_users = explode(",",(string)$project_data['users']);
376 }
377 if(!empty($project_users)){
378 if(!empty($task_users_array)){
379 foreach($task_users_array as $tuser){
380 if(!in_array($tuser,$project_users)){
381 $wpdb->delete( $wpdb->prefix.'wppm_project_users', array( 'proj_id' => $proj_id,'user_id'=>$tuser) );
382 }
383 elseif(in_array($tuser,$project_users)){
384 $tusers_array[] = $tuser;
385 $sql = 'SELECT role_id FROM ' . $wpdb->prefix . 'wppm_project_users WHERE proj_id = ' . $old_proj .' AND user_id = '.$tuser;
386 $old_proj_user_role = $wpdb->get_var( $sql );
387 $sql = 'SELECT role_id FROM ' . $wpdb->prefix . 'wppm_project_users WHERE proj_id = ' . $proj_id .' AND user_id = '.$tuser;
388 $proj_users_role = $wpdb->get_var( $sql );
389 if(!empty( $old_proj_user_role) && $old_proj_user_role!=$proj_users_role){
390 $value=array(
391 'role_id'=>$proj_users_role
392 );
393 $wpdb->update($wpdb->prefix.'wppm_project_users', $value, array('proj_id'=>$proj_id, 'user_id'=>$tuser));
394 }
395 }
396 }
397 }
398 }
399 $tusers = implode(",",$tusers_array);
400 $values=array(
401 'project'=>$proj_id,
402 'users'=>$tusers
403 );
404 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
405 }
406
407 public function get_task_comment($comment_id){
408 global $wpdb;
409 $task_comment_data = array();
410 $task_comment = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_task_comment WHERE id=$comment_id ");
411 if( $task_comment ){
412 $task_comment_data = json_decode(json_encode($task_comment), true);
413 }
414 return $task_comment_data;
415 }
416
417 public function change_task_comment($comment_id,$comment_body){
418 global $wpdb;
419 $values=array(
420 'body'=>$comment_body
421 );
422 $wpdb->update($wpdb->prefix.'wppm_task_comment', $values, array('id'=>$comment_id));
423 }
424 public function change_project_label($project_id,$project_label){
425 global $wpdb;
426 $values=array(
427 'project_name'=>$project_label
428 );
429 $wpdb->update($wpdb->prefix.'wppm_project', $values, array('id'=>$project_id));
430 }
431
432 public function change_project_start_date($project_id, $project_start_date){
433 global $wpdb;
434 $values=array(
435 'start_date'=>$project_start_date
436 );
437 $wpdb->update($wpdb->prefix.'wppm_project', $values, array('id'=>$project_id));
438 }
439
440 public function change_project_end_date($project_id, $project_end_date){
441 global $wpdb;
442 $values=array(
443 'end_date'=>$project_end_date
444 );
445 $wpdb->update($wpdb->prefix.'wppm_project', $values, array('id'=>$project_id));
446 }
447
448 public function change_category($project_id, $project_category){
449 global $wpdb;
450 $values=array(
451 'cat_id'=>$project_category
452 );
453 $wpdb->update($wpdb->prefix.'wppm_project', $values, array('id'=>$project_id));
454 }
455
456 public function change_project_description($project_id, $project_description){
457 global $wpdb;
458 $values=array(
459 'description'=>$project_description
460 );
461 $wpdb->update($wpdb->prefix.'wppm_project', $values, array('id'=>$project_id));
462 }
463
464 public function change_project_status($project_id,$status_id){
465 global $wpdb,$wppmfunction;
466 $proj_data = $wppmfunction->get_project($project_id);
467 $prev_status = $proj_data['status'];
468 $values=array(
469 'status'=>$status_id
470 );
471 $wpdb->update($wpdb->prefix.'wppm_project', $values, array('id'=>$project_id));
472 $old_project_status_meta = $wppmfunction->get_project_meta($project_id,'old_project_status',true);
473 if(!empty($old_project_status_meta)){
474 $wppmfunction->delete_project_meta($project_id,'old_project_status');
475 }
476 $wppmfunction->add_project_meta($project_id,'old_project_status',$prev_status);
477 do_action('wppm_set_change_project_status', $project_id, $status_id, $prev_status);
478 }
479
480 public function change_project_raised_by($project_id, $user_id){
481 global $wpdb;
482 $values=array(
483 'created_by'=>$user_id
484 );
485 $wpdb->update($wpdb->prefix.'wppm_project', $values, array('id'=>$project_id));
486 }
487
488 // Email Notification types
489 public function get_email_notification_types(){
490 $notification_types = array(
491 'new_project'=>__('New Project','taskbuilder'),
492 'new_task'=>__('New Task','taskbuilder'),
493 'change_project_status' => __('Change Project Status','taskbuilder'),
494 'change_task_status' => __('Change Task Status','taskbuilder'),
495 'change_project_assign_users' => __('Change Project Assign Users','taskbuilder'),
496 'change_task_assign_users' => __('Change Task Assign Users','taskbuilder'),
497 'new_discussion' => __('New Comment','taskbuilder'),
498 );
499 return apply_filters('wppm_en_types',$notification_types);
500 }
501
502 public function check_rtl(){
503 $rtl_locale = array('ar','ary','ckb','haz','he_IL','fa_IR','ps','ur','ug_CN');
504 if(in_array(get_locale(),$rtl_locale)){
505 return 'rtl';
506 }else{
507 return 'ltr';
508 }
509 }
510
511 public function add_project_meta($proj_id,$meta_key,$meta_value){
512 global $wpdb;
513 $wpdb->insert(
514 $wpdb->prefix . 'wppm_project_meta',
515 array(
516 'project_id' => $proj_id,
517 'meta_key' => $meta_key,
518 'meta_value' =>$meta_value
519 ));
520 }
521
522 public function add_task_meta($task_id,$meta_key,$meta_value){
523 global $wpdb;
524 $wpdb->insert(
525 $wpdb->prefix . 'wppm_task_meta',
526 array(
527 'task_id' => $task_id,
528 'meta_key' => $meta_key,
529 'meta_value' =>$meta_value
530 ));
531 }
532
533 public function get_project_meta($project_id,$meta_key,$flag = false){
534 global $wpdb,$wppmfunction;
535 if($flag){
536 $get_meta = $wpdb->get_var("SELECT meta_value FROM {$wpdb->prefix}wppm_project_meta WHERE project_id = '$project_id' AND meta_key = '$meta_key' ");
537 $project_meta = isset($get_meta) ? stripslashes($get_meta) : '';
538
539 } else {
540 $project_meta = array();
541 $results = $wpdb->get_results("SELECT meta_value FROM {$wpdb->prefix}wppm_project_meta WHERE project_id = '$project_id' AND meta_key = '$meta_key'");
542 if( (!empty($results)) ){
543 foreach ($results as $result) {
544 if(!empty($result)){
545 $project_meta[]= stripslashes($result->meta_value);
546 }
547 }
548 }
549 }
550 return $project_meta;
551 }
552
553 public function get_task_meta($task_id,$meta_key,$flag = false){
554 global $wpdb,$wppmfunction;
555 if($flag){
556 $get_meta = $wpdb->get_var("SELECT meta_value FROM {$wpdb->prefix}wppm_task_meta WHERE task_id = '$task_id' AND meta_key = '$meta_key' ");
557 $task_meta = isset($get_meta) ? stripslashes($get_meta) : '';
558
559 } else {
560 $task_meta = array();
561 $results = $wpdb->get_results("SELECT meta_value FROM {$wpdb->prefix}wppm_task_meta WHERE task_id = '$task_id' AND meta_key = '$meta_key'");
562 if( (!empty($results)) ){
563 foreach ($results as $result) {
564 if(!empty($result)){
565 $task_meta[]= stripslashes($result->meta_value);
566 }
567 }
568 }
569 }
570 return $task_meta;
571 }
572
573 public function get_previously_assigned_users($project_id){
574 global $wpdb,$wppmfunction;
575 $prev_assigned_users = $wppmfunction->get_project_meta($project_id,'prev_assigned_users');
576 $user_emails = array();
577 if(!empty($prev_assigned_users)){
578 foreach ($prev_assigned_users as $user) {
579 $userdata = get_userdata($user);
580 $user_emails[] = $userdata->user_email;
581
582 }
583 }
584 return apply_filters( 'wppm_get_prev_assigned_users_emails', $user_emails ,$project_id);
585 }
586
587 public function get_previously_assigned_task_users($task_id){
588 global $wpdb,$wppmfunction;
589 $prev_assigned_task_users = $wppmfunction->get_task_meta($task_id,'prev_assigned_task_users');
590 $user_emails = array();
591 if(!empty($prev_assigned_task_users)){
592 foreach ($prev_assigned_task_users as $user) {
593 if(!empty($user)){
594 $userdata = get_userdata($user);
595 $user_emails[] = $userdata->user_email;
596 }
597 }
598 }
599 return apply_filters( 'wppm_get_prev_assigned_task_users_emails', $user_emails ,$task_id);
600 }
601 /**
602 * Update project meta for project
603 */
604 function update_project_meta($project_id ,$meta_key ,$meta_value){
605 global $wpdb;
606 $results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_project_meta WHERE project_id = '$project_id' AND meta_key = $meta_key");
607 $wpdb->update($wpdb->prefix.'wppm_project_meta', $meta_value, array('project_id'=>$project_id,'meta_key' => $meta_key));
608 }
609
610 /**
611 * Update task meta for task
612 */
613 function update_task_meta($task_id ,$meta_key ,$meta_value){
614 global $wpdb;
615 $results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_task_meta WHERE task_id = '$task_id' AND meta_key = $meta_key");
616 $wpdb->update($wpdb->prefix.'wppm_task_meta', $meta_value, array('task_id'=>$task_id,'meta_key' => $meta_key));
617 }
618
619 function delete_project_meta($project_id ,$meta_key){
620 global $wpdb;
621 $wpdb->delete( $wpdb->prefix.'wppm_project_meta', array( 'project_id' => $project_id,'meta_key'=>$meta_key) );
622 }
623
624 function delete_task_meta($task_id ,$meta_key){
625 global $wpdb;
626 $wpdb->delete( $wpdb->prefix.'wppm_task_meta', array( 'task_id' => $task_id,'meta_key'=>$meta_key) );
627 }
628
629 public function replace_macro($str,$project_id){
630 include WPPM_ABSPATH . 'includes/replace_macro.php';
631 return $str;
632 }
633
634 public function replace_task_macro($str,$task_id){
635 include WPPM_ABSPATH . 'includes/replace_task_macro.php';
636 return $str;
637 }
638
639 public function get_old_project_status_name($id){
640 global $wppmfunction, $wpdb;
641 $old_project_status = $wppmfunction->get_project_meta($id,'old_project_status',true);
642 $status_name = $wpdb->get_var("SELECT name FROM {$wpdb->prefix}wppm_project_statuses WHERE id ='$old_project_status'");
643 return $status_name;
644 }
645
646 public function get_new_project_status_name($status_id){
647 global $wpdb;
648 $status_name = $wpdb->get_var("SELECT name FROM {$wpdb->prefix}wppm_project_statuses WHERE id ='$status_id'");
649 return $status_name;
650 }
651
652 public function get_old_task_status_name($task_id){
653 global $wppmfunction, $wpdb;
654 $old_task_status = $wppmfunction->get_task_meta($task_id,'old_task_status',true);
655 $status_name = $wpdb->get_var("SELECT name FROM {$wpdb->prefix}wppm_task_statuses WHERE id ='$old_task_status'");
656 return $status_name;
657 }
658
659 public function get_new_task_status_name($status_id){
660 global $wpdb;
661 $status_name = $wpdb->get_var("SELECT name FROM {$wpdb->prefix}wppm_task_statuses WHERE id ='$status_id'");
662 return $status_name;
663 }
664
665 public function get_project_category_name($cat_id){
666 global $wpdb;
667 $cat_name = $wpdb->get_var("SELECT name FROM {$wpdb->prefix}wppm_project_categories WHERE id ='$cat_id'");
668 return $cat_name;
669 }
670
671 public function get_project_assigned_users_names($project_id){
672 global $wppmfunction;
673 $wppm_project_data = $wppmfunction->get_project($project_id);
674 if(!empty($wppm_project_data['users'])){
675 $wppm_project_assign_users_array = explode(",", $wppm_project_data['users']);
676 }else{
677 $wppm_project_assign_users_array = array();
678 }
679 $users_names = array();
680 if(!empty($wppm_project_assign_users_array)){
681 foreach ($wppm_project_assign_users_array as $user_id) {
682 if(!empty($user_id)){
683 $userdata = get_userdata( $user_id );
684 if(!empty($userdata)){
685 $users_names[] = $userdata->display_name;
686 }
687 }
688 }
689 }
690 return implode(', ', $users_names);
691 }
692
693 public function get_task_assigned_users_names($task_id){
694 global $wppmfunction;
695 $wppm_task_data = $wppmfunction->get_task($task_id);
696 $wppm_task_assign_users_array = explode(",", (string)$wppm_task_data['users']);
697 $users_names = array();
698 if(!empty($wppm_task_assign_users_array)){
699 foreach ($wppm_task_assign_users_array as $user_id) {
700 if(!empty($user_id)){
701 $userdata = get_userdata( $user_id );
702 if(!empty($userdata)){
703 $users_names[] = $userdata->display_name;
704 }
705 }
706 }
707 }
708 return implode(', ', $users_names);
709 }
710
711 public function get_project_previously_assigned_users_names($project_id){
712 global $wppmfunction;
713 $wppm_project_assign_users = $wppmfunction->get_project_meta($project_id,'prev_assigned_users');
714 $users_names = array();
715 if(!empty($wppm_project_assign_users)){
716 foreach ($wppm_project_assign_users as $user) {
717 if(!empty($user)){
718 $userdata = get_userdata( $user );
719 $users_names[] = $userdata->display_name;
720 }
721 }
722 }
723 return implode(', ', $users_names);
724 }
725
726 public function get_task_previously_assigned_users_names($task_id){
727 global $wppmfunction;
728 $wppm_task_assign_users = $wppmfunction->get_task_meta($task_id,'prev_assigned_task_users');
729 $users_names = array();
730 if(!empty($wppm_task_assign_users)){
731 foreach ($wppm_task_assign_users as $user) {
732 if(!empty($user)){
733 $userdata = get_userdata( $user );
734 $users_names[] = $userdata->display_name;
735 }
736 }
737 }
738 return implode(', ', $users_names);
739 }
740
741 public function get_task_priority_name($priority){
742 global $wpdb;
743 $priority_name = $wpdb->get_var("SELECT name FROM {$wpdb->prefix}wppm_task_priorities WHERE id ='$priority'");
744 return $priority_name;
745 }
746
747 public function get_last_comment_user_name($task_id){
748 global $wpdb;
749 $task_comment_creator = $wpdb->get_var("SELECT created_by FROM {$wpdb->prefix}wppm_task_comment WHERE (id=(select MAX(id) from {$wpdb->prefix}wppm_task_comment) AND task_id = $task_id)");
750 if(!empty($task_comment_creator)){
751 $user = get_userdata( $task_comment_creator );
752 return $user->display_name;
753 }
754 }
755
756 public function get_last_comment_body($task_id){
757 global $wpdb;
758 $task_comment = $wpdb->get_var("SELECT body FROM {$wpdb->prefix}wppm_task_comment WHERE (id=(select MAX(id) from {$wpdb->prefix}wppm_task_comment) AND task_id = $task_id)");
759 return $task_comment;
760 }
761
762 public function create_duplicate_task($ptask_id, $project_id){
763 include WPPM_ABSPATH . 'includes/admin/tasks/open_task/wppm_set_clone_task.php';
764 }
765 }
766
767
768 endif;
769 $GLOBALS['wppmfunction'] = new WPPM_Functions();