table = $wpdb->prefix . 'e2pdf_datasets'; } public function get_table() { return $this->table; } public function load($id, $item, $extension) { global $wpdb; $condition = array( 'ID' => array( 'condition' => '=', 'value' => $id, 'type' => '%d', ), 'extension' => array( 'condition' => '=', 'value' => $extension, 'type' => '%s', ), 'item' => array( 'condition' => '=', 'value' => $item, 'type' => '%s', ), ); $where = $this->helper->load('db')->prepare_where($condition); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared, WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare $dataset = $wpdb->get_row($wpdb->prepare('SELECT * FROM `' . $this->get_table() . '`' . $where['sql'] . '', $where['filter']), ARRAY_A); if ($dataset) { $this->dataset = $dataset; $this->set('entry', $this->helper->load('convert')->unserialize($dataset['entry'])); return true; } return false; } public function set($key, $value) { $this->dataset[$key] = $value; return true; } public function get($key) { if (isset($this->dataset[$key])) { $value = $this->dataset[$key]; return $value; } else { switch ($key) { case 'entry': $value = array(); break; default: $value = ''; break; } return $value; } } public function save() { global $wpdb; $dataset = array( 'extension' => $this->get('extension'), 'item' => $this->get('item'), 'entry' => serialize($this->get('entry')), // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize ); if (!$this->get('ID')) { $dataset['created_at'] = current_time('mysql', 1); } $show_errors = false; if ($wpdb->show_errors) { $wpdb->show_errors(false); $show_errors = true; } if ($this->get('ID')) { $where = array( 'ID' => $this->get('ID'), ); $success = $wpdb->update($this->get_table(), $dataset, $where); if ($success === false) { $this->helper->load('db')->db_init($wpdb->prefix); $wpdb->update($this->get_table(), $dataset, $where); } } else { $success = $wpdb->insert($this->get_table(), $dataset); if ($success === false) { $this->helper->load('db')->db_init($wpdb->prefix); $wpdb->insert($this->get_table(), $dataset); } $this->set('ID', $wpdb->insert_id); } if ($show_errors) { $wpdb->show_errors(); } return $this->get('ID'); } }