categories, site_wide_category_map, and
users_intereststables. This package was original aimed at identifying content that includes naughty words.
If BowdlerizeP is set to 1 in the ad.ini file, we store a bowdlerized
version of the content in a separate column, typically with the same
name as the original column plus a suffix of
For example, in the Chat system, we keep
_bowdlerized column will
be NULL unless there was actually some naughtiness in the original.
Each naughty word will have been replaced with the character string in
BowdlerizeReplacementPattern ("***" by default). So applications can
query with something like
select nvl(msg_bowdlerized, msg) as filtered_msg from chat
Each user in the community has a mask associated with his account,
stored in the
content_mask column of the
users_preferences table. This is an integer, whose maximum
length is the same as that of the content tags.
When a user tries to look at a piece of content, his mask is bit-ANDed
with the content's tag, and if the result is non-zero, further
investigation is required before the user can see the content; in
is invoked to decide what to do.
Note that an X-rated word would carry a bit vector of "111" since it raises a problem in all three categories.
Bit Pos Interpretation 0 PG-rated 1 R-rated 2 X-rated
; for the Naughty Package ; (PG|R|X)LogP=1 logs the potentially offensive material ; (PG|R|X)BounceP=1 prevents the offensive material from being posted at all ; Note that in generally, you can't bounce only PG and X, but not R, ; the scripts find the lowest allowed naughtiness to bounce or log. [ns/server/yourservername/acs/content-tagging] ; person to notify if something needs attention Administratorfirstname.lastname@example.org ; level to which to bowdlerize, P, PG, R, X BowdlerizationLevel=G ; log into naughty_events table PGLogP=0 RLogP=1 XLogP=1 ; prevent this level of stuff from being posted at all PGBounceP=0 RBounceP=0 XBounceP=1 ; send email to Administrator PGNotifyP=0 RNotifyP=0 XNotifyP=1 CacheTimeout=120
-- if upgrading from an older version of the ACS alter table users_preferences add content_mask integer; create table content_tags ( word varchar(100) primary key, tag integer not null, creation_user integer not null references users, creation_date date ); -- for cases when users are posting naughty stuff create table naughty_events ( table_name varchar(30), the_key varchar(700), offensive_text clob, creation_user integer not null references users, creation_date date, reviewed_p char(1) default 'f' check (reviewed_p in ('t','f')) ); create table naughty_table_to_url_map ( table_name varchar(30) primary key, url_stub varchar(200) not null );