| @@ -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 | + | |