From 7ca5af3b021826fe08e34a73c1f7dafded876f88 Mon Sep 17 00:00:00 2001 From: Anthony Talarico Date: Tue, 18 Jul 2017 09:10:42 -0400 Subject: [PATCH] adding email functionality for declined and approved events added ability to add a declined message that is sent to the user who submitted the event in the event that the event is declined or approved after being submitted --- models/admin/events/list.php | 59 ++++++++++++++++++++++++++++-- models/front/events/list.php | 19 +++++++--- views/admin/events/edit.html | 33 ++++++++++++++++- views/admin/events/editStatus.html | 11 ++++-- views/front/events/agenda.html | 2 +- 5 files changed, 108 insertions(+), 16 deletions(-) diff --git a/models/admin/events/list.php b/models/admin/events/list.php index 2a6a779..1037570 100644 --- a/models/admin/events/list.php +++ b/models/admin/events/list.php @@ -399,7 +399,7 @@ class GlmMembersAdmin_events_list extends GlmDataEvents $haveEvent = false; $event = false; } - + $view = 'edit'; break; @@ -889,7 +889,61 @@ class GlmMembersAdmin_events_list extends GlmDataEvents } } + + } + // DECLINED & APPROVED EVENT EMAIL FUNCTIONALITY /////// + $sql = "SELECT from_email FROM " . GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX . "management"; + $from_email = $this->wpdb->get_var($sql); + + $to_email = (isset($event['fieldData']['admin_email']) ? $event['fieldData']['admin_email'] : '' ); + + $header[] = 'From:' . $from_email; + $header[] = 'Reply-To:' . $from_email; + + // change the default wordpress from name when sending mail + function set_content_type(){ + return "text/html"; + } + + add_filter( + 'wp_mail_from_name', + function ( $name ) { + $siteName = get_bloginfo( 'name' ); + return $siteName; + } + ); + + // Send confirmation email, set the content type to allow html by using this filter + add_filter( 'wp_mail_content_type', 'set_content_type' ); + + $declined_msg = ''; + $current_status = $event['fieldData']['status']['value']; + + if($to_email){ + if($old_event_status === '20' && $current_status === '10' ) { + + $subject = 'Event Approved'; + $message = 'Your event has been approved'; + wp_mail( $to_email, $subject, $message, $header ); + + } else if($old_event_status === '20' && $current_status === '40' ){ + + // $event_notes = (isset($event['fieldData']['notes']) ? filter_var($event['fieldData']['notes'], FILTER_SANITIZE_STRING) : '' ); + // $offset = "DENIED REASON:"; + // $declined_msg = substr($event_notes, strpos($event_notes, 'DENIED REASON:') + strlen($offset)); + $declined_msg = (isset($_REQUEST['deniedText']) ? filter_var(($_REQUEST['deniedText']), FILTER_SANITIZE_STRING) : '' ); + + $subject = 'Event Declined'; + $message = "Your event has been declined for the following reason(s): $declined_msg"; + + wp_mail( $to_email, $subject, $message, $header ); + } + } + remove_filter( 'wp_mail_content_type', 'set_content_type' ); + // END DECLINED & APPROVED EVENT EMAIL FUNCTIONALITY //////// + + if (!$this->config['settings']['event_default_state']) { $this->config['settings']['event_default_state'] = $this->config['settings']['default_state']; } @@ -943,8 +997,7 @@ class GlmMembersAdmin_events_list extends GlmDataEvents 'limit' => $limit, 'namesList' => $namesList, 'eventDefaultState' => $this->config['settings']['event_default_state'], - 'currentTab' => $currentTab, - + 'currentTab' => $currentTab ); // Return status, any suggested view, and any data to controller diff --git a/models/front/events/list.php b/models/front/events/list.php index 253776c..1f3a248 100644 --- a/models/front/events/list.php +++ b/models/front/events/list.php @@ -823,12 +823,12 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction if($memberId){ if($current_year == $year){ $sql = 'SELECT MONTH(start_time) as month FROM '. GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX .'times '; - $sql .= "WHERE event IN (select id from ".GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX ."events WHERE ref_dest = $memberId )"; + $sql .= "WHERE event IN (select id from ".GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX ."events WHERE ref_dest = $memberId AND status = 10)"; $sql .= " AND YEAR(start_time) = $year AND MONTH(start_time) >= MONTH(CURDATE()) GROUP BY month"; $results[$year] = $wpdb->get_results($sql, ARRAY_A); } else { $sql = 'SELECT MONTH(start_time) as month FROM '. GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX .'times '; - $sql .= "WHERE event IN (select id from ".GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX ."events WHERE ref_dest = $memberId )"; + $sql .= "WHERE event IN (select id from ".GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX ."events WHERE ref_dest = $memberId AND status = 10)"; $sql .= " AND YEAR(start_time) = $year GROUP BY month"; $results[$year] = $wpdb->get_results($sql, ARRAY_A); } @@ -836,17 +836,24 @@ class GlmMembersFront_events_list extends GlmMembersFront_events_baseAction } else { if($current_year == $year){ + $sql = 'SELECT MONTH(start_time) as month FROM '. GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX .'times '; - $sql .= "WHERE YEAR(start_time) = $year AND MONTH(start_time) >= MONTH(CURDATE()) GROUP BY month"; + $sql .= "WHERE YEAR(start_time) = $year "; + $sql .= "AND MONTH(start_time) >= MONTH(CURDATE()) "; + $sql .= "AND event IN (select id from ".GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX ."events WHERE status = 10) "; + $sql .= "GROUP BY month"; + $results[$year] = $wpdb->get_results($sql, ARRAY_A); } else { - $sql = 'SELECT MONTH(start_time) as month FROM '. GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX .'times '; - $sql .= "WHERE YEAR(start_time) = $year GROUP BY month"; + $sql = 'SELECT MONTH(start_time) as month FROM '. GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX .'times '; + $sql .= "WHERE YEAR(start_time) = $year "; + $sql .= "AND event IN (select id from ".GLM_MEMBERS_EVENTS_PLUGIN_DB_PREFIX ."events WHERE status = 10)"; + $sql .= " GROUP BY month"; $results[$year] = $wpdb->get_results($sql, ARRAY_A); } } - } + foreach($results as $year => $month){ foreach($month as $key=>$value){ if($count < 18){ diff --git a/views/admin/events/edit.html b/views/admin/events/edit.html index 9ec8375..b84ae1c 100644 --- a/views/admin/events/edit.html +++ b/views/admin/events/edit.html @@ -820,7 +820,7 @@ minWidth: 400, dialogClass: "glm-dialog-no-close" }); - + // Ad a new category button action - pop-up dialog $('#newCategoryButton').click( function() { $("#newCategoryDialog").dialog("open"); @@ -1323,7 +1323,36 @@ if ( $('input[name=currentTab]').val() != 'glm-table-descr' ) { initCurrentTab(); } - + $("#deniedReason").dialog({ + autoOpen: false, + minWidth: 400, + + }); + + // declined event dialog + (function(){ + var notes = $('[name="notes"'); + var reason = $("#deniedText"); + + $('[name="status"]').on("change", function(){ + var status = $(this).val(); + if(status === '40'){ + $("#deniedReason").dialog("open"); + } + }); + $("#deniedReasonSubmit").on("click", function(){ + + var reason_text = reason.val(); + + if(reason_text){ + $("#deniedReason").dialog("close"); + notes.append(" DENIED REASON: " + reason_text) + $('#declinedMsg').val(reason_text); + } else { + reason.next().css("display", "block"); + } + }); + })(); }); diff --git a/views/admin/events/editStatus.html b/views/admin/events/editStatus.html index 0eb9767..16148c8 100644 --- a/views/admin/events/editStatus.html +++ b/views/admin/events/editStatus.html @@ -87,14 +87,17 @@ {/if} - - Categories - +
+ +
Please Enter a Reason
+ +
+ - +
Add a new Category
diff --git a/views/front/events/agenda.html b/views/front/events/agenda.html index 6122417..dffba54 100644 --- a/views/front/events/agenda.html +++ b/views/front/events/agenda.html @@ -97,10 +97,10 @@ {assign var="current_year" value=$smarty.now|date_format:"%Y"} {assign var="current_month" value=$smarty.now|date_format:"%m"} -