get->get('template_id')) { $url = array( 'page' => 'e2pdf', 'id' => $this->get->get('template_id'), ); if ($this->get->get('dataset_id')) { $url['dataset'] = $this->get->get('dataset_id'); } if ($this->get->get('dataset_id2')) { $url['dataset2'] = $this->get->get('dataset_id2'); } $this->redirect($this->helper->get_url($url)); } $users_tmp = get_users( array( 'fields' => array( 'ID', 'user_login', ), ) ); $users = array( '0' => __('--- Select ---', 'e2pdf'), ); foreach ($users_tmp as $user) { $users[$user->ID] = $user->user_login; } $this->view('users', $users); } /** * @url admin.php?page=e2pdf&action=bulk */ public function bulk_action() { if ($this->get->get('uid')) { $model_e2pdf_bulk = new Model_E2pdf_Bulk(); if ($model_e2pdf_bulk->load_by_uid($this->get->get('uid')) && file_exists($this->helper->get('bulk_dir') . $model_e2pdf_bulk->get('uid') . '.zip') && $model_e2pdf_bulk->load($model_e2pdf_bulk->get('ID'))) { $this->helper->set_time_limit(0); $this->download_response('zip', $this->helper->get('bulk_dir') . $model_e2pdf_bulk->get('uid') . '.zip', $model_e2pdf_bulk->get('ID') . ' - ' . $model_e2pdf_bulk->get('template')->get('title'), '', true); exit; } } if (defined('DISABLE_WP_CRON') && DISABLE_WP_CRON) { if (defined('ALTERNATE_WP_CRON') && ALTERNATE_WP_CRON) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf } else { $this->add_notification('error', __('WP Cron is disabled. You must stay on this page to complete the Bulk PDFs creation', 'e2pdf')); } } if ($this->helper->get('license')->get('type') == 'FREE' && !get_option('e2pdf_hide_warnings', '0')) { $this->add_notification('notice', sprintf(__("Bulk PDF generation is not available with the Free License Type. Please visit %s for upgrade options", 'e2pdf'), 'https://e2pdf.com/price', 'https://e2pdf.com')); } $users_tmp = get_users( [ 'fields' => [ 'ID', 'user_login', ], ] ); $users = [ '0' => __('--- Select ---', 'e2pdf'), ]; foreach ($users_tmp as $user) { $users[$user->ID] = $user->user_login; } $this->view('users', $users); } /** * @url admin.php?page=e2pdf&action=export */ public function export_action() { $wpml = $this->helper->load('translator')->isWPML(); if ($wpml) { $lang = apply_filters('wpml_current_language', null); do_action('wpml_switch_language', $lang); } if ($this->get->get('template_id')) { $url = array( 'page' => 'e2pdf', 'action' => 'export', 'id' => $this->get->get('template_id'), ); if ($this->get->get('dataset_id')) { $url['dataset'] = $this->get->get('dataset_id'); } if ($this->get->get('dataset_id2')) { $url['dataset2'] = $this->get->get('dataset_id2'); } $this->redirect($this->helper->get_url($url)); } $template_id = (int) $this->get->get('id'); $dataset = $this->get->get('dataset') ? $this->get->get('dataset') : false; $dataset2 = $this->get->get('dataset2') ? $this->get->get('dataset2') : false; $wc_order_id = $this->get->get('wc_order_id') ? $this->get->get('wc_order_id') : false; $wc_product_item_id = $this->get->get('wc_product_item_id') ? $this->get->get('wc_product_item_id') : false; $disposition = 'inline'; if ($this->post->get('disposition') === 'attachment') { $disposition = 'attachment'; } $atts = array( 'user_id' => 0, 'inline' => $disposition == 'inline' ? '1' : '0', ); $args = array(); if ($this->post->get('options')) { foreach ($this->post->get('options') as $key => $value) { if ($key == 'args') { if (is_array($value)) { foreach ($value as $sub_key => $sub_value) { if ($sub_value !== '') { $args['arg' . ($sub_key + 1)] = stripslashes($sub_value); } } } } else { $atts[$key] = stripslashes($value); } } } if ($template_id && ($dataset || $dataset2)) { $template = new Model_E2pdf_Template(); if ($template->load($template_id)) { $entry = new Model_E2pdf_Entry(); $entry->set_data('template_id', $template_id); $template->extension()->set('template_id', $template_id); if ($dataset) { $entry->set_data('dataset', $dataset); $template->extension()->set('dataset', $dataset); } if ($dataset2) { $entry->set_data('dataset2', $dataset2); $template->extension()->set('dataset2', $dataset2); } if ($wc_order_id) { $entry->set_data('wc_order_id', $wc_order_id); $template->extension()->set('wc_order_id', $wc_order_id); } if ($wc_product_item_id) { $entry->set_data('wc_product_item_id', $wc_product_item_id); $template->extension()->set('wc_product_item_id', $wc_product_item_id); } if ($template->get('extension') == 'wordpress' && $template->get('item') == '-3') { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedIf } else { if (array_key_exists('user_id', $atts)) { $user_id = (int) $atts['user_id']; $entry->set_data('user_id', $user_id); $template->extension()->set('user_id', $user_id); } else { $user_id = get_current_user_id(); $entry->set_data('user_id', $user_id); $template->extension()->set('user_id', $user_id); } } if (!empty($args)) { $entry->set_data('args', $args); $template->extension()->set('args', $args); } if ($template->extension()->get_storing_engine() !== false) { $entry->set_data('storing_engine', $template->extension()->get_storing_engine()); $template->extension()->set('storing_engine', $template->extension()->get_storing_engine()); } if ($template->extension()->verify()) { add_filter('acf/shortcode/prevent_access_to_fields_on_non_public_posts', [$this->helper, '__return_false'], 999); if (array_key_exists('inline', $atts)) { $inline = $atts['inline']; if ($template->get('inline') !== $inline) { $entry->set_data('inline', $inline); } } if (array_key_exists('flatten', $atts)) { $flatten = $atts['flatten']; if ($template->get('flatten') !== $flatten) { $entry->set_data('flatten', $flatten); $template->set('flatten', $flatten); } } if (array_key_exists('format', $atts)) { $format = $atts['format']; if ($template->get('format') !== $format) { if ($template->set('format', $format)) { $entry->set_data('format', $format); } } } if (array_key_exists('name', $atts) && $template->get('name') !== $atts['name']) { if (!array_key_exists('filter', $atts)) { $name = $template->extension()->render($atts['name']); } else { $name = $template->extension()->convert_shortcodes($atts['name'], true); } $entry->set_data('name', $name); $template->set('name', $name); } else { $template->set('name', $template->extension()->render($template->get('name'))); } if (array_key_exists('savename', $atts) && $template->get('savename') !== $atts['savename']) { if (!array_key_exists('filter', $atts)) { $savename = $template->extension()->render($atts['savename']); } else { $savename = $template->extension()->convert_shortcodes($atts['savename'], true); } $entry->set_data('savename', $name); $template->set('savename', $name); } else { $template->set('savename', $template->extension()->render($template->get('savename'))); } if (array_key_exists('password', $atts) && $template->get('password') !== $atts['password']) { if (!array_key_exists('filter', $atts)) { $password = $template->extension()->render($atts['password']); } else { $password = $template->extension()->convert_shortcodes($atts['password'], true); } $entry->set_data('password', $password); $template->set('password', $password); } else { $template->set('password', $template->extension()->render($template->get('password'))); } if (array_key_exists('dpdf', $atts)) { if (!array_key_exists('filter', $atts)) { $dpdf = $template->extension()->render($atts['dpdf']); } else { $dpdf = $template->extension()->convert_shortcodes($atts['dpdf'], true); } $entry->set_data('dpdf', $dpdf); $template->set('dpdf', $dpdf); } else { $template->set('dpdf', $template->extension()->render($template->get('dpdf'))); } if (array_key_exists('meta_title', $atts)) { if (!array_key_exists('filter', $atts)) { $meta_title = $template->extension()->render($atts['meta_title']); } else { $meta_title = $template->extension()->convert_shortcodes($atts['meta_title'], true); } $entry->set_data('meta_title', $meta_title); $template->set('meta_title', $meta_title); } else { $template->set('meta_title', $template->extension()->render($template->get('meta_title'))); } if (array_key_exists('meta_subject', $atts)) { if (!array_key_exists('filter', $atts)) { $meta_subject = $template->extension()->render($atts['meta_subject']); } else { $meta_subject = $template->extension()->convert_shortcodes($atts['meta_subject'], true); } $entry->set_data('meta_subject', $meta_subject); $template->set('meta_subject', $meta_subject); } else { $template->set('meta_subject', $template->extension()->render($template->get('meta_subject'))); } if (array_key_exists('meta_author', $atts)) { if (!array_key_exists('filter', $atts)) { $meta_author = $template->extension()->render($atts['meta_author']); } else { $meta_author = $template->extension()->convert_shortcodes($atts['meta_author'], true); } $entry->set_data('meta_author', $meta_author); $template->set('meta_author', $meta_author); } else { $template->set('meta_author', $template->extension()->render($template->get('meta_author'))); } if (array_key_exists('meta_keywords', $atts)) { if (!array_key_exists('filter', $atts)) { $meta_keywords = $template->extension()->render($atts['meta_keywords']); } else { $meta_keywords = $template->extension()->convert_shortcodes($atts['meta_keywords'], true); } $entry->set_data('meta_keywords', $meta_keywords); $template->set('meta_keywords', $meta_keywords); } else { $template->set('meta_keywords', $template->extension()->render($template->get('meta_keywords'))); } $template->extension()->set('entry', $entry); $template->fill(); $request = $template->render(); if (isset($request['error'])) { $this->add_notification('error', $request['error']); $this->render('blocks', 'notifications'); $this->index_action(); } else { do_action('e2pdf_controller_e2pdf_export_completed', $request['file'], $template); $this->download_response($template->get('format'), $request['file'], $template->get_name(), $disposition, false, true); exit; } remove_filter('acf/shortcode/prevent_access_to_fields_on_non_public_posts', [$this->helper, '__return_false'], 999); } else { $this->add_notification('error', __('Incorrect Dataset', 'e2pdf')); $this->render('blocks', 'notifications'); } } else { $this->add_notification('error', __("Template can't be loaded", 'e2pdf')); $this->render('blocks', 'notifications'); } } else { $this->handle_404(); } } public function get_bulks_list($filters = array(), $count = false) { global $wpdb; $model_e2pdf_bulk = new Model_E2pdf_Bulk(); $condition = array(); if (isset($filters['s']) && $filters['s']) { $condition['title'] = array( 'condition' => 'LIKE', 'value' => '%%' . $filters['s'] . '%%', 'type' => '%s', ); } $order_condition = array(); $sortable = array('id', 'title', 'updated_at'); if (isset($filters['orderby']) && in_array($filters['orderby'], $sortable) && isset($filters['order'])) { $order_condition = array( 'orderby' => $filters['orderby'], 'order' => $filters['order'] == 'asc' ? 'asc' : 'desc', ); } else { $order_condition = array( 'orderby' => 'id', 'order' => 'desc', ); } $limit_condition = array(); if (!$count) { $paged = isset($filters['paged']) && $filters['paged'] ? $filters['paged'] : '0'; $paged = (int) $paged <= 0 ? 1 : (int) $paged; $per_page = get_option('e2pdf_bulks_screen_per_page', '20'); $limit_condition = array( 'limit' => (int) $per_page, 'offset' => (int) ($paged - 1) * $per_page, ); } $where = $this->helper->load('db')->prepare_where($condition); $orderby = $this->helper->load('db')->prepare_orderby($order_condition); $limit = $this->helper->load('db')->prepare_limit($limit_condition); $blks = $wpdb->get_results($wpdb->prepare('SELECT `ID` FROM `' . $model_e2pdf_bulk->get_table() . '`' . $where['sql'] . $orderby . $limit . '', $where['filter'])); if ($count) { return count($blks); } $bulks = array(); foreach ($blks as $key => $blk) { $bulk = new Model_E2pdf_Bulk(); $bulk->load($blk->ID); $bulks[] = $bulk; } return $bulks; } /** * Get activated templates list * @return array() - Activated templates list */ public function get_active_templates() { global $wpdb; $model_e2pdf_template = new Model_E2pdf_Template(); $condition = array( 'trash' => array( 'condition' => '<>', 'value' => '1', 'type' => '%d', ), 'activated' => array( 'condition' => '=', 'value' => '1', 'type' => '%d', ), ); $order_condition = array( 'orderby' => 'id', 'order' => 'desc', ); $where = $this->helper->load('db')->prepare_where($condition); $orderby = $this->helper->load('db')->prepare_orderby($order_condition); $templates = $wpdb->get_results($wpdb->prepare('SELECT * FROM `' . $model_e2pdf_template->get_table() . '`' . $where['sql'] . $orderby . '', $where['filter'])); $export_templates = array(); $export_templates[] = array( 'key' => '0', 'value' => __('--- Select ---', 'e2pdf'), ); if (!empty($templates)) { foreach ($templates as $key => $value) { $export_templates[] = array( 'key' => $value->ID, 'value' => $value->title, ); } } return $export_templates; } /** * Get entries for template * @return array() - Entries for template */ public function get_datasets($template_id = false, $item = false, $dataset_title = false) { $datasets = array( array( 'key' => '', 'value' => __('--- Select ---', 'e2pdf'), ) ); if ($template_id) { $template = new Model_E2pdf_Template(); if ($template->load($template_id)) { if ($item) { $datasets_tmp = $template->extension()-> datasets( $item, $dataset_title ? $dataset_title : $template->get('dataset_title') ); } else { $datasets_tmp = $template->extension()-> datasets( $template->get('item'), $dataset_title ? $dataset_title : $template->get('dataset_title') ); } if ($datasets_tmp && is_array($datasets_tmp)) { $datasets = array_merge($datasets, $datasets_tmp); } } } return $datasets; } /** * Get templates list via ajax * action: wp_ajax_e2pdf_templates * function: e2pdf_templates * @return json - Templates list */ public function ajax_templates() { if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf')) { $wpml = $this->helper->load('translator')->isWPML(); if ($wpml) { $lang = apply_filters('wpml_current_language', null); do_action('wpml_switch_language', $lang); } $content = array( 'id' => 0, 'datasets' => array(), 'options' => array(), 'actions' => array(), ); $template_id = (int) $this->post->get('data'); $template = new Model_E2pdf_Template(); if ($template->load($template_id)) { $content['id'] = $template_id; if ($template->get('item') == '-2') { $content['datasets']['dataset'] = $this->get_datasets( $template_id, $template->get('item1'), $this->helper->load('translator')->pre_translate($template->get('dataset_title1'), $template_id, 'dataset_title1', 'template') ); $content['datasets']['dataset2'] = $this->get_datasets( $template_id, $template->get('item2'), $this->helper->load('translator')->pre_translate($template->get('dataset_title2'), $template_id, 'dataset_title2', 'template') ); } else { $content['datasets']['dataset'] = $this->get_datasets( $template_id, false, $this->helper->load('translator')->pre_translate($template->get('dataset_title'), $template_id, 'dataset_title', 'template') ); } $actions = $template->extension()->get_template_actions($template_id); if (isset($actions->delete) && $actions->delete) { $content['actions'][] = sprintf('%s', $template_id, wp_create_nonce('e2pdf'), __('Delete All Datasets', 'e2pdf')); } $content['actions'][] = sprintf( '%s', $this->helper->get_url( array( 'page' => 'e2pdf-templates', 'action' => 'edit', 'id' => $template_id, ) ), __('Edit Template', 'e2pdf') ); } $content['options'] = array( 'name' => $this->helper->load('translator')->pre_translate($template->get('name'), $template_id, 'name', 'template'), 'savename' => $this->helper->load('translator')->pre_translate($template->get('savename'), $template_id, 'savename', 'template'), 'password' => $template->get('password'), 'user_id' => get_current_user_id(), 'flatten' => $template->get('flatten'), 'format' => $template->get('format'), 'args' => '', ); if ($template->get('extension') == 'wordpress' && $template->get('item') == '-3') { unset($content['options']['user_id']); } $response = array( 'content' => $content, ); } else { $response['error'] = $this->message('wp_verify_nonce_error'); } $this->json_response($response); } public function ajax_datasets_refresh() { if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf')) { $data = $this->post->get('data'); $template_id = (int) $data['id']; $name = $data['name']; $dataset = $data['dataset']; $content = array( 'dataset' => $dataset, 'datasets' => array(), ); $template = new Model_E2pdf_Template(); if ($template->load($template_id)) { $content['id'] = $template_id; if ($template->get('item') == '-2') { if ($name == 'dataset') { $content['datasets'] = $this->get_datasets($template_id, $template->get('item1'), $template->get('dataset_title1')); } else { $content['datasets'] = $this->get_datasets($template_id, $template->get('item2'), $template->get('dataset_title2')); } } else { $content['datasets'] = $this->get_datasets($template_id); } } $response = array( 'content' => $content, ); } else { $response['error'] = $this->message('wp_verify_nonce_error'); } $this->json_response($response); } /** * Get entries list via ajax * action: wp_ajax_e2pdf_entry * function: e2pdf_entry * @return json - Entries list */ public function ajax_dataset() { if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf')) { $data = $this->post->get('data'); $template_id = (int) $data['id']; $datasets = isset($data['datasets']) ? $data['datasets'] : array(); $template = new Model_E2pdf_Template(); $content = array( 'id' => $template_id, 'export' => false, 'datasets' => array(), ); if ($template->load($template_id)) { foreach ($datasets as $key => $dataset_id) { $actions = $template->extension()->get_dataset_actions($dataset_id); if ($actions) { $content['datasets'][$key] = array( 'id' => $dataset_id, 'actions' => array(), ); if (isset($actions->view) && $actions->view) { $content['datasets'][$key]['actions'][] = sprintf('%s', $actions->view, __('View Dataset', 'e2pdf')); } if (isset($actions->delete) && $actions->delete) { $content['datasets'][$key]['actions'][] = sprintf('%s', $template_id, $dataset_id, wp_create_nonce('e2pdf'), __('Delete Dataset', 'e2pdf')); } $content['export'] = true; } else { $content['datasets'][$key] = array( 'id' => '', 'actions' => array(), ); } } } $response = array( 'content' => $content, ); } else { $response['error'] = $this->message('wp_verify_nonce_error'); } $this->json_response($response); } public function ajax_delete_item() { if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf')) { $data = $this->post->get('data'); $template_id = (int) $data['template']; $dataset_id = (int) $data['dataset']; if (!$template_id || !$dataset_id) { return; } $template = new Model_E2pdf_Template(); $action = false; if ($template->load($template_id)) { $action = $template->extension()->delete_item($template_id, $dataset_id); } if ($action) { $response = array( 'content' => true, ); } else { $response = array( 'error' => __("Dataset can't be removed!", 'e2pdf'), ); } } else { $response['error'] = $this->message('wp_verify_nonce_error'); } $this->json_response($response); } public function ajax_delete_items() { if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf')) { $data = $this->post->get('data'); $template_id = (int) $data['template']; if (!$template_id) { return; } $template = new Model_E2pdf_Template(); $action = false; if ($template->load($template_id)) { $action = $template->extension()->delete_items($template_id); } if ($action) { $response = array( 'content' => true, ); } else { $response = array( 'error' => __("Datasets can't be removed!", 'e2pdf'), ); } } else { $response['error'] = $this->message('wp_verify_nonce_error'); } $this->json_response($response); } public function ajax_bulk_create() { if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf')) { $this->helper->load('license')->load(); if ($this->helper->get('license')->get('type') === false) { $response = array( 'error' => __('Something went wrong!', 'e2pdf'), ); } elseif ($this->helper->get('license')->get('type') == 'FREE') { $response = array( 'error' => __('Bulk PDF generation is not available with the Free License Type. Please visit https://e2pdf.com/price for upgrade options', 'e2pdf') ); } elseif (!class_exists('ZipArchive')) { $response = array( 'error' => sprintf(__('The PHP %s extension is required', 'e2pdf'), 'Zip'), ); } else { $data = json_decode($this->post->get('data'), true); $template_id = isset($data['id']) ? (int) $data['id'] : 0; $template = new Model_E2pdf_Template(); if ($template->load($template_id)) { $model_e2pdf_bulk = new Model_E2pdf_Bulk(); $model_e2pdf_bulk->set('template_id', $template->get('ID')); if (isset($data['options'])) { $wpml = $this->helper->load('translator')->isWPML(); if ($wpml) { $lang = apply_filters('wpml_current_language', null); if ($lang) { $data['options']['lang'] = $lang; } } $data['options']['args'] = isset($data['options[args]']) ? $data['options[args]'] : array(); $model_e2pdf_bulk->set('options', $data['options']); } $datasets = isset($data['dataset']) ? $data['dataset'] : array(); if (isset($datasets['0']) && $datasets['0'] === '') { unset($datasets['0']); } if (!empty($datasets)) { $datasets = array_reverse($datasets); $model_e2pdf_bulk->set('datasets', $datasets); $model_e2pdf_bulk->set('total', count($datasets)); $model_e2pdf_bulk->save(); $response = array( 'redirect' => $this->helper->get_url( array( 'page' => 'e2pdf', 'action' => 'bulk', 'notification' => $this->add_notification('update', __('The Bulk PDFs generation Task is created successfully', 'e2pdf')), ) ), ); } $this->cron_bulk_export(); } } } else { $response['error'] = $this->message('wp_verify_nonce_error'); } $this->json_response($response); } public function ajax_bulk_action() { if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf')) { $data = $this->post->get('data'); $bulk_id = (int) $data['bulk']; $action = isset($data['action']) && in_array($data['action'], array('delete', 'start', 'stop')) ? $data['action'] : false; if (!$bulk_id || !$action) { return; } $bulk = new Model_E2pdf_Bulk(); if ($bulk->load($bulk_id)) { if ($action == 'delete') { $bulk->delete(); } elseif ($action == 'start') { if ($bulk->get('status') != 'pending') { $bulk->set('status', 'pending'); $bulk->save(); } $this->cron_bulk_export(); } elseif ($action == 'stop') { if ($bulk->get('status') != 'stop') { $bulk->set('status', 'stop'); $bulk->save(); } } } $response = array( 'content' => array( 'action' => $action, ), ); } else { $response['error'] = $this->message('wp_verify_nonce_error'); } $this->json_response($response); } public function ajax_bulk_progress() { if (wp_verify_nonce($this->get->get('_wpnonce'), 'e2pdf')) { $data = $this->post->get('data'); $bulks = isset($data['bulks']) && is_array($data['bulks']) ? $data['bulks'] : array(); $progress = array(); foreach ($bulks as $bulk_id) { $bulk = new Model_E2pdf_Bulk(); if ($bulk->load($bulk_id)) { $progress[] = array( 'ID' => $bulk->get('ID'), 'uid' => $bulk->get('uid'), 'count' => $bulk->get('count'), 'status' => $bulk->get('status'), ); } } $response = array( 'content' => array( 'bulks' => $progress, ), ); $this->cron_bulk_export(); } else { $response['error'] = $this->message('wp_verify_nonce_error'); } $this->json_response($response); } public function cron_bulk_export() { $model_e2pdf_bulk = new Model_E2pdf_Bulk(); if ($model_e2pdf_bulk->load_by_active_bulk()) { if (!get_transient('e2pdf_bulk_export')) { set_transient('e2pdf_bulk_export', true, max(10, (int) get_option('e2pdf_bulk_export_interval', '10'))); if ($model_e2pdf_bulk->get('ID') && $model_e2pdf_bulk->get_active_status() !== 'busy' && $model_e2pdf_bulk->get_active_status() !== 'stop') { $model_e2pdf_bulk->set('status', 'busy'); $model_e2pdf_bulk->save(); $template_id = $model_e2pdf_bulk->get('template_id'); $datasets = $model_e2pdf_bulk->get('datasets'); $dataset = array_shift($datasets); $pdf_dir = $this->helper->get('bulk_dir') . $model_e2pdf_bulk->get('uid') . '/'; if (!file_exists($pdf_dir)) { $this->helper->create_dir($pdf_dir, false, true, true); } register_shutdown_function(array($this, 'cron_bulk_export_shutdown'), $model_e2pdf_bulk, $datasets, $pdf_dir); if ($template_id && $dataset) { $model_e2pdf_shortcode = new Model_E2pdf_Shortcode(); $atts = array( 'id' => $template_id, 'dataset' => $dataset, 'user_id' => 0, 'create_index' => 'false', 'create_htaccess' => 'false', 'overwrite' => '2', 'dir' => $pdf_dir, 'apply' => 'true', ); if ($model_e2pdf_bulk->get('options')) { foreach ($model_e2pdf_bulk->get('options') as $key => $value) { if ($key == 'args') { if (is_array($value)) { foreach ($value as $sub_key => $sub_value) { if ($sub_value) { $atts['arg' . ($sub_key + 1)] = $sub_value; } } } } elseif ($key == 'lang') { do_action('wpml_switch_language', $value); } else { $atts[$key] = $value; } } } add_filter('acf/shortcode/prevent_access_to_fields_on_non_public_posts', [$this->helper, '__return_false'], 999); $model_e2pdf_shortcode->e2pdf_save($atts); remove_filter('acf/shortcode/prevent_access_to_fields_on_non_public_posts', [$this->helper, '__return_false'], 999); } } } if (!wp_next_scheduled('e2pdf_bulk_export_cron')) { wp_schedule_event(time(), 'e2pdf_bulk_export_interval', 'e2pdf_bulk_export_cron'); } } else { if (wp_next_scheduled('e2pdf_bulk_export_cron')) { wp_clear_scheduled_hook('e2pdf_bulk_export_cron'); } } } public function cron_bulk_export_shutdown($model_e2pdf_bulk, $datasets, $pdf_dir) { $model_e2pdf_bulk->set('datasets', $datasets); $model_e2pdf_bulk->set('count', $model_e2pdf_bulk->get('count') + 1); if (empty($datasets)) { $zip_path = $this->helper->get('bulk_dir') . $model_e2pdf_bulk->get('uid') . '.zip'; $zip = new ZipArchive(); if ($zip->open($zip_path, ZipArchive::CREATE) === true) { $this->helper->set_time_limit(0); do_action('e2pdf_controller_e2pdf_bulk_export_completed_dir', $pdf_dir, $model_e2pdf_bulk); $dir = opendir($pdf_dir); while ($file = readdir($dir)) { if (is_file($pdf_dir . $file) && $file !== 'index.php' && $file !== '.htaccess') { $zip->addFile($pdf_dir . $file, $file); } } closedir($dir); $zip->close(); do_action('e2pdf_controller_e2pdf_bulk_export_completed_zip', $zip_path, $model_e2pdf_bulk); } $this->helper->delete_dir($pdf_dir); $model_e2pdf_bulk->set('status', 'completed'); } else { if ($model_e2pdf_bulk->get_active_status() == 'stop') { $model_e2pdf_bulk->set('status', 'stop'); } else { $model_e2pdf_bulk->set('status', 'pending'); } } $model_e2pdf_bulk->save(); } }