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_edit_task_details.php +201 -201 6.0.26.0.6 View file →
@@ -1,201 +1,201 @@
1 -<?php
2 -if ( ! defined( 'ABSPATH' ) ) {
3 - exit; // Exit if accessed directly
4 -}
5 -
6 -global $wpdb,$wppmfunction,$current_user;
7 -$task_id = isset($_POST['task_id']) ? intval(sanitize_text_field(wp_unslash($_POST['task_id']))) : '' ;
8 -$proj_id = isset($_POST['proj_id']) ? intval(sanitize_text_field(wp_unslash($_POST['proj_id']))) : '' ;
9 -$current_project_id = isset($_POST['project_id']) ? intval(sanitize_text_field(wp_unslash($_POST['project_id']))) : '' ;
10 -if (!(($current_user->ID && $current_user->has_cap('manage_options')) || $wppmfunction->has_permission('change_task_details',$task_id))) {exit;}
11 -$task_data = $wppmfunction->get_task($task_id);
12 -$settings = get_option("wppm-ap-modal");
13 -$orderby_proj_sql = (sanitize_sql_orderby( "project_name" ));
14 -$project_data = $wppmfunction->get_project(intval(sanitize_text_field($task_data['project'])));
15 -if($current_user->has_cap('manage_options')){
16 - $projects = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_project ORDER BY $orderby_proj_sql");
17 -}else{
18 - $sql = $wpdb->prepare(
19 - "SELECT Proj.*
20 - FROM {$wpdb->prefix}wppm_project AS Proj
21 - LEFT JOIN {$wpdb->prefix}wppm_project_meta AS proj_meta
22 - ON Proj.id = proj_meta.project_id
23 - WHERE FIND_IN_SET(%d, Proj.users)
24 - OR (proj_meta.meta_key = 'public_project' AND proj_meta.meta_value = 1)
25 - GROUP BY Proj.id",
26 - $current_user->ID
27 - );
28 -// 4️⃣ Append ORDER BY (safe because we whitelisted columns)
29 -$sql .= " ORDER BY $orderby_proj_sql";
30 -
31 -// 5️⃣ Execute
32 -$projects = $wpdb->get_results($sql);
33 -}
34 -$priority_id = sanitize_text_field($task_data['priority']);
35 -$project_id = sanitize_text_field($task_data['project']);
36 -
37 -$priorities = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_task_priorities");
38 -ob_start();
39 -?>
40 -<form id="frm_get_edit_task_deatils" method="post">
41 - <div class="row" style="padding-left:2px;">
42 - <div class="col-sm-12">
43 - <label class="wppm_edit_task_label" for="wppm_edit_task_label"><?php echo esc_html_e('Task','taskbuilder') ?> </label>
44 - </div>
45 - </div>
46 - <div class="row" style="padding-left:2px;">
47 - <div class="col-sm-12">
48 - <input type="text" class="wppm_edit_task_label form-control" name="wppm_edit_task_label" id="wppm_edit_task_label" value="<?php echo isset($task_data['task_name']) ? esc_attr($task_data['task_name']) :"" ?>">
49 - </div>
50 - </div>
51 - <div class="row" style="padding-left:2px;">
52 - <div class="col-sm-12">
53 - <label class="wppm_edit_project_label" for="wppm_edit_project_label"><?php esc_html_e('Project:','taskbuilder') ?> </label>
54 - </div>
55 - </div>
56 - <div class="row" style="padding-left:2px;padding-bottom: 10px;">
57 - <div class="col-sm-12">
58 - <select searchable="search here" onchange="wppm_select_project()" class="form-control" size="40" name="wppm_task_project" id="wppm_task_project">
59 - <?php
60 - if(!empty($projects)){
61 - foreach($projects as $proj) {
62 - ?>
63 - <option <?php echo esc_attr($proj->id)==esc_attr($project_id) ?'selected="selected"':''?> value="<?php echo esc_attr($proj->id)?>"><?php echo esc_html($proj->project_name);?></option>
64 - <?php }
65 - } ?>
66 - </select>
67 - </div>
68 - </div>
69 - <div class="row" style="padding-left:2px;">
70 - <div class="col-sm-12">
71 - <label class="wppm_edit_task_start_date" for="wppm_edit_task_start_date"><?php echo esc_html_e('Start Date','taskbuilder') ?> </label>
72 - </div>
73 - </div>
74 - <div class="row" style="padding-left:2px;">
75 - <div class="col-sm-12">
76 - <input name="wppm_edit_task_start_date" class="form-control" id="wppm_edit_task_start_date" type="text" value="<?php echo isset($task_data['start_date'])? esc_attr($task_data['start_date']):""?>" size="40" aria-required="true"><br>
77 - </div>
78 - </div>
79 - <div class="row" style="padding-left:2px;">
80 - <div class="col-sm-12">
81 - <label class="wppm_edit_task_end_date" for="wppm_edit_task_end_date"><?php echo esc_html_e('End Date','taskbuilder') ?> </label>
82 - </div>
83 - </div>
84 - <div class="row" style="padding-left:2px;">
85 - <div class="col-sm-12">
86 - <input name="wppm_edit_task_end_date" class="form-control" id="wppm_edit_task_end_date" type="text" value="<?php echo isset($task_data['end_date']) ? esc_attr($task_data['end_date']):"" ?>" size="40" aria-required="true"><br>
87 - </div>
88 - </div>
89 - <div class="row" style="padding-left:2px;">
90 - <div class="col-sm-12">
91 - <label class="wppm_edit_task_priority_label" for="wppm_edit_task_priority_label" id="wppm_edit_task_priority_label"><?php echo esc_html_e('Task Priority','taskbuilder');?></label>
92 - </div>
93 - </div>
94 - <div class="row" style="padding-left:2px;">
95 - <div class="col-sm-12">
96 - <select class="form-control" name="wppm_edit_task_priority" id="wppm_edit_task_priority">
97 - <option></option>
98 - <?php
99 - if(!empty($priorities)){
100 - foreach ( $priorities as $priority ) :
101 - $selected = $priority_id == $priority->id ? 'selected="selected"' : '';
102 - echo '<option '.esc_attr($selected).' value="'.esc_attr($priority->id).'">'.esc_html($priority->name).'</option>';
103 - endforeach;
104 - }
105 - ?>
106 - </select>
107 - </div>
108 - </div>
109 - <div class="row" style="padding-left:2px;">
110 - <div class="col-sm-12">
111 - <label class="wppm_edit_task_description_label" id="wppm_edit_task_description_label">
112 - <?php echo esc_html_e('Description','taskbuilder');?>
113 - </label>
114 - </div>
115 - </div>
116 - <div class="row" style="padding-left:2px;">
117 - <div class="col-sm-12">
118 - <textarea id="wppm_edit_task_description" class="form-control" name="wppm_edit_task_description">
119 - <?php echo !empty($task_data['description']) ? wp_kses_post(wpautop($task_data['description'])) :""?>
120 - </textarea>
121 - </div>
122 - </div>
123 - <?php do_action('wppm_edit_task_details',$task_id,$project_id);?>
124 - <input type="hidden" name="action" value="wppm_set_change_task_details" />
125 - <input type="hidden" name="_ajax_nonce" value="<?php echo esc_attr(wp_create_nonce('wppm_set_change_task_details'))?>">
126 - <input type="hidden" name="user_id" id="user_id" value="">
127 - <input type="hidden" name="task_id" value="<?php echo esc_attr($task_id) ?>" />
128 - <input type="hidden" name="proj_id" value="<?php echo esc_attr($proj_id) ?>" />
129 - <input type="hidden" name="project_id" value="<?php echo esc_attr($current_project_id) ?>" />
130 -</form>
131 -<style>
132 -.select2-results__options {
133 - color:<?php echo esc_attr( $settings['body-text-color'])?>!important;
134 - }
135 -</style>
136 -<script>
137 -jQuery( document ).ready( function( jQuery ) {
138 - wppm_select_project();
139 - jQuery("#wppm_edit_task_start_date").flatpickr({
140 - enableTime: true,
141 - dateFormat: "Y-m-d H:i",
142 - defaultDate: "today"
143 - });
144 - jQuery("#wppm_edit_task_end_date").flatpickr({
145 - enableTime: true,
146 - dateFormat: "Y-m-d H:i",
147 - defaultDate: "today" //
148 - });
149 - tinymce.remove();
150 - tinymce.init({
151 - selector:'#wppm_edit_task_description',
152 - body_id: 'wppm_edit_task_description',
153 - directionality : '<?php //echo 'rtl'; ?>',
154 - menubar: false,
155 - statusbar: false,
156 - height : '200',
157 - width : '100%',
158 - plugins: [
159 - 'lists link image directionality paste'
160 - ],
161 - image_advtab: true,
162 - toolbar: 'bold italic underline blockquote | alignleft aligncenter alignright | bullist numlist | rtl | link image',
163 - branding: false,
164 - autoresize_bottom_margin: 20,
165 - browser_spellcheck : true,
166 - relative_urls : false,
167 - remove_script_host : false,
168 - convert_urls : true,
169 - paste_as_text: true,
170 - content_style:
171 - `body {
172 - color:<?php echo esc_attr( $settings['body-text-color'])?>!important;
173 - }`,
174 - setup: function (editor) {
175 - }
176 - });
177 -});
178 -jQuery('#wppm_task_project').select2();
179 -function wppm_select_project(){
180 - jQuery('.wppm_filter_display_element').hide();
181 - <?php do_action('wppm_display_cf_by_project_in_edit_task_details') ?>
182 -}
183 -jQuery('#wppm_edit_project_label').select2();
184 -
185 -</script>
186 -<?php
187 -$body = ob_get_clean();
188 -
189 -ob_start();
190 -?>
191 -<button type="button" class="btn <?php echo ($proj_id!="0") ? 'wppm_popup_close': 'wppm_task_popup_close' ?> " onclick="<?php echo ($proj_id!=0) ? "wppm_modal_close()":"wppm_task_modal_close()"?>"><?php echo esc_html_e('Close','taskbuilder');?></button>
192 -<button type="button" class="btn <?php echo ($proj_id!="0") ? 'wppm_popup_action': 'wppm_task_popup_action' ?> " onclick="wppm_set_change_task_details(<?php echo esc_attr($task_id)?>,<?php echo esc_attr($proj_id) ?>,<?php echo esc_attr($current_project_id) ?>);"><?php echo esc_html_e('Save','taskbuilder');?></button>
193 -<?php
194 -$footer = ob_get_clean();
195 -
196 -$output = array(
197 - 'body' => $body,
198 - 'footer' => $footer
199 -);
200 -echo wp_json_encode( $output );
201 -?>
1 +<?php
2 +if ( ! defined( 'ABSPATH' ) ) {
3 + exit; // Exit if accessed directly
4 +}
5 +
6 +global $wpdb,$wppmfunction,$current_user;
7 +$task_id = isset($_POST['task_id']) ? intval(sanitize_text_field(wp_unslash($_POST['task_id']))) : '' ;
8 +$proj_id = isset($_POST['proj_id']) ? intval(sanitize_text_field(wp_unslash($_POST['proj_id']))) : '' ;
9 +$current_project_id = isset($_POST['project_id']) ? intval(sanitize_text_field(wp_unslash($_POST['project_id']))) : '' ;
10 +if (!(($current_user->ID && $current_user->has_cap('manage_options')) || $wppmfunction->has_permission('change_task_details',$task_id))) {exit;}
11 +$task_data = $wppmfunction->get_task($task_id);
12 +$settings = get_option("wppm-ap-modal");
13 +$orderby_proj_sql = (sanitize_sql_orderby( "project_name" ));
14 +$project_data = $wppmfunction->get_project(intval(sanitize_text_field($task_data['project'])));
15 +if($current_user->has_cap('manage_options')){
16 + $projects = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_project ORDER BY $orderby_proj_sql");
17 +}else{
18 + $sql = $wpdb->prepare(
19 + "SELECT Proj.*
20 + FROM {$wpdb->prefix}wppm_project AS Proj
21 + LEFT JOIN {$wpdb->prefix}wppm_project_meta AS proj_meta
22 + ON Proj.id = proj_meta.project_id
23 + WHERE FIND_IN_SET(%d, Proj.users)
24 + OR (proj_meta.meta_key = 'public_project' AND proj_meta.meta_value = 1)
25 + GROUP BY Proj.id",
26 + $current_user->ID
27 + );
28 +// 4️⃣ Append ORDER BY (safe because we whitelisted columns)
29 +$sql .= " ORDER BY $orderby_proj_sql";
30 +
31 +// 5️⃣ Execute
32 +$projects = $wpdb->get_results($sql);
33 +}
34 +$priority_id = sanitize_text_field($task_data['priority']);
35 +$project_id = sanitize_text_field($task_data['project']);
36 +
37 +$priorities = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}wppm_task_priorities");
38 +ob_start();
39 +?>
40 +<form id="frm_get_edit_task_deatils" method="post">
41 + <div class="row" style="padding-left:2px;">
42 + <div class="col-sm-12">
43 + <label class="wppm_edit_task_label" for="wppm_edit_task_label"><?php echo esc_html_e('Task','taskbuilder') ?> </label>
44 + </div>
45 + </div>
46 + <div class="row" style="padding-left:2px;">
47 + <div class="col-sm-12">
48 + <input type="text" class="wppm_edit_task_label form-control" name="wppm_edit_task_label" id="wppm_edit_task_label" value="<?php echo isset($task_data['task_name']) ? esc_attr($task_data['task_name']) :"" ?>">
49 + </div>
50 + </div>
51 + <div class="row" style="padding-left:2px;">
52 + <div class="col-sm-12">
53 + <label class="wppm_edit_project_label" for="wppm_edit_project_label"><?php esc_html_e('Project:','taskbuilder') ?> </label>
54 + </div>
55 + </div>
56 + <div class="row" style="padding-left:2px;padding-bottom: 10px;">
57 + <div class="col-sm-12">
58 + <select searchable="search here" onchange="wppm_select_project()" class="form-control" size="40" name="wppm_task_project" id="wppm_task_project">
59 + <?php
60 + if(!empty($projects)){
61 + foreach($projects as $proj) {
62 + ?>
63 + <option <?php echo esc_attr($proj->id)==esc_attr($project_id) ?'selected="selected"':''?> value="<?php echo esc_attr($proj->id)?>"><?php echo esc_html($proj->project_name);?></option>
64 + <?php }
65 + } ?>
66 + </select>
67 + </div>
68 + </div>
69 + <div class="row" style="padding-left:2px;">
70 + <div class="col-sm-12">
71 + <label class="wppm_edit_task_start_date" for="wppm_edit_task_start_date"><?php echo esc_html_e('Start Date','taskbuilder') ?> </label>
72 + </div>
73 + </div>
74 + <div class="row" style="padding-left:2px;">
75 + <div class="col-sm-12">
76 + <input name="wppm_edit_task_start_date" class="form-control" id="wppm_edit_task_start_date" type="text" value="<?php echo isset($task_data['start_date'])? esc_attr($task_data['start_date']):""?>" size="40" aria-required="true"><br>
77 + </div>
78 + </div>
79 + <div class="row" style="padding-left:2px;">
80 + <div class="col-sm-12">
81 + <label class="wppm_edit_task_end_date" for="wppm_edit_task_end_date"><?php echo esc_html_e('End Date','taskbuilder') ?> </label>
82 + </div>
83 + </div>
84 + <div class="row" style="padding-left:2px;">
85 + <div class="col-sm-12">
86 + <input name="wppm_edit_task_end_date" class="form-control" id="wppm_edit_task_end_date" type="text" value="<?php echo isset($task_data['end_date']) ? esc_attr($task_data['end_date']):"" ?>" size="40" aria-required="true"><br>
87 + </div>
88 + </div>
89 + <div class="row" style="padding-left:2px;">
90 + <div class="col-sm-12">
91 + <label class="wppm_edit_task_priority_label" for="wppm_edit_task_priority_label" id="wppm_edit_task_priority_label"><?php echo esc_html_e('Task Priority','taskbuilder');?></label>
92 + </div>
93 + </div>
94 + <div class="row" style="padding-left:2px;">
95 + <div class="col-sm-12">
96 + <select class="form-control" name="wppm_edit_task_priority" id="wppm_edit_task_priority">
97 + <option></option>
98 + <?php
99 + if(!empty($priorities)){
100 + foreach ( $priorities as $priority ) :
101 + $selected = $priority_id == $priority->id ? 'selected="selected"' : '';
102 + echo '<option '.esc_attr($selected).' value="'.esc_attr($priority->id).'">'.esc_html($priority->name).'</option>';
103 + endforeach;
104 + }
105 + ?>
106 + </select>
107 + </div>
108 + </div>
109 + <div class="row" style="padding-left:2px;">
110 + <div class="col-sm-12">
111 + <label class="wppm_edit_task_description_label" id="wppm_edit_task_description_label">
112 + <?php echo esc_html_e('Description','taskbuilder');?>
113 + </label>
114 + </div>
115 + </div>
116 + <div class="row" style="padding-left:2px;">
117 + <div class="col-sm-12">
118 + <textarea id="wppm_edit_task_description" class="form-control" name="wppm_edit_task_description">
119 + <?php echo !empty($task_data['description']) ? wp_kses_post(wpautop($task_data['description'])) :""?>
120 + </textarea>
121 + </div>
122 + </div>
123 + <?php do_action('wppm_edit_task_details',$task_id,$project_id);?>
124 + <input type="hidden" name="action" value="wppm_set_change_task_details" />
125 + <input type="hidden" name="_ajax_nonce" value="<?php echo esc_attr(wp_create_nonce('wppm_set_change_task_details'))?>">
126 + <input type="hidden" name="user_id" id="user_id" value="">
127 + <input type="hidden" name="task_id" value="<?php echo esc_attr($task_id) ?>" />
128 + <input type="hidden" name="proj_id" value="<?php echo esc_attr($proj_id) ?>" />
129 + <input type="hidden" name="project_id" value="<?php echo esc_attr($current_project_id) ?>" />
130 +</form>
131 +<style>
132 +.select2-results__options {
133 + color:<?php echo esc_attr( $settings['body-text-color'])?>!important;
134 + }
135 +</style>
136 +<script>
137 +jQuery( document ).ready( function( jQuery ) {
138 + wppm_select_project();
139 + jQuery("#wppm_edit_task_start_date").flatpickr({
140 + enableTime: true,
141 + dateFormat: "Y-m-d H:i",
142 + defaultDate: "today"
143 + });
144 + jQuery("#wppm_edit_task_end_date").flatpickr({
145 + enableTime: true,
146 + dateFormat: "Y-m-d H:i",
147 + defaultDate: "today" //
148 + });
149 + tinymce.remove();
150 + tinymce.init({
151 + selector:'#wppm_edit_task_description',
152 + body_id: 'wppm_edit_task_description',
153 + directionality : '<?php //echo 'rtl'; ?>',
154 + menubar: false,
155 + statusbar: false,
156 + height : '200',
157 + width : '100%',
158 + plugins: [
159 + 'lists link image directionality paste'
160 + ],
161 + image_advtab: true,
162 + toolbar: 'bold italic underline blockquote | alignleft aligncenter alignright | bullist numlist | rtl | link image',
163 + branding: false,
164 + autoresize_bottom_margin: 20,
165 + browser_spellcheck : true,
166 + relative_urls : false,
167 + remove_script_host : false,
168 + convert_urls : true,
169 + paste_as_text: true,
170 + content_style:
171 + `body {
172 + color:<?php echo esc_attr( $settings['body-text-color'])?>!important;
173 + }`,
174 + setup: function (editor) {
175 + }
176 + });
177 +});
178 +jQuery('#wppm_task_project').select2();
179 +function wppm_select_project(){
180 + jQuery('.wppm_filter_display_element').hide();
181 + <?php do_action('wppm_display_cf_by_project_in_edit_task_details') ?>
182 +}
183 +jQuery('#wppm_edit_project_label').select2();
184 +
185 +</script>
186 +<?php
187 +$body = ob_get_clean();
188 +
189 +ob_start();
190 +?>
191 +<button type="button" class="btn <?php echo ($proj_id!="0") ? 'wppm_popup_close': 'wppm_task_popup_close' ?> " onclick="<?php echo ($proj_id!=0) ? "wppm_modal_close()":"wppm_task_modal_close()"?>"><?php echo esc_html_e('Close','taskbuilder');?></button>
192 +<button type="button" class="btn <?php echo ($proj_id!="0") ? 'wppm_popup_action': 'wppm_task_popup_action' ?> " onclick="wppm_set_change_task_details(<?php echo esc_attr($task_id)?>,<?php echo esc_attr($proj_id) ?>,<?php echo esc_attr($current_project_id) ?>);"><?php echo esc_html_e('Save','taskbuilder');?></button>
193 +<?php
194 +$footer = ob_get_clean();
195 +
196 +$output = array(
197 + 'body' => $body,
198 + 'footer' => $footer
199 +);
200 +echo wp_json_encode( $output );
201 +?>