PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 6.0.7
Taskbuilder – Project Management & Task Management Tool With Kanban Board v6.0.7
6.0.7 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 All 59 releases
← All changes | includes/admin/tasks/wppm_add_new_task.php +83 -48 5.0.0 → 6.0.7 View file →
@@ -2,22 +2,23 @@
2 2 if ( ! defined( 'ABSPATH' ) ) {
3 3 exit; // Exit if accessed directly
4 4 }
5 5 global $current_user,$wpdb,$wppmfunction;
6 -$proj_id = isset($_POST['proj_id']) ? intval(sanitize_text_field($_POST['proj_id'])) : 0 ;
7 -$orderby_prio_sql = esc_sql(sanitize_sql_orderby( "name" ));
8 -$cu_id = esc_sql($current_user->ID);
6 +$proj_id = isset($_POST['proj_id']) ? intval(sanitize_text_field(wp_unslash($_POST['proj_id']))) : 0 ;
7 +$current_project_id = isset($_POST['project_id']) ? intval(sanitize_text_field(wp_unslash($_POST['project_id']))) : 0 ;
8 +$orderby_prio_sql = (sanitize_sql_orderby( "name" ));
9 +$cu_id = absint($current_user->ID);
9 10 $wppm_rich_text_editor = get_option('wppm_rich_text_editor');
10 11 $wppm_toolbar_actions = get_option('wppm_toolbar_actions');
11 -$priorities = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_task_priorities ORDER BY '$orderby_prio_sql'" );
12 +$priorities = $wpdb->get_results( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_task_priorities ORDER BY %s",$orderby_prio_sql) );
12 13 $wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
13 14 $wppm_create_tasks_coworkers_permission = get_option('wppm_allow_coworkers_create_task');
14 15 if($current_user->has_cap('manage_options') || $wppm_current_user_capability=='wppm_admin'){
15 - $orderby_proj_sql = esc_sql(sanitize_sql_orderby( "project_name" ));
16 - $query = ( "SELECT * FROM {$wpdb->prefix}wppm_project ORDER BY '$orderby_proj_sql'" );
16 + $orderby_proj_sql = (sanitize_sql_orderby( "project_name" ));
17 + $query = ("SELECT * FROM {$wpdb->prefix}wppm_project ORDER BY $orderby_proj_sql");
17 18 $where = "";
18 19 }else{
19 - $orderby_proj_sql = esc_sql(sanitize_sql_orderby( "project_name" ));
20 + $orderby_proj_sql = (sanitize_sql_orderby( "project_name" ));
20 21 $query = ("SELECT Proj.*
21 22 FROM {$wpdb->prefix}wppm_project AS Proj
22 23 Left join {$wpdb->prefix}wppm_project_meta proj_meta ON Proj.id = proj_meta.project_id
23 24 Left join {$wpdb->prefix}wppm_project_users proj_users ON Proj.id = proj_users.proj_id
@@ -43,12 +44,12 @@
43 44 $val_array = (array) $val_filter;
44 45 $tusers = $val_array['users'];
45 46 $tusers_arr = explode(',',$tusers);
46 47 $tproject_id = $val_array['project'];
47 - $tproject_id = esc_sql($tproject_id);
48 48 if(!empty($tusers) && in_array($current_user->ID,$tusers_arr)){
49 - $project_user_role = $wpdb->get_var("SELECT role_id FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = '$tproject_id' AND user_id = '$cu_id'");
50 - $project_users = $wpdb->get_var("SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = '$tproject_id'");
49 + $project_user_role = $wpdb->get_var( $wpdb->prepare( "SELECT role_id FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = %d AND user_id = %d",$tproject_id,$cu_id));
50 + $tproject_id = absint( $tproject_id );
51 + $project_users = $wpdb->get_var( $wpdb->prepare( "SELECT users FROM {$wpdb->prefix}wppm_project WHERE id = %d",$tproject_id));
51 52 $project_users_arr = explode(',',(string)$project_users);
52 53 if((!empty($project_user_role)) && ($project_user_role == 1) && in_array($current_user->ID,$project_users_arr)){
53 54 $flag= true;
54 55 break;
@@ -55,9 +56,10 @@
55 56 }
56 57 }
57 58 }
58 59 }
59 -$project_creator = $wpdb->get_var("SELECT created_by FROM {$wpdb->prefix}wppm_project WHERE created_by = '$cu_id'");
60 +$cu_id = absint( $cu_id );
61 +$project_creator = $wpdb->get_var( $wpdb->prepare( "SELECT created_by FROM {$wpdb->prefix}wppm_project WHERE created_by = %d",$cu_id ));
60 62 ?>
61 63 <form class='wppm_add_new_task wppm_bootstrap' id="wppm_add_new_task" method="post">
62 64 <div class="wppm_headers row">
63 65 <div class="col-sm-12">
@@ -71,18 +73,23 @@
71 73 $style = "display:none;";
72 74 }
73 75 $style = apply_filters('wppm_add_new_task_btn_style',$style);
74 76 ?>
75 - <span onclick="wppm_add_new_task()" class="wppm_add_new_task_btn" title="Create Task" style=<?php echo esc_attr($style);?>><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/plus.svg'); ?>" alt="plus-icon"></span>
77 + <span onclick="wppm_add_new_task('',<?php echo esc_attr($current_project_id); ?>)" class="wppm_add_new_task_btn" title="Create Task" style=<?php echo esc_attr($style);?>><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/plus.svg'); ?>" alt="plus-icon"></span>
76 78 <?php } ?>
77 - <?php if($proj_id==0) {
78 - $tstyle = "display:inline;";
79 - $tstyle = apply_filters('wppm_task_list_btn_style',$tstyle);
80 - ?>
81 - <span class="wppm-task-list-btn" title="Task List" onclick="wppm_get_task_list()" style="<?php echo esc_attr($tstyle);?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list.svg'); ?>" alt="list-icon"></span>
82 - <?php } else { ?>
83 - <span class="wppm-task-list-btn" id="wppm_task_list_btn" title="Task List" onclick="wppm_get_project_tasks(<?php echo esc_attr($proj_id)?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list.svg'); ?>" alt="list-icon"></span>
84 - <?php }
79 + <?php
80 + if(!empty($current_project_id)){
81 + ?><span class="wppm-task-list-btn" title="Task List" onclick="wppm_get_project_tasks_kanban_view( <?php echo esc_attr($current_project_id); ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list.svg'); ?>" alt="list-icon"></span><?php
82 + }else{
83 + if($proj_id==0) {
84 + $tstyle = "display:inline;";
85 + $tstyle = apply_filters('wppm_task_list_btn_style',$tstyle);
86 + ?>
87 + <span class="wppm-task-list-btn" title="Task List" onclick="wppm_get_task_list()" style="<?php echo esc_attr($tstyle);?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list.svg'); ?>" alt="list-icon"></span>
88 + <?php } else { ?>
89 + <span class="wppm-task-list-btn" id="wppm_task_list_btn" title="Task List" onclick="wppm_get_project_tasks(<?php echo esc_attr($proj_id)?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list.svg'); ?>" alt="list-icon"></span>
90 + <?php }
91 + }
85 92 do_action('wppm_after_add_new_task_button',$style);?>
86 93 </div>
87 94 </div>
88 95 <div id='wppm_task_frm_field_container'>
@@ -101,26 +108,36 @@
101 108 </b>
102 109 </span><br>
103 110 <select searchable="search here" onchange="wppm_select_project()" class="form-control" size="40" name="wppm_task_project" id="wppm_task_project">
104 111 <?php
105 - if(!empty($projects)){
106 - foreach($projects as $proj) {
107 - $project_id = esc_sql($proj->id);
108 - if($current_user->has_cap('manage_options') || $wppmfunction->has_permission('add_new_task',0) || $wppm_current_user_capability=='wppm_admin'){
109 - ?>
110 - <option value="<?php echo esc_attr($proj->id)?>"><?php echo esc_html_e($proj->project_name,'taskbuilder');?></option><?php
111 - }
112 - else{
113 - $project_user_role = $wpdb->get_var("SELECT role_id FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = '$project_id' AND user_id = '$cu_id'");
114 - $project_users = $proj->users;
115 - $project_users_arr = explode(',',(string)$project_users);
116 - $project_creator_id = $wpdb->get_var("SELECT created_by FROM {$wpdb->prefix}wppm_project WHERE created_by = '$cu_id' AND id='$project_id'");
117 - if(((!empty($project_user_role)) && ($project_user_role == 1) && in_array($current_user->ID,$project_users_arr)) || ($project_creator_id!="")){
112 + if($current_project_id != 0){
113 + $current_project_name = $wpdb->get_var( $wpdb->prepare( "SELECT project_name FROM {$wpdb->prefix}wppm_project WHERE id = %d",$current_project_id));
114 + if($current_project_id && $current_project_name){
115 + echo '<option value="'.esc_attr($current_project_id).'" selected="selected">'.esc_html($current_project_name).'</option>';
116 + }
117 + }
118 + else{
119 + if(!empty($projects)){
120 + foreach($projects as $proj) {
121 + $project_id = esc_sql($proj->id);
122 + if($current_user->has_cap('manage_options') || $wppmfunction->has_permission('add_new_task',0) || $wppm_current_user_capability=='wppm_admin'){
118 123 ?>
119 - <option value="<?php echo esc_attr($proj->id)?>"><?php echo esc_html_e($proj->project_name,'taskbuilder');?></option>
120 - <?php }
124 + <option value="<?php echo esc_attr($proj->id)?>"><?php echo esc_html($proj->project_name);?></option><?php
125 + }
126 + else{
127 + $project_id = absint( $project_id );
128 + $cu_id = absint( $cu_id );
129 + $project_user_role = $wpdb->get_var( $wpdb->prepare("SELECT role_id FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = %d AND user_id = %d",$project_id, $cu_id));
130 + $project_users = $proj->users;
131 + $project_users_arr = explode(',',(string)$project_users);
132 + $project_creator_id = $wpdb->get_var( $wpdb->prepare( "SELECT created_by FROM {$wpdb->prefix}wppm_project WHERE created_by = %d AND id = %d",$cu_id,$project_id ));
133 + if(((!empty($project_user_role)) && ($project_user_role == 1) && in_array($current_user->ID,$project_users_arr)) || ($project_creator_id!="")){
134 + ?>
135 + <option value="<?php echo esc_attr($proj->id)?>"><?php echo esc_html($proj->project_name);?></option>
136 + <?php }
137 + }
121 138 }
122 - }
139 + }
123 140 }?>
124 141 </select>
125 142 </div>
126 143 </div>
@@ -130,9 +147,10 @@
130 147 <span class="wppm_form_field_label"><b>
131 148 <?php echo esc_html_e('Start date','taskbuilder');?>
132 149 </b>
133 150 </span><br>
134 - <input name="wppm_task_start_date" class="form-control" id="wppm_task_start_date" type="text" value="<?php echo $start_date = apply_filters('wppm_add_new_task_start_date',esc_attr($start_date));?>" size="40" aria-required="true"><br>
151 + <?php $start_date = apply_filters( 'wppm_add_new_task_start_date',$start_date); ?>
152 + <input name="wppm_task_start_date" class="form-control" id="wppm_task_start_date" type="text" value="<?php echo esc_attr( $start_date ); ?>" size="40" aria-required="true"><br>
135 153 </div>
136 154 <div class="wppm_task_frm_fields col-sm-6">
137 155 <span class="wppm_form_field_label"><b>
138 156 <?php echo esc_html_e('End date','taskbuilder');?>
@@ -137,9 +155,10 @@
137 155 <span class="wppm_form_field_label"><b>
138 156 <?php echo esc_html_e('End date','taskbuilder');?>
139 157 </b>
140 158 </span><br>
141 - <input name="wppm_task_end_date" id="wppm_task_end_date" class="form-control" type="text" value="<?php echo $end_date= apply_filters('wppm_add_new_task_end_date', esc_attr($end_date));?>" size="40" aria-required="true"><br>
159 + <?php $end_date = apply_filters( 'wppm_add_new_task_end_date',$end_date); ?>
160 + <input name="wppm_task_end_date" id="wppm_task_end_date" class="form-control" type="text" value="<?php echo esc_attr( $end_date ); ?>" size="40" aria-required="true"><br>
142 161 </div>
143 162 </div>
144 163 <?php } ?>
145 164 <div class="row">
@@ -193,9 +212,8 @@
193 212 <?php } else {?>
194 213 <button type="button" class="wppm_reset_btn" id="wppm_submit_task_reset_btn" onclick="wppm_create_project_task(<?php echo esc_attr($proj_id) ?>)"><?php echo esc_html_e('Reset form','taskbuilder');?></button>
195 214 <?php } ?>
196 215 <input type="hidden" name="action" value="wppm_create_task" />
197 - <input type="hidden" name="_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_create_task' ) ); ?>">
198 216 </div>
199 217 </div>
200 218 </div>
201 219 </form>
@@ -223,9 +241,10 @@
223 241 $link = (isset($wppm_toolbar_actions['link']) && $wppm_toolbar_actions['link']==1)? $link = 'link' :"";
224 242 $image = (isset($wppm_toolbar_actions['wppm_insert_editor_img']) && $wppm_toolbar_actions['wppm_insert_editor_img']==1)? $image = 'image' :"";
225 243 $forecolor = (isset($wppm_toolbar_actions['forecolor']) && $wppm_toolbar_actions['forecolor']==1)? $forecolor = 'forecolor' :"";
226 244 $backcolor = (isset($wppm_toolbar_actions['backcolor']) && $wppm_toolbar_actions['backcolor']==1)? $backcolor = 'backcolor' :"";
227 - $strikethrough = (isset($wppm_toolbar_actions['strikethrough']) && $wppm_toolbar_actions['strikethrough']==1)? $strikethrough = 'strikethrough' :""; ?>
245 + $strikethrough = (isset($wppm_toolbar_actions['strikethrough']) && $wppm_toolbar_actions['strikethrough']==1)? $strikethrough = 'strikethrough' :"";
246 + $toolbar = trim("$bold $italic $underline $blockquote | $align | $bullist $numlist | $rtl | $link $image | $forecolor $backcolor $strikethrough");?>
228 247 tinymce.remove();
229 248 tinymce.init({
230 249 selector:'#wppm_task_description',
231 250 body_id: 'wppm_task_description',
@@ -237,9 +256,9 @@
237 256 plugins: [
238 257 'lists link image directionality paste textcolor'
239 258 ],
240 259 image_advtab: true,
241 - toolbar: '<?php echo $bold ?> <?php echo $italic ?> <?php echo $underline ?> <?php echo $blockquote?> | <?php echo $align ?> | <?php echo $bullist ?> <?php echo $numlist ?> | <?php echo $rtl ?> | <?php echo $link ?> <?php echo $image ?> | <?php echo $forecolor?> <?php echo $backcolor?> <?php echo $strikethrough ?>',
260 + toolbar: '<?php echo esc_js( $toolbar ); ?>',
242 261 branding: false,
243 262 autoresize_bottom_margin: 20,
244 263 browser_spellcheck : true,
245 264 relative_urls : false,
@@ -301,24 +320,38 @@
301 320 }
302 321
303 322 function wppm_select_project(){
304 323 jQuery('.wppm_filter_display_element').hide();
305 - <?php do_action('wppm_display_cf_by_project') ?>
324 + <?php do_action('wppm_display_cf_by_project',$proj_id) ?>
306 325 }
307 326
308 327 function wppm_create_task(e){
309 328 if(!jQuery('#wppm_task_name').val()){
310 - alert("<?php _e('Task title is required','taskbuilder')?>");
329 + alert("<?php echo esc_js(__('Task title is required','taskbuilder'))?>");
311 330 e.preventDefault();
312 331 return false;
313 332 }
314 - <?php do_action('wppm_create_task_js_function'); ?>
333 + <?php //do_action('wppm_create_task_js_function'); ?>
315 334 var dataform = new FormData(jQuery('#wppm_add_new_task')[0]);
335 + //var validationResult = true;
336 + var validation = {
337 + isValid: true
338 + };
339 + jQuery(document).trigger('wppm_create_task_js_function', [
340 + dataform,
341 + validation
342 + ]);
343 +
344 + if(!validation.isValid){
345 + e.preventDefault();
346 + return false;
347 + }
316 348 var is_tinymce = (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden();
317 349 var description = is_tinymce && tinymce.get('wppm_task_description') ? tinyMCE.get('wppm_task_description').getContent() : jQuery('#wppm_task_description').val().trim();
318 350 dataform.append('wppm_task_description', description);
319 351 jQuery('#wppm_task_container').html(wppm_admin.loading_html);
320 - <?php do_action('wppm_create_task_dataform'); ?>
352 + jQuery(document).trigger('wppm_create_task_dataform', [dataform]);
353 + <?php //do_action('wppm_create_task_dataform'); ?>
321 354 jQuery.ajax({
322 355 url: wppm_admin.ajax_url,
323 356 type: 'POST',
324 357 data: dataform,
@@ -324,12 +357,14 @@
324 357 data: dataform,
325 358 processData: false,
326 359 contentType: false
327 360 }) .done(function (response_str) {
328 - <?php if($wppm_task_list_view==1){ ?>
361 + <?php if($current_project_id != 0){ ?>
362 + wppm_get_project_tasks_kanban_view(<?php echo (int)$current_project_id; ?>);
363 +<?php } elseif($wppm_task_list_view == 1){ ?>
329 364 wppm_get_task_list();
330 - <?php } elseif($wppm_task_list_view==0){ ?>
365 +<?php } elseif($wppm_task_list_view == 0){ ?>
331 366 wppm_display_grid_view();
332 - <?php } ?>
367 +<?php } ?>
333 368 });
334 369 }
335 370 </script>