Users may rate links on the hot list (a scale of 0 to 10), and this rating may be used in display of the links.
general_links, with their properties (title, description, etc); the associations between items in the database are stored in a mapping table general_link_db_map; and the user's rating are keep in the table general_link_user_ratings.
As in the general-comments module,
references to items in the database via id on_what_id
in the table on_which_table.
create sequence general_link_id_sequence start with 1;
create table general_links (
link_id integer primary key,
url varchar(300) not null,
link_title varchar(100) not null,
link_description varchar(4000),
-- meta tags defined by HTML at the URL
meta_description varchar(4000),
meta_keywords varchar(4000),
-- when was this submitted?
creation_time date default sysdate not null,
creation_user not null references users(user_id),
creation_ip_address varchar(20) not null,
last_modified date,
last_modifiying_user references users(user_id),
-- last time this got checked
last_checked_date date,
last_live_date date,
last_approved date,
-- has the link been approved? ( note that this is different from
-- the approved_p in the table wite_wide_link_map )
approved_p char(1) default 't' check(approved_p in ('t','f'))
);
create sequence general_link_map_id start with 1;
-- This table associates urls with any item in the database
create table site_wide_link_map (
map_id integer primary key,
link_id not null references general_links,
-- the table is this url associated with
on_which_table varchar(30) not null,
-- the row in *on_which_table* the url is associated with
on_what_id integer not null,
-- a description of what the url is associated with
one_line_item_desc varchar(200) not null,
-- who made the association
creation_time date default sysdate not null,
creation_user not null references users(user_id),
creation_ip_address varchar(20) not null,
last_modified date,
last_modifiying_user references users(user_id),
-- has the link association been approved ?
approved_p char(1) check(approved_p in ('t','f')) not null
);
-- We want users to be able to rate links
-- These ratings could be used in the display of the links
-- eg, ordering within category by rating, or displaying
-- fav. links for people in a given group..
create table general_link_user_ratings (
user_id not null references users,
link_id not null references general_links,
-- a user may give a url a rating between 0 and 10
rating integer not null check(rating between 0 and 10 ),
-- require that the user/url rating is unique
primary key(link_id, user_id)
);
The module contains one core procedure, ad_general_links_list (based on ad_general_comments_list), that
will show links associated with an item in the database and make appropriate
links to files in /general-links and
for recording and editing links.
The arguments to ad_general_links_list are:
Default approval policy is toggled by the DefaultLinkApprovalPolicy parameter.
If AllowGeneralLinksSuggestionsP is set to 1, then a user will be able to suggest links from /general-links/ index page.
In addition, by toggling GeneralLinksClickthroughP, one can toggle on/off the ability to keep track of link clickthroughs. These statistics are stored in a table defined in community-core.sql:
The links are marked by setting local_url to ad_link_linkid.create table clickthrough_log ( local_url varchar(400) not null, foreign_url varchar(300) not null, -- full URL on the foreign server entry_date date, -- we count referrals per day click_count integer default 0, primary key (local_url, foreign_url, entry_date) );
As with site-wide search and the user profiling system, this helper table enables us to make a single query and yet connect links over to the appropriate admin or user pages. Another part of this system is the one-line item description column in thecreate table table_acs_properties ( table_name varchar(30) primary key, section_name varchar(100) not null, user_url_stub varchar(200) not null, admin_url_stub varchar(200) not null );
general_links
table.
For the purpose of the "hot list" page, links are put in different categories (one link could be placed in more than one category) by means of the tables categories and category_heirarchy found discussed in the /doc/user-profiling.