Example #1
0
 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);
     }
 }