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/projects/wppm_open_project.php +141 -86 5.0.2 → 6.0.7 View file →
@@ -13,15 +13,18 @@
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 +$wppm_can_create_project = ($current_user->has_cap('manage_options')) || $wppm_current_user_capability == 'wppm_manager'|| $wppm_current_user_capability == 'wppm_admin';
22 +$wppm_can_create_project = apply_filters( 'wppm_can_create_project', $wppm_can_create_project, $current_user->ID, $id );
23 +$auth_id = $wppmfunction->get_project_fields($id,'project_auth_code',true);
21 24 $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"));
25 +$project = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project where id = %d",$id));
26 +$orderby_sql = (sanitize_sql_orderby("create_time DESC"));
24 27 // url authentication.
25 28 $auth_code = isset( $_POST['auth-code'] ) ? sanitize_text_field( $_POST['auth-code'] ) : ''; // phpcs:ignore
26 29 if ( ! $auth_code ) {
27 30 $auth_code = isset( $_POST['auth_code'] ) ? sanitize_text_field( $_POST['auth_code'] ) : ''; // phpcs:ignore
@@ -29,9 +32,9 @@
29 32
30 33 if ( $auth_code && $auth_id == $auth_code ) {
31 34 $url_auth = true;
32 35 }
33 -$project_comment = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_comment where proj_id='".esc_sql($id)."' ORDER BY $orderby_sql");
36 +$project_comment = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_comment where proj_id = %d ORDER BY $orderby_sql",$id));
34 37 if(isset($project->users)){
35 38 $users = explode(",",$project->users);
36 39 }else{
37 40 $users = "";
@@ -36,18 +39,31 @@
36 39 }else{
37 40 $users = "";
38 41 }
39 42 $wppm_users_role = get_option('wppm_user_role');
43 +$current_user_role='';
44 +if ( ! empty( $users ) && in_array( $current_user->ID, $users, true ) ) {
45 + $current_user_role = $wpdb->get_var(
46 + $wpdb->prepare(
47 + "SELECT role_id
48 + FROM {$wpdb->prefix}wppm_project_users
49 + WHERE proj_id = %d
50 + AND user_id = %d",
51 + $id,
52 + $current_user->ID
53 + )
54 + );
55 +}
40 56 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'");
57 + $projstatus = absint($project->status);
58 + $project_status = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id = %d",$projstatus));
43 59 }
44 60 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'");
61 + $projcat = absint($project->cat_id);
62 + $project_category = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id = %d",$projcat));
47 63 }
48 64 if(!empty($project->description)){
49 - $project_description = stripslashes((htmlspecialchars_decode($project->description, ENT_QUOTES)));
65 + $project_description = ! empty( $project->description ) ? $project->description : '';
50 66 }
51 67 if($wppm_project_time == 1){
52 68 $psDate = new DateTime($project->start_date);
53 69 $peDate = new DateTime($project->end_date);
@@ -129,32 +145,52 @@
129 145 }
130 146
131 147 $project_data = $wppmfunction->get_project($id);
132 148 $project_users = explode(",",$project_data['users']);
149 + if(!empty($id)){
150 + $project_id = esc_sql($id);
151 + $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'");
152 +}else{
153 + $public_proj_meta ="";
154 +}
133 155
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))) {
156 +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 157 ?>
136 158 <div style="align-item:center;" ><h6><?php esc_attr_e( 'Unauthorized access!', 'taskbuilder' ); ?></h6></div>
137 159 <?php
138 160 wp_die();
139 161 }
140 -
162 +if( $wppm_current_user_capability == 'wppm_admin' || $current_user->has_cap('manage_options') || $project_data['created_by']==$current_user->ID){
163 + $archive_style= "display:inline;";
164 +}else{
165 + $archive_style= "display:none;";
166 +}
141 167 ?>
142 168 <form id="wppm_open_project" method="post">
143 169 <div class="row">
144 170 <div class="col-sm-12">
145 171 <span class="wppm-heading-inline"><?php echo esc_html_e('Project','taskbuilder');?></span>
146 - <?php if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_manager'|| $wppm_current_user_capability == 'wppm_admin'){ ?>
172 + <?php if($wppm_can_create_project){ ?>
147 173 <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 174 <?php } ?>
149 175 <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>
176 + <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>
177 + <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' ) ); ?>">
178 + <!-- Dashboard Button -->
179 + <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') ); ?>">
180 + <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/dashboard.svg'); ?>" alt="dashboard_icon">
181 + <?php esc_html_e('Dashboard','taskbuilder'); ?>
182 + </a>
150 183 <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>
184 + <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 185 <?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 186 <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 187 <?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 188 <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>
189 + <?php do_action('wppm_after_open_project_buttons',$project->id); ?>
190 + <?php foreach ( wppm_get_locked_pro_addons_by_placement('toolbar') as $wppm_addon_key => $wppm_addon ) : ?>
191 + <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>
192 + <?php endforeach; ?>
157 193 </div>
158 194 <div id="wppm_load_individual_project_container" class="row">
159 195 <div class="col-sm-8 wppm_body col-md-9">
160 196 <div class="row">
@@ -161,9 +197,10 @@
161 197 <div class="col-sm-12" id="wppm_project_details_container">
162 198 <div class="row">
163 199 <div class="col-sm-12">
164 200 <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'))) { ?>
201 + 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) {
202 + ?>
166 203 <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 204 <?php } ?>
168 205 </span>
169 206 </div>
@@ -197,9 +234,9 @@
197 234 } ?>
198 235 <span class="wppm_project_details"><?php echo isset($proj_create_date) ? esc_html($proj_create_date):"" ?></span>
199 236 </div>
200 237 </div>
201 - <?php if($wppm_default_project_date==1) { ?>
238 + <?php if($wppm_default_project_date==1 && $wppm_deafault_time_duration_project==0) { ?>
202 239 <div class="row">
203 240 <div class="col-sm-3">
204 241 <span class="wppm_project_details_label"><?php echo esc_html_e('Start Date:','taskbuilder');?></span>
205 242 </div>
@@ -219,15 +256,27 @@
219 256 <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 257 </div>
221 258 <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 259 </div>
223 - <?php } ?>
260 + <?php } if($wppm_deafault_time_duration_project==1){
261 + $wppm_proj_duration = $wppmfunction->wppm_get_duration($project->start_date,$project->end_date);
262 + $pstatus = isset($project->status) ? $project->status :"";
263 + $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"; ?>
264 + <div class="row">
265 + <div class="col-sm-3">
266 + <span class="wppm_project_details_label"><?php echo esc_html_e('Project Duration:','taskbuilder');?></span>
267 + </div>
268 + <div class="col-sm-9">
269 + <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>
270 + </div>
271 + </div> <?php
272 + }?>
224 273 <div class="row">
225 274 <div class="col-sm-3">
226 275 <span class="wppm_project_details_label"><?php echo esc_html_e('Project Category:','taskbuilder');?></span>
227 276 </div>
228 277 <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>
278 + <span class="wppm_project_details"><?php echo (isset($project_category->name))? esc_html($project_category->name):"" ?></span>
230 279 </div>
231 280 </div>
232 281 <div class="row">
233 282 <div class="col-sm-3">
@@ -236,14 +285,15 @@
236 285 <?php
237 286 $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 287 ?>
239 288 <div class="col-sm-9 wppm_project_description">
240 - <span><?php echo (isset($project_description))? wp_kses(wpautop($project_description),$allowedtags):"" ?></span>
289 + <span><?php echo (!empty($project_description))? wp_kses(wpautop($project_description),$allowedtags):"" ?></span>
241 290 </div>
291 + <?php do_action('wppm_after_project_details_in_open_project',$project->id);?>
242 292 </div>
243 293 </div>
244 294 </div>
245 - <div id="wppm_proj_discussion_container" style="<?php echo ($wppm_proj_hide_comment_section==0) ? 'display:none;' : 'display:block;' ?>">
295 + <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 296 <div class="row">
247 297 <div class="col-sm-12" style="margin-top:5px;">
248 298 <span class="wppm_proj_discussion"><?php echo esc_html_e('Comment','taskbuilder')?></span><br>
249 299 </div>
@@ -271,18 +321,17 @@
271 321 <div class="wppm_proj_attachment_container col-sm-12" style="display:none;">
272 322 </div>
273 323 </div>
274 324 </div>
275 - <div class="wppm_thread_container" style="<?php echo ($wppm_proj_hide_comment_section==0) ? 'display:none;' : 'display:block;' ?>">
325 + <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 326 <?php
277 327 if(!empty($project_comment)){
278 328 foreach($project_comment as $comment){
279 329 $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 330 $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));
331 + $comment_body = !empty($comment->body) ? wp_kses_post(wpautop($comment->body)) : '';
332 + $date = wp_date("Y-m-d H:i:s" ,strtotime($comment->create_time));
333 + $thread_date = wp_date("d F Y, h:i:s A" ,strtotime($date));
285 334 $attachment_ids = isset($comment->attachment_ids)? $comment->attachment_ids : '';
286 335 if($attachment_ids!=""){
287 336 $attachments = explode(",",$attachment_ids);
288 337 } else {
@@ -300,16 +349,16 @@
300 349 $comment_log_body = unserialize($comment->body);
301 350 $prev_status = $comment_log_body['prev_status'];
302 351 $new_status = $comment_log_body['new_status'];
303 352 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'");
353 + $prev_status = absint($prev_status);
354 + $project_prev_status = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id = %d",$prev_status));
306 355 }
307 356 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'");
357 + $new_status = absint($new_status);
358 + $project_new_status = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id= %d",$new_status));
310 359 }
311 - esc_html_e("changed status from $project_prev_status->name to $project_new_status->name","taskbuilder");
360 + echo esc_html( sprintf(__( 'Changed status from %1$s to %2$s', 'taskbuilder' ),$project_prev_status->name,$project_new_status->name));
312 361 }
313 362 if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_creator')){
314 363 $comment_log_body = unserialize($comment->body);
315 364 $prev_user = $comment_log_body['prev_user'];
@@ -315,27 +364,29 @@
315 364 $prev_user = $comment_log_body['prev_user'];
316 365 $new_user = $comment_log_body['new_user'];
317 366 $prev_user_data = get_userdata($prev_user);
318 367 $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'");
368 + 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 369 }
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'");
370 + if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_assign_user')){
371 + esc_html_e("Changed the Assignee","taskbuilder");
333 372 }
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 - }
373 + if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_cat')){
374 + $comment_log_body = unserialize($comment->body);
375 + $prev_cat = $comment_log_body['prev_cat'];
376 + $new_cat = $comment_log_body['new_cat'];
377 + if(!empty($prev_cat)){
378 + $prev_cat = absint($prev_cat);
379 + $project_prev_cat = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id= %d",$prev_cat));
380 + }
381 + if(!empty($new_cat)){
382 + $new_cat = absint($new_cat);
383 + $project_new_cat = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id=%d",$new_cat));
384 + }
385 + $proj_prev_cat_name = !empty($project_prev_cat) ? $project_prev_cat->name: "None";
386 + $proj_new_cat_name = !empty($project_new_cat) ? $project_new_cat->name: "None";
387 + 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 ));
388 + }
338 389 ?></span>
339 390 <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 391 <div class="wppm_thread_action">
341 392 <?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 +449,10 @@
398 449 <?php
399 450 if(!empty($attachments)){
400 451 foreach( $attachments as $attachment ):
401 452 $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'");
453 + $attachment = absint($attachment);
454 + $attach = $wpdb->get_row( $wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_attachments where id=%d",$attachment));
404 455 $findStr = ".txt";
405 456 if(!empty( $attach)){
406 457 $attachment_name = preg_replace('/' . $findStr . '/', "", $attach->name, 1);
407 458 $attachment_name = sanitize_file_name($attachment_name);
@@ -434,10 +485,10 @@
434 485 <div class="wppm_individual_project_widget col-sm-4 wppm_sidebar col-md-3">
435 486 <div class="row wppm_widget" id="wppm_project_status_widget">
436 487 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
437 488 <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>
489 + <?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"; ?>
490 + <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 491 </div>
441 492 <hr class="widget_divider">
442 493 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
443 494 <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 +496,9 @@
445 496 </div>
446 497 <div class="row wppm_widget" id="wppm_project_raisedby_widget">
447 498 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
448 499 <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')) { ?>
500 + <?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 501 <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 502 <?php } ?>
452 503 </div>
453 504 <hr class="widget_divider"> <?php
@@ -460,9 +511,9 @@
460 511 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
461 512 <div id="wppm_project_creator">
462 513 <div style="padding:2px 0;">
463 514 <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>
515 + <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 516 </div>
466 517 </div>
467 518 </div>
468 519 </div>
@@ -468,9 +519,9 @@
468 519 </div>
469 520 <div class="row wppm_widget" id="wppm_project_users_widget_container">
470 521 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
471 522 <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') { ?>
523 + <?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 524 <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 525 <?php } ?>
475 526 </div>
476 527 <hr class="widget_divider">
@@ -476,34 +527,36 @@
476 527 <hr class="widget_divider">
477 528 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
478 529 <div id="wppm_project_users">
479 530 <?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
531 + if(!empty($users)){
532 + if(!(empty(array_filter($users)))){
533 + foreach($users as $user) {
534 + $user_data = get_userdata($user);
535 + $user = absint($user);
536 + $project_user = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = %d AND user_id = %d",$id,$user));
537 + ?>
538 + <div style="padding:2px 0;">
539 + <span class="wppm_project_user_avatar"><?php echo (get_avatar($user, 25, "mysteryman")); ?></span>
540 + <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>
541 + <?php
542 + if(!empty($wppm_users_role)){
543 + foreach($wppm_users_role as $key=>$role){
544 + if(!empty($role)){
545 + foreach($role as $k=>$val){
546 + if( !empty($project_user) && $key == $project_user->role_id){ ?>
547 + <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
548 + }
496 549 }
497 550 }
498 551 }
499 552 }
500 - }
501 - ?>
502 - </div>
503 - <?php
504 - }
505 - } else {
553 + ?>
554 + </div>
555 + <?php
556 + }
557 + }
558 + }else {
506 559 ?><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 560 }
508 561 ?>
509 562 </div>
@@ -508,9 +561,9 @@
508 561 ?>
509 562 </div>
510 563 </div>
511 564 </div>
512 - <?php echo do_action('wppm_after_project_widget',$project->id);?>
565 + <?php do_action('wppm_after_project_widget',$project->id);?>
513 566 </div>
514 567 <div id="wppm_alert_success" class="alert alert-success wppm_alert" style="display:none;" role="alert">
515 568 <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/success.svg'); ?>" alt="success"><span class="wppm_alert_text"></span>
516 569 </div>
@@ -516,9 +569,9 @@
516 569 </div>
517 570 <div id="wppm_alert_error" class="alert alert-danger wppm_alert" style="display:none;" role="alert">
518 571 <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/warning-triangle.svg'); ?>" alt="warning-triangle"><span class="wppm_alert_text"></span>
519 572 </div>
520 - <input type="hidden" id="wppm_proj_nonce" value="<?php echo wp_create_nonce('wppm_upload_proj_attach_file')?>">
573 + <input type="hidden" id="wppm_proj_nonce" value="<?php echo esc_attr(wp_create_nonce('wppm_upload_proj_attach_file'))?>">
521 574 <input type="file" id="wppm_proj_attachment_upload" class="hidden" onchange="">
522 575 </div>
523 576 </form>
524 577 <style>
@@ -577,9 +630,11 @@
577 630 $link = (isset($wppm_toolbar_actions['link']) && $wppm_toolbar_actions['link']==1)? $link = 'link' :"";
578 631 $image = (isset($wppm_toolbar_actions['wppm_insert_editor_img']) && $wppm_toolbar_actions['wppm_insert_editor_img']==1)? $image = 'image' :"";
579 632 $forecolor = (isset($wppm_toolbar_actions['forecolor']) && $wppm_toolbar_actions['forecolor']==1)? $forecolor = 'forecolor' :"";
580 633 $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' :""; ?>
634 + $strikethrough = (isset($wppm_toolbar_actions['strikethrough']) && $wppm_toolbar_actions['strikethrough']==1)? $strikethrough = 'strikethrough' :"";
635 + $toolbar = trim("$bold $italic $underline $blockquote | $align | $bullist $numlist | $rtl | $link $image | $forecolor $backcolor $strikethrough");?>
636 +
582 637 tinymce.remove();
583 638 tinymce.init({
584 639 selector:'#wppm_proj_description',
585 640 body_id: 'wppm_proj_description',
@@ -590,9 +645,9 @@
590 645 plugins: [
591 646 'lists link image directionality textcolor'
592 647 ],
593 648 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 ?>',
649 + toolbar: '<?php echo esc_js( $toolbar ); ?>',
595 650 branding: false,
596 651 autoresize_bottom_margin: 20,
597 652 browser_spellcheck : true,
598 653 relative_urls : false,
@@ -617,9 +672,9 @@
617 672 plugins: [
618 673 'lists link image directionality paste textcolor'
619 674 ],
620 675 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 ?>',
676 + toolbar: '<?php echo esc_js( $toolbar ); ?>',
622 677 branding: false,
623 678 autoresize_bottom_margin: 20,
624 679 browser_spellcheck : true,
625 680 relative_urls : false,
@@ -650,9 +705,9 @@
650 705 plugins: [
651 706 'lists link image directionality paste textcolor'
652 707 ],
653 708 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 ?>',
709 + toolbar: '<?php echo esc_js( $toolbar ); ?>',
655 710 branding: false,
656 711 autoresize_bottom_margin: 20,
657 712 browser_spellcheck : true,
658 713 relative_urls : false,
@@ -726,9 +781,9 @@
726 781 var file_extension = file_name_split[file_name_split.length-1];
727 782 file_extension = file_extension.toLowerCase();
728 783 if( (jQuery.inArray(file_extension,allowedExtension) > -1)){
729 784 flag = true;
730 - alert("<?php _e('Attached file type not allowed!','taskbuilder')?>");
785 + alert("<?php echo esc_js(__('Attached file type not allowed!','taskbuilder'))?>");
731 786 };
732 787 <?php
733 788 $max_upload = (int)(ini_get('upload_max_filesize')); ?>
734 789 var current_filesize=file.size/1000000;
@@ -733,9 +788,9 @@
733 788 $max_upload = (int)(ini_get('upload_max_filesize')); ?>
734 789 var current_filesize=file.size/1000000;
735 790 if(current_filesize > <?php echo esc_attr($max_upload); ?>){
736 791 flag = true;
737 - alert("<?php _e('File size exceed allowed limit!','taskbuilder')?>");
792 + alert("<?php echo esc_js(__('File size exceed allowed limit!','taskbuilder'))?>");
738 793 }
739 794 if (!flag){
740 795 var html_str = '<div class="wppm_attachment">'+
741 796 '<div class="progress" style="float: none !important; width: unset !important;">'+