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 = ''; foreach($results as $k=>$sr){ $arrData = array(); parse_str($sr->meta_value, $arrData); $table .= sprintf('', $k+1, get_the_title($sr->post_id), admin_url( $path = '/admin.php?page=appliation-status-wpcp7&form='.$sr->post_id, $scheme = 'admin' )); } $table .= '
ID Form Name Action
%d %s All Application
'; $output = '

Application Status
'.$this->add().'



'.$table.'
'; 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 = ''; $clmn = array(); foreach($arrData['column_f'] as $c => $scolumn): $table .= sprintf('', $scolumn); array_push($clmn, $scolumn); endforeach; $table .=''; $table.=''; foreach($allapplication as $ap=>$saff): $datas = json_decode($saff->form_value); $cid= (int)$ap + 1; $table .= ''; for($i=0; count($clmn) > $i; $i++){ $colum = $clmn[$i]; $table .= sprintf('', $datas->$colum); } $table .= ''; endforeach; $table .= '
ID%sStatus
'. $cid .'%s'.$saff->status.'
'; $output = '

Application Status
'.$this->add().'



'.$table.'

Back to Main
'; 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 = ''; foreach($values as $key=>$vlue): $table .= sprintf('', $key, $vlue); endforeach; $sArray = array('pending', 'following', 'in progress', 'missing information', 'completed', 'rejected'); $table .= '

Form Details

%s%s
Status
'; $output = '

Application Details

'.$table.'



Back to Main Back to List
'; 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 = ''; $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 .= ($checked != '')?'
'.$item.'
'; if($formField){ $output .= $formField; }else{ $output .='
'; } $output .= '
In Progress
Completed
Rejected

Application Status plugin Documentation

  • Front-end Shortcode: Use [wpcf7-status] for status update from front view.
  • Dont use -(desh) sign in form name / column name under general tab.
  • Create a page and use shortcode for your user for get application status.
'; $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 }