PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 6.0.6
Taskbuilder – Project Management & Task Management Tool With Kanban Board v6.0.6
6.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 All 58 releases
← All changes | includes/admin/tasks/open_task/wppm_set_clone_task.php +93 -34 1.0.56.0.6 View file →
@@ -1,37 +1,69 @@
1 1 <?php
2 2 if ( ! defined( 'ABSPATH' ) ) {
3 3 exit; // Exit if accessed directly
4 4 }
5 -global $wpdb,$current_user,$wppmfunction;
6 -
7 -$prev_task_id = isset($_POST['task_id']) ? sanitize_text_field($_POST['task_id']) : '' ;
5 +global $wpdb, $current_user, $wppmfunction;
6 +$is_internal_clone = ! empty( $internal_code_flag );
7 +if ( ! $is_internal_clone ) {
8 + if (
9 + empty( $_POST['_ajax_nonce'] ) ||
10 + ! wp_verify_nonce(
11 + sanitize_text_field(
12 + wp_unslash( $_POST['_ajax_nonce'] )
13 + ),
14 + 'wppm_set_clone_task'
15 + )
16 + ) {
17 + wp_send_json_error(
18 + array(
19 + 'message' => esc_html__(
20 + 'Security check failed.',
21 + 'taskbuilder'
22 + )
23 + )
24 + );
25 + }
26 +}
27 +$prev_task_id = isset($_POST['task_id']) ? absint(sanitize_text_field(wp_unslash($_POST['task_id']))) : $ptask_id ;
8 28 $task = $wppmfunction->get_task($prev_task_id);
9 -if (!(($current_user->ID && $current_user->has_cap('manage_options')) || $wppmfunction->has_permission('clone_task',$task['id']))) {
10 - exit;
29 +if ( empty($task) ) {
30 + wp_send_json_error('Invalid task', 404);
11 31 }
32 +if (!(($current_user->has_cap('manage_options')) || $wppmfunction->has_permission('clone_task',$task['id']))) {
33 + wp_send_json_error('Unauthorized', 403);
34 +}
35 +$wppm_default_duplicate_project_email_notification = get_option('wppm_default_duplicate_project_email_notification');
12 36 $checklists = $wppmfunction->get_checklist($prev_task_id);
13 -$task_project = $task['project'];
14 -$task_comments = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_task_comment WHERE task_id=$prev_task_id ");
15 -$task_name = isset($_POST['task_name']) ? stripslashes(sanitize_text_field($_POST['task_name'])) : $task->task_name ;
16 -$now = date("Y-m-d H:i:s");
17 -$attachment_id = array();
37 +$task_project = isset($project_id) ? $project_id : $task['project'];
38 +$prev_task_id = esc_sql($prev_task_id);
39 +$task_comments = $wpdb->get_results(
40 + $wpdb->prepare(
41 + "SELECT * FROM {$wpdb->prefix}wppm_task_comment WHERE task_id = %d",
42 + $prev_task_id
43 + )
44 +);
45 +$task_name = isset($_POST['task_name']) ? stripslashes(sanitize_text_field(wp_unslash($_POST['task_name']))) : $task['task_name'] ;
46 +$now = wp_date("Y-m-d H:i:s");
18 47 $values = array(
19 - 'created_by'=>$current_user->ID,
48 + 'created_by'=>$task['created_by'],
20 49 'name'=>$task_name,
21 50 'wppm_task_description'=>$task['description'],
22 - 'wppm_task_project'=>$task['project'],
51 + 'wppm_task_project'=>$task_project,
23 52 'wppm_task_start_date'=>$task['start_date'],
24 53 'wppm_task_end_date'=>$task['end_date'],
25 54 'status'=>$task['status'],
26 55 'wppm_create_task_priority'=>$task['priority'],
27 56 'user_names'=>explode(",",$task['users']),
28 - 'date_created'=>date("Y-m-d h:i:sa"),
57 + 'date_created'=>$task['date_created'],
29 58 'task_auth_code'=> $wppmfunction->getRandomString(10),
30 - 'active'=>1
59 + 'active'=>1,
60 + 'parent_task_id'=>isset($task['parent_task_id']) ? $task['parent_task_id'] : 0
31 61 );
32 62 $task_id = $wppmfunction->create_task($values);
33 -do_action('wppm_after_task_created', $task_id);
63 +if(!isset($project_id) || $wppm_default_duplicate_project_email_notification==1){
64 + do_action('wppm_after_task_created', $task_id);
65 +}
34 66 if(!empty($checklists)){
35 67 foreach($checklists as $checklist){
36 68 $chk_values = array(
37 69 'task_id' => $task_id,
@@ -40,8 +72,10 @@
40 72 );
41 73 $checklist_id = $wppmfunction->create_checklist($chk_values);
42 74 $checklist_items = $wppmfunction->get_checklist_items($checklist['id']);
43 75 if(!empty($checklist_items)){
76 + $chk_items_values = array();
77 + $checklist_item_id = array();
44 78 foreach($checklist_items as $checklist_item){
45 79 $chk_items_values = array(
46 80 'checklist_id' => $checklist_id,
47 81 'item_name' => $checklist_item['item_name'],
@@ -48,32 +82,44 @@
48 82 'checked'=>$checklist_item['checked'],
49 83 'members'=>$checklist_item['members'],
50 84 'due_date'=> $checklist_item['due_date']
51 85 );
52 - $checklist_item_id = $wppmfunction->create_checklist_item($chk_items_values);
86 + if(!empty($chk_items_values)){
87 + $checklist_item_id[] = $wppmfunction->create_checklist_item($chk_items_values);
88 + }
53 89 }
90 +
54 91 }
55 92 }
56 93 }
57 94 if(!empty($task_comments)){
95 + $args = array();
58 96 foreach($task_comments as $task_comment){
59 - $task_comment_data = json_decode(json_encode($task_comment), true);
97 + $task_comment_data = json_decode(wp_json_encode($task_comment), true);
60 98 $attachment_ids = $task_comment_data['attachment_ids'];
61 99 $attachment_ids_array = explode(",",$attachment_ids);
62 - foreach($attachment_ids_array as $attach_id){
63 - $attachment_data = $wppmfunction->get_attachment($attach_id);
64 - $values=array(
65 - 'name'=>$attachment_data['name'],
66 - 'file_name'=> $attachment_data['file_name'],
67 - 'file_path'=>$attachment_data['file_path'],
68 - 'is_image'=>$attachment_data['is_image'],
69 - 'is_active'=>1,
70 - 'is_uploaded'=>0,
71 - 'date_created'=>$now
72 - );
73 - $wpdb->insert($wpdb->prefix.'wppm_attachments',$values);
74 - $attachment_id[] = $wpdb->insert_id;
75 - }
100 + if(!empty($attachment_ids_array)){
101 + $attachment_id = array();
102 + $values = array();
103 + foreach($attachment_ids_array as $attach_id){
104 + if(!empty($attach_id)){
105 + $attachment_data = $wppmfunction->get_attachment($attach_id);
106 + $values=array(
107 + 'name'=>!empty($attachment_data['name']) ? $attachment_data['name'] : '',
108 + 'file_name'=> !empty($attachment_data['file_name']) ? $attachment_data['file_name'] : '',
109 + 'file_path'=>!empty($attachment_data['file_path']) ? $attachment_data['file_path'] : '',
110 + 'is_image'=>!empty($attachment_data['is_image']) ? $attachment_data['is_image'] : 0,
111 + 'is_active'=>1,
112 + 'is_uploaded'=>0,
113 + 'date_created'=>!empty($attachment_data['date_created']) ? $attachment_data['date_created'] : ''
114 + );
115 + if(!empty($values)){
116 + $wpdb->insert($wpdb->prefix.'wppm_attachments',$values);
117 + $attachment_id[] = $wpdb->insert_id;
118 + }
119 + }
120 + }
121 + }
76 122 $args = array(
77 123 'task_id'=>$task_id,
78 124 'body'=>$task_comment_data['body'],
79 125 'attachment_ids' =>implode(',',$attachment_id) ,
@@ -78,9 +124,22 @@
78 124 'body'=>$task_comment_data['body'],
79 125 'attachment_ids' =>implode(',',$attachment_id) ,
80 126 'create_time'=>$task_comment_data['create_time'],
81 127 'created_by'=>$task_comment_data['created_by']
82 - );
83 - $comment_id = $wppmfunction->wppm_submit_task_comment($args);
128 + );
129 + if(!empty($args)){
130 + $comment_id = $wppmfunction->wppm_submit_task_comment($args);
131 + $task_comm_id = esc_sql($task_comment->id);
132 + $task_comment_type = $wpdb->get_var( $wpdb->prepare("SELECT comment_type FROM {$wpdb->prefix}wppm_task_comment_meta WHERE task_id = %d AND comment_id = %d",$prev_task_id,$task_comm_id));
133 + if(!empty($task_comment_type)){
134 + $meta_values = array(
135 + 'task_id'=>$task_id,
136 + 'comment_id'=>$comment_id,
137 + 'comment_type'=>$task_comment_type
138 + );
139 + $comment_meta_id = $wppmfunction->wppm_submit_task_comment_meta($meta_values);
140 + }
141 + }
84 142 }
85 143 }
86 -do_action("wppm_after_task_clone",$prev_task_id,$task_id);
144 +do_action("wppm_after_task_clone",$prev_task_id,$task_id);
145 +return $task_id;