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/projects/wppm_open_project.php +123 -83 5.0.36.0.6 View file →
@@ -14,15 +14,15 @@
14 14 $wppm_date_setting = get_option('wppm_date_setting');
15 15 $wppm_proj_hide_comment_section = get_option('wppm_proj_hide_comment_section');
16 16 $wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
17 17 $wppm_deafault_time_duration_project = get_option('wppm_display_time_duration_project');
18 -$current_date = date('Y-m-d');
19 -$id = isset($_POST) && isset($_POST['id']) ? intval(sanitize_text_field($_POST['id'])) : 0;
18 +$current_date = wp_date('Y-m-d');
19 +$id = isset($_POST) && isset($_POST['id']) ? absint(sanitize_text_field(wp_unslash($_POST['id']))) : 0;
20 20 if (!isset($id)) {exit;}
21 -$auth_id = $wppmfunction->get_project_meta($id,'project_auth_code',true);
21 +$auth_id = $wppmfunction->get_project_fields($id,'project_auth_code',true);
22 22 $auth_id = sanitize_text_field($auth_id);
23 -$project = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project where id = '".esc_sql($id)."'" );
24 -$orderby_sql = esc_sql(sanitize_sql_orderby("create_time DESC"));
23 +$project = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project where id = %d",$id));
24 +$orderby_sql = (sanitize_sql_orderby("create_time DESC"));
25 25 // url authentication.
26 26 $auth_code = isset( $_POST['auth-code'] ) ? sanitize_text_field( $_POST['auth-code'] ) : ''; // phpcs:ignore
27 27 if ( ! $auth_code ) {
28 28 $auth_code = isset( $_POST['auth_code'] ) ? sanitize_text_field( $_POST['auth_code'] ) : ''; // phpcs:ignore
@@ -30,9 +30,9 @@
30 30
31 31 if ( $auth_code && $auth_id == $auth_code ) {
32 32 $url_auth = true;
33 33 }
34 -$project_comment = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_comment where proj_id='".esc_sql($id)."' ORDER BY $orderby_sql");
34 +$project_comment = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_comment where proj_id = %d ORDER BY $orderby_sql",$id));
35 35 if(isset($project->users)){
36 36 $users = explode(",",$project->users);
37 37 }else{
38 38 $users = "";
@@ -37,18 +37,31 @@
37 37 }else{
38 38 $users = "";
39 39 }
40 40 $wppm_users_role = get_option('wppm_user_role');
41 +$current_user_role='';
42 +if ( ! empty( $users ) && in_array( $current_user->ID, $users, true ) ) {
43 + $current_user_role = $wpdb->get_var(
44 + $wpdb->prepare(
45 + "SELECT role_id
46 + FROM {$wpdb->prefix}wppm_project_users
47 + WHERE proj_id = %d
48 + AND user_id = %d",
49 + $id,
50 + $current_user->ID
51 + )
52 + );
53 +}
41 54 if(isset($project->status)){
42 - $projstatus = esc_sql($project->status);
43 - $project_status = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id = '$projstatus'");
55 + $projstatus = absint($project->status);
56 + $project_status = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id = %d",$projstatus));
44 57 }
45 58 if(isset($project->cat_id)){
46 - $projcat = esc_sql($project->cat_id);
47 - $project_category = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id = '$projcat'");
59 + $projcat = absint($project->cat_id);
60 + $project_category = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id = %d",$projcat));
48 61 }
49 62 if(!empty($project->description)){
50 - $project_description = stripslashes((htmlspecialchars_decode($project->description, ENT_QUOTES)));
63 + $project_description = ! empty( $project->description ) ? $project->description : '';
51 64 }
52 65 if($wppm_project_time == 1){
53 66 $psDate = new DateTime($project->start_date);
54 67 $peDate = new DateTime($project->end_date);
@@ -130,16 +143,26 @@
130 143 }
131 144
132 145 $project_data = $wppmfunction->get_project($id);
133 146 $project_users = explode(",",$project_data['users']);
147 + if(!empty($id)){
148 + $project_id = esc_sql($id);
149 + $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'");
150 +}else{
151 + $public_proj_meta ="";
152 +}
134 153
135 -if (!(($current_user->ID && $current_user->has_cap('manage_options')) || in_array($current_user->ID,$project_users) || ($project_data['created_by']==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') || ($current_user->ID && $current_user->has_cap('wppm_admin')) || ((!empty($auth_code)) && $url_auth==true))) {
154 +if (!(($current_user->ID && $current_user->has_cap('manage_options')) || in_array($current_user->ID,$project_users) || ((!in_array($current_user->ID,$project_users)) && $public_proj_meta == '1')|| ($project_data['created_by']==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') || ($current_user->ID && $current_user->has_cap('wppm_admin')) || ((!empty($auth_code)) && $url_auth==true))) {
136 155 ?>
137 156 <div style="align-item:center;" ><h6><?php esc_attr_e( 'Unauthorized access!', 'taskbuilder' ); ?></h6></div>
138 157 <?php
139 158 wp_die();
140 159 }
141 -
160 +if( $wppm_current_user_capability == 'wppm_admin' || $current_user->has_cap('manage_options') || $project_data['created_by']==$current_user->ID){
161 + $archive_style= "display:inline;";
162 +}else{
163 + $archive_style= "display:none;";
164 +}
142 165 ?>
143 166 <form id="wppm_open_project" method="post">
144 167 <div class="row">
145 168 <div class="col-sm-12">
@@ -147,15 +170,25 @@
147 170 <?php if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_manager'|| $wppm_current_user_capability == 'wppm_admin'){ ?>
148 171 <span class="wppm-add-new-btn btn-primary" style="background-color:<?php echo esc_attr($appearance_settings['menu-button-bg-color'])?>;color:<?php echo esc_attr($appearance_settings['menu-button-text-color'])?>" id="wppm_add_new_project_btn" onclick="wppm_add_new_project()"><span style="margin-right:5px;"><img id="wppm_add_new_project_icon" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/plus_icon.svg'); ?>" alt="plus_icon"></span><span><?php echo esc_html_e('Add New','taskbuilder');?></span></span>
149 172 <?php } ?>
150 173 <span class="wppm-add-new-btn btn-primary" id="wppm_project_list" style="background-color:<?php echo esc_attr($appearance_settings['menu-button-bg-color'])?>;color:<?php echo esc_attr($appearance_settings['menu-button-text-color'])?>" onclick="wppm_get_project_list()" ><span style="margin-right:5px;"><img id ="wppm_project_list_icon" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/list-symbol.svg'); ?>" alt="list-symbol"></span><span><?php echo esc_html_e('Project List','taskbuilder');?></span></span>
174 + <span class="wppm-add-new-btn btn-primary"" id="wppm_archieve_project_btn" title="<?php echo ($project->is_archived==1 ) ? 'Restore Project' : 'Archive Project'; ?>" onclick="wppm_archive_project(<?php echo esc_attr($project->id) ?>,<?php echo esc_attr($project->is_archived) ?>)" style="<?php echo esc_attr($archive_style) ?>"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/archive_project.svg'); ?>" alt="archive"><span style="margin-left:5px;"><?php echo ($project->is_archived==1 ) ? esc_html_e('Restore Project','taskbuilder') : esc_html_e('Archive Project','taskbuilder');?></span></span>
175 + <input type="hidden" name="wppm_archive_project_ajax_nonce" id="wppm_archive_project_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_archive_project_ajax_nonce' ) ); ?>">
176 + <!-- Dashboard Button -->
177 + <a class="wppm-add-new-btn btn-primary" style="background-color:<?php echo esc_attr($appearance_settings['menu-button-bg-color'])?>;color:<?php echo esc_attr($appearance_settings['menu-button-text-color'])?>" href="<?php echo esc_url( admin_url('admin.php?page=wppm-dashboard') ); ?>">
178 + <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/dashboard.svg'); ?>" alt="dashboard_icon">
179 + <?php esc_html_e('Dashboard','taskbuilder'); ?>
180 + </a>
151 181 <span class="wppm-add-new-btn btn-primary" id="wppm_project_tasks" style="background-color:<?php echo esc_attr($appearance_settings['menu-button-bg-color'])?>;color:<?php echo esc_attr($appearance_settings['menu-button-text-color'])?>" onclick="wppm_get_project_tasks(<?php echo esc_attr($id) ?>)"><span style="margin-right:5px;"><img id ="wppm_task_list_icon" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/task_list.svg'); ?>" alt="task_list"></span><span><?php echo esc_html_e('Tasks','taskbuilder');?></span></span>
182 + <span class="wppm-add-new-btn btn-primary" id="wppm_project_tasks_kanban_view" style="background-color:<?php echo esc_attr($appearance_settings['menu-button-bg-color'])?>;color:<?php echo esc_attr($appearance_settings['menu-button-text-color'])?>" onclick="wppm_get_project_tasks_kanban_view(<?php echo esc_attr($id) ?>)"><span style="margin-right:5px;"><img id ="wppm_task_list_icon" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/kanban-svg.svg'); ?>" alt="task_list"></span><span><?php echo esc_html_e('Kanban View','taskbuilder');?></span></span>
152 183 <?php $style = (($current_user->ID && $current_user->has_cap('manage_options')) || ($wppmfunction->has_project_permission('delete_project',$project->id)) || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') || ($current_user->ID && $current_user->has_cap('wppm_admin')))? "display:inline":"display:none"; ?>
153 184 <span class="wppm-add-new-btn btn-primary" id="wppm_delete_project_btn" style="background-color:<?php echo esc_attr($appearance_settings['menu-button-bg-color'])?>;color:<?php echo esc_attr($appearance_settings['menu-button-text-color'])?>;<?php echo esc_attr($style) ?>" onclick="wppm_delete_project(<?php echo esc_attr($id) ?>)"><span style="margin-right:5px;"><img id="wppm_delete_project_icon" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/delete2.svg'); ?>" alt="delete"></span><span><?php echo esc_html_e('Delete','taskbuilder');?></span></span>
154 185 <?php $visibility_style = (($current_user->ID && ($current_user->has_cap('manage_options') || $current_user->has_cap('wppm_admin') || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager'))) && ($wppm_public_projects_permission==1))? "display:inline":"display:none"; ?>
155 186 <span class="wppm-add-new-btn btn-primary" id="wppm_project_visibility" style="background-color:<?php echo esc_attr($appearance_settings['menu-button-bg-color'])?>;color:<?php echo esc_attr($appearance_settings['menu-button-text-color'])?>;<?php echo esc_attr($visibility_style) ?>" onclick="wppm_get_project_visibility(<?php echo esc_attr($id) ?>)"><span style="margin-right:5px;"><img id ="wppm_task_list_icon" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/wppm_visibility.svg'); ?>" alt="project_visibility"></span><span><?php echo esc_html_e('Project Visibility','taskbuilder');?></span></span>
156 - <?php echo do_action('wppm_after_open_project_buttons',$project->id);?>
157 - </div>
187 + <?php do_action('wppm_after_open_project_buttons',$project->id); ?>
188 + <?php foreach ( wppm_get_locked_pro_addons_by_placement('toolbar') as $wppm_addon_key => $wppm_addon ) : ?>
189 + <a class="wppm-add-new-btn btn-primary wppm-locked-toolbar-btn" style="background-color:<?php echo esc_attr($appearance_settings['menu-button-bg-color'])?>;color:<?php echo esc_attr($appearance_settings['menu-button-text-color'])?>" href="<?php echo esc_url( wppm_pro_upgrade_url() ); ?>" target="_blank" rel="noopener noreferrer" title="<?php echo esc_attr( sprintf( __( '%s is a Pro feature. Click to upgrade.', 'taskbuilder' ), $wppm_addon['label'] ) ); ?>"><span class="wppm-pro-icon-wrap" style="margin-right:5px;"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/' . $wppm_addon['icon'] ); ?>" alt=""><span class="wppm-pro-badge-corner"><?php echo wppm_pro_badge_svg( 11 ); ?></span></span><span><?php echo esc_html( $wppm_addon['label'] ); ?></span></a>
190 + <?php endforeach; ?>
158 191 </div>
159 192 <div id="wppm_load_individual_project_container" class="row">
160 193 <div class="col-sm-8 wppm_body col-md-9">
161 194 <div class="row">
@@ -162,9 +195,10 @@
162 195 <div class="col-sm-12" id="wppm_project_details_container">
163 196 <div class="row">
164 197 <div class="col-sm-12">
165 198 <span class="wppm_project_label"> <?php echo isset($project->project_name) ? esc_html($project->project_name):"";
166 - if (($wppmfunction->has_project_permission('change_project_details',$id)) || ($current_user->has_cap('manage_options') || $current_user->has_cap('wppm_admin') || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager'))) { ?>
199 + if ((($wppmfunction->has_project_permission('change_project_details',$id)) || ($current_user->has_cap('manage_options') || $current_user->has_cap('wppm_admin') || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager'))) && $project_data['is_archived']!=1) {
200 + ?>
167 201 <span id="wppm_individual_edit_project_subject" onclick="wppm_edit_proj_details(<?php echo esc_attr($id) ?>)" class="btn btn-sm wppm_action_btn" style="background-color:#FFFFFF !important;color:#000000 !important;"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit_01.svg'); ?>" alt="edit"></span>
168 202 <?php } ?>
169 203 </span>
170 204 </div>
@@ -238,9 +272,9 @@
238 272 <div class="col-sm-3">
239 273 <span class="wppm_project_details_label"><?php echo esc_html_e('Project Category:','taskbuilder');?></span>
240 274 </div>
241 275 <div class="col-sm-9">
242 - <span class="wppm_project_details"><?php echo (isset($project_category->name))? esc_html_e($project_category->name,'taskbuilder'):"" ?></span>
276 + <span class="wppm_project_details"><?php echo (isset($project_category->name))? esc_html($project_category->name):"" ?></span>
243 277 </div>
244 278 </div>
245 279 <div class="row">
246 280 <div class="col-sm-3">
@@ -249,14 +283,15 @@
249 283 <?php
250 284 $allowedtags = array( 'br' => array(), 'abbr' => array('title' => array(),), 'p' => array(), 'strong' => array(), 'a' => array('href' => array(), 'title' => array(),'target'=> array(), 'rel'=>array()),'em' =>array(),'span' =>array(), 'blockquote'=>array('cite' => array(),),'div' => array('class' => array(),'title' => array(),'style' => array(),),'ul'=>array(),'li'=>array(),'ol'=>array(),'img' => array( 'alt'=> array(),'class' => array(),'height' => array(),'src'=> array(),'width'=> array(),));
251 285 ?>
252 286 <div class="col-sm-9 wppm_project_description">
253 - <span><?php echo (isset($project_description))? wp_kses(wpautop($project_description),$allowedtags):"" ?></span>
287 + <span><?php echo (!empty($project_description))? wp_kses(wpautop($project_description),$allowedtags):"" ?></span>
254 288 </div>
289 + <?php do_action('wppm_after_project_details_in_open_project',$project->id);?>
255 290 </div>
256 291 </div>
257 292 </div>
258 - <div id="wppm_proj_discussion_container" style="<?php echo ($wppm_proj_hide_comment_section==0) ? 'display:none;' : 'display:block;' ?>">
293 + <div id="wppm_proj_discussion_container" style="<?php echo ($wppm_proj_hide_comment_section==0 || $current_user_role==3|| $project_data['is_archived']==1) ? 'display:none;' : 'display:block;' ?>">
259 294 <div class="row">
260 295 <div class="col-sm-12" style="margin-top:5px;">
261 296 <span class="wppm_proj_discussion"><?php echo esc_html_e('Comment','taskbuilder')?></span><br>
262 297 </div>
@@ -284,18 +319,17 @@
284 319 <div class="wppm_proj_attachment_container col-sm-12" style="display:none;">
285 320 </div>
286 321 </div>
287 322 </div>
288 - <div class="wppm_thread_container" style="<?php echo ($wppm_proj_hide_comment_section==0) ? 'display:none;' : 'display:block;' ?>">
323 + <div class="wppm_thread_container" style="<?php echo ($wppm_proj_hide_comment_section==0 || $current_user_role==3 || $project_data['is_archived']==1) ? 'display:none;' : 'display:block;' ?>">
289 324 <?php
290 325 if(!empty($project_comment)){
291 326 foreach($project_comment as $comment){
292 327 $proj_comment_meta = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project_comment_meta where proj_id='".esc_sql($id)."' AND comment_id='".esc_sql($comment->id)."'");
293 328 $user = get_userdata( $comment->created_by );
294 - $comment_body = stripslashes((htmlspecialchars_decode($comment->body, ENT_QUOTES)));
295 - $comment_body = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $comment_body);
296 - $date = date("Y-m-d H:i:s" ,strtotime($comment->create_time));
297 - $thread_date = date("d F Y, h:i:s A" ,strtotime($date));
329 + $comment_body = !empty($comment->body) ? wp_kses_post(wpautop($comment->body)) : '';
330 + $date = wp_date("Y-m-d H:i:s" ,strtotime($comment->create_time));
331 + $thread_date = wp_date("d F Y, h:i:s A" ,strtotime($date));
298 332 $attachment_ids = isset($comment->attachment_ids)? $comment->attachment_ids : '';
299 333 if($attachment_ids!=""){
300 334 $attachments = explode(",",$attachment_ids);
301 335 } else {
@@ -313,16 +347,16 @@
313 347 $comment_log_body = unserialize($comment->body);
314 348 $prev_status = $comment_log_body['prev_status'];
315 349 $new_status = $comment_log_body['new_status'];
316 350 if(isset($prev_status)){
317 - $prev_status = esc_sql($prev_status);
318 - $project_prev_status = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id = '$prev_status'");
351 + $prev_status = absint($prev_status);
352 + $project_prev_status = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id = %d",$prev_status));
319 353 }
320 354 if(isset($new_status)){
321 - $new_status = esc_sql($new_status);
322 - $project_new_status = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id= '$new_status'");
355 + $new_status = absint($new_status);
356 + $project_new_status = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id= %d",$new_status));
323 357 }
324 - esc_html_e("changed status from $project_prev_status->name to $project_new_status->name","taskbuilder");
358 + echo esc_html( sprintf(__( 'Changed status from %1$s to %2$s', 'taskbuilder' ),$project_prev_status->name,$project_new_status->name));
325 359 }
326 360 if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_creator')){
327 361 $comment_log_body = unserialize($comment->body);
328 362 $prev_user = $comment_log_body['prev_user'];
@@ -328,27 +362,29 @@
328 362 $prev_user = $comment_log_body['prev_user'];
329 363 $new_user = $comment_log_body['new_user'];
330 364 $prev_user_data = get_userdata($prev_user);
331 365 $new_user_data = get_userdata($new_user);
332 - esc_html_e("changed creator from $prev_user_data->display_name to $new_user_data->display_name","taskbuilder");
333 - }if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_assign_user')){
334 - esc_html_e("changed the Assignee","taskbuilder");
335 - }if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_cat')){
336 - $comment_log_body = unserialize($comment->body);
337 - $prev_cat = $comment_log_body['prev_cat'];
338 - $new_cat = $comment_log_body['new_cat'];
339 - if(!empty($prev_cat)){
340 - $prev_cat = esc_sql($prev_cat);
341 - $project_prev_cat = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id= '$prev_cat'");
366 + echo sprintf( esc_html__( 'Changed creator from %1$s to %2$s', 'taskbuilder' ), esc_html( $prev_user_data->display_name ), esc_html( $new_user_data->display_name ));
342 367 }
343 - if(!empty($new_cat)){
344 - $new_cat = esc_sql($new_cat);
345 - $project_new_cat = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id='$new_cat'");
368 + if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_assign_user')){
369 + esc_html_e("Changed the Assignee","taskbuilder");
346 370 }
347 - $proj_prev_cat_name = !empty($project_prev_cat) ? $project_prev_cat->name: "None";
348 - $proj_new_cat_name = !empty($project_new_cat) ? $project_new_cat->name: "None";
349 - esc_html_e("changed category from $proj_prev_cat_name to $proj_new_cat_name","taskbuilder");
350 - }
371 + if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_cat')){
372 + $comment_log_body = unserialize($comment->body);
373 + $prev_cat = $comment_log_body['prev_cat'];
374 + $new_cat = $comment_log_body['new_cat'];
375 + if(!empty($prev_cat)){
376 + $prev_cat = absint($prev_cat);
377 + $project_prev_cat = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id= %d",$prev_cat));
378 + }
379 + if(!empty($new_cat)){
380 + $new_cat = absint($new_cat);
381 + $project_new_cat = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id=%d",$new_cat));
382 + }
383 + $proj_prev_cat_name = !empty($project_prev_cat) ? $project_prev_cat->name: "None";
384 + $proj_new_cat_name = !empty($project_new_cat) ? $project_new_cat->name: "None";
385 + echo sprintf( esc_html__( 'Changed category from %1$s to %2$s', 'taskbuilder' ), esc_html( $proj_prev_cat_name ), esc_html( $proj_new_cat_name ));
386 + }
351 387 ?></span>
352 388 <small class="wppm_comment_date" style="color:<?php echo esc_attr($appearance_settings['comment-date-color']);?>"><i><?php echo esc_html($thread_date) ?></i></small>
353 389 <div class="wppm_thread_action">
354 390 <?php if(( (($current_user->has_cap('manage_options')) || ($wppmfunction->has_proj_comment_permission('edit_proj_comment',$id,$comment->id))) && ((empty($proj_comment_meta->comment_type))|| (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='comment')))){ ?>
@@ -411,10 +447,10 @@
411 447 <?php
412 448 if(!empty($attachments)){
413 449 foreach( $attachments as $attachment ):
414 450 $download_url = site_url('/').'?wppm_attachment='.$attachment.'&pid='.$id.'&pac='.$auth_id;
415 - $attachment = esc_sql($attachment);
416 - $attach = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_attachments where id='$attachment'");
451 + $attachment = absint($attachment);
452 + $attach = $wpdb->get_row( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_attachments where id=%d",$attachment));
417 453 $findStr = ".txt";
418 454 if(!empty( $attach)){
419 455 $attachment_name = preg_replace('/' . $findStr . '/', "", $attach->name, 1);
420 456 $attachment_name = sanitize_file_name($attachment_name);
@@ -447,10 +483,10 @@
447 483 <div class="wppm_individual_project_widget col-sm-4 wppm_sidebar col-md-3">
448 484 <div class="row wppm_widget" id="wppm_project_status_widget">
449 485 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
450 486 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e('Status','taskbuilder')?></h4>
451 - <?php $style = ($wppmfunction->has_project_permission('change_project_status',$id) || $current_user->has_cap('manage_options') || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') || $wppm_current_user_capability == 'wppm_admin')? "display:flex":"display:none"; ?>
452 - <span class="wppm_edit_project_details_widget" style="<?php echo $style ?>" onclick="wppm_edit_project_status(<?php echo esc_attr($id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit_01.svg'); ?>" alt="edit"></span>
487 + <?php $style = (($wppmfunction->has_project_permission('change_project_status',$id) || $current_user->has_cap('manage_options') || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') || $wppm_current_user_capability == 'wppm_admin') && $project_data['is_archived']!=1)? "display:flex":"display:none"; ?>
488 + <span class="wppm_edit_project_details_widget" style="<?php echo esc_attr($style) ?>" onclick="wppm_edit_project_status(<?php echo esc_attr($id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit_01.svg'); ?>" alt="edit"></span>
453 489 </div>
454 490 <hr class="widget_divider">
455 491 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
456 492 <div class="wppm_sidebar_labels"><span class="wppm_label_info" style="color:<?php echo esc_attr($appearance_settings['widget-body-label-color'])?>"><?php echo esc_html_e('Status','taskbuilder')?>: <span class="wppm_admin_label" style="background-color:<?php echo isset($project_status->bg_color) ? esc_attr($project_status->bg_color):""; ?>;color:<?php echo isset($project_status->color) ? esc_attr($project_status->color): "" ?>;"><?php echo isset($project_status->name) ? esc_attr($project_status->name) : "" ?> </span></div>
@@ -458,9 +494,9 @@
458 494 </div>
459 495 <div class="row wppm_widget" id="wppm_project_raisedby_widget">
460 496 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
461 497 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e('Project Creator','taskbuilder')?></span></h4>
462 - <?php if ($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'|| ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager')) { ?>
498 + <?php if (($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_admin'|| ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager')) && $project_data['is_archived']!=1) { ?>
463 499 <span class="wppm_edit_project_details_widget" onclick="wppm_edit_project_creator(<?php echo esc_attr($id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit_01.svg'); ?>" alt="edit"></span>
464 500 <?php } ?>
465 501 </div>
466 502 <hr class="widget_divider"> <?php
@@ -473,9 +509,9 @@
473 509 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
474 510 <div id="wppm_project_creator">
475 511 <div style="padding:2px 0;">
476 512 <span class="wppm_project_user_avatar"><?php echo isset($project->created_by)? (get_avatar($project->created_by, 25, "mysteryman")):""; ?></span>
477 - <span class="wppm_project_user_names" style="color:<?php echo esc_attr($appearance_settings['widget-body-text-color'])?>"><?php echo (!empty($user_info)) ? esc_html_e($user_info->display_name,'taskbuilder') : "";?></span>
513 + <span class="wppm_project_user_names" style="color:<?php echo esc_attr($appearance_settings['widget-body-text-color'])?>"><?php echo (!empty($user_info)) ? esc_html($user_info->display_name) : "";?></span>
478 514 </div>
479 515 </div>
480 516 </div>
481 517 </div>
@@ -481,9 +517,9 @@
481 517 </div>
482 518 <div class="row wppm_widget" id="wppm_project_users_widget_container">
483 519 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
484 520 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e('Users','taskbuilder')?></h4>
485 - <?php if ($wppmfunction->has_project_permission('assign_project_users',$id ) || $current_user->has_cap('manage_options') || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') || $wppm_current_user_capability == 'wppm_admin') { ?>
521 + <?php if (($wppmfunction->has_project_permission('assign_project_users',$id ) || $current_user->has_cap('manage_options') || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') || $wppm_current_user_capability == 'wppm_admin') && $project_data['is_archived']!=1) { ?>
486 522 <span class="wppm_edit_project_details_widget" onclick="wppm_get_users(<?php echo esc_attr($id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit_01.svg'); ?>" alt="edit"></span>
487 523 <?php } ?>
488 524 </div>
489 525 <hr class="widget_divider">
@@ -489,34 +525,36 @@
489 525 <hr class="widget_divider">
490 526 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
491 527 <div id="wppm_project_users">
492 528 <?php
493 - if(!(empty(array_filter($users)))){
494 - foreach($users as $user) {
495 - $user_data = get_userdata($user);
496 - $user = esc_sql($user);
497 - $project_user = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = '".esc_sql($id)."' AND user_id = '$user'");
498 - ?>
499 - <div style="padding:2px 0;">
500 - <span class="wppm_project_user_avatar"><?php echo (get_avatar($user, 25, "mysteryman")); ?></span>
501 - <span class="wppm_project_user_names" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e($user_data->display_name,'taskbuilder'); ?></span>
502 - <?php
503 - if(!empty($wppm_users_role)){
504 - foreach($wppm_users_role as $key=>$role){
505 - if(!empty($role)){
506 - foreach($role as $k=>$val){
507 - if( !empty($project_user) && $key == $project_user->role_id){ ?>
508 - <span class="wppm_project_user_role" style="color:<?php echo esc_attr($appearance_settings['widget-body-text-color'])?>">(<?php echo esc_html_e($role['label'],'taskbuilder'); ?>)</span><?php
529 + if(!empty($users)){
530 + if(!(empty(array_filter($users)))){
531 + foreach($users as $user) {
532 + $user_data = get_userdata($user);
533 + $user = absint($user);
534 + $project_user = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = %d AND user_id = %d",$id,$user));
535 + ?>
536 + <div style="padding:2px 0;">
537 + <span class="wppm_project_user_avatar"><?php echo (get_avatar($user, 25, "mysteryman")); ?></span>
538 + <span class="wppm_project_user_names" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html($user_data->display_name); ?></span>
539 + <?php
540 + if(!empty($wppm_users_role)){
541 + foreach($wppm_users_role as $key=>$role){
542 + if(!empty($role)){
543 + foreach($role as $k=>$val){
544 + if( !empty($project_user) && $key == $project_user->role_id){ ?>
545 + <span class="wppm_project_user_role" style="color:<?php echo esc_attr($appearance_settings['widget-body-text-color'])?>">(<?php echo esc_html($role['label']); ?>)</span><?php
546 + }
509 547 }
510 548 }
511 549 }
512 550 }
513 - }
514 - ?>
515 - </div>
516 - <?php
517 - }
518 - } else {
551 + ?>
552 + </div>
553 + <?php
554 + }
555 + }
556 + }else {
519 557 ?><span class="wppm_project_users_not_assign_label" style="color:<?php echo esc_attr($appearance_settings['widget-body-text-color'])?>"> <?php echo esc_html_e('None','taskbuilder'); ?></span><?php
520 558 }
521 559 ?>
522 560 </div>
@@ -521,9 +559,9 @@
521 559 ?>
522 560 </div>
523 561 </div>
524 562 </div>
525 - <?php echo do_action('wppm_after_project_widget',$project->id);?>
563 + <?php do_action('wppm_after_project_widget',$project->id);?>
526 564 </div>
527 565 <div id="wppm_alert_success" class="alert alert-success wppm_alert" style="display:none;" role="alert">
528 566 <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/success.svg'); ?>" alt="success"><span class="wppm_alert_text"></span>
529 567 </div>
@@ -529,9 +567,9 @@
529 567 </div>
530 568 <div id="wppm_alert_error" class="alert alert-danger wppm_alert" style="display:none;" role="alert">
531 569 <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/warning-triangle.svg'); ?>" alt="warning-triangle"><span class="wppm_alert_text"></span>
532 570 </div>
533 - <input type="hidden" id="wppm_proj_nonce" value="<?php echo wp_create_nonce('wppm_upload_proj_attach_file')?>">
571 + <input type="hidden" id="wppm_proj_nonce" value="<?php echo esc_attr(wp_create_nonce('wppm_upload_proj_attach_file'))?>">
534 572 <input type="file" id="wppm_proj_attachment_upload" class="hidden" onchange="">
535 573 </div>
536 574 </form>
537 575 <style>
@@ -590,9 +628,11 @@
590 628 $link = (isset($wppm_toolbar_actions['link']) && $wppm_toolbar_actions['link']==1)? $link = 'link' :"";
591 629 $image = (isset($wppm_toolbar_actions['wppm_insert_editor_img']) && $wppm_toolbar_actions['wppm_insert_editor_img']==1)? $image = 'image' :"";
592 630 $forecolor = (isset($wppm_toolbar_actions['forecolor']) && $wppm_toolbar_actions['forecolor']==1)? $forecolor = 'forecolor' :"";
593 631 $backcolor = (isset($wppm_toolbar_actions['backcolor']) && $wppm_toolbar_actions['backcolor']==1)? $backcolor = 'backcolor' :"";
594 - $strikethrough = (isset($wppm_toolbar_actions['strikethrough']) && $wppm_toolbar_actions['strikethrough']==1)? $strikethrough = 'strikethrough' :""; ?>
632 + $strikethrough = (isset($wppm_toolbar_actions['strikethrough']) && $wppm_toolbar_actions['strikethrough']==1)? $strikethrough = 'strikethrough' :"";
633 + $toolbar = trim("$bold $italic $underline $blockquote | $align | $bullist $numlist | $rtl | $link $image | $forecolor $backcolor $strikethrough");?>
634 +
595 635 tinymce.remove();
596 636 tinymce.init({
597 637 selector:'#wppm_proj_description',
598 638 body_id: 'wppm_proj_description',
@@ -603,9 +643,9 @@
603 643 plugins: [
604 644 'lists link image directionality textcolor'
605 645 ],
606 646 image_advtab: true,
607 - 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 ?>',
647 + toolbar: '<?php echo esc_js( $toolbar ); ?>',
608 648 branding: false,
609 649 autoresize_bottom_margin: 20,
610 650 browser_spellcheck : true,
611 651 relative_urls : false,
@@ -630,9 +670,9 @@
630 670 plugins: [
631 671 'lists link image directionality paste textcolor'
632 672 ],
633 673 image_advtab: true,
634 - 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 ?>',
674 + toolbar: '<?php echo esc_js( $toolbar ); ?>',
635 675 branding: false,
636 676 autoresize_bottom_margin: 20,
637 677 browser_spellcheck : true,
638 678 relative_urls : false,
@@ -663,9 +703,9 @@
663 703 plugins: [
664 704 'lists link image directionality paste textcolor'
665 705 ],
666 706 image_advtab: true,
667 - 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 ?>',
707 + toolbar: '<?php echo esc_js( $toolbar ); ?>',
668 708 branding: false,
669 709 autoresize_bottom_margin: 20,
670 710 browser_spellcheck : true,
671 711 relative_urls : false,
@@ -739,9 +779,9 @@
739 779 var file_extension = file_name_split[file_name_split.length-1];
740 780 file_extension = file_extension.toLowerCase();
741 781 if( (jQuery.inArray(file_extension,allowedExtension) > -1)){
742 782 flag = true;
743 - alert("<?php _e('Attached file type not allowed!','taskbuilder')?>");
783 + alert("<?php echo esc_js(__('Attached file type not allowed!','taskbuilder'))?>");
744 784 };
745 785 <?php
746 786 $max_upload = (int)(ini_get('upload_max_filesize')); ?>
747 787 var current_filesize=file.size/1000000;
@@ -746,9 +786,9 @@
746 786 $max_upload = (int)(ini_get('upload_max_filesize')); ?>
747 787 var current_filesize=file.size/1000000;
748 788 if(current_filesize > <?php echo esc_attr($max_upload); ?>){
749 789 flag = true;
750 - alert("<?php _e('File size exceed allowed limit!','taskbuilder')?>");
790 + alert("<?php echo esc_js(__('File size exceed allowed limit!','taskbuilder'))?>");
751 791 }
752 792 if (!flag){
753 793 var html_str = '<div class="wppm_attachment">'+
754 794 '<div class="progress" style="float: none !important; width: unset !important;">'+