plugin_name = 'Application Status';
$this->wpdb = $wpdb;
$this->plugin_slug = 'application-status';
$this->version = '1.0.0';
$this->plugin_url = plugins_url() . '/contact-form-7-status';
$this->plugin_path = plugin_dir_path( __FILE__ );
$this->table = $this->wpdb->prefix . 'application_status';
$this->init();
$this->createdb();
}
private function init(){
add_action( 'admin_menu', array($this, 'application_status_menu') );
add_action('admin_head', array($this, 'application_status_style') );
add_action('wpcf7_admin_footer', array($this, 'contactFormSevenEditPage'));
add_action( 'admin_enqueue_scripts', array($this, 'admin_enque_script') );
add_action( 'wp_enqueue_scripts', array($this, 'application_front_enque') );
add_action('admin_footer', array($this, 'contactForm7Status_footer_function'));
// Ajax Call admin
add_action('wp_ajax_nopriv_appliation_post_ls', array($this, 'appliation_post_ls'));
add_action( 'wp_ajax_appliation_post_ls', array($this, 'appliation_post_ls') );
// Ajax Call admin
add_action('wp_ajax_nopriv_appliation_formpost_ls', array($this, 'appliation_formpost_ls'));
add_action( 'wp_ajax_appliation_formpost_ls', array($this, 'appliation_formpost_ls') );
// Ajax Status Update admin status_update_app
add_action('wp_ajax_nopriv_status_update_app', array($this, 'status_update_app'));
add_action( 'wp_ajax_status_update_app', array($this, 'status_update_app') );
// Shortcode for application status update
add_shortcode( 'wpcf7-status', array($this, 'application_status_shortcode'));
}
function application_status_menu() {
add_menu_page( 'Application Status', 'Application Status', 'manage_options', 'appliation-status-wpcp7', array($this, 'applicationStatusCallback'), '', 50);
}
function applicationStatusCallback(){ //Main Page Body
global $wpdb;
$metatbl = $wpdb->prefix . 'postmeta';
if(!isset($_GET['form'])){
$results = $wpdb->get_results('SELECT `meta_value`, `post_id` FROM `'.$metatbl.'` WHERE `meta_key` = "_appliation_ls"', OBJECT);
$table = '
| ID |
Form Name |
Action |
';
foreach($results as $k=>$sr){
$arrData = array();
parse_str($sr->meta_value, $arrData);
$table .= sprintf('
| %d |
%s |
All Application |
', $k+1, get_the_title($sr->post_id), admin_url( $path = '/admin.php?page=appliation-status-wpcp7&form='.$sr->post_id, $scheme = 'admin' ));
}
$table .= '
';
$output = '
Application Status
'.$this->add().'
';
echo $output;
}//if not set form get
elseif(isset($_GET['form']) && !isset($_GET['id'])){
$prefix = $wpdb->prefix;
$reg_tble = $prefix . 'application_status';
$allapplication = $wpdb->get_results('SELECT * FROM `'.$reg_tble.'` WHERE `form_id` ='.$_GET['form'].'', OBJECT);
/*echo '';
print_r($allapplication);
echo '
';*/
$formcolumns = $wpdb->get_results('SELECT `meta_value` FROM `'.$metatbl.'` WHERE `meta_key` = "_appliation_ls" AND `post_id`='.$_GET['form'].'', OBJECT);
$arrData = array();
parse_str($formcolumns[0]->meta_value, $arrData);
$table = '
| ID | ';
$clmn = array();
foreach($arrData['column_f'] as $c => $scolumn):
$table .= sprintf('%s | ', $scolumn);
array_push($clmn, $scolumn);
endforeach;
$table .='Status |
';
$table.='';
foreach($allapplication as $ap=>$saff):
$datas = json_decode($saff->form_value);
$cid= (int)$ap + 1;
$table .= '| '. $cid .' | ';
for($i=0; count($clmn) > $i; $i++){
$colum = $clmn[$i];
$table .= sprintf('%s | ', $datas->$colum);
}
$table .= ''.$saff->status.' |
';
endforeach;
$table .= '
';
$output = '';
echo $output;
}else{
$prefix = $wpdb->prefix;
$reg_tble = $prefix . 'application_status';
$meta = get_post_meta( $_GET['form'], '_appliation_ls', false );
$arrData = array();
parse_str($meta[0], $arrData);
$current_status = $wpdb->get_row('SELECT `status` FROM `'.$reg_tble.'` WHERE `form_id` ='.$_GET['form'].' AND `id`='.$_GET['id'].'', OBJECT);
//update pending to follow
if($current_status->status == 'pending'){
$update = $wpdb->update(
$reg_tble,
array(
'status' => 'following' // status
),
array( 'id' => $_GET['id'] ),
array(
'%s', // value1
),
array( '%d' )
);
}
$details = $wpdb->get_results('SELECT * FROM `'.$reg_tble.'` WHERE `form_id` ='.$_GET['form'].' AND `id`='.$_GET['id'].'', OBJECT);
$values = json_decode($details[0]->form_value);
$table = 'Form Details |
';
foreach($values as $key=>$vlue):
$table .= sprintf('| %s | %s |
', $key, $vlue);
endforeach;
$sArray = array('pending', 'following', 'in progress', 'missing information', 'completed', 'rejected');
$table .= '| Status |
|
|---|
';
$output = '';
echo $output;
}
} // End downl
function send_mail($email, $template){
$to = $email;
$subject = get_bloginfo() . ' Application Update';
$body = $template;
$headers[] = 'Content-Type: text/html; charset=UTF-8';
$headers[] = 'From: '.get_option('blogname').' <'.get_option('admin_email').'>';
wp_mail( $to, $subject, $body, $headers );
}
function application_status_style() { // Style for admin and it hook to admin header
echo '';
}
function contactFormSevenEditPage($post){
$atts = $post->scan_form_tags();
$item = '';
foreach($atts as $at){
$item .= ($at->name != '')?sprintf('- [%s]
', $at->name):'';
}
$item.= '
';
$getdata = get_post_meta( $post->id(), '_appliation_ls', false );
$arrData = array();
parse_str(@$getdata[0], $arrData);
$checked = (@$arrData['activeApplication'] == 'on')?'checked':'';
$formField = '';
$progressemail = '';
$completed = '';
$rejected ='';
if($arrData){
foreach($arrData['column_f'] as $sc){
$formField .= sprintf('', $sc);
}
$progressemail .= (array_key_exists('template_progress', $arrData))?$arrData['template_progress']:'Dear Applicant,
We start process for your application and you got update immoderately.
regards,
Team';
$completed .= (array_key_exists('template_completed', $arrData))?$arrData['template_completed']:'Dear Applicant,
Your Application successfully complete.
regards,
Team';
$rejected .= (array_key_exists('template_rejected', $arrData))?$arrData['template_rejected']:'Dear Applicant,
We are sorry. Your application are rejected. Please try again.
regards,
Team';
}
$output = '';
$output .='
';
$output .='
';
$output .= '
';
$output .= '
';
echo $output;
//wp_editor($content,'template_progress');
}
function admin_enque_script(){
wp_register_style( 'application_form_css', $this->plugin_url . '/css/admin-style.css', false, '1.0.0' );
wp_enqueue_style( 'application_form_css' );
wp_enqueue_script( 'application_status_script', $this->plugin_url . '/js/admin-script.js', array(), '1062017', true );
}
/*
* Front Enque Script
*/
function application_front_enque(){
wp_enqueue_script( 'application_front_script', $this->plugin_url . '/js/front-script.js', array(), '1062017', true );
wp_localize_script( 'application_front_script', 'status_ajax', admin_url( 'admin-ajax.php' ));
}
/*
* Admin Ajax call from content from page
*/
function appliation_post_ls(){
$f_data = $_POST['f_data'];
$id = $_POST['id'];
update_post_meta( $id, '_appliation_ls', $f_data );
die();
}
/*
* Form submit by user ajax call
*/
function appliation_formpost_ls(){
global $wpdb;
$prefix = $wpdb->prefix;
$reg_tble = $prefix . 'application_status';
$posts = $_POST['f_data'];
$postdatas = array();
parse_str($posts, $postdatas);
$id = $postdatas['_wpcf7'];
unset($postdatas['_wpcf7']);
unset($postdatas['_wpcf7_version']);
unset($postdatas['_wpcf7_locale']);
unset($postdatas['_wpcf7_unit_tag']);
unset($postdatas['_wpcf7_container_post']);
unset($postdatas['_wpcf7_nonce']);
$metaid = get_post_meta( $id, '_appliation_ls', false );
$metaArray = array();
parse_str($metaid[0], $metaArray);
$status = $metaArray['activeApplication'];
$email = '';
foreach($postdatas as $k=>$vlu) if (filter_var($vlu, FILTER_VALIDATE_EMAIL)) $email .= $vlu;
$postdatas = json_encode( $postdatas );
if($status == 'on'){
$query = "INSERT INTO $reg_tble (form_id, form_value, email, status) VALUES ('%d', '%s', '%s', '%s')";
$insert = $wpdb->query($wpdb->prepare($query, $id, $postdatas, $email, 'pending'));
if($insert){
echo 'success';
}else{
echo 'fail';
}
}
die();
}
private function createdb(){
global $wpdb;
$prefix = $wpdb->prefix;
$reg_tble = $prefix . 'application_status';
if($wpdb->get_var("SHOW TABLES LIKE '$reg_tble'") != $reg_tble) {
//table not in database. Create new table
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $reg_tble (
id mediumint(10) NOT NULL AUTO_INCREMENT,
form_id mediumint(10) NOT NULL,
form_value varchar(500) NOT NULL,
email varchar(500) NOT NULL,
status varchar(500) NOT NULL,
date timestamp NOT NULL,
UNIQUE KEY id (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
}
function status_update_app(){
$status = $_POST['val'];
$id = $_POST['id'];
$post_id = $_POST['post_id'];
$missing_info = $_POST['missing'];
global $wpdb;
$table = $wpdb->prefix . 'application_status';
$getdata = get_post_meta( $post_id, '_appliation_ls', false );
$arrData = array();
parse_str($getdata[0], $arrData);
$email = $wpdb->get_row('SELECT `email` FROM `'.$table.'` WHERE `id`='.$id.'', OBJECT);
$update = $wpdb->query(
$wpdb->prepare(
"UPDATE $table SET `status` = %s WHERE `id` = %d", $status, $id ) // $wpdb->prepare
); // $wpdb->query
if($update){
$email = $email->email;
switch($status){
case 'in progress':
$template = $arrData['template_progress'];
$this->send_mail($email, $template);
break;
case 'missing information';
$this->send_mail($email, $missing_info);
break;
case 'completed':
$template = $arrData['template_completed'];
$this->send_mail($email, $template);
break;
case 'rejected':
$template = $arrData['template_rejected'];
$this->send_mail($email, $template);
break;
}
echo 'update';
}else{
echo 'fail';
}
die();
} // End status update backend
/*
* Shortcode
*/
function application_status_shortcode(){
global $post;
$table = $this->table;
$metatbl = $this->wpdb->prefix . 'postmeta';
$forms = $this->wpdb->get_results('SELECT `post_id` FROM `'.$metatbl.'` WHERE `meta_key` = "_appliation_ls"', OBJECT);
$appForms = '';
foreach($forms as $frm) $appForms .= '';
$outputr = '';
if(isset($_POST['application_name']) && $_POST['status_email'] != '' ){
$result = $this->wpdb->get_row("SELECT `status` FROM $this->table WHERE `email`='".$_POST['status_email']."' AND `form_id`='".$_POST['application_name']."' ORDER BY `date` ASC", OBJECT);
$outputr .= $result->status;
}
$html = '
';
if($outputr == '' ){
$html .= '
';
}
else
{
$html .= '
Your application ('.get_the_title( $_POST['application_name'] ).') Status
Status: '.ucfirst($outputr).'
Reset
';
}
$html .= '
';
echo $html;
}
function add(){
$add = '
';
return $add;
}
function contactForm7Status_footer_function(){
$output = '';
echo $output;
}
} //End Class
}