Sending notices for approved and declined profiles. feature/moderatedMemberUpdates
authorSteve Sutton <steve@gaslightmedia.com>
Thu, 13 Sep 2018 20:32:41 +0000 (16:32 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Thu, 13 Sep 2018 20:32:41 +0000 (16:32 -0400)
New status declined.
Status is changed when approved or declined.

classes/helper/notification.php
config/plugin.ini
css/admin.css
models/admin/member/memberInfo.php
views/admin/member/memberInfo.html

index 4ec1e65..4136c15 100644 (file)
@@ -83,7 +83,7 @@ class GlmMembersAdmin_member_notification extends GlmDataMembers
      * If not found use the member info record email.
      * If nothing in either one then return.
      */
-    public function sendMemberNotice( $memberId, $profile )
+    public function sendMemberNotice( $memberId, $profile, $approved = true )
     {
         $member = $this->getEntry( $memberId );
         // find notify_to
@@ -102,7 +102,11 @@ class GlmMembersAdmin_member_notification extends GlmDataMembers
         // get settings
         $settings    = $this->config['email_notifications'];
         $notify_from = $settings['from_email'];
-        $message     = $settings['approved_message'];
+        if ( $approved ) {
+            $message = $settings['approved_message'];
+        } else {
+            $message = $settings['declined_message'];
+        }
 
         // Setup the Smarty Engine
         $smarty   = new smartyTemplateSupport();
@@ -133,7 +137,11 @@ class GlmMembersAdmin_member_notification extends GlmDataMembers
         // Send confirmation email, set the content type to allow html by using this filter
         add_filter( 'wp_mail_content_type', array( $this, 'set_content_type' ) );
 
-        $subject  = 'Event Approved';
+        if ( $approved ) {
+            $subject = 'Profile Approved';
+        } else {
+            $subject = 'Profile Declined';
+        }
         $message  = $htmlMessage;
         $header[] = 'From:' . $notify_from;
         $header[] = 'Reply-To:' . $notify_from;
index 95c9d84..4da58aa 100644 (file)
@@ -54,12 +54,14 @@ sort_order_numb['Pseudo-Random'] = 20
 status[10] = 'Active'
 status[20] = 'Pending Review'
 status[30] = 'Draft'
+status[40] = 'Declined'
 status[90] = 'Archived'
 
 status_numb['Active']   = 10
 status_numb['Pending']  = 20
 status_numb['Draft']    = 30
 status_numb['Inactive'] = 30
+status_numb['Declined'] = 40
 status_numb['Archived'] = 90
 
 ;
index 3cac1b9..2105ce9 100644 (file)
     clear: both;
     float: right;
 }
-#glm-admin-content-container .button-primary#deleteMemberInfoButton {
+#glm-admin-content-container .button-primary#deleteMemberInfoButton,
+#glm-admin-content-container .button-primary.glm-alert {
     background: #e14d43;
     border: 1px solid #890000;
     box-shadow: 0 1px 0 #890000;
+    margin-left: 5px;
 }
-#glm-admin-content-container .button-primary#deleteMemberInfoButton:hover {
+#glm-admin-content-container .button-primary#deleteMemberInfoButton:hover,
+#glm-admin-content-container .button-primary.glm-alert:hover {
     background: #f66258;
     box-shadow: 0 -1px 0 #890000;
 }
index 81fd987..8121021 100755 (executable)
@@ -398,9 +398,10 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo
 
                     if ($this->memberInfo['status']) {
                         // Status shortnames
-                        $draft   = $this->config['status_numb']['Draft'];
-                        $pending = $this->config['status_numb']['Pending'];
-                        $active  = $this->config['status_numb']['Active'];
+                        $draft    = $this->config['status_numb']['Draft'];
+                        $pending  = $this->config['status_numb']['Pending'];
+                        $active   = $this->config['status_numb']['Active'];
+                        $declined = $this->config['status_numb']['Declined'];
 
                         // Send out a notice to the member if going from
                         // Pending to Active status
@@ -410,7 +411,33 @@ class GlmMembersAdmin_member_memberInfo extends GlmDataMemberInfo
                             $profile = array(
                                 'reference_name' => filter_var( $_REQUEST['reference_name'], FILTER_SANITIZE_STRING ),
                             );
-                            $Notifications->sendMemberNotice( $this->memberID, $profile );
+                            $Notifications->sendMemberNotice( $this->memberID, $profile, true );
+
+                            // Need to Archive the original record since this new pending one is taking it's place.
+                            // delete the selected record
+                            $this->wpdb->query(
+                                $this->wpdb->prepare(
+                                    "UPDATE " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_info
+                                        SET status = %d
+                                      WHERE status = %d
+                                        AND reference_name = %s
+                                        AND member = %d
+                                        AND id != %d",
+                                    $this->config['status_numb']['Archived'],
+                                    $this->config['status_numb']['Active'],
+                                    $profile['reference_name'],
+                                    $this->memberID,
+                                    $this->memberInfoID
+                                )
+                            );
+
+                        } else if ( $new_status == $declined && $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, false );
                         }
 
                         // If a moderated user is going from Draft to Pending then send the admin notification
index c3e1dd8..df22c99 100755 (executable)
@@ -10,7 +10,7 @@
     {if $settings.selected_map_interface == 2}
         <script src="//maps.googleapis.com/maps/api/js?&key={$settings.google_maps_api_key}"></script>
         <script type="text/javascript">var enableDraggable = true;</script>
-    {/if}   
+    {/if}
 
     <!--[if lt IE 9]>
       <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
                 value="Request Update">
         {* Else they can edit normally *}
         {else}
-            {if $memberInfo.fieldData.status.value == '30'}
-                <input class="updateMemberProfile button-primary glm-right" type="submit" value="{if $memberInfoID && $memberInfo}Approve {$terms.term_member} profile{else}Add new {$terms.term_member} profile{/if}">
+            {if $memberInfo.fieldData.status.value == '20'}
+                <input class="declineMemberProfile button-primary glm-right glm-alert" type="submit" value="{if $memberInfoID && $memberInfo}Decline {$terms.term_member} profile{else}Add new {$terms.term_member} profile{/if}">
+                <input class="approveMemberProfile button-primary glm-right" type="submit" value="{if $memberInfoID && $memberInfo}Approve {$terms.term_member} profile{else}Add new {$terms.term_member} profile{/if}">
             {else}
                 <input class="updateMemberProfile button-primary glm-right" type="submit" value="{if $memberInfoID && $memberInfo}Update {$terms.term_member} profile{else}Add new {$terms.term_member} profile{/if}">
             {/if}
             <input class="pendingMemberUpdate updateMemberProfile button-primary" type="submit" value="Request Update">
             <input class="saveAsDraft updateMemberProfile button-secondary" type="submit" style="margin-left: 10px;" value="Save as Draft">
         {else}
-            <input class="updateMemberProfile button-primary" type="submit" value="{if $memberInfoID && $memberInfo}Update {$terms.term_member} profile{else}Add new {$terms.term_member} profile{/if}">
+            {if $memberInfo.fieldData.status.value == '20'}
+                <input class="approveMemberProfile button-primary" type="submit" value="{if $memberInfoID && $memberInfo}Approve {$terms.term_member} profile{else}Add new {$terms.term_member} profile{/if}">
+                <input class="declineMemberProfile button-primary glm-alert" type="submit" value="{if $memberInfoID && $memberInfo}Decline {$terms.term_member} profile{else}Add new {$terms.term_member} profile{/if}">
+            {else}
+                <input class="updateMemberProfile button-primary" type="submit" value="{if $memberInfoID && $memberInfo}Update {$terms.term_member} profile{else}Add new {$terms.term_member} profile{/if}">
+            {/if}
         {/if}
 
     </form>
                     });
 
                 }
-*/                
+*/
 
                 // Listen for changes to video type
                 $('#glm-video-type').change( function() {
                 $("#newMailingCityDialog").dialog("close");
 
             });
-             
+
             // Flash certain elements for a short time after display
             $(".glm-flash-updated").fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500).fadeIn(500).fadeOut(500);
 
                 glmSubmitRequired = false;
                 return true;
             });
+            // If admin approves the member record
+            $('.approveMemberProfile').on('click', function(){
+                // Set the status to Active
+                $('select[name=status]').val('10');
+                return true;
+            });
+            // If admin declines the member record
+            $('.declineMemberProfile').on('click', function(){
+                $('select[name=status]').val('40');
+                return true;
+            });
 
             // If submit is required and we're laving the page, alert the user
             $(window).bind('beforeunload', function() {