PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / 2.0.2
Taskbuilder – Project Management & Task Management Tool With Kanban Board v2.0.2
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 / projects_list.php

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

254 lines 14.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,$wppmfunction,$current_user;
6 $status = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_statuses" );
7 $categories = $wpdb->get_results( "SELECT * FROM {$wpdb->prefix}wppm_project_categories" );
8 $proj_per_page = 20;
9 $page_no = (isset($_POST['page_no'])) ? intval(sanitize_text_field($_POST['page_no'])): '0';
10 $search_tag = isset($_POST['project_search']) ? sanitize_text_field($_POST['project_search']) : '';
11 $wppm_project_time = get_option('wppm_project_time');
12 $wppm_default_project_date = get_option('wppm_default_project_date');
13 if(!empty($search_tag)){
14 $search_tag_text = '%'.$search_tag.'%';
15 if($current_user->has_cap('manage_options')){
16 $query = ("SELECT Project.*
17 FROM {$wpdb->prefix}wppm_project AS Project
18 Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
19 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
20 Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
21 where Project.project_name LIKE '$search_tag_text' OR proj_statuses.name LIKE '$search_tag_text' OR proj_categories.name LIKE '$search_tag_text' OR ( user.display_name LIKE '$search_tag_text')
22 Group by Project.id");
23 $no_of_rows = ("SELECT count(*) FROM
24 (SELECT Project.*
25 FROM {$wpdb->prefix}wppm_project AS Project
26 Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
27 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
28 Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
29 where Project.project_name LIKE '$search_tag_text' OR proj_statuses.name LIKE '$search_tag_text' OR proj_categories.name LIKE '$search_tag_text' OR ( user.display_name LIKE '$search_tag_text') Group by Project.id) AS Project" );
30 }else{
31 $query = ("SELECT Project.*
32 FROM {$wpdb->prefix}wppm_project AS Project
33 Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
34 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
35 Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
36 where (Project.project_name LIKE '$search_tag_text' OR proj_statuses.name LIKE '$search_tag_text' OR proj_categories.name LIKE '$search_tag_text' OR ( user.display_name LIKE '$search_tag_text')) AND (FIND_IN_SET('$current_user->ID',Project.users)>0)
37 Group by Project.id");
38 $no_of_rows = ("SELECT count(*) FROM
39 (SELECT Project.*
40 FROM {$wpdb->prefix}wppm_project AS Project
41 Left join {$wpdb->prefix}wppm_project_statuses proj_statuses ON Project.status = proj_statuses.id
42 Left join {$wpdb->prefix}wppm_project_categories proj_categories ON Project.cat_id = proj_categories.id
43 Left join {$wpdb->base_prefix}users user ON (FIND_IN_SET(user.ID,Project.users)>0) AND (user.display_name LIKE '$search_tag_text')
44 where (Project.project_name LIKE '$search_tag_text' OR proj_statuses.name LIKE '$search_tag_text' OR proj_categories.name LIKE '$search_tag_text' OR ( user.display_name LIKE '$search_tag_text')) AND (FIND_IN_SET('$current_user->ID',Project.users)>0) Group by Project.id) AS Project" );
45 }
46 }else{
47 if($current_user->has_cap('manage_options')){
48 $query = ( "SELECT * FROM {$wpdb->prefix}wppm_project" );
49 $no_of_rows = ( "SELECT count(*) FROM {$wpdb->prefix}wppm_project" );
50 }else{
51 $query = ( "SELECT * FROM {$wpdb->prefix}wppm_project
52 where (FIND_IN_SET('$current_user->ID',users)>0)
53 ");
54 $no_of_rows = ( "SELECT count(*) FROM {$wpdb->prefix}wppm_project
55 where (FIND_IN_SET('$current_user->ID',users)>0)
56 ");
57 }
58 }
59 $no_of_rows = apply_filters('wppm_project_list_no_of_rows',$no_of_rows);
60 $totalrows = $wpdb->get_var( $no_of_rows );
61 $query = apply_filters('wppm_project_list_query',$query);
62 $limit_start=$page_no*$proj_per_page;
63 $limit="\n LIMIT ".$limit_start.",".$proj_per_page." ";
64 $query = $query.$limit;
65 $wppm_fillter = $wpdb->get_results($query);
66 ?>
67 <form id="wppm_project_list_frm">
68 <div id="wppm_project_list_container" class="wppm_bootstrap">
69 <div class="row">
70 <div class="col-sm-6" id="wppm_heading_inline">
71 <span class="wppm-heading-inline">
72 <?php echo esc_html_e('Projects','taskbuilder');?>
73 </span>
74 <?php if($current_user->has_cap('manage_options')){ ?>
75 <img width="25" height="30" id="wppm_add_new_project_btn" class="wppm_add_new_project_btn" onclick="wppm_add_new_project()" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/add.svg'); ?>" alt="add">
76 <?php } ?>
77 </div>
78 <div id="wppm_project_and_task_search" class="col-sm-6">
79 <img width="25px" id="wppm_project_search_filter_img" height="15px" src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/search.svg'); ?>" alt="search">
80 <input type="search" id="wppm_project_search_filter" name="wppm_project_search_filter" class="form-control form-control-sm" aria-controls="selection-datatable" placeholder="<?php echo esc_attr__('Search','taskbuilder');?>" value="<?php echo (!empty($search_tag)) ? esc_attr($search_tag) : "" ?>">
81 </div>
82 </div>
83 <div class="table-responsive">
84 <table id="wppm_project_table" class="wppm_table table">
85 <tr>
86 <th class="wppm_table_header"><?php echo esc_html_e('Project','taskbuilder'); ?></th>
87 <th class="wppm_table_header"><?php echo esc_html_e('Status','taskbuilder'); ?></th>
88 <th class="wppm_table_header"><?php echo esc_html_e('Users','taskbuilder'); ?></th>
89 <th class="wppm_table_header"><?php echo esc_html_e('Category','taskbuilder'); ?></th>
90 <?php if($wppm_default_project_date==1){ ?>
91 <th class="wppm_table_header"><?php echo esc_html_e('Start Date','taskbuilder'); ?></th>
92 <th class="wppm_table_header"><?php echo esc_html_e('End Date','taskbuilder'); ?></th>
93 <?php } ?>
94 <th class="wppm_table_header"><?php echo esc_html_e('No. of tasks','taskbuilder'); ?></th>
95 <th class="wppm_table_header"></th>
96 </tr>
97 <tbody>
98 <?php
99 $total_projects=0;
100 $users = array();
101 if(!empty($wppm_fillter)){
102 foreach( $wppm_fillter as $project ){
103 $total_projects++;
104 $status = $wpdb->get_row( "SELECT * FROM {$wpdb->prefix}wppm_project_statuses where id=$project->status" );
105 $users = explode(",",$project->users);
106 if(isset($project->cat_id)){
107 $category = $wpdb->get_var( "SELECT name FROM {$wpdb->prefix}wppm_project_categories where id=$project->cat_id" );
108 }
109 if(isset($project->id)){
110 if($current_user->has_cap('manage_options')){
111 $no_of_tasks = $wpdb->get_var("SELECT count(*) FROM {$wpdb->prefix}wppm_task WHERE project=$project->id ");
112 }else{
113 $query =("SELECT count(*) FROM
114 ( SELECT Task.*
115 FROM {$wpdb->prefix}wppm_task AS Task
116 Left join {$wpdb->prefix}wppm_project proj ON Task.project = proj.id
117 Left join {$wpdb->prefix}wppm_project_users proj_users ON Task.project = proj_users.proj_id
118 where Task.project = $project->id AND ((FIND_IN_SET('$current_user->ID',Task.users)>0) OR (Task.created_by= '$current_user->ID') OR (proj_users.user_id = '$current_user->ID' AND proj_users.role_id = 1 ))Group by Task.id ) AS Task");
119 $no_of_tasks = $wpdb->get_var($query);
120 }
121 }
122 if($wppm_project_time == 1){
123 $proj_start_date = $project->start_date;
124 $proj_end_date = $project->end_date;
125 } elseif($wppm_project_time == 0){
126 $psDate = new DateTime($project->start_date);
127 $peDate = new DateTime($project->end_date);
128 $proj_start_date = $psDate->format('Y-m-d');
129 $proj_end_date = $peDate->format('Y-m-d');
130 }
131 ?>
132 <tr onclick="wppm_open_project(<?php echo esc_attr($project->id) ?>)">
133 <td><?php echo esc_html_e($project->project_name,'taskbuilder') ?></td>
134 <td><span class="wppm_td_project_status" style="background-color:<?php echo esc_attr($status->bg_color);?>; color: <?php echo esc_attr($status->color); ?>"><?php echo esc_html_e($status->name,'taskbuilder') ?></span></td>
135 <td>
136 <?php
137 $i=0;
138 if(!empty(array_filter($users))){
139 foreach($users as $user){
140 $i++;
141 if( $i <= 4 ){
142 $user_info = get_user_by('id', $user );
143 if(!empty($user_info)){
144 ?>
145 <a href="#" title="<?php echo esc_html_e($user_info->display_name) ?>">
146 <?php echo get_avatar($user_info->ID, 25, "mysteryman");?>
147 </a> <?php
148 }
149 }
150 }
151 } else{
152 _e('None','wp_projects');
153 }
154 if($i > 4){
155 ?>
156 <a href="#" class="wppm_avatar">
157 <span id="wppm_avatar" style="background-color:black;" class="avatar">+<?php echo esc_html($i-4) ?></span>
158 </a>
159 <?php } ?>
160 </td>
161 <td class="wppm_table_td"><?php echo isset($category) ? esc_html_e($category,'taskbuilder'): "" ?></td>
162 <?php if($wppm_default_project_date==1){ ?>
163 <td class="wppm_table_td"><?php echo isset($proj_start_date) ? esc_html($proj_start_date): "" ?></td>
164 <td class="wppm_table_td"><?php echo isset($proj_end_date) ? esc_html($proj_end_date):"" ?></td>
165 <?php } ?>
166 <td class="wppm_table_td"><?php echo isset($no_of_tasks) ? esc_html($no_of_tasks):"" ?></td>
167 <td class="wppm_delete_action">
168 <?php $style = (($current_user->ID && $current_user->has_cap('manage_options')) || ($wppmfunction->has_project_permission('delete_project',esc_attr($project->id))))? "display:inline":"display:none"; ?>
169 <span style="<?php echo esc_attr($style); ?>" onclick="wppm_delete_project(<?php echo esc_attr($project->id) ?>)"><img src="<?php echo esc_url( WPPM_PLUGIN_URL . 'asset/images/trash.svg'); ?>" alt="delete"></span>
170 <?php ?>
171 </td>
172 </tr>
173 <?php
174 }
175 }
176 ?>
177 </tbody>
178 </table>
179 <?php
180 $total_pages=ceil($totalrows/$proj_per_page);
181 $current_page=$page_no+1;
182 $prev_page_no=$current_page-1;
183 $prev_class=($prev_page_no==0)?'disabled':'';
184 $next_page_no=($total_pages==$current_page)? $current_page-1:$current_page;
185 $next_class=($total_pages==$current_page)?'disabled':'';
186 ?>
187 <div class="wppm_project_result" style="<?php echo esc_attr($total_pages==0)? '':'display: none;';?>"><?php echo esc_html_e('Your search request returned no results.','taskbuilder');?></div>
188 <hr style="<?php echo esc_attr($total_pages==0)? '':'display: none;';?>">
189 </div>
190 <div class="row wppm_proj_pagination_container">
191 <div class="col-sm-4">
192 <?php echo esc_html_e('Total:','taskbuilder'); ?>&nbsp;<?php echo esc_html($total_projects) ?>&nbsp;<?php echo esc_html_e('of','taskbuilder') ?>&nbsp;<?php echo esc_html($totalrows) ?>&nbsp;<?php echo esc_html_e('Projects','taskbuilder')?>
193 </div>
194 <div class="col-sm-4">
195 <div class="wppm_proj_pagination" style="<?php echo esc_attr($total_pages==0)? "display:none;":"display:flex;"?>">
196 <span class="wppm-pagination-txt">
197 <span><?php echo esc_html($current_page); ?>&nbsp;<?php echo esc_html_e('of','taskbuilder');?>&nbsp;<?php echo esc_html($total_pages); ?>&nbsp;<?php echo esc_html_e('Page','taskbuilder'); ?></span>
198 </span>
199 <span
200 <?php echo esc_html($prev_class) ?>
201 style="<?php echo (isset($prev_class) && esc_attr($prev_class) == 'disabled') ? 'display:none;':'display:block;'?>">
202 <a class="wppm_pagination_prev" onclick="return wppm_load_prev_page(<?php echo esc_attr($prev_page_no) ?>,<?php echo esc_attr($page_no) ?>);"><?php echo esc_html_e('PREV','taskbuilder');?></a>
203 </span>
204 <span
205 <?php echo esc_attr($next_class) ?>
206 style="<?php echo (isset($next_class) && $next_class == 'disabled')?'display:none;':'display:block;'?>cursor:pointer;">
207 <a class="wppm_pagination_next" onclick="return wppm_load_next_page(<?php echo esc_attr($next_page_no) ?>,<?php echo esc_attr($page_no) ?>,<?php echo esc_attr($limit_start)?>);"><?php echo esc_html_e('NEXT','taskbuilder');?></a>
208 </span>
209 </div>
210 </div>
211 </div>
212 </div>
213 </form>
214 <script type="text/javascript">
215 jQuery( document ).ready( function( jQuery ) {
216 jQuery("input[name='wppm_project_search_filter']").keypress(function(e) {
217 //Enter key
218 if (e.which == 13) {
219 wppm_project_search_filter();
220 }
221 });
222 jQuery(".wppm_delete_action").on("click", function(e){
223 e.preventDefault();
224 return false;
225 });
226
227 jQuery('#wppm_project_list_frm').on('submit', function (e) {
228 var dataform = new FormData(jQuery('#wppm_project_list_frm')[0]);
229 jQuery.ajax({
230 url: wppm_admin.ajax_url,
231 type: 'POST',
232 data: dataform,
233 processData: false,
234 contentType: false,
235 success: function () {
236 alert('form was submitted');
237 }
238 });
239 });
240 });
241 </script>
242 <?php
243 add_action('wp_footer', 'wppm_page_inline_script', 99999999999999999999);
244 do_action('wppm_after_shortcode_loaded');
245 if(!function_exists('wppm_page_inline_script')) {
246 function wppm_page_inline_script() { ?>
247 <script type="text/javascript">
248 jQuery( document ).ready( function( jQuery ) {
249 wppm_get_project_list();
250 });
251 </script>
252 <?php }
253 }
254 ?>