get->get('template_id'); $dataset_id = $this->get->get('dataset_id'); if ($template_id && $dataset_id) { $template = new Model_E2pdf_Template(); $template->load($template_id); if ($this->post->get()) { foreach ($this->post->get('options') as $key => $value) { $template->set($key, $value); } } /* * @since 0.01.34 */ $uid = false; $uid_params = array(); $uid_params['template_id'] = $template_id; $uid_params['dataset'] = $dataset_id; $entry = new Model_E2pdf_Entry(); $entry->set('entry', $uid_params); if ($entry->load_by_uid($entry->get('uid'))) { $uid = $entry->get('uid'); } $template->fill($dataset_id, $uid); $request = $template->render(); if (isset($request['error'])) { $this->add_notification('error', $request['error']); $this->render('blocks', 'notifications'); } else { $filename = $template->get_filename(); $file = $request['file']; $this->download_response('pdf', $file, $filename); } } else { $this->error('404'); } } /** * Get activated templates list * * @return array() - Activated templates list */ public function get_active_templates() { global $wpdb; $model_e2pdf_template = new Model_E2pdf_Template(); $helper_e2pdf_db = new Helper_E2pdf_Db(); $condition = array( 'trash' => array( 'condition' => '<>', 'value' => '1', 'type' => '%d' ), 'activated' => array( 'condition' => '=', 'value' => '1', 'type' => '%d' ) ); $order_condition = array( 'orderby' => 'id', 'order' => 'desc', ); $where = $helper_e2pdf_db->prepare_where($condition); $orderby = $helper_e2pdf_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' => '', '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) { $datasets = array(); $datasets[] = array( 'key' => '', 'value' => __('--- Select ---', 'e2pdf') ); if ($template_id) { $template = new Model_E2pdf_Template(); $template->load($template_id); $extension = new Model_E2pdf_Extension(); $extension->load($template->get('extension')); $datasets_tmp = $extension-> get_datasets( $template->get('item'), $template->get('dataset_title') ); if ($datasets_tmp && is_array($datasets_tmp)) { $datasets = array_merge($datasets, $datasets_tmp); } } return $datasets; } /** * Get options to overwrite on template * * @return array() - List of options to overwrite */ public function get_options($template_id = false) { $options = array(); if ($template_id) { $template = new Model_E2pdf_Template(); $template->load($template_id); $options['name'] = $template->get('name'); $options['password'] = $template->get('password'); $options['flatten'] = $template->get('flatten'); } return $options; } /** * Get templates list via ajax * action: wp_ajax_e2pdf_templates * function: e2pdf_templates * * @return json - Templates list */ public function ajax_templates() { $this->check_nonce($this->get->get('_nonce'), 'e2pdf_ajax'); $template_id = (int) $this->post->get('data'); $content = array(); $content['datasets'] = $this->get_datasets($template_id); $content['options'] = $this->get_options($template_id); $content['url'] = $this->helper->get_url(array('page' => 'e2pdf-templates', 'action' => 'edit', 'id' => $template_id)); $template = new Model_E2pdf_Template(); $extension = new Model_E2pdf_Extension(); if ($template->load($template_id) && $extension->load($template->get('extension'))) { $content['delete_items'] = method_exists($extension->extension(), 'delete_items'); } $response = array( 'content' => $content, ); $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() { $this->check_nonce($this->get->get('_nonce'), 'e2pdf_ajax'); $data = $this->post->get('data'); $template_id = (int) $data['template']; $dataset_id = (int) $data['dataset']; $template = new Model_E2pdf_Template(); $template->load($template_id); $extension = new Model_E2pdf_Extension(); $extension->load($template->get('extension')); $dataset = $extension->get_dataset($dataset_id); $content = array(); if ($dataset) { $content['export'] = true; $content['view'] = isset($dataset->url) && $dataset->url ? true : false; $content['delete_item'] = method_exists($extension->extension(), 'delete_item'); $content['dataset'] = $dataset; } else { $content['export'] = false; $content['view'] = false; $content['delete_item'] = false; $content['dataset'] = false; } $response = array( 'content' => $content, ); $this->json_response($response); } public function ajax_delete_item() { $this->check_nonce($this->get->get('_nonce'), 'e2pdf_ajax'); $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(); $extension = new Model_E2pdf_Extension(); $action = false; if ($template->load($template_id) && $extension->load($template->get('extension'))) { if (method_exists($extension->extension(), 'delete_item')) { $action = $extension->delete_item($template_id, $dataset_id); } } if ($action) { $response = array( 'redirect' => $this->helper->get_url(array( 'page' => 'e2pdf', 'template_id' => $template_id ) ) ); $this->add_notification('update', __('Dataset removed successfully', 'e2pdf')); } else { $response = array( 'error' => __("Dataset can't be removed!", 'e2pdf') ); } $this->json_response($response); } public function ajax_delete_items() { $this->check_nonce($this->get->get('_nonce'), 'e2pdf_ajax'); $data = $this->post->get('data'); $template_id = (int) $data['template']; if (!$template_id) { return; } $template = new Model_E2pdf_Template(); $extension = new Model_E2pdf_Extension(); $action = false; if ($template->load($template_id) && $extension->load($template->get('extension'))) { if (method_exists($extension->extension(), 'delete_items')) { $action = $extension->delete_items($template_id); } } if ($action) { $response = array( 'redirect' => $this->helper->get_url(array( 'page' => 'e2pdf', 'template_id' => $template_id ) ) ); $this->add_notification('update', __('Datasets removed successfully', 'e2pdf')); } else { $response = array( 'error' => __("Datasets can't be removed!", 'e2pdf') ); } $this->json_response($response); } }