From 9bbe8836d40f30b82c32bdc5c11296dd9ed9f0c2 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Fri, 4 May 2018 14:52:16 -0400 Subject: [PATCH] Form now submits Submits the form to the saved options. --- assets/lifeB.png | Bin 0 -> 27229 bytes assets/send.png | Bin 0 -> 3120 bytes css/admin.css | 96 ++++++++++++++++++ defines.php | 2 + models/admin/settings/support.php | 156 ++++++++++++++++++++++++++++++ models/admin/support/index.php | 81 ++++++++++++++-- setup/adminTabs.php | 13 +++ setup/validActions.php | 3 + views/admin/settings/support.html | 48 +++++++++ views/admin/support/index.html | 28 ++---- views/admin/support/thankyou.html | 70 ++++++++++++++ 11 files changed, 466 insertions(+), 31 deletions(-) create mode 100755 assets/lifeB.png create mode 100755 assets/send.png create mode 100644 css/admin.css create mode 100644 models/admin/settings/support.php create mode 100644 views/admin/settings/support.html create mode 100644 views/admin/support/thankyou.html diff --git a/assets/lifeB.png b/assets/lifeB.png new file mode 100755 index 0000000000000000000000000000000000000000..e3c39e1085ea38b7a173c60245723da9b7e26e56 GIT binary patch literal 27229 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 Hu0mjf3St9D literal 0 HcmV?d00001 diff --git a/assets/send.png b/assets/send.png new file mode 100755 index 0000000000000000000000000000000000000000..e57df496f34000c014ad7d314dcc0286bc03f738 GIT binary patch literal 3120 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 v5J+TyE&hlidSjq^=i3uzG9pd0@GU? + * @license http://www.gaslightmedia.com Gaslightmedia + * @version 0.1 + */ + +/* + * This class performs the work for the default action of the "Members" menu + * option, which is to display the members dashboard. + * + */ +class GlmMembersAdmin_settings_support //extends GlmDataEmailNotifications +{ + + /** + * WordPress Database Object + * + * @var $wpdb + * @access public + */ + public $wpdb; + /** + * Plugin Configuration Data + * + * @var $config + * @access public + */ + public $config; + + /* + * Constructor + * + * This contructor sets up this model. At this time that only includes + * storing away the WordPress data object. + * + * @return object Class object + * + */ + public function __construct ($wpdb, $config) + { + + // Save WordPress Database object + $this->wpdb = $wpdb; + + // Save plugin configuration object + $this->config = $config; + + // Run constructor for members data class + // parent::__construct(false, false); + + } + + /* + * Perform Model Action + * + * This method does the work for this model and returns any resulting data + * + * @return array Status and data array + * + * 'status' + * + * True if successfull and false if there was a fatal failure. + * + * 'menuItemRedirect' + * + * If not false, provides a menu item the controller should + * execute after this one. Normally if this is used, there would also be a + * modelRedirect value supplied as well. + * + * 'modelRedirect' + * + * If not false, provides an action the controller should execute after + * this one. + * + * 'view' + * + * A suggested view name that the controller should use instead of the + * default view for this model or false to indicate that the default view + * should be used. + * + * 'data' + * + * Data that the model is returning for use in merging with the view to + * produce output. + * + */ + public function modelAction ($actionData = false) + { + + $success = true; + $error = false; + $email_settings = false; + + // If there's an action option + if (isset($_REQUEST['option'])) { + + switch($_REQUEST['option']) { + + case 'update': + + // serialize the request + $value = array( + 'support_email' => $_REQUEST['support_email'], + 'support_from_name' => $_REQUEST['support_from_name'], + 'support_from_email' => $_REQUEST['support_from_email'], + ); + $option_value = serialize( $value ); + + update_option( GLM_MEMBERS_SUPPORT_SETTING_OPTION_NAME, $option_value ); + + break; + } + + } + + $support_option_array = get_option( GLM_MEMBERS_SUPPORT_SETTING_OPTION_NAME ); + if ( $support_option_array ) { + $email_settings = unserialize( $support_option_array ); + } + + // If we had a fatal error, redirect to the error page + if ($error) { + return array( + 'status' => $success, + 'menuItemRedirect' => 'error', + 'modelRedirect' => 'index', + 'view' => 'admin/error/index.html', + 'data' => false + ); + } + + // Compile template data + $templateData = array( + 'settings' => $email_settings + ); + + // Return status, suggested view, and data to controller + return array( + 'status' => $success, + 'menuItemRedirect' => false, + 'modelRedirect' => false, + 'view' => 'admin/settings/support.html', + 'data' => $templateData + ); + + } + +} diff --git a/models/admin/support/index.php b/models/admin/support/index.php index 286f6cc..724f512 100644 --- a/models/admin/support/index.php +++ b/models/admin/support/index.php @@ -79,25 +79,86 @@ class GlmMembersAdmin_support_index // extends GlmDataLeadEntry public function modelAction($actionData = false) { - $view = 'index'; + $view = 'index'; + $email_settings = false; + $option = false; + + if ( isset( $_REQUEST['option'] ) ) { + $option = filter_var( $_REQUEST['option'], FILTER_SANITIZE_STRING ); + } switch ( $option ) { + case 'submit': + $view = 'thankyou'; + + $support_option_array = get_option( GLM_MEMBERS_SUPPORT_SETTING_OPTION_NAME ); + if ( $support_option_array ) { + $email_settings = unserialize( $support_option_array ); + $email = $email_settings['support_email']; + $from_name = $email_settings['support_from_name']; + $from = $email_settings['support_from_email']; + } + + if ($email) { + // Setup the Headers. + $hdrs = 'From: '.$from_name.' <' . $from . '>'; + $hdrs .= "\nReply-To: {$values['name']} <{$values['email']}>"; + + // Setup the message. + $msg = 'Name: ' . $values['name'] . "\n" . + 'Email: ' . $values['email'] . "\n" . + 'Problem:' . stripslashes($values['problem']) . "\n\n\n" . + 'SiteName: ' . get_bloginfo('name') . "\n" . + 'SiteUrl: ' . get_bloginfo('url') . "\n" . + 'Date: ' . date('m/d/Y') . "\n" . + 'Time: ' . date('H:i:s ') . "\n" . + 'User-Agent: ' . $_SERVER['HTTP_USER_AGENT'] . "\n" . + 'Remote-Addr: ' . $_SERVER['REMOTE_ADDR'] . "\n"; + + // Check for any uploaded files. + $attachment = ''; + if ( isset( $_FILES ) && is_array( $_FILES ) + && isset( $_FILES['file_upload'] ) && !$_FILES['file_upload']['error'] ) { + // Create a directory in uploads for support files if needed + $upPath = wp_upload_dir(); + $filePath = $upPath['basedir'] . '/glm--member-db-support'; + if ( !is_dir( $filePath ) ) { + $oldumask = umask( 0 ); + mkdir( $filePath, 0770 ); + umask( $oldumask ); + } + // move the uploaded file + $fileName = wp_unique_filename( $filePath, $_FILES['file_upload']['name'] ); + $fileUploaded = move_uploaded_file( $_FILES['file_upload']['tmp_name'], $fileName ); + if ( $fileUploaded && $fileName ) { + $attachment = $fileName; + } + } + + wp_mail( + $email.','.$values['email'], + 'Support Form', + $msg, + $hdrs, + $attachment + ); + + + // If there's a file attachment then delete file from server + if ( isset( $fileName ) && $fileName && is_file( $filePath . '/' . $fileName ) ) { + unlink( $filePath . '/' . $fileName ); + } + } + break; default: + $view = 'index'; break; } - // Get the email options - $email_options = array( - array( - 'value' => 'steve@gaslightmedia.com', - 'label' => 'Admin help', - ) - ); - // Common things to place into the $templateData array $templateData = array( - 'email_options' => $email_options, + 'pluginAsset' => GLM_MEMBERS_SUPPORT_PLUGIN_URL . '/assets' ); diff --git a/setup/adminTabs.php b/setup/adminTabs.php index 5fe4bb3..55a7eba 100644 --- a/setup/adminTabs.php +++ b/setup/adminTabs.php @@ -32,4 +32,17 @@ * ); * */ +add_filter('glm-member-db-add-tab-for-settings', + function($addOnTabs) { + $newTabs = array( + array( + 'text' => 'Support Settings', + 'menu' => 'settings', + 'action' => 'support' + ), + ); + $addOnTabs = array_merge($addOnTabs, $newTabs); + return $addOnTabs; + } +); diff --git a/setup/validActions.php b/setup/validActions.php index ad12624..73ac17f 100644 --- a/setup/validActions.php +++ b/setup/validActions.php @@ -62,6 +62,9 @@ $glmMembersSupportAddOnValidActions = array( 'support' => array( 'index' => GLM_MEMBERS_SUPPORT_PLUGIN_SLUG, ), + 'settings' => array( + 'support' => GLM_MEMBERS_SUPPORT_PLUGIN_SLUG, + ), ), 'frontActions' => array( ) diff --git a/views/admin/settings/support.html b/views/admin/settings/support.html new file mode 100644 index 0000000..46215df --- /dev/null +++ b/views/admin/settings/support.html @@ -0,0 +1,48 @@ +{include file='admin/settings/header.html'} + +
+
+ + + +
+ Support Settings + +
+
+ To Email Address +
+
+ +
+
+ +
+
+ From Name +
+
+ +
+
+ +
+
+ From Email Address +
+
+ +
+
+ +
+ + + +
+
+ +{include file='admin/footer.html'} diff --git a/views/admin/support/index.html b/views/admin/support/index.html index 275c11e..9154e1f 100644 --- a/views/admin/support/index.html +++ b/views/admin/support/index.html @@ -7,8 +7,8 @@ font: 16px sans-serif; padding: 20px 10px 20px 30px; margin: 0; - background: url(//app.gaslightmedia.com/Common/Support/images/lifeB.png) 550px -10px no-repeat; - background: url(//app.gaslightmedia.com/Common/Support/images/lifeB.png) 550px -10px no-repeat; + background: url({$pluginAsset}/lifeB.png) 550px -10px no-repeat; + background: url({$pluginAsset}/lifeB.png) 550px -10px no-repeat; } h1 { padding: 10px 0; @@ -40,7 +40,7 @@ padding: 0; margin: 0; text-indent: -9000px; - background: url(//app.gaslightmedia.com/Common/Support/images/send.png) no-repeat; + background: url({$pluginAsset}/send.png) no-repeat; border: 0; cursor: pointer; } @@ -65,6 +65,7 @@ margin-right: 5px; } +{debug}

Support Form

@@ -74,29 +75,14 @@

If you have a screenshot to upload the file must be no larger than 1MB.

-
+ + + - - - - - - -
Please help us provide the proper support
- * - Can you tell us which area you need assistance with? -
  - -
* diff --git a/views/admin/support/thankyou.html b/views/admin/support/thankyou.html new file mode 100644 index 0000000..5be710e --- /dev/null +++ b/views/admin/support/thankyou.html @@ -0,0 +1,70 @@ + +
+
Your Request has been sent.
+
-- 2.17.1