Wordpress - Export Zip Upload

0

I have a Wordpress form where people upload some files, along with their data.

Use contact form 7 and contact form db to save the data. The contact form db currently exports it only in excel. Maybe keep the excel file with the data and create a excel zip plus the uploads.

  

I need to export the data / uploads in an individual zip, by id saved in the contact form db.

     

There is this class to export in CSV, the idea is to create another class to export in zip.

            class Expoert_CSV{

                /**
                 * Download csv file
                 * @param  String $filename
                 * @return file
                 */
                public function download_send_headers( $filename ) {
                    // disable caching
                    $now = gmdate("D, d M Y H:i:s");
                    header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
                    header("Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate");
                    header("Last-Modified: {$now} GMT");

                    // force download
                    header("Content-Type: application/force-download");
                    header("Content-Type: application/octet-stream");
                    header("Content-Type: application/download");

                    // disposition / encoding on response body
                    header("Content-Disposition: attachment;filename={$filename}");
                    header("Content-Transfer-Encoding: binary");

                }
                /**
                 * Convert array to csv format
                 * @param  array  &$array
                 * @return file csv format
                 */
                public function array2csv(array &$array){

                    if (count($array) == 0) {
                        return null;
                    }
                    ob_start();
                    $df = fopen("php://output", 'w');
                    $array_keys = array_keys(reset($array));
                    $heading = array();
                    $unwanted = array('cfdb7_', 'your-');
                    foreach ($array_keys as $aKeys) {
                        $tmp = str_replace($unwanted, '', $aKeys);
                        $heading[] = ucfirst($tmp);
                    }
                    fputcsv($df, $heading);

                    foreach ($array as $row) {
                        fputcsv($df, $row);
                    }
                    fclose($df);
                    return ob_get_clean();
                }
                /**
                 * Download file
                 * @return csv file
                 */
                public function download_csv_file(){

                    global $wpdb;
                    $cfdb        = apply_filters( 'cfdb7_database', $wpdb );
                    $table_name  = $cfdb->prefix.'db7_forms';

                    if( isset($_REQUEST['csv']) && isset( $_REQUEST['nonce'] ) ){

                        $nonce =  $_REQUEST['nonce'];
                        if ( ! wp_verify_nonce( $nonce, 'dnonce')) {

                            wp_die( 'Not Valid.. Download nonce..!! ' );
                        }
                        $fid = (int)$_REQUEST['fid'];
                        $results = $cfdb->get_results("SELECT form_id, form_value, form_date FROM $table_name
                            WHERE form_post_id = '$fid' ",OBJECT);
                        $data = array();
                        $i = 0;
                        foreach ($results as $result) :
                            $i++;
                            $data[$i]['form_id']    = $result->form_id;
                            $data[$i]['form_date']  = $result->form_date;
                            $resultTmp     = unserialize( $result->form_value );
                            $upload_dir    = wp_upload_dir();
                            $cfdb7_dir_url = $upload_dir['baseurl'].'/cfdb7_uploads';
                            foreach ($resultTmp as $key => $value):

                                if (strpos($key, 'cfdb7_file') !== false ){
                                    $data[$i][$key] = $cfdb7_dir_url.'/'.$value;
                                    continue;
                                }
                                if ( is_array($value) ){

                                    $data[$i][$key] = implode(', ', $value);
                                    continue;
                                }

                               $data[$i][$key] = str_replace( array('"',''','/','\')
                                , array('"',"'",'/','\'), $value );

                            endforeach;

                        endforeach;

                        $this->download_send_headers( "cfdb7-" . date("Y-m-d") . ".csv" );
                        echo $this->array2csv( $data );
                        die();
                    }
                }
            }

But this class does the excel export with all form data.

Does anyone have any suggestions?

    
asked by anonymous 28.06.2018 / 20:34

0 answers