Adding more to the search
authorSteve Sutton <steve@gaslightmedia.com>
Fri, 31 May 2019 20:43:00 +0000 (16:43 -0400)
committerSteve Sutton <steve@gaslightmedia.com>
Fri, 31 May 2019 20:43:00 +0000 (16:43 -0400)
Apply the new fields in the search.
Add media to email edit page.

models/admin/messages/index.php
models/admin/messages/sendMessagesEmails.php
views/admin/messages/editHtmlEmail.html
views/admin/messages/search.html

index 12b47a9..b7c00f6 100644 (file)
@@ -118,13 +118,13 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages
 
         switch ( $option ) {
         case 'search':
+            // echo '<pre>$this->config: ' . print_r( $this->config, true ) . '</pre>';
             $view          = 'search';
             $searchResults = array();
             $messages      = array();
             $mTypeSelected = false;
-            $whereParts    = array(
-                "T.status != " . $this->config['status_numb']['Archived']
-            );
+            $whereParts    = array();
+            $catsToUse     = array();
 
             wp_enqueue_style( 'select2','https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css' );
             wp_enqueue_script( 'select2js', 'https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.min.js' );
@@ -136,6 +136,48 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages
 
             // echo '<pre>$_REQUEST: ' . print_r( $_REQUEST, true ) . '</pre>';
 
+            if ( isset( $_REQUEST['filterMemberStatus'] ) && $filterStatus = filter_var( $_REQUEST['filterMemberStatus'], FILTER_VALIDATE_INT) ) {
+                $whereParts[] = " T.status = " . $filterStatus;
+            } else {
+                $whereParts[] = "T.status != " . $this->config['status_numb']['Archived'];
+            }
+
+            if ( isset( $_REQUEST['filterMemberAccess'] ) && $filterAccess = filter_var( $_REQUEST['filterMemberAccess'], FILTER_VALIDATE_INT) ) {
+                $whereParts[] = " T.member IN (SELECT id FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "members where access = ".$filterAccess.")";
+            }
+            if ( isset( $_REQUEST['filterMemberName'] ) && $filterMemberName = filter_var( $_REQUEST['filterMemberName'] ) ) {
+                $textSearch = addslashes(filter_var($_REQUEST['filterMemberName'], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES));
+                $whereParts[] = "T.member IN (
+                    SELECT DISTINCT( id )
+                      FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "members
+                     WHERE name like '%$textSearch%'
+                )";
+            }
+            if ( isset( $_REQUEST['filterContactEmail'] ) && $filterContactEmail = filter_var( $_REQUEST['filterContactEmail'], FILTER_SANITIZE_STRING) ) {
+                $textSearch = addslashes(filter_var($_REQUEST['filterContactEmail'], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES));
+                $whereParts[] = "T.member IN (
+                    SELECT DISTINCT( ref_dest )
+                      FROM " . GLM_MEMBERS_CONTACTS_PLUGIN_DB_PREFIX . "contacts
+                     WHERE email like '%$textSearch%'
+                )";
+            }
+            if ( isset( $_REQUEST['filterContactFirstName'] ) && $filterContactFirstName = filter_var( $_REQUEST['filterContactFirstName'], FILTER_SANITIZE_STRING) ) {
+                $textSearch = addslashes(filter_var($_REQUEST['filterContactFirstName'], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES));
+                $whereParts[] = "T.member IN (
+                    SELECT DISTINCT( ref_dest )
+                      FROM " . GLM_MEMBERS_CONTACTS_PLUGIN_DB_PREFIX . "contacts
+                     WHERE fname like '%$textSearch%'
+                )";
+            }
+            if ( isset( $_REQUEST['filterContactLastName'] ) && $filterContactLastName = filter_var( $_REQUEST['filterContactLastName'], FILTER_SANITIZE_STRING) ) {
+                $textSearch = addslashes(filter_var($_REQUEST['filterContactLastName'], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES));
+                $whereParts[] = "T.member IN (
+                    SELECT DISTINCT( ref_dest )
+                      FROM " . GLM_MEMBERS_CONTACTS_PLUGIN_DB_PREFIX . "contacts
+                     WHERE lname like '%$textSearch%'
+                )";
+            }
+
             // Check if this is a request to show archived members
             if ( isset( $_REQUEST['filterArchived'] ) ) {
                 $whereParts[]   = " T.member IN (SELECT id FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "members where access = ".$this->config['access_numb']['Archived'].")";
@@ -223,6 +265,8 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages
                 'categories'    => $categories,
                 'member_types'  => $member_types,
                 'searchResults' => $searchResults,
+                'accessTypes'   => $this->config['access'],
+                'statusTypes'   => $this->config['status'],
             );
             break;
 
index f3094ec..10a55b0 100644 (file)
@@ -106,7 +106,14 @@ class GlmMembersAdmin_messages_sendMessagesEmails //extends GlmDataRegistrations
 
             if ( $emailQueues ) {
                 foreach ( $emailQueues as $email ) {
-                    $this->sendHtmlEmail( $email['from_email'], $email['to_email'], $email['subject'], $email['message_body'], $email['reply_to_email'] );
+                    $this->sendHtmlEmail(
+                        $email['from_email'],
+                        $email['to_email'],
+                        $email['subject'],
+                        $email['message_body'],
+                        $email['from_name'],
+                        $email['reply_to_email']
+                    );
                     // Update this to processed
                     $this->wpdb->update(
                         GLM_MEMBERS_MESSAGES_PLUGIN_DB_PREFIX . 'email_queue',
@@ -171,14 +178,14 @@ class GlmMembersAdmin_messages_sendMessagesEmails //extends GlmDataRegistrations
      * @access public
      * @return void
      */
-    public function sendHtmlEmail( $from, $to, $subject, $htmlMessage, $replyTo = null )
+    public function sendHtmlEmail( $from, $to, $subject, $htmlMessage, $fromName, $replyTo = null )
     {
 
         // Set the From name using this wordpress hook.
         add_filter(
             'wp_mail_from_name',
             function ( $name ) {
-                return $this->config['settings']['reg_org_name'];
+                return $fromName;
             }
         );
         // Send confirmation email, set the content type to allow html by using this filter
index 5df0869..f9d0568 100644 (file)
@@ -45,7 +45,7 @@
                     $textAreaContent,
                     'message_body',
                     json_decode('{
-                        "media_buttons": false,
+                        "media_buttons": true,
                         "quicktags": false,
                         "textarea_name": "message_body",
                         "editor_height": 250
index e7fa420..95084bd 100644 (file)
@@ -36,6 +36,7 @@
         </table>
     </form>
 {else}
+    {* Search Form *}
     <form action="{$thisUrl}?page={$thisPage}" method="post">
         <input type="hidden" name="page" value="{$thisPage}" />
         <input type="hidden" name="option" value="search" />
@@ -54,7 +55,7 @@
                 </td>
             </tr>
             <tr>
-                <th>Member Type</th>
+                <th>{$terms.term_member_cap} Type</th>
                 <td>
                     <select id="filterMemberTypes" name="filterMemberTypes">
                         <option value=""></option>
                     </select>
                 </td>
             </tr>
+            <tr>
+                <th>{$terms.term_member_cap} Profile Status</th>
+                <td>
+                    <select name="filterMemberStatus">
+                        <option value=""></option>
+                        {foreach $statusTypes as $key => $status}
+                            <option value="{$key}">{$status}</option>
+                        {/foreach}
+                    </select>
+                </td>
+            </tr>
+            <tr>
+                <th>{$terms.term_member_cap} Access</th>
+                <td>
+                    <select name="filterMemberAccess">
+                        <option value=""></option>
+                        {foreach $accessTypes as $key => $status}
+                            <option value="{$key}">{$status}</option>
+                        {/foreach}
+                    </select>
+                </td>
+            </tr>
+            <tr>
+                <th>{$terms.term_member_cap} Name</th>
+                <td>
+                    <input name="filterMemberName" />
+                </td>
+            </tr>
+            <tr>
+                <th>Contact Email</th>
+                <td>
+                    <input name="filterContactEmail" />
+                </td>
+            </tr>
+            <tr>
+                <th>Contact First Name</th>
+                <td>
+                    <input name="filterContactFirstName" />
+                </td>
+            </tr>
+            <tr>
+                <th>Contact Last Name</th>
+                <td>
+                    <input name="filterContactLastName" />
+                </td>
+            </tr>
+
             <tr>
                 <td colspan="2">
                     <input type="submit" value="Search" />