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