PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 3.0.0
Taskbuilder – Project Management & Task Management Tool With Kanban Board v3.0.0
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 3.0.0, at includes/class-wppm-functions.php

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