Commit 624e01a0 authored by imac's avatar imac

[Update/plugins]Customise contact form DB

parent dcfb8e69
<?php
/**
* Plugin Name: Contact Form Advance Database custom
* Plugin URI: http://www.christianbautista.info/contact-form-advance-database
* Description: A Very Simple plugin that will capture all the emails being sent using Contact Form 7 Plugin
* Version: 1.0.8
* Author: Christian A. Bautista
* Author URI: http://www.christianbautista.info
* License: Free
* Author modif : Msfari 2017-07-19
*/
define('CF7ADBURL',plugin_dir_url(__FILE__));
require( 'lib/cf7_adb.class.php' );
//initiate Main Class
$CF7AdvanceDB = new CF7AdvanceDB();
<?php
class CF7AdvanceDB{
function __construct() {
add_action( 'admin_menu', array($this,'renderGUI') );
add_action( 'wpcf7_before_send_mail', array( $this, 'beforeSendEmail' ));
add_action( 'admin_enqueue_scripts', array( $this, 'enqueueLibs' ) );
//ajax
add_action( 'wp_ajax_delete_cf7_data', array($this, 'cf7AdbAjaxController') );
add_action( 'wp_ajax_export_cf7_data', array($this, 'cf7AdbExportController') );
add_action('admin_menu', array($this, 'cf7AdbExportController'));
//admin notice
if( get_option( 'cf7-adb-data-show-notif', false ) ){
add_action( 'admin_notices', array( $this, 'dashboard_notices' ) );
}
}
function renderGUI(){
add_submenu_page( 'wpcf7','Contact Form Advanced Database','Contact Form Advanced Database', 'manage_options', 'cf7-adb', array($this,'renderBackend') );
}
function renderBackend(){
require_once('display/cf7-db-view.php');
//hide notification
update_option( 'cf7-adb-data-show-notif', 0 );
}
function beforeSendEmail( $cf7 ){
$submission = WPCF7_Submission::get_instance();
if ( $submission ) {
$data = $submission->get_posted_data();
$dataArr = array_merge($data,array('date-de-reception' => current_time( 'mysql' )));
add_post_meta($data['_wpcf7'],'cf7-adb-data',$dataArr);
$unread_messages = get_post_meta( $data['_wpcf7'], 'cf7-adb-data-unread', true );
update_post_meta( $data['_wpcf7'],'cf7-adb-data-unread', ( intval( $unread_messages ) + 1 ) );
//status 1= show notification | 2 = hide notofication
update_option( 'cf7-adb-data-show-notif', 1 );
}
}
function enqueueLibs($hook){
wp_enqueue_style( 'cf7-adb', CF7ADBURL.'/lib/css/style.css' );
wp_enqueue_script( 'cf7-dataTables', CF7ADBURL.'/lib/js/jquery.dataTables.min.js', array(), '1.10.6', true );
wp_enqueue_script( 'cf7-script', CF7ADBURL.'/lib/js/cf7-script.js', array(), '1.0.0', true );
}
function cf7AdbAjaxController() {
if(!empty($_POST['data'])){
foreach($_POST['data'] as $postData){
delete_post_meta($postData['id'],$postData['key'],maybe_unserialize(base64_decode($postData['val'])));
}
echo "success";
}else{
echo "error";
}
die();
}
function cf7AdbExportController() {
// filename for download\
$hook = add_submenu_page(null, '', '', 'administrator', 'cf7-adb-export-xls', function(){});
add_action('load-' . $hook, function() {
$id= $_GET['id'];
$filename = "contact_form_advanced_database_" . date('Ymd') . ".csv";
header("Content-Disposition: attachment; filename=\"$filename\"");
header("Content-Type: application/vnd.ms-excel");
require_once('display/export.php');
exit;
});
}
function dashboard_notices() {
echo"<div class='updated cfdb-notif'> <p>New Message Received. Please Click <a href='admin.php?page=cf7-adb'>Here</a> to view new messages.</p></div>";
}
}
?>
#property-lead-table tr:nth-child(even) {background: #fff;}
#property-lead-table tr:nth-child(odd) {background: #F0F0F0;}
#property-lead-table tr:hover{
background-color: #E5E5E5;
}
#property-lead-table th {
background-color: #fff;
}
.pager{
float:right;
margin: 20px;
}
#cf7-selector{
margin:20px 10px 20px 0px;
float:left;
color: #23282d;
padding: 0px 2px;
}
#property-lead-table_paginate a.current{
cursor: default;
background: #fff;
color:#000;
font-weight:bold;
}
.widefat th.sortable, .widefat th.sorted{
padding:10px;
}
#property-lead-table_info, #property-lead-table_paginate{
float:right;
margin: 10px 20px;
clear:both;
}
#property-lead-table_paginate a{
padding: 4px 10px;
border: 1px solid #e1e1e1;
cursor: pointer;
margin-right: 2px;
}
.adb-per-line{
-webkit-box-shadow: 0px 20px 23px -17px rgba(0,0,0,0.75);
-moz-box-shadow: 0px 20px 23px -17px rgba(0,0,0,0.75);
box-shadow: 0px 20px 23px -17px rgba(0,0,0,0.75);
margin: 16px 0px 9px 0px;
}
.adb-per-line .field-name{
background: #222222;
color: #fff;
width: 100%;
padding: 2px 0px 2px 11px;
}
.adb-per-line .field-value{
padding:20px;
}
#adb-delete-button{
margin:20px 10px 20px 0px;
float:left;
background: #c65e5e;
border: #c65e5e;
color: #fff;
padding: 0px 16px;
}
#adb-delete-button:hover{
background-color: #BE4949;
}
.del-button:hover, .view-button:hover{
font-weight: bold;
}
#property-lead-table_filter, #property-lead-table_length{
margin:20px 10px 20px 0px;
float:right;
}
#property-lead-table_filter label, #property-lead-table_length label{
cursor: pointer;
font-weight: bold;
}
#adb-export{
margin:20px 10px 20px 0px;
float:left;
background: #398f14;
border: #398f14;
color: #fff;
padding: 0px 7px;
}
#adb-export:hover{
background-color: #348312;
}
#adb-export a, #adb-export a:visited{
color: #fff;
text-decoration:none;
}
.del-button{
cursor:pointer;
color:red;
}
#property-lead-table tr{
text-align:left;
}
#property-lead-table th{
text-align:left;
font-weight:bold;
text-transform: uppercase;
}
#property-lead-table thead th{
cursor:pointer;
}
#property-lead-table td{
vertical-align:top;
height: 42px;
}
#property-lead-table .chk-td{
vertical-align:middle;
}
span.edited-entries{
text-transform:uppercase;
font-weight:bold;
font-size:10px;
color:#398f14;
}
#no-data{
font-size:20px;
margin-top:100px;
}
#TB_ajaxContent{
width: auto !important;
height: 100% !important;
}
#loading-panel{
width: 100%;
position: fixed;
height: 100%;
top: 0px;
display: none;
}
.loader{
position: fixed;
left: 45%;
top: 40%;
z-index: 9999999;
}
\ No newline at end of file
<?php add_thickbox(); ?>
<div class="wrap">
<h2>Contact Form Advanced Database</h2>
<div id="poststuff">
<select id="cf7-selector">
<?php
$cf7Selector = $_GET['id'];
$args = array( 'post_type' => 'wpcf7_contact_form',
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'ASC');
$cf7Query = new WP_Query( $args );
if ( $cf7Query->have_posts() ) {
$incSel = 0;
while ( $cf7Query->have_posts() ) {
$cf7Query->the_post();
$unread_messages = get_post_meta( get_the_ID(), 'cf7-adb-data-unread', true );
echo '<option value="'.get_the_ID().'" '.(($cf7Selector==get_the_ID())?'selected':'').'>' . get_the_title() . ' (' . intval( $unread_messages ) . ')</option>';
if(empty($cf7Selector)){
if($incSel==0){
$cf7Selector = get_the_ID();
}
$incSel++;
}
}
}
wp_reset_postdata();
?>
</select>
<?php
$colKeys = array();
$cf7AdbArr = get_post_meta($cf7Selector,'cf7-adb-data', true);
if(!empty($cf7AdbArr)):
//clear unread messages on this contact form
update_post_meta( $cf7Selector, 'cf7-adb-data-unread', 0 );
?>
<button class="button" id="adb-delete-button">Supprimer</button>
<a target="_blank" class="button" id="adb-export" href="admin.php?page=cf7-adb-export-xls&id=<?php echo $cf7Selector; ?>">Export CSV</a>
<table class="wp-list-table widefat fixed media paginated" id="property-lead-table" data-page-length='10'>
<thead>
<th class="manage-column column-cb check-column"></th>
<?php
unset($cf7AdbArr['_wpcf7'],$cf7AdbArr['_wpcf7_version'],$cf7AdbArr['_wpcf7_locale'],$cf7AdbArr['_wpcf7_unit_tag'],$cf7AdbArr['_wpnonce'],$cf7AdbArr['_wpcf7_is_ajax_call']);
foreach(array_keys($cf7AdbArr) as $cf7AdbData) {
$colKeys[] = $cf7AdbData;
?>
<th class="manage-column column-title sorted">
<span><?php echo str_replace( array( '-','_' ), ' ', $cf7AdbData ); ?></span>
</th>
<?php } ?>
<th></th>
<th></th>
</thead>
<tfoot>
<th class="manage-column column-cb check-column"></th>
<?php foreach(array_keys($cf7AdbArr) as $cf7AdbData) {?>
<th class="manage-column column-title sorted">
<span><?php echo $cf7AdbData; ?></span>
</th>
<?php } ?>
<th></th>
<th></th>
</tfoot>
<tbody>
<?php
foreach(get_post_meta($cf7Selector,'cf7-adb-data') as $leadData){
$cf7AdbArr = get_post_meta($cf7Selector,'cf7-adb-data',true);
unset($cf7AdbArr['_wpcf7'],$cf7AdbArr['_wpcf7_version'],$cf7AdbArr['_wpcf7_locale'],$cf7AdbArr['_wpcf7_unit_tag'],$cf7AdbArr['_wpnonce'],$cf7AdbArr['_wpcf7_is_ajax_call']);
$colKeys = array_keys($cf7AdbArr);
$dataToPass = $leadData;
$thDiv = rand(1,1000).'_'.time().'_'.rand(1000,5000);
unset($leadData['_wpcf7'],$leadData['_wpcf7_version'],$leadData['_wpcf7_locale'],$leadData['_wpcf7_unit_tag'],$leadData['_wpnonce'],$leadData['_wpcf7_is_ajax_call']);
?>
<tr>
<td><input class="adb-chk" type="checkbox" data-status="0" data-id="<?php echo $cf7Selector; ?>" data-key="cf7-adb-data" value="<?php echo base64_encode(maybe_serialize($dataToPass)); ?>"></td>
<?php
if(count($leadData) == count($colKeys)){
foreach($colKeys as $colKeysData){ ?>
<td><?php
$stringToPrint = '';
if(is_array($leadData[$colKeysData])){
foreach($leadData[$colKeysData] as $arrData){
$stringToPrint .= ((filter_var($arrData, FILTER_VALIDATE_EMAIL))?'<a href="'.$arrData.'">'.$arrData.'</a>':$arrData).', ';
}
echo rtrim($stringToPrint, ", ");
}else{
if(filter_var($leadData[$colKeysData], FILTER_VALIDATE_EMAIL)){
echo '<a href="mailto:'.$leadData[$colKeysData].'">';
}
echo (strlen($leadData[$colKeysData]) > 60 )?substr($leadData[$colKeysData],0,60).'...':$leadData[$colKeysData];
if(filter_var($leadData[$colKeysData], FILTER_VALIDATE_EMAIL)){
echo '</a>';
}
}
?></td>
<?php }}else{
foreach(array_keys($leadData) as $leadDatas){
$stringToPrint = '';
if(is_array($leadData[$leadDatas])){
foreach($leadData[$leadDatas] as $arrData){
$stringToPrint .= ((filter_var($arrData, FILTER_VALIDATE_EMAIL))?'<a href="'.$arrData.'">'.$arrData.'</a>':$arrData).', ';
}
echo '<td><span class="edited-entries">'.$leadDatas.'</span><br />'.rtrim($stringToPrint, ", ").'</td>';
}else{
if(filter_var($leadData[$leadDatas], FILTER_VALIDATE_EMAIL)){
echo '<td><span class="edited-entries">'.$leadDatas.'</span><br /><a href="mailto:'.$leadData[$leadDatas].'">'.((strlen($leadData[$leadDatas]) > 60 )?substr($leadData[$leadDatas],0,60).'...':$leadData[$leadDatas]).'</a></td>';
}else{
echo '<td><span class="edited-entries">'.$leadDatas.'</span><br />'.((strlen($leadData[$leadDatas]) > 60 )?substr($leadData[$leadDatas],0,60).'...':$leadData[$leadDatas]).'</td>';
}
}
}}
?>
<td>
<div id="<?php echo $thDiv; ?>" style="display:none;">
<div>
<?php
if(count($leadData) == count($colKeys)){
foreach($colKeys as $colKeysData){
?>
<div class="adb-per-line">
<div class="field-name"><?php echo str_replace( array( '-','_' ), ' ', strtoupper( $colKeysData ) ); ?></div>
<div class="field-value"><?php
if(is_array($leadData[$colKeysData])){
foreach($leadData[$colKeysData] as $arrData){
echo ((filter_var($arrData, FILTER_VALIDATE_EMAIL))?'<a href="'.$arrData.'">'.$arrData.'</a>':$arrData).'<br />';
}
}else{
echo ((filter_var($leadData[$colKeysData], FILTER_VALIDATE_EMAIL))?'<a href="'.$leadData[$colKeysData].'">'.$leadData[$colKeysData].'</a>':$leadData[$colKeysData]).'<br />';
}
?></div>
</div>
<?php }}else{ ?>
<?php
foreach(array_keys($leadData) as $leadDatas){ ?>
<div class="adb-per-line">
<div class="field-name"><?php echo strtoupper($leadDatas) ?></div>
<div class="field-value"><?php
if(is_array($leadData[$leadDatas])){
foreach($leadData[$leadDatas] as $arrData){
echo ((filter_var($arrData, FILTER_VALIDATE_EMAIL))?'<a href="'.$arrData.'">'.$arrData.'</a>':$arrData).'<br />';
}
}else{
echo ((filter_var($leadData[$leadDatas], FILTER_VALIDATE_EMAIL))?'<a href="'.$leadData[$leadDatas].'">'.$leadData[$leadDatas].'</a>':$leadData[$leadDatas]).'<br />';
}
?></div>
</div>
<?php }} ?>
</div>
</div>
<a href="#TB_inline?width=600&height=550&inlineId=<?php echo $thDiv; ?>" title="Contact Form fields and value" class="view-button thickbox">Voir</a></td>
<td>
<span class="del-button" data-id="<?php echo $cf7Selector; ?>" data-key="cf7-adb-data" data-val="<?php echo base64_encode(maybe_serialize($dataToPass)); ?>">Supprimer</span>
</td>
</tr>
<?php } ?>
</tbody>
</table>
<?php else: ?>
<div id="no-data">No Data Available</div>
<?php endif; ?>
<div id="loading-panel">
<img class="loader" src="<?php echo CF7ADBURL.'/lib/images/loader.gif' ?>" />
</div>
</div>
</div>
<?php
$colKeys = array();
$cf7AdbArrHead = get_post_meta($id,'cf7-adb-data',true);
$cf7AdbArrContent = get_post_meta($id,'cf7-adb-data');
if(!empty($cf7AdbArrHead)){
unset($cf7AdbArrHead['_wpcf7'],$cf7AdbArrHead['_wpcf7_version'],$cf7AdbArrHead['_wpcf7_locale'],$cf7AdbArrHead['_wpcf7_unit_tag'],$cf7AdbArrHead['_wpnonce'],$cf7AdbArrHead['_wpcf7_is_ajax_call']);
unset($cf7AdbArrContent['_wpcf7'],$cf7AdbArrContent['_wpcf7_version'],$cf7AdbArrContent['_wpcf7_locale'],$cf7AdbArrContent['_wpcf7_unit_tag'],$cf7AdbArrContent['_wpnonce'],$cf7AdbArrContent['_wpcf7_is_ajax_call']);
echo implode(",",array_keys($cf7AdbArrHead));
echo "\n";
foreach(array_values($cf7AdbArrContent) as $cf7AdbArrData){
unset($cf7AdbArrData['_wpcf7'],$cf7AdbArrData['_wpcf7_version'],$cf7AdbArrData['_wpcf7_locale'],$cf7AdbArrData['_wpcf7_unit_tag'],$cf7AdbArrData['_wpnonce'],$cf7AdbArrData['_wpcf7_is_ajax_call']);
echo implode(",",array_map(function($dataArr){
if(is_array($dataArr)){
$toReturn = '';
foreach($dataArr as $dataArrs){
$toReturn .= $dataArrs.' | ';
}
return rtrim($toReturn," | ");
}else{
return str_replace( array( "\n", "\r", "," ) , ' ' , $dataArr);
}
},$cf7AdbArrData));
echo "\n";
}
}else{
echo "No Data Available";
} ?>
\ No newline at end of file
jQuery(document).ready(function($){
//delete
$('#adb-delete-button').click(function(){
if(!confirm('Are you sure?')) return;
//gathering data
alldataArr = [];
var dataDiv = [];
$('.adb-chk:checked').each(function(indx){
dataObj = {};
dataObj.id = $(this).data('id');
dataObj.key = $(this).data('key');
dataObj.val = $(this).val();
alldataArr[indx] = dataObj;
dataDiv[indx] = $(this);
});
//ajax call
$.post(
ajaxurl, {
'action': 'delete_cf7_data',
'data': alldataArr
},
function(response){
if(response=="success"){
dataDiv.forEach(function(el){
el.parent().parent().fadeOut();
});
}
}
);
});
//delete
$('.del-button').click(function(){
if(!confirm('Are you sure?')) return;
$('#loading-panel').fadeIn();
//gathering data
dataArr = [];
dataObjSingle = {};
dataObjSingle.id = $(this).data('id');
dataObjSingle.key = $(this).data('key');
dataObjSingle.val = $(this).data('val');
dataArr[0] = dataObjSingle;
currentDiv = $(this);
//ajax call
$.post(
ajaxurl, {
'action': 'delete_cf7_data',
'data': dataArr
},
function(response){
if(response=="success"){
currentDiv.parent().parent().fadeOut(function(){
$('#loading-panel').fadeOut();
});
}
}
);
});
$('#cf7-selector').change(function(){
window.location = "?page=cf7-adb&id="+$(this).val();
});
//initiate tb paging
$('#property-lead-table').DataTable({'pageLength': 10});
$('#property-lead-table tr').hover(function(){
$(this).find('input').css('border-color','green');
},function(){
$(this).find('input').css('border-color','#bbbbbb');
});
jQuery('.cfdb-notif').delay(2000).fadeOut('slow');
// Change Column name
$('#property-lead-table_wrapper column-title span').click(function(){
$(this).attr('contentEditable',true);
})
});
\ No newline at end of file
/*
jQuery paging plugin v1.2.0 23/06/2014
http://www.xarg.org/2011/09/jquery-pagination-revised/
Copyright (c) 2011, Robert Eisele (robert@xarg.org)
Dual licensed under the MIT or GPL Version 2 licenses.
*/
(function(n,u,r){n.fn.paging=function(y,z){var s=this,b={setOptions:function(a){b.a=n.extend(b.a||{lapping:0,perpage:10,page:1,refresh:{interval:10,url:null},format:"",lock:!1,onFormat:function(){},onSelect:function(){return!0},onRefresh:function(){}},a||{});b.a.lapping|=0;b.a.perpage|=0;null!==b.a.page&&(b.a.page|=0);1>b.a.perpage&&(b.a.perpage=10);b.interval&&u.clearInterval(b.interval);b.a.refresh.url&&(b.interval=u.setInterval(function(){n.ajax({url:b.a.refresh.url,success:function(a){if("string"===
typeof a)try{a=n.parseJSON(a)}catch(m){return}b.a.onRefresh(a)}})},1E3*b.a.refresh.interval));b.format=function(a){for(var b=0,g=0,h=1,e={d:[],g:0,f:0,b:5,current:3,i:0,j:0},c,p=/[*<>pq\[\]().-]|[nc]+!?/g,n={"[":"first","]":"last","<":"prev",">":"next",q:"left",p:"right","-":"fill",".":"leap"},f={};c=p.exec(a);)c=""+c,r===n[c]?"("===c?g=++b:")"===c?g=0:h&&("*"===c?(e.g=1,e.f=0):(e.g=0,e.f="!"===c.charAt(c.length-1),e.b=c.length-e.f,(e.current=1+c.indexOf("c"))||(e.current=1+e.b>>1)),e.d[e.d.length]=
{e:"block",h:0,c:0},h=0):(e.d[e.d.length]={e:n[c],h:g,c:r===f[c]?f[c]=1:++f[c]},"q"===c?++e.j:"p"===c&&++e.i);return e}(b.a.format);return b},setNumber:function(a){b.l=r===a||0>a?-1:a;return b},setPage:function(a){function v(a,b,c){c=""+a.onFormat.call(b,c);p=b.value?p+c.replace(/<a/i,'<a data-page="'+b.value+'"'):p+c}if(b.a.lock)return b.a.onSelect(0,s),b;if(r===a){if(a=b.a.page,null===a)return b}else if(b.a.page==a)return b;b.a.page=a|=0;var m=b.l,g=b.a,h,e,c,p,w=1,f=b.format,d,k,l,q,x=f.d.length,
t=x;g.perpage<=g.lapping&&(g.lapping=g.perpage-1);q=m<=g.lapping?0:g.lapping|0;0>m?(c=m=-1,h=Math.max(1,a-f.current+1-q),e=h+f.b):(c=1+Math.ceil((m-g.perpage)/(g.perpage-q)),a=Math.max(1,Math.min(0>a?1+c+a:a,c)),f.g?(h=1,e=1+c,f.current=a,f.b=c):(h=Math.max(1,Math.min(a-f.current,c-f.b)+1),e=f.f?h+f.b:Math.min(h+f.b,1+c)));for(;t--;){k=0;l=f.d[t];switch(l.e){case "left":k=l.c<h;break;case "right":k=e<=c-f.i+l.c;break;case "first":k=f.current<a;break;case "last":k=f.b<f.current+c-a;break;case "prev":k=
1<a;break;case "next":k=a<c}w|=k<<l.h}d={number:m,lapping:q,pages:c,perpage:g.perpage,page:a,slice:[(k=a*(g.perpage-q)+q)-g.perpage,Math.min(k,m)]};for(p="";++t<x;){l=f.d[t];k=w>>l.h&1;switch(l.e){case "block":for(;h<e;++h)d.value=h,d.pos=1+f.b-e+h,d.active=h<=c||0>m,d.first=1===h,d.last=h===c&&0<m,v(g,d,l.e);continue;case "left":d.value=l.c;d.active=l.c<h;break;case "right":d.value=c-f.i+l.c;d.active=e<=d.value;break;case "first":d.value=1;d.active=k&&1<a;break;case "prev":d.value=Math.max(1,a-1);
d.active=k&&1<a;break;case "last":(d.active=0>m)?d.value=1+a:(d.value=c,d.active=k&&a<c);break;case "next":(d.active=0>m)?d.value=1+a:(d.value=Math.min(1+a,c),d.active=k&&a<c);break;case "leap":case "fill":d.pos=l.c;d.active=k;v(g,d,l.e);continue}d.pos=l.c;d.last=d.first=r;v(g,d,l.e)}s.length&&(n("a",s.html(p)).click(function(a){a.preventDefault();a=this;do if("a"===a.nodeName.toLowerCase())break;while(a=a.parentNode);b.setPage(n(a).data("page"));b.k&&(u.location=a.href)}),b.k=g.onSelect.call({number:m,
lapping:q,pages:c,slice:d.slice},a,s));return b}};return b.setNumber(y).setOptions(z).setPage()}})(jQuery,this);
\ No newline at end of file
=== Contact Form Advanced Database===
Contributors: akosicb, nadinecamille
Donate link: http://christianbautista.info/cheer-me-up
Tags: contact, form, contact form database, contact form leads, contact form db, db.
Requires at least: 3.9.1
Tested up to: 4.5.1
Stable tag: 4.5.1
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
A Very Simple plugin that will capture all the emails being sent using Contact Form 7 Plugin.
== Description ==
This plugin will log all information that are sent using the Contact Form 7 plugin and grouped by the Contact Form 7 created shortcodes. It will provide a simple UI to manage your leads, people that contacted you, sent email via your website, etc.,. It is basically be the database of sent emails of contact form 7 plugin.
Working for both single install WordPress Site and Multi Site.
<b>Features</b>
<ul>
<li>Very Simple UI</li>
<li>Interactive Search</li>
<li>Interactive Sorting</li>
<li>Dashboard Notification</li>
<li>Unseen Message Count</li>
<li>Works on Multisites</li>
<li>No External Database Tables</li>
<li>Language Support (Coming Soon)</li>
</ul>
== Installation ==
1. Upload the entire `contact-form-advanced-database` folder to the `/wp-content/plugins/` directory.
2. Activate the plugin through the 'Plugins' menu in WordPress.
3. Contact Form 7 plugin is required, please install it (https://wordpress.org/plugins/contact-form-7/).
You will find 'Contact Form Advanced Database' sub menu in your WordPress admin panel under the `Contact` menu which is generated by the contact form 7 plugin.
== Screenshots ==
1. /assets/screenshot-1.png
2. /assets/screenshot-2.png
== Changelog ==
= 1.0.8 =
* Fix export with comma issue
* Tested on WP Version 4.5.1
= 1.0.6 =
* Checkbox and Radio Buttons Bug fixed
* Search Bar Bug Fixed
* Dashboard Notification Added
* Unseen messages count added
= 1.0.5 =
* Export Button On Firebox not working fixed
* Emails are now detected and appended with mailto attribute
* Very minor changes on table layout.
= 1.0.4 =
* Radio Button Not displaying fixed
* Checkbox Not displaying Fixed
= 1.0.3 =
* Delete not working fixed.
= 1.0.2 =
* Minor Bugs Fixed
= 1.0.1 =
* Minor Bugs Fixed
== Upgrade Notice ==
= 1.0.1 =
Minor Bugs on the UI fixed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment