modified : email tester added

This commit is contained in:
Fahad Abbas 2017-03-21 16:04:30 +05:00
parent 82f3de686a
commit 454d1cd527
3 changed files with 366 additions and 2 deletions

View file

@ -0,0 +1,157 @@
<?php
require_once '../includes/admin_config.php';
$userquery->admin_login_check();
$userquery->login_check('web_config_access');
$pages->page_redir();
if( isset( $_POST[ 'start_test' ] ) ) {
try {
$to_email = $_POST[ 'to_email' ];
if ( empty( $to_email ) ) {
throw new Exception( 'Please provide a recipient email' );
}
$to_email = filter_var( $to_email, FILTER_SANITIZE_EMAIL );
$to_email = filter_var( $to_email, FILTER_VALIDATE_EMAIL );
if( $to_email === false ) {
throw new Exception( 'Please provide a valid recipient email address' );
}
$to_name = $_POST[ 'to_name' ];
if( empty( $to_name ) || !is_string( $to_name ) ) {
$to_name = $to_email;
}
$from_email = $_POST[ 'from_email' ];
if ( empty( $from_email ) ) {
$from_email = SUPPORT_EMAIL;
}
$from_email = filter_var( $from_email, FILTER_SANITIZE_EMAIL );
$from_email = filter_var( $from_email, FILTER_VALIDATE_EMAIL );
if ( $from_email === false ) {
throw new Exception( 'Please provide a valid sender email address' );
}
$from_name = $_POST[ 'from_name' ];
if( empty( $from_name ) || !is_string( $from_name ) ) {
$from_name = 'Tune.pk';
}
$subject = $_POST[ 'subject' ];
$subject = trim( $subject );
if ( empty( $subject ) ) {
throw new Excpetion( 'Please provide test email subject' );
}
$body = $_POST[ 'body' ];
$body = trim( $body );
if ( empty( $body ) ) {
throw new Excpetion( 'Please provide test email body' );
}
$code = $_POST[ 'email_template' ];
if ( $code != -1 ) {
$template = $cbemail->get_template( $code );
if( $template ) {
$dv = $_POST[ 'dv' ];
$variables = array();
if ( !empty( $dv ) ) {
foreach( $dv as $key => $v ) {
$variables[ $v[ 'name' ] ] = empty( $v[ 'value' ] ) ? $v[ 'name' ] : $v[ 'value' ];
}
}
$subject = $cbemail->replace( $template[ 'email_template_subject' ], $variables );
$body = $cbemail->replace( $template[ 'email_template' ], $variables );
}
}
$mail = array(
'to' => $to_email,
'to_name' => $to_name,
'from' => $from_email,
'from_name' => $from_name,
'subject' => $subject,
'content' => $body
);
$test = cbmail( $mail );
if ( $test == false ) {
e( lang( sprintf( 'Unable to send email <strong>%s</strong>', $to_email ) ) );
} else {
e( lang( sprintf( 'Email successfully send to <strong>%s</strong>', $to_email ) ), 'm' );
}
} catch( Exception $e ) {
e( lang( $e->getMessage() ) );
}
}
$templates = $cbemail->get_templates();
$list = array();
$_templates = array();
$macros = array(
'{website_title}' => TITLE,
'{baseurl}' => BASEURL,
'@baseurl' => BASEURL,
'{website_url}' => BASEURL,
'{date_format}' => cbdate(DATE_FORMAT),
'{date}' => cbdate(),
'{username}' => username(),
'{userid}' => userid(),
'{first_name}' => $userquery->udetails['first_name'],
'{last_name}' => $userquery->udetails['last_name'],
'{name}' => name( $userquery->udetails ),
'{user}' => name( $userquery->udetails ),
'{email}' => $userquery->udetails[ 'email' ],
'{date_year}' => cbdate("Y"),
'{date_month}' => cbdate("m"),
'{date_day}' => cbdate("d"),
'{now}' => NOW(),
// '{ip_address}' => get_user_ip(),
// '{ip}' => get_user_ip()
);
if ( !empty( $templates ) ) {
foreach( $templates as $template ) {
$code = $template[ 'email_template_code' ];
$list[ $code ] = $template[ 'email_template_name' ];
$HTML_template = BASEDIR.'/styles/global/v4/email_templates/'.$code.'.html';
if ( file_exists( $HTML_template ) ) {
$body = file_get_contents( $HTML_template );
} else {
$body = $template[ 'email_template' ];
}
$_templates[ $code ] = array(
'subject' => $template[ 'email_template_subject' ],
'body' => $body
);
}
}
assign( 'list', $list );
assign( '_templates', $_templates );
assign( 'macros', $macros );
subtitle("Email Tester");
template_files('email_tester.html');
display_it();

View file

@ -0,0 +1,207 @@
<style>
.cb-box .mid-roll-row {
font-weight: 300;
font-size: 14px;
margin-bottom: 10px;
}
.cb-box textarea, .cb-box input[type=text][id=subject], #dynamic-values input {
font-family: monospace;
}
.cb-box input[type=text].inline, .cb-box select.inline {
width: 40px;
border: none;
text-align: center;
border-bottom: 1px solid #ccc;
background-color: transparent;
border-radius: 0px !important;
margin: 0px 4px;
}
.cb-box select.inline {
border-radius: 0px;
width: auto;
background-color: transparent;
border: 1px solid #ccc;
}
.cb-box hr {
margin-top: 10px;
margin-bottom: 10px;
}
.cb-box .row .form-group > span.text-muted {
font-size: 11px;
text-transform: uppercase;
}
</style>
<div class="clearfix cb-box">
<header class="clearfix cb-header">
<h2>Email Tester</h2>
</header>
<h4>Configurations</h4>
<div class="btn-group">
<a href="javascript:void(0)" class="btn btn-default">{lang('Mail type')}: <span class="badge">{config('mail_type')}</span></a>
<a href="javascript:void(0)" class="btn btn-default">{lang('Host')}: <span class="badge">{config('smtp_host')}</span></a>
<a href="javascript:void(0)" class="btn btn-default">{lang('Port')}: <span class="badge">{config('smtp_port')}</span></a>
<a href="javascript:void(0)" class="btn btn-default">{lang('User')}: <span class="badge">{config('smtp_user')}</span></a>
<a href="javascript:void(0)" class="btn btn-default">{lang('Password')}: <span class="badge">{config('smtp_pass')}</span></a>
<a href="javascript:void(0)" class="btn btn-default">{lang('Auth')}: <span class="badge">{config('smtp_auth')}</span></a>
</div>
<hr />
<form action="{queryString()}" method="post" id="test_email">
<div class="form-group">
<label for="to_name">To( Name )</label>
<input type="text" name="to_name" id="to_name" class="form-control" />
</div>
<div class="form-group">
<label for="to_email">To( Email Address )</label>
<input type="text" name="to_email" id="to_email" class="form-control" />
</div>
<div class="form-group">
<label for="from_name">From( Name )</label>
<input type="text" name="from_name" id="from_name" class="form-control" placeholder="Default: Tune.pk" />
</div>
<div class="form-group">
<label for="from_email">From( Email Address )</label>
<input type="text" name="from_email" id="from_email" class="form-control" placeholder="Default: {$smarty.const.SUPPORT_EMAIL}" />
</div>
{if $list}
<div class="form-group">
<label for="email_template">Email Template</label>
<select name="email_template" id="email_template" class="form-control chosen">
<option value="-1" selected="selected">- none -</option>
{foreach $list as $id => $name}
<option value="{$id}">{$name}</option>
{/foreach}
</select>
</div>
{/if}
<div class="form-group">
<label for="subject">Email Subject</label>
<input type="text" name="subject" id="subject" class="form-control" />
</div>
<div class="form-group">
<label for="body">Email Body</label>
<textarea name="body" id="body" class="form-control" cols="30" rows="10"></textarea>
</div>
<div class="form-group" id="dynamic-values" style="display: none">
<h4>Dynamic Values</h4>
</div>
<div class="pull-right">
<button class="btn btn-primary" type="submit" name="start_test" id="start_test">Test</button>
</div>
</form>
</div>
<div class="form-group clearfix" id="emaildv" style="display: none !important;">
<input type="text" name="dvn[]" class="form-control pull-left" style="width: 49%" placeholder="macro" />
<textarea name="dvv[]" id="" rows="2" class="form-control pull-right" style="width: 49%;" placeholder="value"></textarea>
</div>
<!-- include chosen -->
<script type="text/javascript">
/*var __macros = {json_encode($macros)},
__templates = {json_encode($_templates)},
arrayUnique = function(a) {
return a.reduce(function(p, c) {
if (p.indexOf(c) < 0) p.push(c);
return p;
}, []);
};*/
/*$( document ).ready(function(){
$( '.chosen' ).chosen();
var onChange = function onChange( event ) {
var _this = $( this ),
subject = '',
body = '';
{
if( typeof __templates[ this.value ] !== 'undefined' ) {
subject = __templates[ this.value ][ 'subject' ];
body = __templates[ this.value ][ 'body' ];
}
}
//extract macros from body
{literal}
var expression = /\{([a-zA-Z0-9\_\-]*)\}/ig,
{/literal}
bodyMacros = body.match( expression );
subjectMacros = subject.match( expression );
if ( bodyMacros === null ) {
bodyMacros = [];
}
if ( subjectMacros === null ) {
subjectMacros = [];
}
dynamicMacros = bodyMacros.concat( subjectMacros );
console.info( subjectMacros );
if( dynamicMacros.length === 0 ) {
$( '#dynamic-values' ).hide().find( '.form-group' ).remove();
}
if ( dynamicMacros.length > 0 ) {
dynamicMacros = arrayUnique( dynamicMacros );
var container = $( '#dynamic-values' ),
i;
container.find( '.form-group' ).remove();
for( i = 0; i < dynamicMacros.length; i++ ) {
var clone = $( '#emaildv' ).clone(),
_value = '';
container.append( clone );
var _dom = container.find( '#emaildv' );
_dom.attr( 'id', dynamicMacros[ i ] );
_dom.attr( 'data-index', i );
_dom.find( 'input[name*=dvn]' ).val( dynamicMacros[ i ] ).attr({
'name':'dv['+i+'][name]',
'readonly':'readonly'
});
if ( typeof __macros[ dynamicMacros[ i ] ] !== 'undefined' ) {
_value = __macros[ dynamicMacros[ i ] ];
}
_dom.find( 'textarea[name*=dvv]' ).val( _value ).attr( 'name', 'dv['+i+'][value]' );
_dom.show();
}
$( '#dynamic-values' ).show()
}
$( '#subject' ).val( subject );
$( '#body' ).val( body );
}
$( document ).on( 'change', '#email_template', onChange );
});*/
</script>

View file

@ -45,11 +45,11 @@
</li>
<li>
<a href="groups_manager.php?active=no&amp;search=yes">
<a href="photo_manager.php?active=no&amp;search=yes">
<div class="clearfix">
<span class="pull-left">
<i class="btn btn-xs no-hover btn-info icon-group"></i>
Approve Groups
Approve Photos
</span>
<span class="badge badge-info pull-right">{get_groups active='no' count_only=true}</span>
</div>