table_name = $wpdb->prefix . 'sodino_rules'; } /** * Get all rules */ public function getAll() { global $wpdb; $results = $wpdb->get_results("SELECT * FROM {$this->table_name} ORDER BY priority DESC, id ASC", ARRAY_A); $rules = []; foreach ($results as $result) { $rules[] = new Rule($result); } return $rules; } /** * Get rule by ID */ public function getById($id) { global $wpdb; $result = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$this->table_name} WHERE id = %d", $id), ARRAY_A); return $result ? new Rule($result) : null; } /** * Get enabled rules */ public function getEnabled() { global $wpdb; $results = $wpdb->get_results("SELECT * FROM {$this->table_name} WHERE enabled = 1 ORDER BY priority DESC, id ASC", ARRAY_A); $rules = []; foreach ($results as $result) { $rules[] = new Rule($result); } return $rules; } /** * Save rule */ public function save(Rule $rule) { global $wpdb; $data = $rule->toArray(); unset($data['id'], $data['created_at'], $data['updated_at']); if ($rule->id) { $wpdb->update($this->table_name, $data, ['id' => $rule->id]); return $rule->id; } else { $wpdb->insert($this->table_name, $data); return $wpdb->insert_id; } } /** * Delete rule */ public function delete($id) { global $wpdb; return $wpdb->delete($this->table_name, ['id' => $id]); } }