PluginProbe
Taskbuilder – Project Management & Task Management Tool With Kanban Board / trunk
Taskbuilder – Project Management & Task Management Tool With Kanban Board vtrunk
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
← All changes | includes/replace_macro.php +128 -72 1.0.2trunk View file →
@@ -1,72 +1,128 @@
1 -<?php
2 -if ( ! defined( 'ABSPATH' ) ) {
3 - exit; // Exit if accessed directly
4 -}
5 -
6 -global $current_user, $wppmfunction,$wpdb;
7 -$current_user_data = get_userdata($current_user->ID);
8 -$project_id = intval(sanitize_text_field($project_id));
9 -$wppm_project_data = $wppmfunction->get_project($project_id);
10 -preg_match_all("/{[^}]*}/" ,$str,$matches);
11 -$matches = array_unique($matches[0]);
12 -foreach($matches as $match){
13 - switch($match){
14 - //Current User Name
15 - case '{user_name}':
16 - $str = preg_replace('/{user_name}/', $current_user_data->display_name, $str);
17 - break;
18 - // Project ID
19 - case '{project_id}':
20 - $str = preg_replace('/{project_id}/', $project_id, $str);
21 - break;
22 - // Old project Status
23 - case '{old_project_status}':
24 - $str = preg_replace('/{old_project_status}/', $this->get_old_project_status_name($project_id), $str);
25 - break;
26 - // Project Status
27 - case '{new_project_status}':
28 - $str = preg_replace('/{new_project_status}/', $this->get_new_project_status_name(sanitize_text_field($wppm_project_data['status'])), $str);
29 - break;
30 - // Project Status
31 - case '{project_status}':
32 - $str = preg_replace('/{project_status}/', $this->get_new_project_status_name(sanitize_text_field($wppm_project_data['status'])), $str);
33 - break;
34 - // Project Category
35 - case '{project_category}':
36 - $str = preg_replace('/{project_category}/', $this->get_project_category_name(sanitize_text_field($wppm_project_data['cat_id'])), $str);
37 - break;
38 - // Project Name
39 - case '{project_name}':
40 - $str = preg_replace('/{project_name}/', sanitize_text_field($wppm_project_data['project_name']), $str);
41 - break;
42 - // Project Start Date
43 - case '{project_start_date}':
44 - $str = preg_replace('/{project_start_date}/', sanitize_text_field($wppm_project_data['start_date']), $str);
45 - break;
46 - // Project End Date
47 - case '{project_end_date}':
48 - $str = preg_replace('/{project_end_date}/', sanitize_text_field($wppm_project_data['end_date']), $str);
49 - break;
50 - // Assigned Users
51 - case '{project_assigned_users}':
52 - $assigned_users = $this->get_project_assigned_users_names($project_id);
53 - $str = preg_replace('/{project_assigned_users}/', sanitize_text_field($assigned_users), $str);
54 - break;
55 - // Previously Assigned users
56 - case '{previously_assigned_project_users}':
57 - $previously_assigned_users = $this->get_project_previously_assigned_users_names($project_id);
58 - $str = preg_replace('/{previously_assigned_project_users}/', sanitize_text_field($previously_assigned_users), $str);
59 - break;
60 - // Date created
61 - case '{date_created}':
62 - $str = preg_replace('/{date_created}/', get_date_from_gmt(sanitize_text_field($wppm_project_data['date_created'] )), $str);
63 - break;
64 - // Project Description
65 - case '{project_description}':
66 - $str = preg_replace('/{project_description}/', sanitize_text_field($wppm_project_data['description']), $str);
67 -
68 -
69 - }
70 -}
71 -$str = apply_filters('wppm_replace_macro',$str,$project_id);
72 -
1 +<?php
2 +if ( ! defined( 'ABSPATH' ) ) {
3 + exit; // Exit if accessed directly
4 +}
5 +
6 +global $current_user, $wppmfunction,$wpdb;
7 +$current_user_data = get_userdata($current_user->ID);
8 +$project_id = intval(sanitize_text_field($project_id));
9 +$wppm_project_data = $wppmfunction->get_project($project_id);
10 +$orderby_sql = (sanitize_sql_orderby( "id DESC" ));
11 +$wppm_proj_comment = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->prefix}wppm_project_comment where proj_id=%d ORDER BY $orderby_sql LIMIT 1",$project_id));
12 +$attachments = array();
13 +$auth_id = $wppmfunction->get_project_meta($project_id,'project_auth_code',true);
14 +if(!empty($wppm_proj_comment)){
15 + $attachments = explode(',',$wppm_proj_comment->attachment_ids);
16 +}
17 +preg_match_all("/{[^}]*}/" ,$str,$matches);
18 +$matches = array_unique($matches[0]);
19 +$flag =false;
20 +$page_setting = get_option( 'wppm-page-settings' );
21 +$view = $page_setting['project-url-page'];
22 +foreach($matches as $match){
23 + switch($match){
24 + //Current User Name
25 + case '{user_name}':
26 + $str = preg_replace('/{user_name}/', $current_user_data->display_name, $str);
27 + break;
28 + // Project ID
29 + case '{project_id}':
30 + $str = preg_replace('/{project_id}/', $project_id, $str);
31 + break;
32 + // Old project Status
33 + case '{old_project_status}':
34 + $str = preg_replace('/{old_project_status}/', $this->get_old_project_status_name($project_id), $str);
35 + break;
36 + // Project Status
37 + case '{new_project_status}':
38 + $str = preg_replace('/{new_project_status}/', $this->get_new_project_status_name(sanitize_text_field($wppm_project_data['status'])), $str);
39 + break;
40 + // Project Status
41 + case '{project_status}':
42 + $str = preg_replace('/{project_status}/', $this->get_new_project_status_name(sanitize_text_field($wppm_project_data['status'])), $str);
43 + break;
44 + // Project Category
45 + case '{project_category}':
46 + if(!empty($wppm_project_data['cat_id'])){
47 + $str = preg_replace('/{project_category}/', $this->get_project_category_name(sanitize_text_field($wppm_project_data['cat_id'])), $str);
48 + }else{
49 + $str = "";
50 + }
51 +
52 + break;
53 + // Project Name
54 + case '{project_name}':
55 + $str = preg_replace('/{project_name}/', sanitize_text_field($wppm_project_data['project_name']), $str);
56 + break;
57 + // Project Start Date
58 + case '{project_start_date}':
59 + $str = preg_replace('/{project_start_date}/', sanitize_text_field($wppm_project_data['start_date']), $str);
60 + break;
61 + // Project End Date
62 + case '{project_end_date}':
63 + $str = preg_replace('/{project_end_date}/', sanitize_text_field($wppm_project_data['end_date']), $str);
64 + break;
65 + // Assigned Users
66 + case '{project_assigned_users}':
67 + $assigned_users = $this->get_project_assigned_users_names($project_id);
68 + $str = preg_replace('/{project_assigned_users}/', sanitize_text_field($assigned_users), $str);
69 + break;
70 + // Previously Assigned users
71 + case '{previously_assigned_project_users}':
72 + $previously_assigned_users = $this->get_project_previously_assigned_users_names($project_id);
73 + $str = preg_replace('/{previously_assigned_project_users}/', sanitize_text_field($previously_assigned_users), $str);
74 + break;
75 + // Date created
76 + case '{date_created}':
77 + $str = preg_replace('/{date_created}/', get_date_from_gmt(sanitize_text_field($wppm_project_data['date_created'] )), $str);
78 + break;
79 + //Last comment user name
80 + case '{last_proj_comment_user_name}':
81 + $str = preg_replace('/{last_proj_comment_user_name}/', $this->get_last_comment_proj_user_name($project_id), $str);
82 + break;
83 + //Last comment body
84 + case '{proj_comment_body}':
85 + $flag= true;
86 + if(!empty($this->get_proj_comment_body($project_id))){
87 + $str = preg_replace('/{proj_comment_body}/', $this->get_proj_comment_body($project_id), $str);
88 + } else{
89 + $str = "";
90 + }
91 + break;
92 +
93 + // Project Description
94 + case '{project_description}':
95 + $str = preg_replace('/{project_description}/', sanitize_text_field($wppm_project_data['description']), $str);
96 + break;
97 + case '{project_url}':
98 + $project_url = '<a class="wppm_link" href="' . $this->get_project_url($project_id,$view) . '" target="_blank">' . $this->get_project_url($project_id,$view) . '</a>';
99 + $str = preg_replace('/{project_url}/', $project_url, $str);
100 + break;
101 +
102 + }
103 +}
104 +if($flag == true){
105 + if(!empty($attachments)){
106 + foreach($attachments as $attach_id){
107 + $upload_dir = wp_upload_dir();
108 + $attach_id = absint($attach_id);
109 + $attachment = $wpdb->get_row($wpdb->prepare("select * from {$wpdb->prefix}wppm_attachments where id=%d",$attach_id));
110 + if(!empty($attachment)){
111 + $updated_time = sanitize_text_field($attachment->date_created);
112 + $time = strtotime(sanitize_text_field($updated_time));
113 + $month = wp_date("m",$time);
114 + $year = wp_date("Y",$time);
115 + $findStr = ".txt";
116 + $attachment_name = preg_replace('/' . $findStr . '/', "", sanitize_file_name($attachment->name), 1);
117 + $file_url = $upload_dir['basedir'] . '/wppm/'.'/'.$year.'/'.$month.'/'. $attachment_name;
118 + $download_url = home_url('/').'?wppm_attachment='.sanitize_text_field($attachment->id).'&pid='.sanitize_text_field($project_id).'&pac='.sanitize_text_field($auth_id);
119 + $attach_url[] = '<a style="text-decoration:none;" href="'.$download_url.'" target="_blank">'.sanitize_file_name($attachment->file_name).'</a>';
120 + }else{
121 + $attach_url= array();
122 + }
123 + }
124 + $str = $str.implode("<br>",$attach_url);
125 + }
126 +}
127 +$str = apply_filters('wppm_replace_macro',$str,$project_id);
128 +