table = $wpdb->prefix . 'e2pdf_pages'; } public function get_table() { return $this->table; } public function set($key, $value) { switch ($key) { case 'properties': case 'actions': if (!is_array($value)) { $this->page[$key] = array(); } else { $this->page[$key] = $value; } break; default: $this->page[$key] = $value; break; } } public function get($key) { if (isset($this->page[$key])) { $value = $this->page[$key]; return $value; } else { switch ($key) { case 'template_id': case 'revision_id': $value = 0; break; case 'properties': case 'actions': $value = array(); break; default: $value = ''; break; } return $value; } } public function get_page() { return $this->page; } public function before_save() { $page = array( 'template_id' => $this->get('template_id'), 'page_id' => $this->get('page_id'), 'properties' => serialize($this->get('properties')), // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize 'actions' => serialize($this->get('actions')), // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize 'revision_id' => $this->get('revision_id'), ); return $page; } public function save() { global $wpdb; $page = $this->before_save(); if ($this->get('page_id') && $this->get('template_id')) { $show_errors = false; if ($wpdb->show_errors) { $wpdb->show_errors(false); $show_errors = true; } $success = $wpdb->insert($this->get_table(), $page); if ($success === false) { $this->helper->load('db')->db_init($wpdb->prefix); $wpdb->insert($this->get_table(), $page); } if ($show_errors) { $wpdb->show_errors(); } return $this->get('page_id'); } } public function load($page_id, $template_id, $revision_id = 0) { global $wpdb; // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare $page = $wpdb->get_row($wpdb->prepare('SELECT * FROM `' . $this->get_table() . '` WHERE page_id = %d AND template_id = %d AND revision_id = %d', $page_id, $template_id, $revision_id), ARRAY_A); if ($page) { $this->page = $page; $this->set('properties', $this->helper->load('convert')->unserialize($page['properties'])); $this->set('actions', $this->helper->load('convert')->unserialize($page['actions'])); $model_e2pdf_element = new Model_E2pdf_Element(); $this->set('elements', $model_e2pdf_element->get_elements($this->get('page_id'), $this->get('template_id'), $this->get('revision_id'))); return true; } return false; } public function delete() { global $wpdb; if ($this->get('page_id') && $this->get('template_id')) { $where = array( 'page_id' => $this->get('page_id'), 'template_id' => $this->get('template_id'), 'revision_id' => $this->get('revision_id'), ); $wpdb->delete($this->get_table(), $where); foreach ($this->get('elements') as $element) { $model_e2pdf_element = new Model_E2pdf_Element(); $model_e2pdf_element->load($element['element_id'], $element['template_id'], $element['revision_id']); $model_e2pdf_element->delete(); } } } public function get_pages($template_id, $revision_id = 0) { global $wpdb; // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare $pages = $wpdb->get_results($wpdb->prepare('SELECT * FROM `' . $this->get_table() . '` WHERE template_id = %d AND revision_id = %d ORDER BY page_id ASC', $template_id, $revision_id), ARRAY_A); if ($pages) { $pages_list = array(); $pages_list[] = array(); foreach ($pages as $page_key => $page) { $this->load($page['page_id'], $page['template_id'], $page['revision_id']); $pages_list[] = $this->get_page(); } unset($pages_list[0]); return $pages_list; } return array(); } }