--- /dev/null
+<?php
+/**
+ * Gaslight Media Members Database
+ * Admin Jobs/Item Member Notification
+ *
+ * PHP version 5.5
+ *
+ * @category glmWordPressPlugin
+ * @package glmMembersDatabase
+ * @author Steve Sutton <steve@gaslightmedia.com>
+ * @license http://www.galightmedia.com Gaslightmedia
+ * @release 1
+ */
+
+// Load the Member Data class
+require_once GLM_MEMBERS_PLUGIN_CLASS_PATH . '/data/dataMembers.php';
+require_once GLM_MEMBERS_PLUGIN_CLASS_PATH . '/data/dataMemberInfo.php';
+
+// Extend the member class
+class GlmMembersAdmin_jobs_notification extends GlmDataMembers
+{
+ /**
+ * WordPress Database Object
+ *
+ * @var $wpdb
+ * @access public
+ */
+ public $wpdb;
+ /**
+ * Plugin Configuration Data
+ *
+ * @var $config
+ * @access public
+ */
+ public $config;
+
+ /**
+ * Constructor
+ *
+ * This constructor performs the work for this model. This model returns
+ * an array containing the following.
+ *
+ * 'status'
+ *
+ * True if successful and false if there was a fatal failure.
+ *
+ * '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.
+ *
+ * @wpdb object Word Press database object
+ *
+ * @return array Array containing status, suggested view, and any data
+ */
+ public function __construct ($wpdb, $config)
+ {
+
+ // Save WordPress Database object
+ $this->wpdb = $wpdb;
+
+ // Save plugin configuration object
+ $this->config = $config;
+
+ /*
+ * Run constructor for the Events class
+ */
+ parent::__construct($wpdb, $config);
+ }
+
+
+ /**
+ * Send the member a notice.
+ *
+ * This will be the primary contact email if found.
+ * If not found use the member info record email.
+ * If nothing in either one then return.
+ */
+ public function sendMemberNotice( $memberId, $data )
+ {
+ $member = $this->getEntry( $memberId );
+ // find notify_to
+ // See if there's a primary member contact for this member
+ $notify_to = apply_filters( 'glm-member-db-admin-get-member-primary-email', '', $memberId );
+ if ( !$notify_to ) {
+ return false;
+ }
+ $validEmail = filter_var( $notify_to, FILTER_VALIDATE_EMAIL );
+ if ( !$validEmail ) {
+ return false;
+ }
+
+ $memberInfoData = new GlmDataMemberInfo( $this->wpdb, $this->config );
+ $memberInfo = $memberInfoData->getActiveInfoForMember( $memberId );
+ // get settings
+ $settings = $this->config['settings'];
+ $notify_from = $settings['from_email'];
+
+ // Setup the Smarty Engine
+ $smarty = new smartyTemplateSupport();
+ $viewPath = GLM_MEMBERS_EVENTS_PLUGIN_PATH . '/views';
+ $smarty->template->setTemplateDir( $viewPath );
+
+ // Add standard parameters
+ require GLM_MEMBERS_PLUGIN_SETUP_PATH.'/standardTemplateParams.php';
+ $viewFile = 'admin/events/memberEmail.html';
+
+ $dataList = GLM_MEMBERS_EVENTS_PLUGIN_ADMIN_URL ."?page=glm-members-admin-menu-events-list&glm_action=list";
+ $smarty->templateAssign( 'location', 'Member Events' );
+ $smarty->templateAssign( 'name', $data['fieldData']['name'] );
+ $smarty->templateAssign( 'pendingEvents', $dataList );
+
+ // Generate output from model data and view
+ $htmlMessage = $smarty->template->fetch( $viewFile );
+
+
+ // change the default wordpress from name when sending mail
+ add_filter(
+ 'wp_mail_from_name',
+ function ( $name ) {
+ $siteName = get_bloginfo( 'name' );
+ return $siteName;
+ }
+ );
+ // 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';
+ $message = $htmlMessage;
+ $header[] = 'From:' . $notify_from;
+ $header[] = 'Reply-To:' . $notify_from;
+
+ wp_mail( $notify_to, $subject, $message, $header );
+
+ // remove the filter to avoid conflicts
+ remove_filter( 'wp_mail_content_type', array( $this, 'set_content_type' ) );
+ }
+
+ /**
+ * Send the admin user a notice.
+ *
+ * Sending email notice to the Admin user setting form Event Management.
+ */
+ public function sendAdminNotice( $memberId, $data, $job_id = false)
+ {
+ $member = $this->getEntry( $memberId );
+ $settings = $this->config['settings'];
+ $notify_to = $settings['to_email'];
+ $notify_from = $settings['from_email'];
+ $notify_message = $settings['email_notification'];
+ if ( !$notify_to ) {
+ return false;
+ }
+ // Double check the email for valid address
+ $emails = explode( ',', $notify_to );
+ foreach ( $emails as $email ) {
+ $validEmail = filter_var( $email, FILTER_VALIDATE_EMAIL );
+ if ( !$validEmail ) {
+ return false;
+ }
+ }
+
+ // Setup the Smarty Engine
+ $smarty = new smartyTemplateSupport();
+ $viewPath = GLM_MEMBERS_JOBS_PLUGIN_PATH . '/views';
+ $smarty->template->setTemplateDir( $viewPath );
+
+ // Add standard parameters
+ require GLM_MEMBERS_PLUGIN_SETUP_PATH.'/standardTemplateParams.php';
+ $viewFile = 'admin/jobs/ownerEmail.html';
+
+ $smarty->templateAssign( 'notify_message', $notify_message);
+ $smarty->templateAssign( 'member', $member );
+ $smarty->templateAssign( 'name', $data['fieldData']['title']['name'] );
+
+ // Generate output from model data and view
+ $htmlMessage = $smarty->template->fetch( $viewFile );
+
+ // change the default wordpress from name when sending mail
+ add_filter(
+ 'wp_mail_from_name',
+ function ( $name ) {
+ $siteName = get_bloginfo( 'name' );
+ return $siteName;
+ }
+ );
+ // 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' ) );
+
+ // Set the Reply-To to use Admin Contact E-Mail
+ $replyTo = $notify_from;
+ $subject = 'New Job Posting';
+ $message = $htmlMessage;
+ $header[] = 'From:' . $notify_from;
+ $header[] = 'Reply-To:' . $replyTo;
+
+ wp_mail( $notify_to, $subject, $message, $header );
+
+ // remove the filter to avoid conflicts
+ remove_filter( 'wp_mail_content_type', array( $this, 'set_content_type' ) );
+ }
+
+ /**
+ * Set content type of the email.
+ *
+ * Used as filter for the wp_mail_content_type
+ */
+ function set_content_type()
+ {
+ return "text/html";
+ }
+}