Advertisement
kirtan13497

CF7 Abandoned Entries PHP

Sep 28th, 2023
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 11.41 KB | Source Code | 0 0
  1. <?php
  2. /*
  3.  * Export CSV FIle Using Ajax
  4.  */
  5. if( ! defined( 'ABSPATH' ) ) exit;
  6.  
  7. if( ! class_exists('esb_cf7_custom_ajax') ) {
  8.    
  9.     class esb_cf7_custom_ajax {
  10.        
  11.         function esb_cf7_export_csv_form(){
  12.             //For Export CSV File
  13.             add_action( 'wp_ajax_esb_cf7_csv' , array( $this , 'fun_esb_cf7_csv' ) );
  14.             add_action( 'wp_ajax_nopriv_esb_cf7_csv' , array( $this , 'fun_esb_cf7_csv' ) );
  15.             //For Abandoned Entry
  16.             add_action( 'wp_ajax_esb_cf7_abandoned_entry' , array( $this , 'fun_esb_cf7_abandoned_entry' ) );
  17.             add_action( 'wp_ajax_nopriv_esb_cf7_abandoned_entry' , array( $this , 'fun_esb_cf7_abandoned_entry' ) );
  18.             //For Add Note & delete Note
  19.             add_action( 'wp_ajax_esb_cf7_add_delete_note' , array( $this , 'fun_esb_cf7_add_delete_note' ) );
  20.             add_action( 'wp_ajax_nopriv_esb_cf7_add_delete_note' , array( $this , 'fun_esb_cf7_add_delete_note' ) );
  21.         }
  22.        
  23.         /*
  24.          * Ajax For Add Note $ delete Note
  25.          */
  26.         function fun_esb_cf7_add_delete_note(){
  27.             if( !empty( $_POST ) ){
  28.                 $post_id    = $_POST['post_id'];
  29.                 $post_note  = $_POST['post_note'];
  30.                 $action     = $_POST['do_action'];
  31.                 $key_id     = $_POST['key_id'];
  32.             }
  33.             if( $action == "add-note" ){
  34.                 $current_time       = current_time( 'mysql' );
  35.                 $current_user_id    = get_current_user_id();
  36.                 $old_count = get_post_meta( $post_id , 'esb_cf7_note_count', true);
  37.                 $count = $old_count + 1;
  38.                 update_post_meta( $post_id , 'esb_cf7_note_count', $count );
  39.                 add_post_meta( $post_id , 'esb_cf7_note_'.$count , $post_note );
  40.                 add_post_meta( $post_id , 'esb_cf7_note_time_'.$count , $current_time );
  41.                 add_post_meta( $post_id , 'esb_cf7_note_user_'.$count , $current_user_id );
  42.             }
  43.             if( $action == "remove-note" ){
  44.                 delete_post_meta( $post_id, 'esb_cf7_note_'.$key_id );
  45.                 delete_post_meta( $post_id, 'esb_cf7_note_time_'.$key_id );
  46.                 delete_post_meta( $post_id, 'esb_cf7_note_user_'.$key_id );
  47.             }
  48.             ?>
  49.             <div class="esb-note-display">
  50.                 <?php
  51.                     $count = get_post_meta($post_id,'esb_cf7_note_count',true);
  52.                     for($i = $count ; $i >= 1 ; $i-- ){
  53.                         $data_note = get_post_meta( $post_id , 'esb_cf7_note_'.$i , true );
  54.                         $data_time = get_post_meta( $post_id , 'esb_cf7_note_time_'.$i , true );
  55.                         $data_user = get_post_meta( $post_id , 'esb_cf7_note_user_'.$i , true );
  56.                         $user_name = get_userdata($data_user);
  57.                         $user_name = !empty( $user_name ) ? $user_name->data->display_name : $data_user;
  58.                         if( !empty( $data_note ) && !empty( $data_time ) && !empty( $data_user ) ){
  59.                         ?>
  60.                         <div class="esb-cf7-single-note">
  61.                             <p> added by
  62.                                 <a href="<?php echo admin_url().'user-edit.php?user_id='.$data_user; ?>" target="_blank">
  63.                                     <?php echo $user_name; ?>
  64.                                 </a> on <?php echo $data_time; ?>
  65.                                 |
  66.                                 <a class="esb-cf7-remove-meta" data-id="<?php echo $i;?>">Delete</a>
  67.                             </p>
  68.                             <p> <?php echo $data_note; ?> </p>
  69.                         </div>
  70.                     <?php } } ?>
  71.             </div>
  72.             <?php
  73.             exit();
  74.         }
  75.         /*
  76.          * Ajax For Abandoned Entry
  77.          */
  78.         function fun_esb_cf7_abandoned_entry(){
  79.            
  80.             if( !empty( $_POST ) ){
  81.                 $title_field_name   = $_POST['title_field_name'];
  82.                 $form_id            = $_POST['form_id'];
  83.                 $form_data          = json_decode( stripslashes( $_POST['form_value'] ) );
  84.             }
  85.             if( isset( $form_id ) && !empty( $form_id )){
  86.                 $prevent_duplicate_val = get_post_meta( $form_id , 'esb_form_prevente_duplicate' , true );
  87.             }
  88.            
  89.             if( !empty( $prevent_duplicate_val ) ){
  90.                 if( $prevent_duplicate_val == 'yes' ){
  91.                     if( isset( $_SESSION['uniq_id'] ) ){
  92.                         $uniq_id = $_SESSION['uniq_id'];
  93.                         $query = new WP_Query(array(
  94.                                                     'post_type'     =>'esb_cf7_entries',
  95.                                                     'posts_per_page'=> -1,
  96.                                                     'meta_query'    => array ( array (
  97.                                                                           'key' => 'entry_uniq_key',
  98.                                                                           'value' => $uniq_id,
  99.                                                                           'compare' => 'IN'
  100.                                                                         ) )
  101.                                                     ));
  102.                         while($query->have_posts()){
  103.                             $query->the_post();
  104.                             $post_id = get_the_ID();
  105.                         }
  106.                         if( !empty( $post_id ) ){
  107.                             $entry_id = $post_id;
  108.                         }
  109.                     }
  110.                     else{
  111.                         $uniq_id = uniqid();
  112.                         $_SESSION['uniq_id'] = $uniq_id;
  113.                         $entry_id = wp_insert_post( array(
  114.                                                 'post_type'     => ESB_CF7_ENTRIES_POST_TYPE,
  115.                                                 'post_status'   => 'publish',
  116.                                                 ));
  117.                         update_post_meta( $entry_id , 'esb_cf7_note_count', 0);
  118.                     }
  119.                 }
  120.                 if( $prevent_duplicate_val == 'no' ){
  121.                     $entry_id = wp_insert_post( array(
  122.                                                 'post_type'     => ESB_CF7_ENTRIES_POST_TYPE,
  123.                                                 'post_status'   => 'publish',
  124.                                                 ));
  125.                     update_post_meta( $entry_id , 'esb_cf7_note_count', 0);
  126.                 }
  127.             }
  128.            
  129.             $form_fix_key_tmp   = array( '_wpcf7' , '_wpcf7_version' , '_wpcf7_locale' , '_wpcf7_unit_tag' , '_wpcf7_container_post' );
  130.             $form_fix_key       = apply_filters('esb_cf7_add_form_fix_key', $form_fix_key_tmp , $current_form_id );
  131.            
  132.            
  133.             if( !empty( $form_data ) && !empty( $entry_id )){
  134.                
  135.                 update_post_meta( $entry_id, 'entry_uniq_key' , $uniq_id );
  136.                
  137.                 $all_key = array();
  138.                
  139.                 foreach ( $form_data as $form_data_key => $form_data_value ) {
  140.                     if( $form_data_value->name == $title_field_name ){
  141.                         update_post_meta( $entry_id, 'esb_post_title', $form_data_value->value );
  142.                         wp_update_post( array(
  143.                                         'ID'           => $entry_id,
  144.                                         'post_title'   => $form_data_value->value
  145.                                         ));
  146.                     }
  147.                     /*
  148.                      * check First 5 field of cf7 fix key
  149.                      */
  150.                     if( in_array( $form_data_value->name, $form_fix_key ) ){
  151.                         update_post_meta( $entry_id, 'esb_' . $form_data_value->name, $form_data_value->value );
  152.                     }else{
  153.                         if(in_array($form_data_value->name, $all_key) ){
  154.                             $old_data = get_post_meta( $entry_id , 'esb_form_field_' . $form_data_value->name , true);
  155.                             $new_data = $old_data .' , '.$form_data_value->value;
  156.                             update_post_meta( $entry_id, 'esb_form_field_' . $form_data_value->name, $new_data );
  157.                         }
  158.                         else{
  159.                             update_post_meta( $entry_id, 'esb_form_field_' . $form_data_value->name, $form_data_value->value );
  160.                             array_push($all_key, $form_data_value->name);
  161.                         }
  162.                     }
  163.                 }
  164.             }
  165.             $extra_meta = array(
  166.                         'date_time'         => current_time( 'd/m/Y h:i A' ),
  167.                         'http_user_agent'   => sanitize_text_field( $_SERVER['HTTP_USER_AGENT'] ),
  168.                         'remote_addr'       => sanitize_text_field( $_SERVER['REMOTE_ADDR'] ),
  169.                         'http_referer'      => sanitize_text_field( $_SERVER['HTTP_REFERER'] ),
  170.                         );
  171.             if( !empty( $extra_meta ) && !empty( $entry_id )){
  172.                 foreach ( $extra_meta as $key => $value ){
  173.                         update_post_meta( $entry_id, 'esb_extra_' . $key, $value );
  174.                 }
  175.             }
  176.             update_post_meta( $entry_id, 'esb_form_status' , 'Abandoned' );
  177.             update_post_meta( $entry_id, 'esb_abandoned_flag' , 'false' );
  178.            
  179.             exit();                
  180.         }
  181.        
  182.         /*
  183.          * Ajax For Export CSV file
  184.          */
  185.         function fun_esb_cf7_csv(){
  186.             $selected_form      = $_POST['selected_val'];
  187.             $esb_entries_arg    = array(
  188.                                     'post_type'         => ESB_CF7_ENTRIES_POST_TYPE,
  189.                                     'post_status'       => 'publish',
  190.                                     'posts_per_page'    => -1,
  191.                                 );
  192.             $esb_cf7_all_entries = get_posts( $esb_entries_arg );
  193.             if ( $esb_cf7_all_entries ) {
  194.                 $file = fopen('php://output', 'w');
  195.                 foreach ($esb_cf7_all_entries as $form_key => $form_value) {
  196.                     $form_id = get_post_meta( $form_value->ID , 'esb__wpcf7' , true );
  197.                     if( $selected_form == $form_id ) {
  198.                         $all_key    = array();
  199.                         $esb_form   = esb_get_all_entries ( $form_value->ID );
  200.                         foreach ($esb_form as $esb_key => $esb_value) {
  201.                             array_push($all_key, $esb_key);
  202.                         }
  203.                         break;
  204.                     }
  205.                 }
  206.                 fputcsv($file, $all_key);
  207.                 foreach ($esb_cf7_all_entries as $form_key => $form_value) {
  208.                     $all_value  = array();
  209.                     $form_id = get_post_meta( $form_value->ID , 'esb__wpcf7' , true );
  210.                     if( $selected_form == $form_id ) {
  211.                         $esb_form   = esb_get_all_entries ( $form_value->ID );
  212.                         foreach ($esb_form as $esb_key => $esb_value) {
  213.                             array_push($all_value, $esb_value);
  214.                         }
  215.                     fputcsv($file, $all_value);
  216.                     }
  217.                 }
  218.             }
  219.             exit();
  220.         }
  221.     }//End Of Class
  222. }// class_exists check
  223. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement