PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 3.0.4
Taskbuilder – Project Management & Task Management Tool With Kanban Board v3.0.4
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 1.0.6 All 57 releases
taskbuilder / includes / admin / projects / wppm_open_project.php

wppm_open_project.php in Taskbuilder – Project Management & Task Management Tool With Kanban Board 3.0.4, at includes/admin/projects/wppm_open_project.php

557 lines 39.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if ( ! defined( 'ABSPATH' ) ) {
3 exit; // Exit if accessed directly
4 }
5 global $wpdb,$current_user,$wppmfunction;
6 $wppm_project_time = get_option('wppm_project_time');
7 $wppm_default_project_date = get_option('wppm_default_project_date');
8 $wppm_public_projects_permission = get_option('wppm_public_projects_permission');
9 $appearance_settings = get_option("wppm-ap-individual-project");
10 $settings = get_option("wppm-ap-modal");
11 $wppm_current_user_capability = get_user_meta( $current_user->ID, 'wppm_capability', true );
12 $current_date = date('Y-m-d');
13 $id = isset($_POST) && isset($_POST['id']) ? intval(sanitize_text_field($_POST['id'])) : 0;
14 if (!isset($id)) {exit;}
15 $auth_id = $wppmfunction->get_project_meta($id,'project_auth_code',true);
16 $auth_id = sanitize_text_field($auth_id);
17 $project = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project where id = $id" );
18 $project_comment = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_comment where proj_id=".$id." ORDER BY create_time DESC");
19 if(isset($project->users)){
20 $users = explode(",",$project->users);
21 }else{
22 $users = "";
23 }
24 $wppm_users_role = get_option('wppm_user_role');
25 if(isset($project->status)){
26 $project_status = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id=".$project->status);
27 }
28 if(isset($project->cat_id)){
29 $project_category = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id=".$project->cat_id);
30 }
31 if(!empty($project->description)){
32 $project_description = stripslashes((htmlspecialchars_decode($project->description, ENT_QUOTES)));
33 }
34 if($wppm_project_time == 1){
35 $proj_start_date = isset($project->start_date)? $project->start_date:"";
36 $proj_end_date = isset($project->end_date) ? $project->end_date: "" ;
37 } elseif($wppm_project_time == 0){
38 $psDate = isset($project->start_date) ? new DateTime($project->start_date): "";
39 $peDate = isset($project->end_date) ? new DateTime($project->end_date):"";
40 $proj_start_date = !empty($psDate) ? $psDate->format('Y-m-d'):"";
41 $proj_end_date = !empty($peDate) ? $peDate->format('Y-m-d'):"";
42 }
43
44 ?>
45 <form id="wppm_open_project" method="post">
46 <div class="row">
47 <div class="col-sm-12">
48 <span class="wppm-heading-inline"><?php echo esc_html_e('Project','taskbuilder');?></span>
49 <?php if($current_user->has_cap('manage_options') || $wppm_current_user_capability == 'wppm_manager'|| $wppm_current_user_capability == 'wppm_admin'){ ?>
50 <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>
51 <?php } ?>
52 <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>
53 <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>
54 <?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"; ?>
55 <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>
56 <?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"; ?>
57 <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>
58 <?php echo do_action('wppm_after_open_project_buttons',$project->id);?>
59 </div>
60 </div>
61 <div id="wppm_load_individual_project_container" class="row">
62 <div class="col-sm-8 wppm_body col-md-9">
63 <div class="row">
64 <div class="col-sm-12" id="wppm_project_details_container">
65 <div class="row">
66 <div class="col-sm-12">
67 <span class="wppm_project_label"> <?php echo isset($project->project_name) ? esc_html($project->project_name):"";
68 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'))) { ?>
69 <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>
70 <?php } ?>
71 </span>
72 </div>
73 </div>
74 <div class="row">
75 <div class="col-sm-3">
76 <span class="wppm_project_details_label"><?php echo esc_html_e('Created On:','taskbuilder');?></span>
77 </div>
78 <div class="col-sm-9">
79 <span class="wppm_project_details"><?php echo isset($project->date_created) ? esc_html($project->date_created):"" ?></span>
80 </div>
81 </div>
82 <?php if($wppm_default_project_date==1) { ?>
83 <div class="row">
84 <div class="col-sm-3">
85 <span class="wppm_project_details_label"><?php echo esc_html_e('Start Date:','taskbuilder');?></span>
86 </div>
87 <div class="col-sm-9">
88 <span class="wppm_project_details" id="wppm_edit_pstart_date"><?php echo (isset($proj_start_date))? esc_html($proj_start_date): "" ?></span>
89 </div>
90 <input type="hidden" name="wppm_edit_pstart_date_ajax_nonce" id="wppm_edit_pstart_date_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_set_change_proj_start_date' ) ); ?>">
91 </div>
92 <div class="row">
93 <div class="col-sm-3">
94 <span class="wppm_project_details_label"><?php echo esc_html_e('End Date:','taskbuilder');?></span>
95 </div>
96 <div class="col-sm-9">
97 <?php
98 $pstatus = isset($project->status) ? $project->status :"";
99 $style = ($pstatus!=4 && $proj_end_date < $current_date) ? "color:#FF0000":"color:#2C3E50"; ?>
100 <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>
101 </div>
102 <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' ) ); ?>">
103 </div>
104 <?php } ?>
105 <div class="row">
106 <div class="col-sm-3">
107 <span class="wppm_project_details_label"><?php echo esc_html_e('Project Category:','taskbuilder');?></span>
108 </div>
109 <div class="col-sm-9">
110 <span class="wppm_project_details"><?php echo (isset($project_category->name))? esc_html_e($project_category->name,'taskbuilder'):"" ?></span>
111 </div>
112 </div>
113 <div class="row">
114 <div class="col-sm-3">
115 <span class="wppm_project_details_label"><?php echo esc_html_e('Description:','taskbuilder');?></span>
116 </div>
117 <?php
118 $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(),));
119 ?>
120 <div class="col-sm-9 wppm_project_description">
121 <span><?php echo (isset($project_description))? wp_kses(wpautop($project_description),$allowedtags):"" ?></span>
122 </div>
123 </div>
124 </div>
125 </div>
126 <div id="wppm_proj_discussion_container">
127 <div class="row">
128 <div class="col-sm-12" style="margin-top:5px;">
129 <span class="wppm_proj_discussion"><?php echo esc_html_e('Comment','taskbuilder')?></span><br>
130 </div>
131 </div>
132 <div class="row">
133 <div class="col-sm-12">
134 <textarea id="wppm_proj_comment" placeholder="<?php echo esc_attr__('Write a comment...','taskbuilder');?>" onclick="wppm_add_proj_comment()" name="wppm_proj_comment"></textarea>
135 </div>
136 </div>
137 <div class="row" id="wppm_proj_comment_btn">
138 <div class="col-sm-6">
139 <span id="wppm_proj_attach_file" onclick="wppm_upload_proj_comment_file()"><?php echo esc_html_e('Attach Files','taskbuilder')?></span>
140 </div>
141 <div class="col-sm-6">
142 <button type="button" id="wppm_individual_cancel_proj_comment_btn" onclick="wppm_cancel_proj_comment();" class="wppm-btn-cancel">
143 <?php echo esc_html_e('Cancel','taskbuilder')?>
144 </button>
145 <button type="button" id="wppm_individual_submit_proj_comment_btn" style="background-color:<?php echo esc_attr($appearance_settings['comment-send-btn-bg-color'])?>;color:<?php echo esc_attr($appearance_settings['comment-send-btn-color'])?>!important;" onclick="wppm_submit_proj_comment(<?php echo esc_attr($id); ?>);" class="wppm-btn">
146 <?php echo esc_html_e('SEND','taskbuilder')?>
147 </button>
148 </div>
149 <input type="hidden" name="_ajax_nonce" value="<?php echo esc_attr( wp_create_nonce( 'wppm_submit_proj_comment' ) ); ?>">
150 </div>
151 <div class="row">
152 <div class="wppm_proj_attachment_container col-sm-12" style="display:none;">
153 </div>
154 </div>
155 </div>
156 <div class="wppm_thread_container">
157 <?php
158 if(!empty($project_comment)){
159 foreach($project_comment as $comment){
160 $proj_comment_meta = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project_comment_meta where proj_id=".$id." AND comment_id=".$comment->id."");
161 $user = get_userdata( $comment->created_by );
162 $comment_body = stripslashes((htmlspecialchars_decode($comment->body, ENT_QUOTES)));
163 $comment_body = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $comment_body);
164 $date = date("Y-m-d H:i:s" ,strtotime($comment->create_time));
165 $thread_date = date("d F Y, h:i:s A" ,strtotime($date));
166 $attachment_ids = isset($comment->attachment_ids)? $comment->attachment_ids : '';
167 if($attachment_ids!=""){
168 $attachments = explode(",",$attachment_ids);
169 } else {
170 $attachments = array();
171 }
172 ?>
173 <div class="wppm_proj_thread">
174 <div class="wppm_thread_avatar">
175 <?php echo (get_avatar($comment->created_by, 40));?>
176 </div>
177 <div class="wppm_thread_body">
178 <div class="wppm_thread_user_name">
179 <strong style="color:<?php echo esc_attr($appearance_settings['comment-primary-color']);?>"><?php echo esc_html($user->display_name) ?></strong>
180 <span><?php if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_status')){
181 $comment_log_body = unserialize($comment->body);
182 $prev_status = $comment_log_body['prev_status'];
183 $new_status = $comment_log_body['new_status'];
184 if(isset($prev_status)){
185 $project_prev_status = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id=".$prev_status);
186 }
187 if(isset($new_status)){
188 $project_new_status = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id=".$new_status);
189 }
190 esc_html_e("changed status from $project_prev_status->name to $project_new_status->name","taskbuilder");
191 }
192 if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_creator')){
193 $comment_log_body = unserialize($comment->body);
194 $prev_user = $comment_log_body['prev_user'];
195 $new_user = $comment_log_body['new_user'];
196 $prev_user_data = get_userdata($prev_user);
197 $new_user_data = get_userdata($new_user);
198 esc_html_e("changed creator from $prev_user_data->display_name to $new_user_data->display_name","taskbuilder");
199 }if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_assign_user')){
200 esc_html_e("changed the Assignee","taskbuilder");
201 }if(!empty($comment->body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_cat')){
202 $comment_log_body = unserialize($comment->body);
203 $prev_cat = $comment_log_body['prev_cat'];
204 $new_cat = $comment_log_body['new_cat'];
205 if(!empty($prev_cat)){
206 $project_prev_cat = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id=".$prev_cat);
207 }
208 if(!empty($new_cat)){
209 $project_new_cat = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_categories where id=".$new_cat);
210 }
211 $proj_prev_cat_name = !empty($project_prev_cat) ? $project_prev_cat->name: "None";
212 $proj_new_cat_name = !empty($project_new_cat) ? $project_new_cat->name: "None";
213 esc_html_e("changed category from $proj_prev_cat_name to $proj_new_cat_name","taskbuilder");
214 }
215 ?></span>
216 <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>
217 <div class="wppm_thread_action">
218 <?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')))){ ?>
219 <span title="Edit this thread" onclick="wppm_edit_proj_thread(<?php echo esc_attr($comment->id)?>,<?php echo esc_attr($id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/edit1.svg'); ?>" alt="edit"></span>
220 <span title="Delete this thread" onclick="wppm_delete_proj_thread(<?php echo esc_attr($comment->id) ?>,<?php echo esc_attr($id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/trash.svg'); ?>" alt="delete"></span>
221 <?php } ?>
222 </div>
223 </div>
224 <div class="wppm_thread_messege" style="color:<?php echo esc_attr($appearance_settings['comment-secondary-color']);?>">
225 <?php
226 $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(),));
227 if(!empty($comment_body) && ((empty($proj_comment_meta->comment_type)) || (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='comment') || $proj_comment_meta->comment_type=='delete_proj_comment')){
228 echo wp_kses(wpautop($comment_body),$allowedtags) ;
229 } elseif(!empty($comment_body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_status')){ ?>
230 <span class="wppm_admin_label" style="margin-right: 10px; background-color:<?php echo isset($project_prev_status->bg_color) ? esc_attr($project_prev_status->bg_color):""; ?>;color:<?php echo isset($project_prev_status->color) ? esc_attr($project_prev_status->color): "" ?>;"><?php echo isset($project_prev_status->name) ? esc_attr($project_prev_status->name) : "" ?></span> <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/arrow-right.svg'); ?>" alt="arrow_right"> <span class="wppm_admin_label" style="margin-left:10px; background-color:<?php echo isset($project_new_status->bg_color) ? esc_attr($project_new_status->bg_color):""; ?>;color:<?php echo isset($project_new_status->color) ? esc_attr($project_new_status->color): "" ?>;"><?php echo isset($project_new_status->name) ? esc_attr($project_new_status->name) : "" ?></span><?php
231 } elseif(!empty($comment_body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_creator')) { ?>
232 <span style="margin-right: 10px;"><?php echo isset($prev_user_data->display_name) ? esc_attr($prev_user_data->display_name) : "" ?></span> <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/arrow-right.svg'); ?>" alt="arrow_right"> <span style="margin-left:10px;"><?php echo isset($new_user_data->display_name) ? esc_attr($new_user_data->display_name) : "" ?></span><?php
233 } elseif(!empty($comment_body) && (isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_assign_user')) {
234 $comment_log_body = unserialize($comment->body);
235 $prev_assign_user = $comment_log_body['prev_assign_user'];
236 $new_assign_user = $comment_log_body['new_assign_user'];
237 $prev_assign_user_array = array();
238 $new_assign_user_array = array();
239 if(!empty($prev_assign_user)){
240 $prev_assign_user_array = explode(",",$prev_assign_user);
241 }
242 if(!empty($new_assign_user)){
243 $new_assign_user_array = explode(",",$new_assign_user);
244 }
245 $assign_user_name = array();
246 $assign_user_name_str = "";
247 if(!empty($prev_assign_user_array)){
248 foreach($prev_assign_user_array as $val){
249 $assign_user = get_userdata($val);
250 $assign_user_name[] = $assign_user->display_name;
251 }
252 $assign_user_name_str = implode(",",$assign_user_name);
253 }
254 $new_assign_user_name = array();
255 $new_assign_user_name_str = "";
256 if(!empty($new_assign_user_array)){
257 foreach($new_assign_user_array as $val){
258 $new_assign_user = get_userdata($val);
259 $new_assign_user_name[] = $new_assign_user->display_name;
260 }
261 $new_assign_user_name_str = implode(",",$new_assign_user_name);
262 }
263 ?>
264 <span style="margin-right: 10px;"><?php echo !empty($assign_user_name) ? esc_attr( $assign_user_name_str) : " None" ?></span> <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/arrow-right.svg'); ?>" alt="arrow_right"> <span style="margin-left:10px;"><?php echo !empty($new_assign_user_name_str) ? esc_attr($new_assign_user_name_str) : "None" ?></span><?php
265 }elseif(isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='change_proj_cat'){ ?>
266 <span style="margin-right: 10px;"><?php echo !empty($project_prev_cat->name) ? esc_attr($project_prev_cat->name) : " None" ?></span> <img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/arrow-right.svg'); ?>" alt="arrow_right"> <span style="margin-left:10px;"><?php echo !empty($project_new_cat->name) ? esc_attr($project_new_cat->name) : "None" ?></span><?php
267 } ?>
268
269 </div>
270 <?php
271 if(!empty($attachments) && !(isset($proj_comment_meta->comment_type) && $proj_comment_meta->comment_type=='delete_proj_comment')):?> <br>
272 <strong class="wppm_attachment_title"><?php echo esc_html_e('Attachments','taskbuilder');?>:</strong><br>
273 <table class="wppm_attachment_tbl">
274 <tbody>
275 <?php
276 if(!empty($attachments)){
277 foreach( $attachments as $attachment ):
278 $attach = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_attachments where id=".$attachment);
279 $download_url = site_url('/').'?wppm_attachment='.$attachment.'&pid='.$id.'&pac='.$auth_id;
280 $findStr = ".txt";
281 if(!empty( $attach)){
282 $attachment_name = preg_replace('/' . $findStr . '/', "", $attach->name, 1);
283 $attachment_name = sanitize_file_name($attachment_name);
284 }
285 if((!empty($attachment_name))){
286 ?>
287 <tr class="wppm_attachment_tr">
288 <td>
289 <a class="wppm_attachment_link" href="<?php echo esc_url($download_url) ?>" target="_blank">
290 <span class="wppm_attachment_file_name" style="padding: 7px;"><?php echo isset($attach->file_name) ? esc_html($attach->file_name):"";?></span></a>
291 <?php if((($comment->created_by == $current_user->ID) || ($current_user->has_cap('manage_options')) || ($wppmfunction->has_proj_comment_permission('edit_proj_comment',$id,$comment->id)))){ ?>
292 <span class="wppm_thread_action_btn" onclick="wppm_proj_thread_attachment_remove(this,<?php echo isset($attach->id)? esc_attr($attach->id):''; ?>,<?php echo isset($comment->id)? esc_attr($comment->id):''; ?>,<?php echo isset($comment->proj_id) ? esc_attr($comment->proj_id):'';?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/cancel.svg'); ?>" alt="cancel"></span>
293 <?php } ?>
294 </td>
295 </tr>
296 <?php }
297 endforeach;
298 } ?>
299 </tbody>
300 </table>
301 <input type="hidden" name="wppm_proj_thread_attachment_remove_ajax_nonce" id="wppm_proj_thread_attachment_remove" value="<?php echo esc_attr( wp_create_nonce( 'wppm_remove_proj_thread_attachment' ) ); ?>">
302 <?php do_action('wppm_after_project_comment_attachment',$id,$comment->id);?>
303 <?php endif;?>
304 </div>
305 </div>
306 <?php }
307 } ?>
308 </div>
309 </div>
310 <div class="wppm_individual_project_widget col-sm-4 wppm_sidebar col-md-3">
311 <div class="row wppm_widget" id="wppm_project_status_widget">
312 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
313 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e('Status','taskbuilder')?></h4>
314 <?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"; ?>
315 <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>
316 </div>
317 <hr class="widget_divider">
318 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
319 <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>
320 </div>
321 </div>
322 <div class="row wppm_widget" id="wppm_project_raisedby_widget">
323 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
324 <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>
325 <?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')) { ?>
326 <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>
327 <?php } ?>
328 </div>
329 <hr class="widget_divider"> <?php
330 if(isset($project->created_by)){
331 $user_info = get_userdata($project->created_by);
332 }else{
333 $user_info = "";
334 }
335 ?>
336 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
337 <div id="wppm_project_creator">
338 <div style="padding:2px 0;">
339 <span class="wppm_project_user_avatar"><?php echo isset($project->created_by)? (get_avatar($project->created_by, 25, "mysteryman")):""; ?></span>
340 <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>
341 </div>
342 </div>
343 </div>
344 </div>
345 <div class="row wppm_widget" id="wppm_project_users_widget_container">
346 <div class="wppm-widget-header" style="background-color:<?php echo esc_attr($appearance_settings['widget-header-bg-color'])?>">
347 <h4 class="widget_header" style="color:<?php echo esc_attr($appearance_settings['widget-header-text-color'])?>"><?php echo esc_html_e('Users','taskbuilder')?></h4>
348 <?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') { ?>
349 <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>
350 <?php } ?>
351 </div>
352 <hr class="widget_divider">
353 <div class="wppm-widget-body" style="background-color:<?php echo esc_attr($appearance_settings['widget-body-bg-color'])?>">
354 <div id="wppm_project_users">
355 <?php
356 if(!(empty(array_filter($users)))){
357 foreach($users as $user) {
358 $user_data = get_userdata($user);
359 $project_user = $wpdb->get_row("SELECT * FROM {$wpdb->prefix}wppm_project_users WHERE proj_id = $id AND user_id = $user");
360 ?>
361 <div style="padding:2px 0;">
362 <span class="wppm_project_user_avatar"><?php echo (get_avatar($user, 25, "mysteryman")); ?></span>
363 <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>
364 <?php
365 if(!empty($wppm_users_role)){
366 foreach($wppm_users_role as $key=>$role){
367 if(!empty($role)){
368 foreach($role as $k=>$val){
369 if( !empty($project_user) && $key == $project_user->role_id){ ?>
370 <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
371 }
372 }
373 }
374 }
375 }
376 ?>
377 </div>
378 <?php
379 }
380 } else {
381 ?><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
382 }
383 ?>
384 </div>
385 </div>
386 </div>
387 </div>
388 <input type="hidden" id="wppm_proj_nonce" value="<?php echo wp_create_nonce('wppm_upload_proj_attach_file')?>">
389 <input type="file" id="wppm_proj_attachment_upload" class="hidden" onchange="">
390 </div>
391 </form>
392 <style>
393 .wppm_comment_date i:hover{
394 color: <?php echo esc_attr($appearance_settings['comment-date-hover-color'])?>;
395 }
396 #wppm_open_project .wppm-add-new-btn:hover{
397 background-color: <?php echo esc_attr($appearance_settings['menu-button-hover-color'])?>!important;
398 }
399 </style>
400 <script>
401 jQuery( document ).ready( function( jQuery ) { <?php
402 if ((($current_user->ID && $current_user->has_cap('manage_options')) || $wppmfunction->has_project_permission('change_project_details',$id) || ($project->created_by==$current_user->ID && $wppm_current_user_capability == 'wppm_manager') || $wppm_current_user_capability == 'wppm_admin')) { ?>
403 jQuery("#wppm_edit_pstart_date").flatpickr({
404 enableTime: true,
405 dateFormat: "Y-m-d H:i",
406 onChange: function(selectedDates, dateStr, instance) {
407 var data = {
408 action: 'wppm_set_change_proj_start_date',
409 proj_id:<?php echo esc_attr($project->id);?>,
410 date:dateStr,
411 _ajax_nonce:jQuery('#wppm_edit_pstart_date_ajax_nonce').val()
412 };
413 jQuery.post(wppm_admin.ajax_url, data, function(response) {
414 instance.close();
415 wppm_open_project(<?php echo esc_attr($project->id);?>);
416 });
417 },
418 });
419 jQuery("#wppm_edit_pend_date").flatpickr({
420 enableTime: true,
421 dateFormat: "Y-m-d H:i",
422 onChange: function(selectedDates, dateStr, instance) {
423 var data = {
424 action: 'wppm_set_change_proj_end_date',
425 proj_id:<?php echo esc_attr($project->id);?>,
426 date:dateStr,
427 _ajax_nonce:jQuery('#wppm_edit_pend_date_ajax_nonce').val()
428 };
429 jQuery.post(wppm_admin.ajax_url, data, function(response) {
430 instance.close();
431 wppm_open_project(<?php echo esc_attr($project->id);?>);
432 });
433 },
434 });
435 <?php } ?>
436 tinymce.remove();
437 tinymce.init({
438 selector:'#wppm_proj_description',
439 body_id: 'wppm_proj_description',
440 directionality : '<?php //echo 'rtl'; ?>',
441 menubar: false,
442 statusbar: false,
443 height : '200',
444 plugins: [
445 'lists link image directionality'
446 ],
447 image_advtab: true,
448 toolbar: 'bold italic underline blockquote | alignleft aligncenter alignright | bullist numlist | rtl | link image',
449 branding: false,
450 autoresize_bottom_margin: 20,
451 browser_spellcheck : true,
452 relative_urls : false,
453 remove_script_host : false,
454 convert_urls : true,
455 setup: function (editor) {
456 }
457 });
458 });
459
460 function wppm_add_proj_comment(){
461 tinymce.remove();
462 tinymce.init({
463 selector:'#wppm_proj_comment',
464 body_id: 'wppm_proj_comment',
465 directionality : '<?php //echo 'rtl'; ?>',
466 menubar: false,
467 statusbar: false,
468 height : '200',
469 width : '100%',
470 plugins: [
471 'lists link image directionality paste'
472 ],
473 image_advtab: true,
474 toolbar: 'bold italic underline blockquote | alignleft aligncenter alignright | bullist numlist | rtl | link image',
475 branding: false,
476 autoresize_bottom_margin: 20,
477 browser_spellcheck : true,
478 relative_urls : false,
479 remove_script_host : false,
480 convert_urls : true,
481 paste_as_text: true,
482 setup: function (editor) {
483 }
484 });
485 jQuery('#wppm_proj_comment_btn').show();
486 }
487
488 function wppm_upload_proj_comment_file(){
489 jQuery('#wppm_proj_attachment_upload').unbind('change');
490 jQuery('#wppm_proj_attachment_upload').on('change', function() {
491 var flag = false;
492 var file = this.files[0];
493 jQuery('#wppm_proj_attachment_upload').val('');
494 var allowedExtension = ['exe', 'php','js'];
495 var file_name_split = file.name.split('.');
496 var file_extension = file_name_split[file_name_split.length-1];
497 file_extension = file_extension.toLowerCase();
498 if( (jQuery.inArray(file_extension,allowedExtension) > -1)){
499 flag = true;
500 alert("<?php _e('Attached file type not allowed!','taskbuilder')?>");
501 };
502 <?php
503 $max_upload = (int)(ini_get('upload_max_filesize')); ?>
504 var current_filesize=file.size/1000000;
505 if(current_filesize > <?php echo esc_attr($max_upload); ?>){
506 flag = true;
507 alert("<?php _e('File size exceed allowed limit!','taskbuilder')?>");
508 }
509 if (!flag){
510 var html_str = '<div class="wppm_attachment">'+
511 '<div class="progress" style="float: none !important; width: unset !important;">'+
512 '<div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%">'+
513 file.name+
514 '</div>'+
515 '<span class="wppm_attachment_cancel" onclick="wppm_attachment_cancel(this);" style="display:none;"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/cross_icon.svg'); ?>" alt="delete_icon"></span>'+
516 '</div>'+
517 '</div>';
518 jQuery('.wppm_proj_attachment_container').show();
519 jQuery('.wppm_proj_attachment_container').append(html_str);
520 var attachment = jQuery('.wppm_proj_attachment_container').find('.wppm_attachment').last();
521 var data = new FormData();
522 data.append('file', file);
523 data.append('arr_name', file.name);
524 data.append('action', 'wppm_upload_proj_attach_file');
525 data.append('nonce', jQuery('#wppm_proj_nonce').val().trim());
526 jQuery.ajax({
527 type: 'post',
528 url: wppm_admin.ajax_url,
529 data: data,
530 xhr: function(){
531 var xhr = new window.XMLHttpRequest();
532 xhr.upload.addEventListener("progress", function(evt){
533 if (evt.lengthComputable) {
534 var percentComplete = Math.floor((evt.loaded / evt.total) * 100);
535 jQuery(attachment).find('.progress-bar').css('width',percentComplete+'%');
536 }
537 }, false);
538 return xhr;
539 },
540 processData: false,
541 contentType: false,
542 success: function(response) {
543 var return_obj=JSON.parse(response);
544 jQuery(attachment).find('.wppm_attachment_cancel').show();
545 if( parseInt(return_obj.id) != 0 ){
546 jQuery(attachment).append('<input type="hidden" class="wppm_proj_comment_attachment" name="wppm_proj_comment_attachment[]" value="'+return_obj.id+'">');
547 jQuery(attachment).find('.progress-bar').addClass('progress-bar-success');
548 }else {
549 jQuery(attachment).find('.progress-bar').addClass('progress-bar-danger');
550 }
551 }
552 });
553 }
554 });
555 jQuery('#wppm_proj_attachment_upload').trigger('click');
556 }
557 </script>