From d0d4bf01f8ed064ac8bcc53c32b47ca5462efb66 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Thu, 15 Aug 2019 16:42:54 -0400 Subject: [PATCH] plugin updates for edit html page and search contacts Search should be getting list of contacts. Updating what is available for merge tags. --- classes/data/dataEmailMessages.php | 24 +++- index.php | 2 +- models/admin/ajax/newsletter.php | 9 +- models/admin/messages/index.php | 110 +++++------------- ..._V0.0.4.sql => create_database_V0.0.5.sql} | 5 +- setup/databaseScripts/dbVersions.php | 1 + .../update_database_V0.0.5.sql | 20 ++++ views/admin/header.html | 2 + views/admin/messages/editHtmlEmail.html | 102 +++++++++++----- views/admin/messages/index.html | 20 +--- views/admin/messages/list.html | 2 +- views/admin/messages/search.html | 47 ++++---- 12 files changed, 186 insertions(+), 158 deletions(-) rename setup/databaseScripts/{create_database_V0.0.4.sql => create_database_V0.0.5.sql} (94%) create mode 100644 setup/databaseScripts/update_database_V0.0.5.sql diff --git a/classes/data/dataEmailMessages.php b/classes/data/dataEmailMessages.php index 253c202..b8e6913 100644 --- a/classes/data/dataEmailMessages.php +++ b/classes/data/dataEmailMessages.php @@ -132,7 +132,7 @@ class GlmDataEmailMessages extends GlmDataAbstract 'p_table' => GLM_MEMBERS_MESSAGES_PLUGIN_DB_PREFIX . 'email_templates', 'p_field' => 'name', 'p_orderby' => 'name', - 'required' => true, + 'required' => false, 'force_list' => true, 'use' => 'a' ), @@ -184,6 +184,28 @@ class GlmDataEmailMessages extends GlmDataAbstract 'use' => 'a' ), + // Name + 'title' => array ( + 'field' => 'title', + 'type' => 'text', + 'required' => true, + 'use' => 'a' + ), + + // Footer + 'footer' => array ( + 'field' => 'footer', + 'type' => 'text', + 'required' => false, + 'use' => 'a' + ), + + // image + 'image' => array( + 'field' => 'image', + 'type' => 'image', + 'use' => 'a' + ), ); } diff --git a/index.php b/index.php index 9f8f7a7..a0a08be 100644 --- a/index.php +++ b/index.php @@ -46,7 +46,7 @@ if (!defined('ABSPATH')) { define('GLM_MEMBERS_MESSAGES_PLUGIN_VERSION', '0.0.1'); // DB Version -define('GLM_MEMBERS_MESSAGES_PLUGIN_DB_VERSION', '0.0.4'); +define('GLM_MEMBERS_MESSAGES_PLUGIN_DB_VERSION', '0.0.5'); // This is the minimum version of the GLM Members DB plugin require for this plugin. define('GLM_MEMBERS_MESSAGES_PLUGIN_MIN_MEMBERS_REQUIRED_VERSION', '2.8.0'); diff --git a/models/admin/ajax/newsletter.php b/models/admin/ajax/newsletter.php index ff723e3..bcdac4c 100644 --- a/models/admin/ajax/newsletter.php +++ b/models/admin/ajax/newsletter.php @@ -75,9 +75,6 @@ class GlmMembersAdmin_ajax_newsletter extends GlmDataEmailMessages if ( isset( $_REQUEST['message_id'] ) && $messageId = filter_var( $_REQUEST['message_id'], FILTER_VALIDATE_INT ) ) { $message = $this->getEntry( $messageId ); $emailData = array( - 'member' => array( - 'name' => 'Test Member', - ), 'contact' => array( 'fname' => 'John', 'lname' => 'Doe', @@ -114,10 +111,10 @@ class GlmMembersAdmin_ajax_newsletter extends GlmDataEmailMessages $template = $Templates->getEntry( $id ); } $tData = array( - 'image' => $template['image'], + 'image' => $message['image'], 'content' => $emailContent, - 'footer' => $template['footer'], - 'templateName' => $template['name'], + 'footer' => $message['footer'], + 'templateName' => $message['title'], ); // Load Smarty Template support diff --git a/models/admin/messages/index.php b/models/admin/messages/index.php index 17473f6..2806eab 100644 --- a/models/admin/messages/index.php +++ b/models/admin/messages/index.php @@ -63,7 +63,7 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages } - /* + /** * Perform Model Action * * This method does the work for this model and returns any resulting data @@ -105,17 +105,17 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages $option2 = false; $viewPath = 'admin/messages/'; $mergeTags = [ - 'Member Name', '{$member.name}', + // 'Member Name', '{$member.name}', 'Contact First Name', '{$contact.fname}', 'Contact Last Name', '{$contact.lname}', - 'Contact Address Line 1', '{$contact.addr1}', - 'Contact Address Line 2', '{$contact.addr2}', - 'Contact City', '{$contact.city}', - 'Contact State', '{$contact.state}', - 'Contact Zip', '{$contact.zip}', - 'Contact Office Phone', '{$contact.office_phone}', - 'Contact Home Phone', '{$contact.home_phone}', - 'Contact Mobile Phone', '{$contact.mobile_phone}', + // 'Contact Address Line 1', '{$contact.addr1}', + // 'Contact Address Line 2', '{$contact.addr2}', + // 'Contact City', '{$contact.city}', + // 'Contact State', '{$contact.state}', + // 'Contact Zip', '{$contact.zip}', + // 'Contact Office Phone', '{$contact.office_phone}', + // 'Contact Home Phone', '{$contact.home_phone}', + // 'Contact Mobile Phone', '{$contact.mobile_phone}', ]; // Setup Foundation 6 @@ -168,20 +168,20 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages // echo '
$_REQUEST: ' . print_r( $_REQUEST, true ) . '
'; if ( isset( $_REQUEST['filterMemberStatus'] ) && $filterStatus = filter_var( $_REQUEST['filterMemberStatus'], FILTER_VALIDATE_INT) ) { - $whereParts[] = " T.id IN ( SELECT member FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_info WHERE status = " . $filterStatus . ")"; + $whereParts[] = " T.ref_dest IN ( SELECT member FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_info WHERE status = " . $filterStatus . ")"; } else { } if ( isset( $_REQUEST['filterMemberCity'] ) && $filterMemberCity = filter_var( $_REQUEST['filterMemberCity'], FILTER_VALIDATE_INT) ) { - $whereParts[] = " T.id IN ( SELECT member FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_info WHERE city = " . $filterMemberCity . ")"; + $whereParts[] = " T.ref_dest IN ( SELECT member FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_info WHERE city = " . $filterMemberCity . ")"; } if ( isset( $_REQUEST['filterMemberCounty'] ) && $filterMemberCounty = filter_var( $_REQUEST['filterMemberCounty'], FILTER_VALIDATE_INT) ) { - $whereParts[] = " T.id IN ( SELECT member FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_info WHERE county = " . $filterMemberCounty . ")"; + $whereParts[] = " T.ref_dest IN ( SELECT member FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_info WHERE county = " . $filterMemberCounty . ")"; } if ( isset( $_REQUEST['filterMemberState'] ) && $filterMemberState = filter_var( $_REQUEST['filterMemberState'], FILTER_SANITIZE_STRING) ) { - $whereParts[] = " T.id IN ( SELECT member FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_info WHERE state = '" . $filterMemberState . "')"; + $whereParts[] = " T.ref_dest IN ( SELECT member FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_info WHERE state = '" . $filterMemberState . "')"; } if ( isset( $_REQUEST['filterMemberZip'] ) && $filterMemberZip = filter_var( $_REQUEST['filterMemberZip'], FILTER_SANITIZE_STRING) ) { - $whereParts[] = " T.id IN ( SELECT member FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_info WHERE zip = '" . $filterMemberZip . "')"; + $whereParts[] = " T.ref_dest IN ( SELECT member FROM " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "member_info WHERE zip = '" . $filterMemberZip . "')"; } if ( isset( $_REQUEST['filterMemberAccess'] ) && $filterAccess = filter_var( $_REQUEST['filterMemberAccess'], FILTER_VALIDATE_INT) ) { @@ -193,27 +193,15 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages } 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.id IN ( - SELECT DISTINCT( ref_dest ) - FROM " . GLM_MEMBERS_CONTACTS_PLUGIN_DB_PREFIX . "contacts - WHERE email like '%$textSearch%' - )"; + $whereParts[] = "T.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.id IN ( - SELECT DISTINCT( ref_dest ) - FROM " . GLM_MEMBERS_CONTACTS_PLUGIN_DB_PREFIX . "contacts - WHERE fname like '%$textSearch%' - )"; + $whereParts[] = "T.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.id IN ( - SELECT DISTINCT( ref_dest ) - FROM " . GLM_MEMBERS_CONTACTS_PLUGIN_DB_PREFIX . "contacts - WHERE lname like '%$textSearch%' - )"; + $whereParts[] = "T.lname like '%$textSearch%'"; } // Check if this is a request to show archived members @@ -250,7 +238,7 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages $categories[$c]['selected'] = true; } - $whereParts[] = " T.id in ( + $whereParts[] = " T.ref_dest in ( SELECT DISTINCT(I.member) FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info I, ".GLM_MEMBERS_PLUGIN_DB_PREFIX."category_member_info M, @@ -278,14 +266,13 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages if ( isset( $_REQUEST['search'] ) && filter_var( $_REQUEST['search'], FILTER_VALIDATE_BOOLEAN ) ) { // Do search - require_once GLM_MEMBERS_PLUGIN_CLASS_PATH . '/data/dataMembers.php'; - $Members = new GlmDataMembers( $this->wpdb, $this->config ); - - $where = implode( ' AND ', $whereParts ); - - $searchResults = $Members->getList( $where ); + require_once GLM_MEMBERS_CONTACTS_PLUGIN_CLASS_PATH . '/data/dataContacts.php'; + $Contacts = new GlmDataContacts( $this->wpdb, $this->config ); + $where = implode( ' AND ', $whereParts ); + $searchResults = $Contacts->getList( $where ); - $where = "T.archived <> true"; + // Get list of messages + $where = "T.archived <> true"; $messages = $this->getList( $where ); if ( $option2 === 'sendMessages' && isset( $_REQUEST['message_id'] ) && $messageId = filter_var( $_REQUEST['message_id'], FILTER_VALIDATE_INT ) ) { @@ -334,34 +321,6 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages $Templates = new GlmDataEmailTemplates( $this->wpdb, $this->config ); if ( isset( $_REQUEST['message_id'] ) && $messageId = filter_var( $_REQUEST['message_id'], FILTER_VALIDATE_INT ) ) { $message = $this->getEntry( $messageId ); - $emailData = array( - 'member' => array( - 'name' => 'Test Member', - ), - 'contact' => array( - 'fname' => 'John', - 'lname' => 'Doe', - 'addr1' => '120 E Lake St.', - 'addr2' => 'P.O. Box 20', - 'city' => 'Petoskey', - 'state' => 'MI', - 'zip' => '49770', - 'office_phone' => '(231) 555-1234', - 'home_phone' => '(231) 555-4242', - 'mobile_phone' => '(231) 555-2424', - ), - ); - $smarty = new smartyTemplateSupport(); - require GLM_MEMBERS_PLUGIN_SETUP_PATH . '/standardTemplateParams.php'; - if ( is_array( $emailData ) && count( $emailData ) > 0 ) { - foreach ( $emailData as $k => $d ) { - $smarty->templateAssign( $k, $d ); - } - } - $htmlMessage = nl2br( $message['message_body'] ); - $emailContent = $smarty->template->fetch( 'eval:' . $htmlMessage ); - } else { - $emailContent = '

Message Content would go here!

'; } if ( isset( $_REQUEST['id'] ) && $id = filter_var( $_REQUEST['id'], FILTER_VALIDATE_INT ) ) { $template = $Templates->getEntry( $id ); @@ -536,7 +495,7 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages * * Bulid the html email message for the each member and send it out. * - * @param $data Member data from search + * @param $data Contact data from search * @param $message Message array */ public function sendHtmlMessages( $data, $messageId ) @@ -552,7 +511,7 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages require_once GLM_MEMBERS_CONTACTS_PLUGIN_CLASS_PATH . '/data/dataContacts.php'; $Contacts = new GlmDataContacts( $this->wpdb, $this->config ); $whereParts = array(); - $whereParts[] = "T.ref_dest = " . $memData['id']; + $whereParts[] = "T.id = " . $memData['id']; $whereParts[] = "T.active = true"; $whereParts[] = "T.email like '%@%'"; $where = implode( " AND ", $whereParts ); @@ -560,9 +519,6 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages if ( $memberContacts && !empty( $memberContacts ) ) { foreach ( $memberContacts as $contact ) { $emailData = array( - 'member' => array( - 'name' => $memData['member'], - ), 'contact' => array( 'fname' => $contact['fname'], 'lname' => $contact['lname'], @@ -576,7 +532,7 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages 'mobile_phone' => $contact['mobile_phone'], ) ); - $messageBody = $this->generateHTML( $emailData, wpautop( $message['message_body'] ), $message['template_id']['value'] ); + $messageBody = $this->generateHTML( $emailData, wpautop( $message['message_body'] ), $message ); // Add this to the email_queue $this->wpdb->insert( @@ -626,7 +582,7 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages * @access public * @return void */ - function generateHTML( $data, $view, $template ) + function generateHTML( $data, $view, $message ) { // Load Smarty Template support. @@ -643,13 +599,11 @@ class GlmMembersAdmin_messages_index extends GlmDataEmailMessages } $emailContent = $smarty->template->fetch( 'eval:' . $this->fixImages( $view ) ); - $Templates = new GlmDataEmailTemplates( $this->wpdb, $this->config ); - $template = $Templates->getEntry( $template ); $tData = array( - 'image' => $template['image'], + 'image' => $message['image'], 'content' => $emailContent, - 'footer' => $template['footer'], - 'templateName' => $template['name'], + 'footer' => $message['footer'], + 'templateName' => $message['title'], ); if ( is_array( $tData ) && count( $tData ) > 0 ) { foreach ( $tData as $k => $d ) { diff --git a/setup/databaseScripts/create_database_V0.0.4.sql b/setup/databaseScripts/create_database_V0.0.5.sql similarity index 94% rename from setup/databaseScripts/create_database_V0.0.4.sql rename to setup/databaseScripts/create_database_V0.0.5.sql index a1cd37a..5150848 100644 --- a/setup/databaseScripts/create_database_V0.0.4.sql +++ b/setup/databaseScripts/create_database_V0.0.5.sql @@ -1,6 +1,6 @@ -- Gaslight Media Members Database -- File Created: 5/24/19 --- Database Version: 0.0.2 +-- Database Version: 0.0.5 -- Database Creation Script - Messages Add-On -- -- To permit each query below to be executed separately, @@ -10,6 +10,8 @@ CREATE TABLE {prefix}email_messages ( id INT NOT NULL AUTO_INCREMENT, template_id INT NOT NULL, + title TINYTEXT NULL, + image TINYTEXT NULL, archived BOOLEAN DEFAULT false, from_email TINYTEXT NOT NULL, from_name TINYTEXT NULL, @@ -17,6 +19,7 @@ CREATE TABLE {prefix}email_messages ( subject TINYTEXT NOT NULL, last_updated DATETIME NOT NULL, message_body TEXT NOT NULL, + footer TEXT NULL, PRIMARY KEY (id) ); diff --git a/setup/databaseScripts/dbVersions.php b/setup/databaseScripts/dbVersions.php index fbd955e..2f804f8 100644 --- a/setup/databaseScripts/dbVersions.php +++ b/setup/databaseScripts/dbVersions.php @@ -18,5 +18,6 @@ $glmMembersMessagesDbVersions = array( '0.0.2' => array('version' => '0.0.2', 'tables' => 3, 'date' => '05/30/2019'), '0.0.3' => array('version' => '0.0.3', 'tables' => 4, 'date' => '06/04/2019'), '0.0.4' => array('version' => '0.0.4', 'tables' => 4, 'date' => '06/07/2019'), + '0.0.5' => array('version' => '0.0.5', 'tables' => 4, 'date' => '08/14/2019'), ); diff --git a/setup/databaseScripts/update_database_V0.0.5.sql b/setup/databaseScripts/update_database_V0.0.5.sql new file mode 100644 index 0000000..743a8d9 --- /dev/null +++ b/setup/databaseScripts/update_database_V0.0.5.sql @@ -0,0 +1,20 @@ +-- Gaslight Media Members Database - Messages Add-On +-- File Created: 8/14/2019 +-- Database Version: 0.0.5 +-- Database Update From Previous Version Script +-- +-- To permit each query below to be executed separately, +-- all queries must be separated by a line with four dashses + +-- Add title to email_messages +ALTER TABLE {prefix}email_messages ADD COLUMN title TINYTEXT NULL; + +---- + +-- Add image to email_messages +ALTER TABLE {prefix}email_messages ADD COLUMN image TINYTEXT NULL; + +---- + +-- Add footer to email_messages +ALTER TABLE {prefix}email_messages ADD COLUMN footer TEXT NULL; diff --git a/views/admin/header.html b/views/admin/header.html index 9573e76..e3f3a5e 100644 --- a/views/admin/header.html +++ b/views/admin/header.html @@ -14,9 +14,11 @@
  • Email Messages
  • + {*
  • Email Templates
  • + *} diff --git a/views/admin/messages/editHtmlEmail.html b/views/admin/messages/editHtmlEmail.html index dbe91b3..dd47009 100644 --- a/views/admin/messages/editHtmlEmail.html +++ b/views/admin/messages/editHtmlEmail.html @@ -2,7 +2,7 @@ {include file='admin/header.html'}

    Html Email

    -{if $error} +{if !empty($error)}
    There was an error saving your data.
    {/if} -{if $success} +{if !empty($success)}
    Your data was Saved!