/** * Export template and template part data. * * @since 1.0.0 * @access public */ public function do_export() { $actions = array('export_tf_theme', 'export_tf_template', 'export_tf_template_part', 'export_tf_content_builder'); if (isset($_GET['action']) && in_array($_GET['action'], $actions) && wp_verify_nonce($_GET['_wpnonce'], 'export_tf_nonce')) { global $TF; include_once sprintf("%s/includes/utilities/export.php", $TF->framework_path()); $template = get_post($_GET['post']); $meta_file = $this->get_filename_data($template->post_type); $name_prefix = $meta_file['name']; $basename = sanitize_file_name($meta_file['file']); $filename = sanitize_file_name($name_prefix . '-' . $template->post_name . '.' . date('Y-m-d') . '.xml'); $ids = 'tf_theme' == $template->post_type ? TF_Model::get_theme_data_post_ids($template->ID, $template->post_name) : array($template->ID); $ids = TF_Model::find_attachment_ids_from_posts($ids); // Include all attachments ID from each post content shortcode builder. ob_start(); export_td(array('content' => $template->post_type, 'ids' => $ids, 'filename' => $filename)); $output = ob_get_contents(); ob_end_clean(); // Load WP Filesystem if (!function_exists('WP_Filesystem')) { require_once ABSPATH . 'wp-admin/includes/file.php'; } WP_Filesystem(); global $wp_filesystem; if (class_exists('ZipArchive')) { $datafile = $basename; $wp_filesystem->put_contents($datafile, $output, FS_CHMOD_FILE); $files_to_zip = array($datafile); $ext = pathinfo($filename, PATHINFO_EXTENSION); $file = str_replace('.' . $ext, '.zip', $filename); $result = tf_create_zip($files_to_zip, $file, true); } if (isset($result) && $result) { if (isset($file) && file_exists($file)) { ob_start(); header('Pragma: public'); header('Expires: 0'); header("Content-type: application/force-download"); header('Content-Disposition: attachment; filename="' . $file . '"'); header("Content-Transfer-Encoding: Binary"); header("Content-length: " . filesize($file)); header('Connection: close'); ob_clean(); flush(); echo $wp_filesystem->get_contents($file); unlink($datafile); unlink($file); exit; } else { return false; } } else { if (ini_get('zlib.output_compression')) { /** * Turn off output buffer compression for proper zip download. * @since 2.0.2 */ $srv_stg = 'ini' . '_' . 'set'; call_user_func($srv_stg, 'zlib.output_compression', 'Off'); } ob_start(); header('Content-Type: application/force-download'); header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Cache-Control: private', false); header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Content-Transfer-Encoding: binary'); ob_clean(); flush(); echo $output; exit; } die; } }
/** * Delete associated template and template part data. * * @since 1.0.0 * @access public * @param int $post_id */ public function delete_associated_templates($post_id) { // If this is just a revision, don't send the email. if (wp_is_post_revision($post_id)) { return; } // If this isn't a 'tf_theme' post, don't update it. if ($this->post_type != get_post_type($post_id)) { return; } $theme = get_post($post_id); $datas = TF_Model::get_theme_data_post_ids($post_id, $theme->post_name); if (count($datas) > 0) { foreach ($datas as $data) { if ($post_id == $data) { continue; } wp_delete_post($data, true); } } }