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 +138 -85 5.0.06.0.6 View file →
@@ -13,15 +13,16 @@
13 13 $wppm_toolbar_actions = get_option('wppm_toolbar_actions');
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 -$current_date = date('Y-m-d');
18 -$id = isset($_POST) && isset($_POST['id']) ? intval(sanitize_text_field($_POST['id'])) : 0;
17 +$wppm_deafault_time_duration_project = get_option('wppm_display_time_duration_project');
18 +$current_date = wp_date('Y-m-d');
19 +$id = isset($_POST) && isset($_POST['id']) ? absint(sanitize_text_field(wp_unslash($_POST['id']))) : 0;
19 20 if (!isset($id)) {exit;}
20 -$auth_id = $wppmfunction->get_project_meta($id,'project_auth_code',true);
21 +$auth_id = $wppmfunction->get_project_fields($id,'project_auth_code',true);
21 22 $auth_id = sanitize_text_field($auth_id);
22 -$project = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project where id = '".esc_sql($id)."'" );
23 -$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"));
24 25 // url authentication.
25 26 $auth_code = isset( $_POST['auth-code'] ) ? sanitize_text_field( $_POST['auth-code'] ) : ''; // phpcs:ignore
26 27 if ( ! $auth_code ) {
27 28 $auth_code = isset( $_POST['auth_code'] ) ? sanitize_text_field( $_POST['auth_code'] ) : ''; // phpcs:ignore
@@ -29,9 +30,9 @@
29 30
30 31 if ( $auth_code && $auth_id == $auth_code ) {
31 32 $url_auth = true;
32 33 }
33 -$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));
34 35 if(isset($project->users)){
35 36 $users = explode(",",$project->users);
36 37 }else{
37 38 $users = "";
@@ -36,18 +37,31 @@
36 37 }else{
37 38 $users = "";
38 39 }
39 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 +}
40 54 if(isset($project->status)){
41 - $projstatus = esc_sql($project->status);
42 - $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));
43 57 }
44 58 if(isset($project->cat_id)){
45 - $projcat = esc_sql($project->cat_id);
46 - $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));
47 61 }
48 62 if(!empty($project->description)){
49 - $project_description = stripslashes((htmlspecialchars_decode($project->description, ENT_QUOTES)));
63 + $project_description = ! empty( $project->description ) ? $project->description : '';
50 64 }
51 65 if($wppm_project_time == 1){
52 66 $psDate = new DateTime($project->start_date);
53 67 $peDate = new DateTime($project->end_date);
@@ -129,16 +143,26 @@
129 143 }
130 144
131 145 $project_data = $wppmfunction->get_project($id);
132 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 +}
133 153
134 -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))) {
135 155 ?>
136 156 <div style="align-item:center;" ><h6><?php esc_attr_e( 'Unauthorized access!', 'taskbuilder' ); ?></h6></div>
137 157 <?php
138 158 wp_die();
139 159 }
140 -
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 +}
141 165 ?>
142 166 <form id="wppm_open_project" method="post">
143 167 <div class="row">
144 168 <div class="col-sm-12">
@@ -146,15 +170,25 @@
146 170 <?php if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_manager'|| $wppm_current_user_capability == 'wppm_admin'){ ?>
147 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>
148 172 <?php } ?>
149 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>
150 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>
151 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"; ?>
152 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>
153 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"; ?>
154 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>
155 - <?php echo do_action('wppm_after_open_project_buttons',$project->id);?>
156 - </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; ?>
157 191 </div>
158 192 <div id="wppm_load_individual_project_container" class="row">
159 193 <div class="col-sm-8 wppm_body col-md-9">
160 194 <div class="row">
@@ -161,9 +195,10 @@
161 195 <div class="col-sm-12" id="wppm_project_details_container">
162 196 <div class="row">
163 197 <div class="col-sm-12">
164 198 <span class="wppm_project_label"> <?php echo isset($project->project_name) ? esc_html($project->project_name):"";
165 - 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 + ?>
166 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>
167 202 <?php } ?>
168 203 </span>
169 204 </div>
@@ -197,9 +232,9 @@
197 232 } ?>
198 233 <span class="wppm_project_details"><?php echo isset($proj_create_date) ? esc_html($proj_create_date):"" ?></span>
199 234 </div>
200 235 </div>
201 - <?php if($wppm_default_project_date==1) { ?>
236 + <?php if($wppm_default_project_date==1 && $wppm_deafault_time_duration_project==0) { ?>
202 237 <div class="row">
203 238 <div class="col-sm-3">
204 239 <span class="wppm_project_details_label"><?php echo esc_html_e('Start Date:','taskbuilder');?></span>
205 240 </div>
@@ -219,15 +254,27 @@
219 254 <span class="wppm_project_details" id="wppm_edit_pend_date" style="<?php echo esc_attr($style); ?>"><?php echo (isset($proj_end_date))? esc_html($proj_end_date):"" ?></span>
220 255 </div>
221 256 <input type="hidden" name="wppm_edit_pend_date_ajax_nonce" id="wppm_edit_pend_date_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_set_change_proj_end_date' ) ); ?>">
222 257 </div>
223 - <?php } ?>
258 + <?php } if($wppm_deafault_time_duration_project==1){
259 + $wppm_proj_duration = $wppmfunction->wppm_get_duration($project->start_date,$project->end_date);
260 + $pstatus = isset($project->status) ? $project->status :"";
261 + $style = (!empty($proj_end_date) && $pstatus!=4 && $proj_end_date < $current_date && ($proj_end_date != '0000-00-00 00:00:00' && $proj_end_date != '00-00-0000 00:00:00' && $proj_end_date != '00-00-0000' && $proj_end_date != '0000-00-00')) ? "color:#FF0000":"color:#2C3E50"; ?>
262 + <div class="row">
263 + <div class="col-sm-3">
264 + <span class="wppm_project_details_label"><?php echo esc_html_e('Project Duration:','taskbuilder');?></span>
265 + </div>
266 + <div class="col-sm-9">
267 + <span class="wppm_project_details" id="wppm_edit_proj_duration" style="<?php echo esc_attr($style); ?>"><?php echo (isset($wppm_proj_duration))? esc_html($wppm_proj_duration): "" ?></span>
268 + </div>
269 + </div> <?php
270 + }?>
224 271 <div class="row">
225 272 <div class="col-sm-3">
226 273 <span class="wppm_project_details_label"><?php echo esc_html_e('Project Category:','taskbuilder');?></span>
227 274 </div>
228 275 <div class="col-sm-9">
229 - <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>
230 277 </div>
231 278 </div>
232 279 <div class="row">
233 280 <div class="col-sm-3">
@@ -236,14 +283,15 @@
236 283 <?php
237 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(),));
238 285 ?>
239 286 <div class="col-sm-9 wppm_project_description">
240 - <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>
241 288 </div>
289 + <?php do_action('wppm_after_project_details_in_open_project',$project->id);?>
242 290 </div>
243 291 </div>
244 292 </div>
245 - <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;' ?>">
246 294 <div class="row">
247 295 <div class="col-sm-12" style="margin-top:5px;">
248 296 <span class="wppm_proj_discussion"><?php echo esc_html_e('Comment','taskbuilder')?></span><br>
249 297 </div>
@@ -271,18 +319,17 @@
271 319 <div class="wppm_proj_attachment_container col-sm-12" style="display:none;">
272 320 </div>
273 321 </div>
274 322 </div>
275 - <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;' ?>">
276 324 <?php
277 325 if(!empty($project_comment)){
278 326 foreach($project_comment as $comment){
279 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)."'");
280 328 $user = get_userdata( $comment->created_by );
281 - $comment_body = stripslashes((htmlspecialchars_decode($comment->body, ENT_QUOTES)));
282 - $comment_body = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $comment_body);
283 - $date = date("Y-m-d H:i:s" ,strtotime($comment->create_time));
284 - $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));
285 332 $attachment_ids = isset($comment->attachment_ids)? $comment->attachment_ids : '';
286 333 if($attachment_ids!=""){
287 334 $attachments = explode(",",$attachment_ids);
288 335 } else {
@@ -300,16 +347,16 @@
300 347 $comment_log_body = unserialize($comment->body);
301 348 $prev_status = $comment_log_body['prev_status'];
302 349 $new_status = $comment_log_body['new_status'];
303 350 if(isset($prev_status)){
304 - $prev_status = esc_sql($prev_status);
305 - $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));
306 353 }
307 354 if(isset($new_status)){
308 - $new_status = esc_sql($new_status);
309 - $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));
310 357 }
311 - 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));
312 359 }
313 360 if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_creator')){
314 361 $comment_log_body = unserialize($comment->body);
315 362 $prev_user = $comment_log_body['prev_user'];
@@ -315,27 +362,29 @@
315 362 $prev_user = $comment_log_body['prev_user'];
316 363 $new_user = $comment_log_body['new_user'];
317 364 $prev_user_data = get_userdata($prev_user);
318 365 $new_user_data = get_userdata($new_user);
319 - esc_html_e("changed creator from $prev_user_data->display_name to $new_user_data->display_name","taskbuilder");
320 - }if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_assign_user')){
321 - esc_html_e("changed the Assignee","taskbuilder");
322 - }if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_cat')){
323 - $comment_log_body = unserialize($comment->body);
324 - $prev_cat = $comment_log_body['prev_cat'];
325 - $new_cat = $comment_log_body['new_cat'];
326 - if(!empty($prev_cat)){
327 - $prev_cat = esc_sql($prev_cat);
328 - $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 ));
329 367 }
330 - if(!empty($new_cat)){
331 - $new_cat = esc_sql($new_cat);
332 - $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");
333 370 }
334 - $proj_prev_cat_name = !empty($project_prev_cat) ? $project_prev_cat->name: "None";
335 - $proj_new_cat_name = !empty($project_new_cat) ? $project_new_cat->name: "None";
336 - esc_html_e("changed category from $proj_prev_cat_name to $proj_new_cat_name","taskbuilder");
337 - }
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 + }
338 387 ?></span>
339 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>
340 389 <div class="wppm_thread_action">
341 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')))){ ?>
@@ -398,10 +447,10 @@
398 447 <?php
399 448 if(!empty($attachments)){
400 449 foreach( $attachments as $attachment ):
401 450 $download_url = site_url('/').'?wppm_attachment='.$attachment.'&pid='.$id.'&pac='.$auth_id;
402 - $attachment = esc_sql($attachment);
403 - $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));
404 453 $findStr = ".txt";
405 454 if(!empty( $attach)){
406 455 $attachment_name = preg_replace('/' . $findStr . '/', "", $attach->name, 1);
407 456 $attachment_name = sanitize_file_name($attachment_name);
@@ -434,10 +483,10 @@
434 483 <div class="wppm_individual_project_widget col-sm-4 wppm_sidebar col-md-3">
435 484 <div class="row wppm_widget" id="wppm_project_status_widget">
436 485 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
437 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>
438 - <?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"; ?>
439 - <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>
440 489 </div>
441 490 <hr class="widget_divider">
442 491 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
443 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>
@@ -445,9 +494,9 @@
445 494 </div>
446 495 <div class="row wppm_widget" id="wppm_project_raisedby_widget">
447 496 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
448 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>
449 - <?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) { ?>
450 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>
451 500 <?php } ?>
452 501 </div>
453 502 <hr class="widget_divider"> <?php
@@ -460,9 +509,9 @@
460 509 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
461 510 <div id="wppm_project_creator">
462 511 <div style="padding:2px 0;">
463 512 <span class="wppm_project_user_avatar"><?php echo isset($project->created_by)? (get_avatar($project->created_by, 25, "mysteryman")):""; ?></span>
464 - <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>
465 514 </div>
466 515 </div>
467 516 </div>
468 517 </div>
@@ -468,9 +517,9 @@
468 517 </div>
469 518 <div class="row wppm_widget" id="wppm_project_users_widget_container">
470 519 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
471 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>
472 - <?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) { ?>
473 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>
474 523 <?php } ?>
475 524 </div>
476 525 <hr class="widget_divider">
@@ -476,34 +525,36 @@
476 525 <hr class="widget_divider">
477 526 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
478 527 <div id="wppm_project_users">
479 528 <?php
480 - if(!(empty(array_filter($users)))){
481 - foreach($users as $user) {
482 - $user_data = get_userdata($user);
483 - $user = esc_sql($user);
484 - $project_user = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = '".esc_sql($id)."' AND user_id = '$user'");
485 - ?>
486 - <div style="padding:2px 0;">
487 - <span class="wppm_project_user_avatar"><?php echo (get_avatar($user, 25, "mysteryman")); ?></span>
488 - <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>
489 - <?php
490 - if(!empty($wppm_users_role)){
491 - foreach($wppm_users_role as $key=>$role){
492 - if(!empty($role)){
493 - foreach($role as $k=>$val){
494 - if( !empty($project_user) && $key == $project_user->role_id){ ?>
495 - <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 + }
496 547 }
497 548 }
498 549 }
499 550 }
500 - }
501 - ?>
502 - </div>
503 - <?php
504 - }
505 - } else {
551 + ?>
552 + </div>
553 + <?php
554 + }
555 + }
556 + }else {
506 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
507 558 }
508 559 ?>
509 560 </div>
@@ -508,9 +559,9 @@
508 559 ?>
509 560 </div>
510 561 </div>
511 562 </div>
512 - <?php echo do_action('wppm_after_project_widget',$project->id);?>
563 + <?php do_action('wppm_after_project_widget',$project->id);?>
513 564 </div>
514 565 <div id="wppm_alert_success" class="alert alert-success wppm_alert" style="display:none;" role="alert">
515 566 <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/success.svg'); ?>" alt="success"><span class="wppm_alert_text"></span>
516 567 </div>
@@ -516,9 +567,9 @@
516 567 </div>
517 568 <div id="wppm_alert_error" class="alert alert-danger wppm_alert" style="display:none;" role="alert">
518 569 <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/warning-triangle.svg'); ?>" alt="warning-triangle"><span class="wppm_alert_text"></span>
519 570 </div>
520 - <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'))?>">
521 572 <input type="file" id="wppm_proj_attachment_upload" class="hidden" onchange="">
522 573 </div>
523 574 </form>
524 575 <style>
@@ -577,9 +628,11 @@
577 628 $link = (isset($wppm_toolbar_actions['link']) && $wppm_toolbar_actions['link']==1)? $link = 'link' :"";
578 629 $image = (isset($wppm_toolbar_actions['wppm_insert_editor_img']) && $wppm_toolbar_actions['wppm_insert_editor_img']==1)? $image = 'image' :"";
579 630 $forecolor = (isset($wppm_toolbar_actions['forecolor']) && $wppm_toolbar_actions['forecolor']==1)? $forecolor = 'forecolor' :"";
580 631 $backcolor = (isset($wppm_toolbar_actions['backcolor']) && $wppm_toolbar_actions['backcolor']==1)? $backcolor = 'backcolor' :"";
581 - $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 +
582 635 tinymce.remove();
583 636 tinymce.init({
584 637 selector:'#wppm_proj_description',
585 638 body_id: 'wppm_proj_description',
@@ -590,9 +643,9 @@
590 643 plugins: [
591 644 'lists link image directionality textcolor'
592 645 ],
593 646 image_advtab: true,
594 - 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 ); ?>',
595 648 branding: false,
596 649 autoresize_bottom_margin: 20,
597 650 browser_spellcheck : true,
598 651 relative_urls : false,
@@ -617,9 +670,9 @@
617 670 plugins: [
618 671 'lists link image directionality paste textcolor'
619 672 ],
620 673 image_advtab: true,
621 - 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 ); ?>',
622 675 branding: false,
623 676 autoresize_bottom_margin: 20,
624 677 browser_spellcheck : true,
625 678 relative_urls : false,
@@ -650,9 +703,9 @@
650 703 plugins: [
651 704 'lists link image directionality paste textcolor'
652 705 ],
653 706 image_advtab: true,
654 - 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 ); ?>',
655 708 branding: false,
656 709 autoresize_bottom_margin: 20,
657 710 browser_spellcheck : true,
658 711 relative_urls : false,
@@ -726,9 +779,9 @@
726 779 var file_extension = file_name_split[file_name_split.length-1];
727 780 file_extension = file_extension.toLowerCase();
728 781 if( (jQuery.inArray(file_extension,allowedExtension) > -1)){
729 782 flag = true;
730 - alert("<?php _e('Attached file type not allowed!','taskbuilder')?>");
783 + alert("<?php echo esc_js(__('Attached file type not allowed!','taskbuilder'))?>");
731 784 };
732 785 <?php
733 786 $max_upload = (int)(ini_get('upload_max_filesize')); ?>
734 787 var current_filesize=file.size/1000000;
@@ -733,9 +786,9 @@
733 786 $max_upload = (int)(ini_get('upload_max_filesize')); ?>
734 787 var current_filesize=file.size/1000000;
735 788 if(current_filesize > <?php echo esc_attr($max_upload); ?>){
736 789 flag = true;
737 - alert("<?php _e('File size exceed allowed limit!','taskbuilder')?>");
790 + alert("<?php echo esc_js(__('File size exceed allowed limit!','taskbuilder'))?>");
738 791 }
739 792 if (!flag){
740 793 var html_str = '<div class="wppm_attachment">'+
741 794 '<div class="progress" style="float: none !important; width: unset !important;">'+