From d6a3218ce48963cf018a71df792bb1af167ffc79 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Tue, 26 Jun 2018 13:39:51 -0400 Subject: [PATCH] Adding member email notice When updated from pending to active a member email is sent out. If there's a member primary contact. --- classes/helper/notification.php | 8 +-- models/admin/member/memberInfo.php | 78 +++++++++++++--------- views/admin/notifications/memberEmail.html | 1 - 3 files changed, 52 insertions(+), 35 deletions(-) diff --git a/classes/helper/notification.php b/classes/helper/notification.php index 3751056b..4ec1e65c 100644 --- a/classes/helper/notification.php +++ b/classes/helper/notification.php @@ -110,12 +110,12 @@ class GlmMembersAdmin_member_notification extends GlmDataMembers $smarty->template->setTemplateDir( $viewPath ); // Add standard parameters - require GLM_MEMBERS_PLUGIN_SETUP_PATH.'/standardTemplateParams.php'; + require GLM_MEMBERS_PLUGIN_SETUP_PATH . '/standardTemplateParams.php'; $viewFile = 'admin/notifications/memberEmail.html'; - $memberList = GLM_MEMBERS_EVENTS_PLUGIN_ADMIN_URL ."?page=glm-members-admin-menu-members-list"; + $memberList = GLM_MEMBERS_EVENTS_PLUGIN_ADMIN_URL . '?page=glm-members-admin-menu-member'; $smarty->templateAssign( 'message', $message ); - // $smarty->templateAssign( 'name', $event['fieldData']['name'] ); + $smarty->templateAssign( 'name', $profile['reference_name'] ); $smarty->templateAssign( 'pendingMembers', $memberList ); // Generate output from model data and view @@ -174,7 +174,7 @@ class GlmMembersAdmin_member_notification extends GlmDataMembers $smarty->template->setTemplateDir( $viewPath ); // Add standard parameters - require GLM_MEMBERS_PLUGIN_SETUP_PATH.'/standardTemplateParams.php'; + require GLM_MEMBERS_PLUGIN_SETUP_PATH . '/standardTemplateParams.php'; $viewFile = 'admin/notifications/ownerEmail.html'; $smarty->templateAssign( 'notify_message', $notify_message); diff --git a/models/admin/member/memberInfo.php b/models/admin/member/memberInfo.php index 4dcd9b90..af975839 100644 --- a/models/admin/member/memberInfo.php +++ b/models/admin/member/memberInfo.php @@ -228,6 +228,7 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo $customFieldResults = false; $multipleProfileEnabeled = $this->config['settings']['enable_multiple_profiles']; $cloneType = 'CLONED'; + $active_info = false; // Check for action option - Should be one of the values in the "switch" statement below $option = false; @@ -336,33 +337,10 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo case 'submit': // Get the old status for this entry - $old_entry = $this->getEntry( $this->memberInfoID ); - // echo '
$old_entry: ' . print_r( $old_entry, true ) . '
'; + // Used after verifying data was saved + $old_entry = $this->getEntry( $this->memberInfoID ); $old_status = $old_entry['status']['value']; - // echo '
$old_status: ' . print_r( $old_status, true ) . '
'; $new_status = isset( $_REQUEST['status'] ) ? $_REQUEST['status'] : null; - // echo '
$new_status: ' . print_r( $new_status, true ) . '
'; - // echo '
$_REQUEST: ' . print_r( $_REQUEST, true ) . '
'; - - // echo '
$this->config: ' . print_r( $this->config, true ) . '
'; - // If a moderated user is going from Draft to Pending then send the admin notification - if ( $lockedToMember && apply_filters( 'glm_user_is_moderated', $lockedToMember ) ) { - $draft = $this->config['status_numb']['Draft']; - // echo '
$draft: ' . print_r( $draft, true ) . '
'; - $pending = $this->config['status_numb']['Pending']; - // echo '
$pending: ' . print_r( $pending, true ) . '
'; - if ( $new_status == $pending && $old_status == $draft ) { - // TODO: Code to send admin notification here - $Notifications = new GlmMembersAdmin_member_notification( $this->wpdb, $this->config ); - $settings = $this->config['email_notifications']; - // Get the profile reference name - $profile = array(); - $profile['reference_name'] = filter_var( $_REQUEST['reference_name'], FILTER_SANITIZE_STRING ); - $Notifications->sendAdminNotice( $this->memberID, $profile ); - echo '
$settings: ' . print_r( $settings, true ) . '
'; - } - } - // Check for new cities being submitted $this->checkNewCities(); @@ -394,12 +372,41 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo $this->memberInfo = $this->updateEntry($this->memberInfoID, 'id', true); if ($this->memberInfo['status']) { + // Status shortnames + $draft = $this->config['status_numb']['Draft']; + $pending = $this->config['status_numb']['Pending']; + $active = $this->config['status_numb']['Active']; + + // Send out a notice to the member if going from + // Pending to Active status + if ( $new_status == $active && $old_status == $pending ) { + $Notifications = new GlmMembersAdmin_member_notification( $this->wpdb, $this->config ); + // Get the profile reference name + $profile = array( + 'reference_name' => filter_var( $_REQUEST['reference_name'], FILTER_SANITIZE_STRING ), + ); + $Notifications->sendMemberNotice( $this->memberID, $profile ); + } + + // If a moderated user is going from Draft to Pending then send the admin notification + if ( $lockedToMember && apply_filters( 'glm_user_is_moderated', $lockedToMember ) ) { + if ( $new_status == $pending && $old_status == $draft ) { + // Send admin notification + $Notifications = new GlmMembersAdmin_member_notification( $this->wpdb, $this->config ); + // Get the profile reference name + $profile = array( + 'reference_name' => filter_var( $_REQUEST['reference_name'], FILTER_SANITIZE_STRING ), + ); + $Notifications->sendAdminNotice( $this->memberID, $profile ); + } + } + $customFieldResults = apply_filters( 'glm-member-db-save-custom-fields', $this->memberInfoID ); - if(is_array($customFieldResults)){ - $memberUpdated = false; + if ( is_array( $customFieldResults ) ) { + $memberUpdated = false; $memberUpdateError = true; } else { - $memberUpdated = true; + $memberUpdated = true; $memberUpdateError = false; } @@ -475,7 +482,17 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo default: // Edit the existing member - $this->memberInfo = $this->editEntry($this->memberInfoID); + $this->memberInfo = $this->editEntry( $this->memberInfoID ); + + // Is this a pending member info record? + $pending = $this->config['status_numb']['Pending']; + if ( $this->memberInfo['fieldData']['status']['value'] == $pending ) { + // If pending then see if there's an Active record. + $active_info = $this->getActiveInfoIdForMember( $this->memberID ); + if ( $active_info ) { + // We have a winner + } + } break; @@ -575,7 +592,8 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo 'time' => time(), 'slug' => GLM_MEMBERS_PLUGIN_SLUG, 'customFieldResults' => $customFieldResults, - 'lockedToMember' => $lockedToMember + 'lockedToMember' => $lockedToMember, + 'active_info' => $active_info, ); // Return status, suggested view, and data to controller diff --git a/views/admin/notifications/memberEmail.html b/views/admin/notifications/memberEmail.html index 7d22eff6..557144f8 100644 --- a/views/admin/notifications/memberEmail.html +++ b/views/admin/notifications/memberEmail.html @@ -20,7 +20,6 @@
-

A {$terms.term_member_cap} has been approved.

To view it, please go to the {$terms.term_member} page in your admin.

-- 2.17.1