public function associate_tags($tags) { $tags_to_associate = array(); for ($i = 0, $j = sizeof($tags); $i < $j; $i++) { if (trim($tags[$i]) == '') { continue; } $tag_id = Tag::get_tag_id($tags[$i]); $tags_to_associate[] = $tag_id; } $keep_tags = !empty($tags_to_associate) ? implode(', ', $tags_to_associate) : -1; $sql = sprintf("DELETE FROM legislation_tag WHERE legislation_id=%d AND tag_id NOT IN (%s)", $this->id(), $keep_tags); db()->query($sql); User::clear_alerts_except('legislation', $this->id(), $keep_tags); foreach ($tags_to_associate as $tag_id) { $sql = sprintf("SELECT legislation_tag_id FROM legislation_tag WHERE legislation_id=%d AND tag_id=%d", $this->id(), $tag_id); $id = db()->Get_Cell($sql); if (!$id) { $sql = sprintf("INSERT INTO legislation_tag (legislation_id, tag_id) VALUES (%d, %d)", $this->id(), $tag_id); db()->query($sql); } User::queue_alerts('legislation', $this->id(), $tag_id); } }