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

1,004 lines 46.0 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 $default_proj_status = get_option('wppm_default_project_status');
25 $values = array(
26 'created_by'=>$current_user->ID,
27 'project_name'=>$args['name'],
28 'description'=>isset($args['wppm_proj_description']) ? $args['wppm_proj_description']:"",
29 'start_date'=>isset($args['wppm_start_date']) ?$args['wppm_start_date']:"",
30 'end_date'=>isset($args['wppm_end_date'])? $args['wppm_end_date']:"",
31 'status'=>isset($args['status'])? $args['status']:$default_proj_status,
32 'cat_id'=>isset($args['wppm_create_project_category']) ? $args['wppm_create_project_category']:"",
33 'users'=>isset($args['user_names']) ? implode(",",$args['user_names']):"",
34 'date_created'=>isset($args['date_created'])? $args['date_created']:date("Y-m-d h:i:sa"),
35 );
36 $wpdb->insert($wpdb->prefix .'wppm_project', $values);
37 $project_id = $wpdb->insert_id;
38 return $project_id;
39 }
40
41 public static function create_task($args){
42 global $wpdb,$current_user,$wppmfunction;
43 $default_task_status = get_option('wppm_default_task_status');
44 $values = array(
45 'created_by'=>(isset($args['created_by'])) ? $args['created_by']: $current_user->ID,
46 'task_name'=>$args['name'],
47 'description'=>(isset($args['wppm_task_description']))?$args['wppm_task_description']:"",
48 'project'=>(isset($args['wppm_task_project']))?$args['wppm_task_project']:"",
49 'start_date'=>(isset($args['wppm_task_start_date']))?$args['wppm_task_start_date']:"",
50 'end_date'=>(isset($args['wppm_task_end_date']))?$args['wppm_task_end_date']:"",
51 'status'=>(isset($args['status']))?$args['status']:$default_task_status,
52 'priority'=>(isset($args['wppm_create_task_priority']))?$args['wppm_create_task_priority']:"",
53 'users'=>(!empty($args['user_names']))?implode(",",$args['user_names']):"",
54 'date_created'=>isset($args['date_created'])? $args['date_created']:date("Y-m-d h:i:sa"),
55 'task_auth_code'=> $wppmfunction->getRandomString(10),
56 'active'=>1
57 );
58 $wpdb->insert($wpdb->prefix .'wppm_task', $values);
59 $task_id = $wpdb->insert_id;
60 return $task_id;
61 }
62
63 public static function create_checklist($args){
64 global $wpdb,$current_user,$wppmfunction;
65 $values = array(
66 'task_id'=>$args['task_id'],
67 'checklist_name' => $args['checklist_name'],
68 'created_by'=> $args['created_by']
69 );
70 $wpdb->insert($wpdb->prefix .'wppm_checklist', $values);
71 $checklist_id = $wpdb->insert_id;
72 return $checklist_id;
73 }
74
75 public static function create_checklist_item($args){
76 global $wpdb,$current_user,$wppmfunction;
77 $chk_items_values = array(
78 'checklist_id' => $args['checklist_id'],
79 'item_name' => $args['item_name'],
80 'checked'=>$args['checked'],
81 'members'=>$args['members'],
82 'due_date'=> $args['due_date']
83 );
84 $wpdb->insert($wpdb->prefix .'wppm_checklist_items', $chk_items_values);
85 $checklist_item_id = $wpdb->insert_id;
86 return $checklist_item_id;
87 }
88
89 public static function wppm_submit_task_comment($args){
90 global $wpdb;
91 $wpdb->insert($wpdb->prefix.'wppm_task_comment',$args);
92 $comment_id = $wpdb->insert_id;
93 return $comment_id;
94 }
95
96 public static function wppm_submit_task_comment_meta($args){
97 global $wpdb;
98 $wpdb->insert($wpdb->prefix.'wppm_task_comment_meta',$args);
99 $comment_meta_id = $wpdb->insert_id;
100 return $comment_meta_id;
101 }
102
103 public static function wppm_submit_proj_comment($args){
104 global $wpdb;
105 $wpdb->insert($wpdb->prefix.'wppm_project_comment',$args);
106 $comment_id = $wpdb->insert_id;
107 return $comment_id;
108 }
109
110 public static function wppm_submit_proj_comment_meta($args){
111 global $wpdb;
112 $wpdb->insert($wpdb->prefix.'wppm_project_comment_meta',$args);
113 $comment_meta_id = $wpdb->insert_id;
114 return $comment_meta_id;
115 }
116
117 // Random string
118 public static function getRandomString($length = 8) {
119 $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
120 $string = '';
121 for ($i = 0; $i < $length; $i++) {
122 $string .= $characters[mt_rand(0, strlen($characters) - 1)];
123 }
124 return $string;
125 }
126
127 public static function wppm_get_auth_code($id){
128 global $wpdb;
129 $id = esc_sql($id);
130 $auth_code = $wpdb->get_var( "SELECT task_auth_code FROM {$wpdb->prefix}wppm_task where id=$id" );
131 $auth_code = isset($auth_code) ? $auth_code : "";
132 return $auth_code;
133 }
134
135 public static function get_task_fields($task_id,$select_field){
136 global $wpdb;
137 $task_id = esc_sql($task_id);
138 $task_field_value = '';
139 if (apply_filters('wppm_get_select_field',true,$task_id,$select_field)) {
140 $get_task_field_value = $wpdb->get_var(" SELECT $select_field FROM {$wpdb->prefix}wppm_task WHERE id='$task_id' ");
141 $task_field_value = $get_task_field_value ? $get_task_field_value : '';
142 }
143 return stripslashes($task_field_value);
144 }
145
146 public static function get_project_fields($proj_id,$select_field){
147 global $wpdb;
148 $proj_id = esc_sql($proj_id);
149 $project_field_value = '';
150 if (apply_filters('wppm_get_select_proj_field',true,$proj_id,$select_field)) {
151 $get_project_field_value = $wpdb->get_var(" SELECT $select_field FROM {$wpdb->prefix}wppm_project WHERE id='$proj_id' ");
152 $project_field_value = $get_project_field_value ? $get_project_field_value : '';
153 }
154 return stripslashes($project_field_value);
155 }
156
157 public function get_task($task_id){
158 global $wpdb;
159 $task_data = array();
160 $task = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_task WHERE id='$task_id' ");
161 if( $task ){
162 $task_data = json_decode(json_encode($task), true);
163 }
164 return $task_data;
165 }
166
167 public function get_checklist($task_id){
168 global $wpdb;
169 $task_id = esc_sql($task_id);
170 $checklist_data = array();
171 $checklist = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_checklist WHERE task_id='$task_id' ");
172 if( $checklist ){
173 $checklist_data = json_decode(json_encode($checklist), true);
174 }
175 return $checklist_data;
176 }
177
178 public function get_checklist_items($checklist_id){
179 global $wpdb;
180 $checklist_items_data = array();
181 $checklist_id = esc_sql($checklist_id);
182 $checklist_items = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_checklist_items WHERE checklist_id='$checklist_id' ");
183 if( $checklist_items ){
184 $checklist_items_data = json_decode(json_encode($checklist_items), true);
185 }
186 return $checklist_items_data;
187 }
188
189 public function get_project($project_id){
190 global $wpdb;
191 $project_data = array();
192 $project_id = esc_sql($project_id);
193 $project = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project WHERE id='$project_id' ");
194 if( $project ){
195 $project_data = json_decode(json_encode($project), true);
196 }
197 return $project_data;
198 }
199
200 public function get_attachment($attachment_id){
201 global $wpdb;
202 $attachment_data = array();
203 $attachment_id = esc_sql($attachment_id);
204 $attachment = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_attachments WHERE id='$attachment_id' ");
205 if( $attachment ){
206 $attachment_data = json_decode(json_encode($attachment), true);
207 }
208 return $attachment_data;
209 }
210
211 public function has_permission($permission, $task_id){
212 global $current_user,$wppmfunction,$wpdb;
213 $task_id = esc_sql($task_id);
214 $wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
215 $wppm_edit_tasks_permission = get_option('wppm_default_edit_tasks_permission');
216 $wppm_allow_coworkers_add_checklist = get_option('wppm_allow_coworkers_add_checklist');
217 $wppm_allow_coworkers_create_task = get_option('wppm_allow_coworkers_create_task');
218 $wppm_allow_coworkers_change_status = get_option('wppm_allow_coworkers_change_status');
219 $wppm_allow_coworkers_assign_users = get_option('wppm_allow_coworkers_assign_users');
220 if(empty($comment_id)){
221 $comment_id = 0;
222 }
223 $task_data = $wppmfunction->get_task($task_id);
224 $task_comment = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_task_comment WHERE task_id = '$task_id' AND id = '$comment_id'");
225
226 if(!empty($task_data['project'])){
227 $project_id = $task_data['project'];
228 $project_id = esc_sql($project_id);
229 $project_data = $wppmfunction->get_project($project_id);
230 $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'");
231 $project_users = $wpdb->get_var("SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = '$project_id'");
232 $project_users_arr = explode(',',(string)$project_users);
233 }
234 $response = false;
235 $flag = false;
236 if(!empty($task_data)){
237 $co_worker = $task_data['users'];
238 $co_worker_array = explode(",",(string)$co_worker);
239 }
240 if((!empty($project_user_role)) && ($project_user_role == 1) && in_array($current_user->ID,$project_users_arr)){
241 $flag= true;
242 }
243 if($wppm_current_user_capability=='wppm_admin'){
244 $flag = true;
245 }
246 if(!empty($project_data) && $project_data['created_by']==$current_user->ID && $wppm_current_user_capability=='wppm_manager'){
247 $flag = true;
248 }
249 if(!empty($project_id)){
250 $project_id = esc_sql($project_id);
251 $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'");
252 }else{
253 $public_proj_meta ="";
254 }
255 switch ($permission) {
256 case 'change_status':
257 case 'view_task':
258 ((!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;
259 break;
260 case 'change_task_details':
261 (($flag==true) || ($current_user->ID == $task_data['created_by']) || $wppm_edit_tasks_permission == 1) ? $response = true: $response = false;
262 break;
263 case 'add_new_task':
264 (($flag==true) || $wppm_allow_coworkers_create_task == 1) ? $response = true: $response = false;
265 break;
266 case 'add_checklist':
267 (($flag==true) || $wppm_allow_coworkers_add_checklist == 1) ? $response = true: $response = false;
268 break;
269 case 'change_task_status':
270 (($flag==true) || $wppm_allow_coworkers_change_status == 1) ? $response = true: $response = false;
271 break;
272 case 'delete_task':
273 case 'clone_task':
274 (($flag==true) || ($current_user->ID == $task_data['created_by'])) ? $response = true: $response = false;
275 break;
276 case 'assign_task_users':
277 (($flag==true) || $wppm_allow_coworkers_assign_users == 1) ? $response = true: $response = false;
278 break;
279 case 'change_raised_by':
280 case 'edit_checklist':
281 case 'delete_checklist':
282 (($flag==true) ? $response = true: $response = false);
283 break;
284 }
285 return apply_filters( 'wppm_has_permission', $response, $task_id, $permission );
286 }
287
288 public function has_comment_permission($permission, $task_id,$comment_id){
289 global $current_user,$wppmfunction,$wpdb;
290 $task_id = esc_sql($task_id);
291 $comment_id = esc_sql( $comment_id );
292 $wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
293 if(empty($comment_id)){
294 $comment_id = 0;
295 }
296 $task_data = $wppmfunction->get_task($task_id);
297 $project_user = array();
298 $task_comment = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_task_comment WHERE task_id = '$task_id' AND id = '$comment_id'");
299
300 if(isset($task_data['project'])){
301 $project_id = $task_data['project'];
302 $project_id = esc_sql($project_id);
303 $project_data = $wppmfunction->get_project($project_id);
304 $project_user = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = '$project_id' AND user_id = '$current_user->ID'");
305 $project_users = $wpdb->get_var("SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = '$project_id'");
306 $project_users_arr = explode(',',(string)$project_users);
307 }
308 $response = false;
309 $flag = false;
310 if(!empty($task_data)){
311 $co_worker = $task_data['users'];
312 $co_worker_array = explode(",",(string)$co_worker);
313 }
314 if((!empty($project_user)) && ($project_user->role_id == 1) && in_array($current_user->ID,$project_users_arr)){
315 $flag= true;
316 }
317 if($wppm_current_user_capability=='wppm_admin'){
318 $flag = true;
319 }
320
321 if(!empty($project_data) && $project_data['created_by']==$current_user->ID && $wppm_current_user_capability=='wppm_manager'){
322 $flag = true;
323 }
324
325 switch ($permission) {
326 case 'delete_task_thread':
327 case 'edit_task_comment':
328 (($flag==true) || ($current_user->ID == $task_comment->created_by)) ? $response = true: $response = false;
329 break;
330 }
331 return apply_filters( 'wppm_has_comment_permission', $response, $task_id, $comment_id, $permission );
332 }
333
334 public function has_proj_comment_permission($permission, $proj_id,$comment_id){
335 global $current_user,$wppmfunction,$wpdb;
336 $wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
337 $proj_id = esc_sql($proj_id);
338 $comment_id = esc_sql($comment_id);
339 if(empty($comment_id)){
340 $comment_id = 0;
341 }
342 $project_user = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = '$proj_id' AND user_id = '$current_user->ID'");
343 $project_users = $wpdb->get_var("SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = '$proj_id'");
344 $project_users_arr = explode(',',(string)$project_users);
345 $proj_comment = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_comment WHERE proj_id = '$proj_id' AND id = '$comment_id'");
346 $response = false;
347 $flag = false;
348 $project_data = $wppmfunction->get_project($proj_id);
349 if((!empty($project_user)) && ($project_user->role_id == 1) && in_array($current_user->ID,$project_users_arr)){
350 $flag= true;
351 }
352 if($wppm_current_user_capability=='wppm_admin'){
353 $flag = true;
354 }
355 if(!empty($project_data) && $project_data['created_by']==$current_user->ID && $wppm_current_user_capability=='wppm_manager'){
356 $flag = true;
357 }
358 switch ($permission) {
359 case 'delete_proj_thread':
360 case 'edit_proj_comment':
361 (($flag==true) || ($current_user->ID == $proj_comment->created_by)) ? $response = true: $response = false;
362 break;
363 }
364 return apply_filters( 'wppm_has_proj_comment_permission', $response, $proj_id, $comment_id, $permission );
365 }
366
367 public function has_project_permission($permission,$project_id){
368 global $current_user,$wppmfunction,$wpdb ;
369 $project_data = $wppmfunction->get_project($project_id);
370 $project_id = esc_sql($project_id);
371 $project_user = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = '$project_id' AND user_id = '$current_user->ID'");
372 $project_users = $wpdb->get_var("SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = '$project_id'");
373 $project_users_arr = explode(',',(string)$project_users);
374 $user = wp_get_current_user();
375 $wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
376 if(!empty($project_data)){
377 $co_worker = $project_data['users'];
378 $co_worker_array = explode(",",(string)$co_worker);
379 }
380 switch ($permission) {
381 case 'view_project':
382 ((!empty($co_worker_array)) && (in_array($current_user->ID,$co_worker_array )) )? $response = true: $response = false;
383 break;
384 case 'change_project_status':
385 case 'assign_project_users':
386 case 'change_project_raised_by':
387 case 'change_project_details':
388 case 'delete_project':
389 $flag = false;
390 if( (!empty($project_user)) && ($project_user->role_id == 1) && in_array($current_user->ID,$project_users_arr)){
391 $flag = true;
392 }
393
394 (((!empty($co_worker_array)) && (in_array($current_user->ID,$co_worker_array) && $flag==true) || $wppm_current_user_capability == 'wppm_admin')) ? $response = true: $response = false;
395 break;
396 }
397 return apply_filters( 'wppm_has_project_permission', $response, $project_id, $permission );
398 }
399
400 public function change_status($task_id, $status_id){
401 global $wpdb,$wppmfunction;
402 $task_data = $wppmfunction->get_task($task_id);
403 $prev_status = $task_data['status'];
404 $values=array(
405 'status'=>$status_id
406 );
407 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
408 $old_task_status_meta = $wppmfunction->get_task_meta($task_id,'old_task_status',true);
409 if(!empty($old_task_status_meta)){
410 $wppmfunction->delete_task_meta($task_id,'old_task_status');
411 }
412 $wppmfunction->add_task_meta($task_id,'old_task_status',$prev_status);
413
414 do_action('wppm_set_change_task_status', $task_id, $status_id, $prev_status);
415 }
416
417 public function change_raised_by($task_id, $user_id){
418 global $wpdb;
419 $values=array(
420 'created_by'=>$user_id
421 );
422 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
423 }
424
425 public function change_task_label($task_id, $task_label){
426 global $wpdb;
427 $values=array(
428 'task_name'=>stripslashes($task_label)
429 );
430 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
431 }
432
433 public function change_task_project_label($task_id, $project_label){
434 global $wpdb;
435 $values=array(
436 'project'=>$project_label
437 );
438 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
439 }
440
441 public function change_start_date($task_id, $task_start_date){
442 global $wpdb;
443 $values=array(
444 'start_date'=>$task_start_date
445 );
446 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
447 }
448
449 public function change_end_date($task_id, $task_end_date){
450 global $wpdb;
451 $values=array(
452 'end_date'=>$task_end_date
453 );
454 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
455 }
456
457 public function change_priority($task_id, $task_priority){
458 global $wpdb;
459 $values=array(
460 'priority'=>$task_priority
461 );
462 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
463 }
464
465 public function change_description($task_id, $task_description){
466 global $wpdb;
467 $values=array(
468 'description'=>$task_description
469 );
470 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
471 }
472
473 public function change_project($task_id,$proj_id){
474 global $wpdb,$wppmfunction;
475 $task_data = $wppmfunction->get_task($task_id);
476 $old_proj = $task_data['project'];
477 $old_proj = esc_sql( $old_proj);
478 $proj_id = esc_sql( $proj_id);
479 $project_data = $wppmfunction->get_project($proj_id);
480 $task_assign_users = $task_data['users'];
481 $tusers_array = array();
482 if(!empty($task_data['users'])){
483 $task_users_array = explode(",",(string)$task_assign_users);
484 }
485 if(!empty($project_data['users'])){
486 $project_users = explode(",",(string)$project_data['users']);
487 }
488 if(!empty($project_users)){
489 if(!empty($task_users_array)){
490 foreach($task_users_array as $tuser){
491 if(!in_array($tuser,$project_users)){
492 $wpdb->delete( $wpdb->prefix.'wppm_project_users', array( 'proj_id' => $proj_id,'user_id'=>$tuser) );
493 }
494 elseif(in_array($tuser,$project_users)){
495 $tusers_array[] = $tuser;
496 $sql = 'SELECT role_id FROM ' . $wpdb->prefix . 'wppm_project_users WHERE proj_id = ' . $old_proj .' AND user_id = '.$tuser;
497 $old_proj_user_role = $wpdb->get_var( $sql );
498 $sql = 'SELECT role_id FROM ' . $wpdb->prefix . 'wppm_project_users WHERE proj_id = ' . $proj_id .' AND user_id = '.$tuser;
499 $proj_users_role = $wpdb->get_var( $sql );
500 if(!empty( $old_proj_user_role) && $old_proj_user_role!=$proj_users_role){
501 $value=array(
502 'role_id'=>$proj_users_role
503 );
504 $wpdb->update($wpdb->prefix.'wppm_project_users', $value, array('proj_id'=>$proj_id, 'user_id'=>$tuser));
505 }
506 }
507 }
508 }
509 }
510 $tusers = implode(",",$tusers_array);
511 $values=array(
512 'project'=>$proj_id,
513 'users'=>$tusers
514 );
515 $wpdb->update($wpdb->prefix.'wppm_task', $values, array('id'=>$task_id));
516 }
517
518 public function get_task_comment($comment_id){
519 global $wpdb;
520 $task_comment_data = array();
521 $comment_id = esc_sql($comment_id);
522 $task_comment = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_task_comment WHERE id='$comment_id' ");
523 if( $task_comment ){
524 $task_comment_data = json_decode(json_encode($task_comment), true);
525 }
526 return $task_comment_data;
527 }
528
529 public function get_proj_comment($comment_id){
530 global $wpdb;
531 $project_comment_data = array();
532 $comment_id = esc_sql($comment_id);
533 $project_comment = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_comment WHERE id='$comment_id' ");
534 if( $project_comment ){
535 $project_comment_data = json_decode(json_encode($project_comment), true);
536 }
537 return $project_comment_data;
538 }
539
540 public function change_task_comment($comment_id,$comment_body){
541 global $wpdb;
542 $comment_id = esc_sql($comment_id);
543 $comment_body = esc_sql($comment_body);
544 $values=array(
545 'body'=>$comment_body
546 );
547 $wpdb->update($wpdb->prefix.'wppm_task_comment', $values, array('id'=>$comment_id));
548 }
549
550 public function change_proj_comment($comment_id,$comment_body){
551 global $wpdb;
552 $comment_id = esc_sql($comment_id);
553 $comment_body = esc_sql($comment_body);
554 $values=array(
555 'body'=>$comment_body
556 );
557 $wpdb->update($wpdb->prefix.'wppm_project_comment', $values, array('id'=>$comment_id));
558 }
559
560 public function change_project_label($project_id,$project_label){
561 global $wpdb;
562 $project_id = esc_sql($project_id);
563 $project_label = esc_sql($project_label);
564 $values=array(
565 'project_name'=>$project_label
566 );
567 $wpdb->update($wpdb->prefix.'wppm_project', $values, array('id'=>$project_id));
568 }
569
570 public function change_project_start_date($project_id, $project_start_date){
571 global $wpdb;
572 $project_id = esc_sql($project_id);
573 $project_start_date = esc_sql($project_start_date);
574 $values=array(
575 'start_date'=>$project_start_date
576 );
577 $wpdb->update($wpdb->prefix.'wppm_project', $values, array('id'=>$project_id));
578 }
579
580 public function change_project_end_date($project_id, $project_end_date){
581 global $wpdb;
582 $project_id = esc_sql($project_id);
583 $project_end_date = esc_sql($project_end_date);
584 $values=array(
585 'end_date'=>$project_end_date
586 );
587 $wpdb->update($wpdb->prefix.'wppm_project', $values, array('id'=>$project_id));
588 }
589
590 public function change_category($project_id, $project_category){
591 global $wpdb;
592 $project_id = esc_sql($project_id);
593 $project_category = esc_sql($project_category);
594 $values=array(
595 'cat_id'=>$project_category
596 );
597 $wpdb->update($wpdb->prefix.'wppm_project', $values, array('id'=>$project_id));
598 }
599
600 public function change_project_description($project_id, $project_description){
601 global $wpdb;
602 $project_id = esc_sql($project_id);
603 $project_description = esc_sql($project_description);
604 $values=array(
605 'description'=>$project_description
606 );
607 $wpdb->update($wpdb->prefix.'wppm_project', $values, array('id'=>$project_id));
608 }
609
610 public function change_project_status($project_id,$status_id){
611 global $wpdb,$wppmfunction,$current_user;
612 $change_status_value= array();
613 $proj_data = $wppmfunction->get_project($project_id);
614 $prev_status = esc_sql($proj_data['status']);
615 $project_id = esc_sql($project_id);
616 $status_id = esc_sql($status_id);
617 $values=array(
618 'status'=>$status_id
619 );
620 $wpdb->update($wpdb->prefix.'wppm_project', $values, array('id'=>$project_id));
621 $old_project_status_meta = $wppmfunction->get_project_meta($project_id,'old_project_status',true);
622 if(!empty($old_project_status_meta)){
623 $wppmfunction->delete_project_meta($project_id,'old_project_status');
624 }
625 $change_status_value = array('prev_status'=>"$prev_status",'new_status'=>"$status_id");
626 $change_status_obj = serialize($change_status_value);
627 $log_values = array('proj_id'=>$project_id,'body'=>$change_status_obj,'attachment_ids'=>"",'create_time'=>date("Y-m-d h:i:sa"),'created_by'=>$current_user->ID );
628 $wpdb->insert($wpdb->prefix . 'wppm_project_comment',$log_values);
629 $log_id = esc_sql($wpdb->insert_id);
630 $proj_log_values = array('proj_id'=>$project_id,'comment_id'=>$log_id,'comment_type'=>'change_proj_status');
631 $wpdb->insert($wpdb->prefix . 'wppm_project_comment_meta',$proj_log_values);
632 $wppmfunction->add_project_meta($project_id,'old_project_status',$prev_status);
633 do_action('wppm_set_change_project_status', $project_id, $status_id, $prev_status);
634 }
635
636 public function change_project_raised_by($project_id, $user_id){
637 global $wpdb;
638 $project_id = esc_sql($project_id);
639 $user_id = esc_sql($user_id);
640 $values=array(
641 'created_by'=>$user_id
642 );
643 $wpdb->update($wpdb->prefix.'wppm_project', $values, array('id'=>$project_id));
644 }
645
646 // Email Notification types
647 public function get_email_notification_types(){
648 $notification_types = array(
649 'new_project'=>__('New Project','taskbuilder'),
650 'new_task'=>__('New Task','taskbuilder'),
651 'change_project_status' => __('Change Project Status','taskbuilder'),
652 'change_task_status' => __('Change Task Status','taskbuilder'),
653 'change_project_assign_users' => __('Change Project Assign Users','taskbuilder'),
654 'change_task_assign_users' => __('Change Task Assign Users','taskbuilder'),
655 'new_discussion' => __('New Comment','taskbuilder'),
656 'new_proj_discussion' =>__('New Project Comment','taskbuilder')
657 );
658 return apply_filters('wppm_en_types',$notification_types);
659 }
660
661 public function check_rtl(){
662 $rtl_locale = array('ar','ary','ckb','haz','he_IL','fa_IR','ps','ur','ug_CN');
663 if(in_array(get_locale(),$rtl_locale)){
664 return 'rtl';
665 }else{
666 return 'ltr';
667 }
668 }
669
670 public function add_project_meta($proj_id,$meta_key,$meta_value){
671 global $wpdb;
672 $wpdb->insert(
673 $wpdb->prefix . 'wppm_project_meta',
674 array(
675 'project_id' => $proj_id,
676 'meta_key' => $meta_key,
677 'meta_value' =>$meta_value
678 ));
679 }
680
681 public function add_task_meta($task_id,$meta_key,$meta_value){
682 global $wpdb;
683 $task_id = esc_sql($task_id);
684 $meta_key = esc_sql($meta_key);
685 $meta_value = esc_sql($meta_value);
686 $wpdb->insert(
687 $wpdb->prefix . 'wppm_task_meta',
688 array(
689 'task_id' => $task_id,
690 'meta_key' => $meta_key,
691 'meta_value' =>$meta_value
692 ));
693 }
694
695 public function get_project_meta($project_id,$meta_key,$flag = false){
696 global $wpdb,$wppmfunction;
697 $project_id = esc_sql($project_id);
698 $meta_key = esc_sql($meta_key);
699 if($flag){
700 $get_meta = $wpdb->get_var("SELECT meta_value FROM {$wpdb->prefix}wppm_project_meta WHERE project_id = '$project_id' AND meta_key = '$meta_key' ");
701 $project_meta = isset($get_meta) ? stripslashes($get_meta) : '';
702
703 } else {
704 $project_meta = array();
705 $results = $wpdb->get_results("SELECT meta_value FROM {$wpdb->prefix}wppm_project_meta WHERE project_id = '$project_id' AND meta_key = '$meta_key'");
706 if( (!empty($results)) ){
707 foreach ($results as $result) {
708 if(!empty($result)){
709 $project_meta[]= stripslashes($result->meta_value);
710 }
711 }
712 }
713 }
714 return $project_meta;
715 }
716
717 public function get_task_meta($task_id,$meta_key,$flag = false){
718 global $wpdb,$wppmfunction;
719 $task_id = esc_sql($task_id);
720 $meta_key = esc_sql($meta_key);
721 if($flag){
722 $get_meta = $wpdb->get_var("SELECT meta_value FROM {$wpdb->prefix}wppm_task_meta WHERE task_id = '$task_id' AND meta_key = '$meta_key' ");
723 $task_meta = isset($get_meta) ? stripslashes($get_meta) : '';
724
725 } else {
726 $task_meta = array();
727 $results = $wpdb->get_results("SELECT meta_value FROM {$wpdb->prefix}wppm_task_meta WHERE task_id = '$task_id' AND meta_key = '$meta_key'");
728 if( (!empty($results)) ){
729 foreach ($results as $result) {
730 if(!empty($result)){
731 $task_meta[]= stripslashes($result->meta_value);
732 }
733 }
734 }
735 }
736 return $task_meta;
737 }
738
739 public function get_previously_assigned_users($project_id){
740 global $wpdb,$wppmfunction;
741 $prev_assigned_users = $wppmfunction->get_project_meta($project_id,'prev_assigned_users');
742 $user_emails = array();
743 if(!empty($prev_assigned_users)){
744 foreach ($prev_assigned_users as $user) {
745 $userdata = get_userdata($user);
746 $user_emails[] = $userdata->user_email;
747
748 }
749 }
750 return apply_filters( 'wppm_get_prev_assigned_users_emails', $user_emails ,$project_id);
751 }
752
753 public function get_project_creator_email($project_id){
754 global $wpdb,$wppmfunction;
755 $project_data = $wppmfunction->get_project($project_id,'created_by');
756 $userdata = get_userdata($project_data['created_by']);
757 if(!empty( $userdata)){
758 $proj_creator_email[] = $userdata->user_email;
759 }
760 return apply_filters( 'wppm_get_project_creator_email', $proj_creator_email ,$project_id);
761 }
762
763 public function get_task_creator_email($task_id){
764 global $wpdb,$wppmfunction;
765 $task_data = $wppmfunction->get_task($task_id,'created_by');
766 $userdata = get_userdata($task_data['created_by']);
767 if(!empty( $userdata)){
768 $task_creator_email[] = $userdata->user_email;
769 }
770 return apply_filters( 'wppm_get_task_creator_email', $task_creator_email ,$task_id);
771 }
772
773 public function get_previously_assigned_task_users($task_id){
774 global $wpdb,$wppmfunction;
775 $prev_assigned_task_users = $wppmfunction->get_task_meta($task_id,'prev_assigned_task_users');
776 $user_emails = array();
777 if(!empty($prev_assigned_task_users)){
778 foreach ($prev_assigned_task_users as $user) {
779 if(!empty($user)){
780 $userdata = get_userdata($user);
781 $user_emails[] = $userdata->user_email;
782 }
783 }
784 }
785 return apply_filters( 'wppm_get_prev_assigned_task_users_emails', $user_emails ,$task_id);
786 }
787 /**
788 * Update project meta for project
789 */
790 function update_project_meta($project_id ,$meta_key ,$meta_value){
791 global $wpdb;
792 $project_id = esc_sql($project_id);
793 $meta_key = esc_sql($meta_key);
794 $results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_project_meta WHERE project_id = '$project_id' AND meta_key = $meta_key");
795 $wpdb->update($wpdb->prefix.'wppm_project_meta', $meta_value, array('project_id'=>$project_id,'meta_key' => $meta_key));
796 }
797
798 /**
799 * Update task meta for task
800 */
801 function update_task_meta($task_id ,$meta_key ,$meta_value){
802 global $wpdb;
803 $task_id = esc_sql($task_id);
804 $meta_key = esc_sql($meta_key);
805 $results = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_task_meta WHERE task_id = '$task_id' AND meta_key = '$meta_key'");
806 $wpdb->update($wpdb->prefix.'wppm_task_meta', $meta_value, array('task_id'=>"$task_id",'meta_key' => "$meta_key"));
807 }
808
809 function delete_project_meta($project_id ,$meta_key){
810 global $wpdb;
811 $project_id = esc_sql($project_id);
812 $meta_key = esc_sql($meta_key);
813 $wpdb->delete( $wpdb->prefix.'wppm_project_meta', array( 'project_id' => $project_id,'meta_key'=>$meta_key) );
814 }
815
816 function delete_task_meta($task_id ,$meta_key){
817 global $wpdb;
818 $task_id = esc_sql($task_id);
819 $meta_key = esc_sql($meta_key);
820 $wpdb->delete( $wpdb->prefix.'wppm_task_meta', array( 'task_id' => $task_id,'meta_key'=>$meta_key) );
821 }
822
823 public function replace_macro($str,$project_id){
824 include WPPM_ABSPATH . 'includes/replace_macro.php';
825 return $str;
826 }
827
828 public function replace_task_macro($str,$task_id){
829 include WPPM_ABSPATH . 'includes/replace_task_macro.php';
830 return $str;
831 }
832
833 public function get_old_project_status_name($id){
834 global $wppmfunction, $wpdb;
835 $old_project_status = $wppmfunction->get_project_meta($id,'old_project_status',true);
836 $old_project_status = esc_sql($old_project_status);
837 $status_name = $wpdb->get_var("SELECT name FROM {$wpdb->prefix}wppm_project_statuses WHERE id ='$old_project_status'");
838 return $status_name;
839 }
840
841 public function get_new_project_status_name($status_id){
842 global $wpdb;
843 $status_id = esc_sql($status_id);
844 $status_name = $wpdb->get_var("SELECT name FROM {$wpdb->prefix}wppm_project_statuses WHERE id ='$status_id'");
845 return $status_name;
846 }
847
848 public function get_old_task_status_name($task_id){
849 global $wppmfunction, $wpdb;
850 $old_task_status = $wppmfunction->get_task_meta($task_id,'old_task_status',true);
851 $old_task_status = esc_sql($old_task_status);
852 $status_name = $wpdb->get_var("SELECT name FROM {$wpdb->prefix}wppm_task_statuses WHERE id ='$old_task_status'");
853 return $status_name;
854 }
855
856 public function get_new_task_status_name($status_id){
857 global $wpdb;
858 $status_id = esc_sql($status_id);
859 $status_name = $wpdb->get_var("SELECT name FROM {$wpdb->prefix}wppm_task_statuses WHERE id ='$status_id'");
860 return $status_name;
861 }
862
863 public function get_project_category_name($cat_id){
864 global $wpdb;
865 $cat_id = esc_sql($cat_id);
866 if(!empty($cat_id)){
867 $cat_name = $wpdb->get_var("SELECT name FROM {$wpdb->prefix}wppm_project_categories WHERE id ='$cat_id'");
868 }else{
869 $cat_name = "";
870 }
871 return $cat_name;
872 }
873
874 public function get_project_assigned_users_names($project_id){
875 global $wppmfunction;
876 $wppm_project_data = $wppmfunction->get_project($project_id);
877 if(!empty($wppm_project_data['users'])){
878 $wppm_project_assign_users_array = explode(",", $wppm_project_data['users']);
879 }else{
880 $wppm_project_assign_users_array = array();
881 }
882 $users_names = array();
883 if(!empty($wppm_project_assign_users_array)){
884 foreach ($wppm_project_assign_users_array as $user_id) {
885 if(!empty($user_id)){
886 $userdata = get_userdata( $user_id );
887 if(!empty($userdata)){
888 $users_names[] = $userdata->display_name;
889 }
890 }
891 }
892 }
893 return implode(', ', $users_names);
894 }
895
896 public function get_task_assigned_users_names($task_id){
897 global $wppmfunction;
898 $wppm_task_data = $wppmfunction->get_task($task_id);
899 $wppm_task_assign_users_array = explode(",", (string)$wppm_task_data['users']);
900 $users_names = array();
901 if(!empty($wppm_task_assign_users_array)){
902 foreach ($wppm_task_assign_users_array as $user_id) {
903 if(!empty($user_id)){
904 $userdata = get_userdata( $user_id );
905 if(!empty($userdata)){
906 $users_names[] = $userdata->display_name;
907 }
908 }
909 }
910 }
911 return implode(', ', $users_names);
912 }
913
914 public function get_project_previously_assigned_users_names($project_id){
915 global $wppmfunction;
916 $wppm_project_assign_users = $wppmfunction->get_project_meta($project_id,'prev_assigned_users');
917 $users_names = array();
918 if(!empty($wppm_project_assign_users)){
919 foreach ($wppm_project_assign_users as $user) {
920 if(!empty($user)){
921 $userdata = get_userdata( $user );
922 $users_names[] = $userdata->display_name;
923 }
924 }
925 }
926 return implode(', ', $users_names);
927 }
928
929 public function get_task_previously_assigned_users_names($task_id){
930 global $wppmfunction;
931 $wppm_task_assign_users = $wppmfunction->get_task_meta($task_id,'prev_assigned_task_users');
932 $users_names = array();
933 if(!empty($wppm_task_assign_users)){
934 foreach ($wppm_task_assign_users as $user) {
935 if(!empty($user)){
936 $userdata = get_userdata( $user );
937 $users_names[] = $userdata->display_name;
938 }
939 }
940 }
941 return implode(', ', $users_names);
942 }
943
944 public function get_task_priority_name($priority){
945 global $wpdb;
946 $priority = esc_sql($priority);
947 $priority_name = $wpdb->get_var("SELECT name FROM {$wpdb->prefix}wppm_task_priorities WHERE id ='$priority'");
948 return $priority_name;
949 }
950
951 public function get_last_comment_user_name($task_id){
952 global $wpdb;
953 $task_id = esc_sql($task_id);
954 $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')");
955 if(!empty($task_comment_creator)){
956 $user = get_userdata( $task_comment_creator );
957 return $user->display_name;
958 }
959 }
960
961 public function get_last_comment_body($task_id){
962 global $wpdb;
963 $task_id = esc_sql($task_id);
964 $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')");
965 return $task_comment;
966 }
967
968 public function create_duplicate_task($ptask_id, $project_id,$ajax_nonce){
969 include WPPM_ABSPATH . 'includes/admin/tasks/open_task/wppm_set_clone_task.php';
970 }
971
972 public function get_last_comment_proj_user_name($project_id){
973 global $wpdb;
974 $project_id = esc_sql($project_id);
975 $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')");
976 if(!empty($proj_comment_creator)){
977 $user = get_userdata( $proj_comment_creator );
978 return $user->display_name;
979 }
980 }
981
982 public function get_proj_comment_body($project_id){
983 global $wpdb;
984 $project_id = esc_sql($project_id);
985 $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')");
986 return $proj_comment;
987 }
988
989 public function wppm_user_role(){
990 $user_role = array(
991 'wppm_admin' => array(
992 'label' => __('WPPM Administrator','taskbuilder'),
993 ),
994 'wppm_manager' => array(
995 'label' => __('WPPM Manager','taskbuilder'),
996 )
997 );
998 return $user_role;
999 }
1000 }
1001
1002
1003 endif;
1004 $GLOBALS['wppmfunction'] = new WPPM_Functions();