/home/arranoyd/magicraft/wp-content/plugins/incsub-support/inc/mail-contents.php
<?php

add_action( 'support_system_insert_ticket', 'incsub_support_send_user_new_ticket_mail' );
add_action( 'support_system_insert_ticket', 'incsub_support_send_admin_new_ticket_mail' );

add_action( 'support_system_insert_ticket_reply', 'incsub_support_send_emails_on_ticket_reply', 10, 2 );

/**
 * Functions that renders every mail involved in the system
 */

function incsub_support_get_email_headers() {
	$headers[] = 'MIME-Version: 1.0';
	$headers[] = 'From: ' . incsub_support_get_setting( 'incsub_support_from_name' ) . ' <' . incsub_support_get_setting( 'incsub_support_from_mail' ) . '>';

	return $headers;
}


/**
 * Send a mail to the user that opened a new ticket
 *
 * @param Object $user User Object
 * @param Integer $ticket_id Ticket ID
 * @param Array $ticket Ticket details
 *
 * @since 1.9.5
 */
function incsub_support_send_user_new_ticket_mail( $ticket_id ) {

	$ticket = incsub_support_get_ticket( $ticket_id );

	if ( ! $ticket )
		return;

	$ticket_creator = get_userdata( $ticket->user_id );
	if ( ! $ticket_creator )
		return;

	$headers = incsub_support_get_email_headers();

	$visit_link = incsub_support_get_user_ticket_url( $ticket->ticket_id, $ticket->user_id );
	if ( ! $visit_link )
		return;

	$plugin = incsub_support();
	$args = array(
		'support_fetch_imap' 	=> incsub_support_get_support_fetch_imap_message(),
		'title' 				=> $ticket->title,
		'visit_link' 			=> $visit_link,
		'ticket_status'			=> incsub_support_get_ticket_status_name( $ticket->ticket_status ),
		'ticket_priority'		=> incsub_support_get_ticket_priority_name( $ticket->ticket_priority ),
		'site_name'				=> get_bloginfo( 'name' )
	);
	$mail_content = incsub_support_user_get_new_ticket_mail_content( $args );

	wp_mail( $ticket_creator->data->user_email, __( "Ticket submitted: ", INCSUB_SUPPORT_LANG_DOMAIN ) . $ticket->title, $mail_content, $headers );
}

/**
 * Send a mail to the main Administrator when a new
 * ticket is submitted
 *
 * @param Object $user User Object
 * @param Integer $ticket_id Ticket ID
 * @param Array $ticket Ticket details
 *
 * @since 1.9.5
 */
function incsub_support_send_admin_new_ticket_mail( $ticket_id ) {

	$ticket = incsub_support_get_ticket( $ticket_id );

	if ( ! $ticket )
		return;

	$headers = incsub_support_get_email_headers();

	if ( is_multisite() )
		$network_admin = network_admin_url( 'admin.php?page=ticket-manager' );
	else
		$network_admin = admin_url( 'admin.php?page=ticket-manager' );


	$visit_link = add_query_arg(
		array(
			'tid' => $ticket->ticket_id,
			'action' => 'edit',
			'tab' => 'history'
		),
		$network_admin
	);

	$admin_id = $ticket->admin_id;
	$user = get_userdata( $admin_id );
	if ( ! $user ) {
		$settings = incsub_support_get_settings();
		$main_admin = $settings['incsub_support_main_super_admin'];
		if ( is_numeric( $main_admin ) ) {
			$super_admins = MU_Support_System::get_super_admins();
			$main_admin = isset( $super_admins[ $main_admin ] ) ? $super_admins[ $main_admin ] : $main_admin;
		}
		$user = get_user_by( 'login', $main_admin );
		if ( ! $user )
			return;
	}

	$poster = get_userdata( $ticket->user_id );
	if ( ! $poster )
		$poster_name = __( 'Unknown user', INCSUB_SUPPORT_LANG_DOMAIN );
	else
		$poster_name = $poster->display_name;

	// Email arguments
	$args = array(
		'support_fetch_imap' 	=> incsub_support_get_support_fetch_imap_message(),
		'title' 				=> $ticket->title,
		'visit_link' 			=> $visit_link,
		'ticket_status'			=> incsub_support_get_ticket_status_name( $ticket->ticket_status ),
		'ticket_priority'		=> incsub_support_get_ticket_priority_name( $ticket->ticket_priority ),
		'ticket_message'		=> $ticket->message,
		'user_nicename'			=> $poster_name
	);

	$mail_content = incsub_support_admin_get_new_ticket_mail_content( $args );

	wp_mail( $user->user_email, __( "New Support Ticket: ", INCSUB_SUPPORT_LANG_DOMAIN ) . $ticket->title, $mail_content, $headers );
}


function incsub_support_send_emails_on_ticket_reply( $reply_id, $send_emails ) {
	if ( ! $send_emails )
		return;

	$reply = incsub_support_get_ticket_reply( $reply_id );
	if ( ! $reply )
		return;

	$ticket = incsub_support_get_ticket( $reply->ticket_id );
	if ( ! $ticket )
		return;

	if ( empty( $ticket->admin_id ) ) {
		$plugin = incsub_support();
		$super_admin = call_user_func( array( $plugin, 'get_main_admin_details' ) );
		incsub_support_send_user_reply_mail( $ticket, $reply );
		incsub_support_send_admin_reply_mail( $super_admin, $ticket, $reply );

	}
	else {
		if ( get_current_user_id() == absint( $ticket->admin_id ) ) {
			// Response by assigned staff
			// Send to creator
			incsub_support_send_user_reply_mail( $ticket, $reply );
		}
		elseif ( get_current_user_id() == absint( $ticket->user_id ) ) {
			// Response by creator
			// Send to Staff
			$staff = get_userdata( $ticket->admin_id );
			incsub_support_send_admin_reply_mail( $staff, $ticket, $reply );
		}
		else {
			// Response by none of them
			// Send to Creator & Staff
			$staff = get_userdata( $ticket->admin_id );
			$creator = get_userdata( $ticket->user_id );

			incsub_support_send_user_reply_mail( $ticket, $reply );
			incsub_support_send_admin_reply_mail( $staff, $ticket, $reply );

		}
	}
}

/**
 * Send a mail to a user when a update in a ticket has been submitted
 *
 * @param Object $user User Object
 * @param Integer $ticket_id Ticket ID
 * @param Array $ticket Ticket details
 *
 * @since 1.9.5
 */
function incsub_support_send_user_reply_mail( $ticket, $reply ) {

	$ticket_creator = get_userdata( $ticket->user_id );
	if ( ! $ticket_creator )
		return;

	$poster_id = $reply->get_poster_id();
	$poster = get_userdata( $poster_id );
	if ( ! $poster )
		return;

	$headers = incsub_support_get_email_headers();

	$visit_link = incsub_support_get_user_ticket_url( $ticket->ticket_id, $ticket->user_id );
	if ( ! $visit_link )
		return;

	if ( is_multisite() ) {
		switch_to_blog( $ticket->blog_id );
		$blogname = get_bloginfo( 'name' );
		restore_current_blog();
	}
	else {
		$blogname = get_bloginfo( 'name' );
	}


	// Email arguments
	$args = array(
		'title' 				=> $ticket->title,
		'visit_link' 			=> $visit_link,
		'ticket_status'			=> incsub_support_get_ticket_status_name( $ticket->ticket_status ),
		'ticket_priority'		=> incsub_support_get_ticket_priority_name( $ticket->ticket_priority ),
		'ticket_message'		=> $reply->message,
		'user_nicename'			=> $poster->display_name,
		'site_name'				=> $blogname
	);

	$mail_content = incsub_support_user_get_reply_ticket_mail_content( $args );

	wp_mail( $ticket_creator->user_email, __( "Ticket response notification: ", INCSUB_SUPPORT_LANG_DOMAIN ) . $reply->subject, $mail_content, $headers );
}

/**
 * Send a mail to an admin when a update in a ticket has been submitted
 *
 * @param Object $user User Object
 * @param Integer $ticket_id Ticket ID
 * @param Array $ticket Ticket details
 *
 * @since 1.9.5
 */
function incsub_support_send_admin_reply_mail( $admin_user, $ticket, $reply ) {

	$headers = incsub_support_get_email_headers();

	$poster_id = $reply->get_poster_id();
	$poster = get_userdata( $poster_id );
	if ( ! $poster )
		return;

	// Variables for the message
	if ( is_multisite() )
		$admin_url = network_admin_url( 'admin.php?page=ticket-manager' );
	else
		$admin_url = admin_url( 'admin.php?page=ticket-manager' );

	$visit_link = add_query_arg(
		array(
			'tid' => $ticket->ticket_id,
			'action' => 'edit',
		),
		$admin_url
	);

	// Email arguments
	$args = array(
		'title' 				=> $ticket->title,
		'visit_link' 			=> $visit_link,
		'ticket_status'			=> incsub_support_get_ticket_status_name( $ticket->ticket_status ),
		'ticket_priority'		=> incsub_support_get_ticket_priority_name( $ticket->ticket_priority ),
		'ticket_message'		=> $reply->message,
		'user_nicename'			=> $poster->display_name
	);

	$mail_content = incsub_support_admin_get_reply_ticket_mail_content( $args );

	wp_mail( $admin_user->user_email, __( "Ticket response notification: ", INCSUB_SUPPORT_LANG_DOMAIN ) . $reply->subject, $mail_content, $headers );
}


/**
 * Send a mail to a user when a update in a ticket has been submitted
 *
 * @param Object $user User Object
 * @param Integer $ticket_id Ticket ID
 * @param Array $ticket Ticket details
 *
 * @since 1.9.5
 */
add_action( 'support_system_close_ticket', 'incsub_support_send_user_closed_mail' );
function incsub_support_send_user_closed_mail( $ticket_id ) {

	$ticket = incsub_support_get_ticket( $ticket_id );
	if ( ! $ticket )
		return false;

	$creator = get_userdata( $ticket->user_id );
	if ( ! $creator )
		return false;

	$headers = incsub_support_get_email_headers();

	$visit_link = incsub_support_get_user_ticket_url( $ticket->ticket_id, $ticket->user_id );
	if ( ! $visit_link )
		return;

	// Email arguments
	$args = array(
		'support_fetch_imap' 	=> incsub_support_get_support_fetch_imap_message(),
		'title' 				=> $ticket->title,
		'ticket_url' 			=> $visit_link,
		'ticket_priority'		=> incsub_support_get_ticket_priority_name( $ticket->ticket_priority )
	);
	$mail_content = incsub_get_closed_ticket_mail_content( $args );

	wp_mail( $creator->user_email, __( "Ticket closed notification: ", INCSUB_SUPPORT_LANG_DOMAIN ) . $ticket->title, $mail_content, $headers );
}


function incsub_support_get_support_fetch_imap_message() {
	if ( get_site_option( 'incsub_support_fetch_imap', 'disabled' ) == 'enabled' )
		$support_fetch_imap = __( "***  DO NOT WRITE BELLOW THIS LINE  ***", INCSUB_SUPPORT_LANG_DOMAIN );
	else
		$support_fetch_imap = __("***  DO NOT REPLY TO THIS EMAIL  ***", INCSUB_SUPPORT_LANG_DOMAIN );

	return $support_fetch_imap;
}

function incsub_support_user_get_new_ticket_mail_content( $args ) {
	$content = __( "
SUPPORT_FETCH_IMAP

Subject: SUPPORT_SUBJECT
Status: SUPPORT_STATUS
Priority: SUPPORT_PRIORITY

Your ticket has been submitted

Visit: SUPPORT_LINK

to reply or view the new ticket.

Thanks,
SUPPORT_SITE_NAME", INCSUB_SUPPORT_LANG_DOMAIN );

	$content = str_replace( 'SUPPORT_FETCH_IMAP', $args['support_fetch_imap'], $content );
	$content = str_replace( 'SUPPORT_SUBJECT', $args['title'], $content );
	$content = str_replace( 'SUPPORT_STATUS', $args['ticket_status'], $content );
	$content = str_replace( 'SUPPORT_PRIORITY', $args['ticket_priority'], $content );
	$content = str_replace( 'SUPPORT_LINK', $args['visit_link'], $content );
	$content = str_replace( 'SUPPORT_SITE_NAME', $args['site_name'], $content );

	return $content;
}

function incsub_support_admin_get_new_ticket_mail_content( $args ) {
	$content = __( "
SUPPORT_FETCH_IMAP

Subject: SUPPORT_SUBJECT
Status: SUPPORT_STATUS
Priority: SUPPORT_PRIORITY

A new ticket has been submitted

Visit: SUPPORT_LINK

to reply or view the new ticket.

==============================================================
	Begin Ticket Message
==============================================================

SUPPORT_USER_NAME said:

SUPPORT_MESSAGE

==============================================================
      End Ticket Message
==============================================================", INCSUB_SUPPORT_LANG_DOMAIN );

	$content = str_replace( 'SUPPORT_FETCH_IMAP', $args['support_fetch_imap'], $content );
	$content = str_replace( 'SUPPORT_SUBJECT', $args['title'], $content );
	$content = str_replace( 'SUPPORT_STATUS', $args['ticket_status'], $content );
	$content = str_replace( 'SUPPORT_PRIORITY', $args['ticket_priority'], $content );
	$content = str_replace( 'SUPPORT_LINK', $args['visit_link'], $content );
	$content = str_replace( 'SUPPORT_USER_NAME', $args['user_nicename'], $content );
	$content = str_replace( 'SUPPORT_MESSAGE', strip_tags( html_entity_decode( $args['ticket_message'] ) ), $content );

	return $content;
}


function incsub_support_user_get_reply_ticket_mail_content( $args ) {
	$content = __( "

***  DO NOT REPLY TO THIS EMAIL  ***

Subject: SUPPORT_SUBJECT
Status: SUPPORT_STATUS
Priority: SUPPORT_PRIORITY

Please log into your site and visit the support page to reply to this ticket, if needed.

Visit: SUPPORT_LINK

==============================================================
     Begin Ticket Message
==============================================================

SUPPORT_RESPONSE_USER_NAME said:

SUPPORT_MESSAGE

==============================================================
      End Ticket Message
==============================================================

Thanks,
SUPPORT_SITE_NAME", INCSUB_SUPPORT_LANG_DOMAIN );

	$content = str_replace( 'SUPPORT_SUBJECT', $args['title'], $content );
	$content = str_replace( 'SUPPORT_STATUS', $args['ticket_status'], $content );
	$content = str_replace( 'SUPPORT_PRIORITY', $args['ticket_priority'], $content );
	$content = str_replace( 'SUPPORT_LINK', $args['visit_link'], $content );
	$content = str_replace( 'SUPPORT_MESSAGE', strip_tags( html_entity_decode( $args['ticket_message'] ) ), $content );
	$content = str_replace( 'SUPPORT_RESPONSE_USER_NAME', $args['user_nicename'], $content );
	$content = str_replace( 'SUPPORT_SITE_NAME', $args['site_name'], $content );

	return $content;
}



function incsub_support_admin_get_reply_ticket_mail_content( $args ) {
	$content = __( "

***  DO NOT REPLY TO THIS EMAIL  ***

Subject: SUPPORT_SUBJECT
Status: SUPPORT_STATUS
Priority: SUPPORT_PRIORITY

Please log into network admin and visit the support page to reply to this ticket, if needed.

Visit: SUPPORT_LINK

==============================================================
     Begin Ticket Message
==============================================================

SUPPORT_RESPONSE_USER_NAME said:

SUPPORT_MESSAGE

==============================================================
      End Ticket Message
==============================================================

Thanks", INCSUB_SUPPORT_LANG_DOMAIN );

	$content = str_replace( 'SUPPORT_SUBJECT', $args['title'], $content );
	$content = str_replace( 'SUPPORT_STATUS', $args['ticket_status'], $content );
	$content = str_replace( 'SUPPORT_PRIORITY', $args['ticket_priority'], $content );
	$content = str_replace( 'SUPPORT_LINK', $args['visit_link'], $content );
	$content = str_replace( 'SUPPORT_MESSAGE', strip_tags( html_entity_decode( $args['ticket_message'] ) ), $content );
	$content = str_replace( 'SUPPORT_RESPONSE_USER_NAME', $args['user_nicename'], $content );

	return $content;
}



function incsub_get_closed_ticket_mail_content( $args ) {

	$content = __("

SUPPORT_FETCH_IMAP

Subject: SUPPORT_SUBJECT
Priority: SUPPORT_PRIORITY

The ticket has been closed.

Ticket URL:
	SUPPORT_TICKET_URL", INCSUB_SUPPORT_LANG_DOMAIN );

	$content = str_replace( 'SUPPORT_FETCH_IMAP', $args['support_fetch_imap'], $content );
	$content = str_replace( 'SUPPORT_SUBJECT', $args['title'], $content );
	$content = str_replace( 'SUPPORT_PRIORITY', $args['ticket_priority'], $content );
	$content = str_replace( 'SUPPORT_TICKET_URL', $args['ticket_url'], $content );

	return $content;
}