db = $wpdb; $this->table_name = tve_ult_table_name( $this->table_name ); $this->name = $name; $this->description = $description; $this->show_options = $show_options; $this->hide_options = $hide_options; } protected function _processPreSave( $jsonOptions ) { $options = @json_decode( stripcslashes( $jsonOptions ), true ); if ( empty( $options ) || empty( $options['tabs'] ) ) { return json_encode( array( 'identifier' => $jsonOptions['identifier'] ) ); } $clean_options = array(); foreach ( $options['tabs'] as $index => $tabOptions ) { $clean_options['tabs'][ $index ]['options'] = $tabOptions; } return json_encode( $clean_options ); } public function save() { $this->delete(); $this->db->suppress_errors(); $show_options = $this->_processPreSave( $this->show_options ); $hide_options = $this->_processPreSave( $this->hide_options ); return $this->db->insert( $this->table_name, array( 'name' => $this->name, 'description' => $this->description, 'show_options' => $show_options, 'hide_options' => $hide_options, ) ) !== false ? true : $this->db->last_error; } public function delete() { $this->db->delete( $this->table_name, array( 'name' => $this->name ) ); } /** * Read options from database * * @return $this */ public function initOptions( $byId = false, $from_data = null ) { if ( $from_data !== null ) { $row = $from_data; } else { $where = $byId === false ? "name = '{$this->name}'" : "id = {$byId}"; $sql = "SELECT * FROM {$this->table_name} WHERE {$where}"; $row = $this->db->get_row( $sql ); } if ( $row ) { $this->show_options = $row->show_options; $this->hide_options = $row->hide_options; } return $this; } /** * @return string */ public function getShowGroupOptions() { return $this->show_options; } /** * @return string */ public function getHideGroupOptions() { return $this->hide_options; } public function getAll() { $sql = "SELECT * FROM {$this->table_name} ORDER BY name"; $results = $this->db->get_results( $sql ); return $results; } }