-
Notifications
You must be signed in to change notification settings - Fork 9
Database Schema
This page documents all database tables used by the Proclaim (CWM Proclaim) component. All table names use the Joomla prefix #__bsms_ (replacing #__ with your site's configured table prefix). The engine is InnoDB with utf8mb4_unicode_ci collation throughout.
+-------------------+
| #__bsms_books |
+-------------------+
|
| booknumber (logical)
v
+------------------+ +-------------------+ +-------------------+
| #__bsms_teachers |---->| #__bsms_studies |<----| #__bsms_series |
+------------------+ ^ +-------------------+ ^ +-------------------+
teacher_id ----| | | | |---- series_id
| | |
location_id -----+ | +------- messagetype (logical)
| |
+-------------------+ | +----------------------+
| #__bsms_locations | | | #__bsms_message_type |
+-------------------+ | +----------------------+
|
+--------------------+--------------------+
| |
v v
+---------------------+ +------------------------+
| #__bsms_studytopics | | #__bsms_mediafiles |
+---------------------+ +------------------------+
| | | |
v v v v
+-----------+ +----------+ +--------------+ +-------------+
| study_id | | topic_id | | server_id | | podcast_id |
| (studies) | | (topics) | | (servers) | | (podcast) |
+-----------+ +----------+ +--------------+ +-------------+
|
+-------------------+
| #__bsms_topics |
+-------------------+
+-------------------+ +---------------------+
| #__bsms_comments |--------->| study_id -> studies |
+-------------------+ +---------------------+
+-------------------+ +-------------------+ +-------------------+
| #__bsms_templates | | #__bsms_template- | | #__bsms_admin |
+-------------------+ | code | +-------------------+
+-------------------+
+-------------------+
+-------------------+ | #__bsms_update |
| #__bsms_timeset | +-------------------+
+-------------------+
| Parent Table | Child Table | Relationship Column | Type |
|---|---|---|---|
#__bsms_studies |
#__bsms_mediafiles |
mediafiles.study_id |
Many media files per message |
#__bsms_studies |
#__bsms_studytopics |
studytopics.study_id |
Many-to-many join table |
#__bsms_studies |
#__bsms_comments |
comments.study_id |
Many comments per message |
#__bsms_teachers |
#__bsms_studies |
studies.teacher_id |
One teacher per message |
#__bsms_teachers |
#__bsms_series |
series.teacher |
Optional default teacher for series |
#__bsms_series |
#__bsms_studies |
studies.series_id |
One series per message |
#__bsms_locations |
#__bsms_studies |
studies.location_id |
One location per message |
#__bsms_books |
#__bsms_studies |
studies.booknumber |
Book reference (by booknumber) |
#__bsms_message_type |
#__bsms_studies |
studies.messagetype |
Message type classification |
#__bsms_topics |
#__bsms_studytopics |
studytopics.topic_id |
Many-to-many join table |
#__bsms_servers |
#__bsms_mediafiles |
mediafiles.server_id |
One server per media file |
#__bsms_podcast |
#__bsms_mediafiles |
mediafiles.podcast_id |
CSV list of podcast IDs |
#__bsms_templates |
#__bsms_podcast |
podcast.detailstemplateid |
Template for podcast detail pages |
#__assets (Joomla) |
All content tables | *.asset_id |
Joomla ACL permissions |
Note: Joomla does not use foreign key constraints at the database level. All relationships are enforced logically in application code.
The central content table. Each row represents a single message (sermon/study). Mapped to CwmmessageTable.
Validation: studytitle is required.
| Column | Type | Default | Description |
|---|---|---|---|
id |
INT(10) UNSIGNED | AUTO_INCREMENT | Primary key |
studytitle |
TEXT | NULL | Message title (required) |
alias |
VARCHAR(255) | '' |
URL-safe alias (utf8_bin collation) |
studydate |
DATETIME | NULL | Date the message was delivered |
teacher_id |
INT(11) | 1 |
FK to #__bsms_teachers.id
|
series_id |
INT(3) | 0 |
FK to #__bsms_series.id
|
location_id |
INT(3) | NULL | FK to #__bsms_locations.id
|
messagetype |
VARCHAR(100) | '1' |
FK to #__bsms_message_type.id (stored as string) |
booknumber |
INT(3) | 101 |
FK to #__bsms_books.booknumber
|
chapter_begin |
INT(3) | 1 |
Starting chapter of scripture reference |
verse_begin |
INT(3) | 1 |
Starting verse |
chapter_end |
INT(3) | 1 |
Ending chapter |
verse_end |
INT(3) | 1 |
Ending verse |
booknumber2 |
VARCHAR(4) | NULL | Secondary scripture book number |
chapter_begin2 |
VARCHAR(4) | NULL | Secondary scripture starting chapter |
verse_begin2 |
VARCHAR(4) | NULL | Secondary scripture starting verse |
chapter_end2 |
VARCHAR(4) | NULL | Secondary scripture ending chapter |
verse_end2 |
VARCHAR(4) | NULL | Secondary scripture ending verse |
secondary_reference |
TEXT | NULL | Free-text secondary scripture reference |
studynumber |
VARCHAR(100) | '' |
User-defined study/sermon number |
studyintro |
TEXT | NULL | Brief introduction text |
studytext |
TEXT | NULL | Full message body text |
studytext2 |
TEXT | NULL | Additional text content |
thumbnailm |
TEXT | NULL | Thumbnail image path |
thumbhm |
INT(11) | NULL | Thumbnail height |
thumbwm |
INT(11) | NULL | Thumbnail width |
comments |
TINYINT(1) | 1 |
Whether comments are enabled (1=yes) |
hits |
INT(10) | 0 |
View count |
download_id |
INT(10) | 0 |
Default media file ID for downloads |
show_level |
VARCHAR(100) | '0' |
Display access level |
user_id |
INT(10) | NULL | Submitting user ID |
user_name |
VARCHAR(50) | NULL | Submitting user name |
prod_dvd |
VARCHAR(100) | NULL | DVD product info (legacy) |
prod_cd |
VARCHAR(100) | NULL | CD product info (legacy) |
server_cd |
VARCHAR(10) | NULL | CD server reference (legacy) |
server_dvd |
VARCHAR(10) | NULL | DVD server reference (legacy) |
image_cd |
VARCHAR(10) | NULL | CD image reference (legacy) |
image_dvd |
VARCHAR(10) | '0' |
DVD image reference (legacy) |
params |
TEXT | NULL | JSON configuration parameters |
published |
TINYINT(3) | 0 |
Publish state (0=unpublished, 1=published, 2=archived, -2=trashed) |
publish_up |
DATETIME | 0000-00-00 |
Publish start date |
publish_down |
DATETIME | 0000-00-00 |
Publish end date |
checked_out |
INT(11) UNSIGNED | 0 |
User ID who has checked out the record |
checked_out_time |
DATETIME | 0000-00-00 |
Checkout timestamp |
created |
DATETIME | 0000-00-00 |
Record creation date |
created_by |
INT(10) UNSIGNED | 0 |
Creating user ID |
created_by_alias |
VARCHAR(255) | '' |
Creator display name alias |
modified |
DATETIME | 0000-00-00 |
Last modification date |
modified_by |
INT(10) UNSIGNED | 0 |
Modifying user ID |
asset_id |
INT(10) UNSIGNED | 0 |
FK to #__assets for ACL |
access |
INT(10) UNSIGNED | 1 |
Joomla view access level |
ordering |
INT(11) | 0 |
Sort order |
language |
CHAR(7) | NOT NULL | Language code (e.g., *, en-GB) |
Indexes:
| Index Name | Columns | Purpose |
|---|---|---|
PRIMARY |
id |
Primary key |
idx_state |
published |
Filter by publish state |
idx_access |
access |
Filter by access level |
idx_seriesid |
series_id |
Filter by series |
idx_user |
user_id |
Filter by submitting user |
idx_createdby |
created_by |
Filter by creator |
idx_checkout |
checked_out |
Find checked-out records |
idx_published_access_series |
published, access, series_id, studydate |
Composite for series listing |
idx_teacher_published |
teacher_id, published, studydate |
Composite for teacher listing |
idx_location_published |
location_id, published |
Composite for location filter |
idx_published_dates |
published, publish_up, publish_down |
Scheduled publishing |
idx_messagetype_published |
messagetype, published |
Filter by message type |
idx_booknumber_published |
booknumber, published |
Filter by Bible book |
idx_language_published |
language, published |
Multilingual filter |
Teacher/speaker profiles. Mapped to CwmteacherTable.
Validation: teachername is required.
| Column | Type | Default | Description |
|---|---|---|---|
id |
INT(10) UNSIGNED | AUTO_INCREMENT | Primary key |
teachername |
VARCHAR(250) | '' |
Full name (required) |
alias |
VARCHAR(255) | '' |
URL-safe alias (utf8_bin collation) |
title |
VARCHAR(250) | NULL | Honorific/title (e.g., "Pastor") |
teacher_image |
TEXT | NULL | Full-size image path |
teacher_thumbnail |
TEXT | NULL | Thumbnail image path |
image |
TEXT | NULL | Additional image path |
imageh |
TEXT | NULL | Image height |
imagew |
TEXT | NULL | Image width |
thumb |
TEXT | NULL | Secondary thumbnail path |
thumbw |
TEXT | NULL | Secondary thumbnail width |
thumbh |
TEXT | NULL | Secondary thumbnail height |
short |
TEXT | NULL | Short biography text |
information |
TEXT | NULL | Full biography/information |
phone |
VARCHAR(50) | NULL | Phone number |
email |
VARCHAR(100) | NULL | Email address |
website |
TEXT | NULL | Personal website URL |
facebooklink |
VARCHAR(150) | NULL | Facebook profile URL |
twitterlink |
VARCHAR(150) | NULL | Twitter profile URL |
bloglink |
VARCHAR(150) | NULL | Blog URL |
link1 |
VARCHAR(150) | NULL | Custom link 1 URL |
linklabel1 |
VARCHAR(150) | NULL | Custom link 1 label |
link2 |
VARCHAR(150) | NULL | Custom link 2 URL |
linklabel2 |
VARCHAR(150) | NULL | Custom link 2 label |
link3 |
VARCHAR(150) | NULL | Custom link 3 URL |
linklabel3 |
VARCHAR(150) | NULL | Custom link 3 label |
contact |
INT(11) | NULL | FK to Joomla com_contact
|
address |
MEDIUMTEXT | NULL | Mailing address |
address1 |
MEDIUMTEXT | NULL | Additional address |
catid |
INT(3) | 1 |
Category ID |
list_show |
TINYINT(1) | 1 |
Show in teacher lists |
landing_show |
INT(3) | NULL | Show on landing page |
ordering |
INT(11) | 0 |
Sort order |
published |
TINYINT(3) | 1 |
Publish state |
asset_id |
INT(10) UNSIGNED | 0 |
FK to #__assets
|
access |
INT(10) UNSIGNED | 1 |
View access level |
language |
CHAR(7) | NOT NULL | Language code |
created |
DATETIME | 0000-00-00 |
Creation date |
created_by |
INT(10) UNSIGNED | 0 |
Creating user |
created_by_alias |
VARCHAR(255) | '' |
Creator alias |
modified |
DATETIME | 0000-00-00 |
Modification date |
modified_by |
INT(10) UNSIGNED | 0 |
Modifying user |
Indexes: PRIMARY(id), idx_state(published), idx_access(access), idx_createdby(created_by), idx_published_access(published, access)
Sermon series groupings. Mapped to CwmserieTable.
Validation: series_text is required.
| Column | Type | Default | Description |
|---|---|---|---|
id |
INT(10) UNSIGNED | AUTO_INCREMENT | Primary key |
series_text |
TEXT | NULL | Series title (required) |
alias |
VARCHAR(255) | '' |
URL-safe alias (utf8_bin collation) |
teacher |
INT(3) | NULL | Default teacher FK to #__bsms_teachers.id
|
description |
TEXT | NULL | Series description |
series_thumbnail |
VARCHAR(255) | NULL | Thumbnail image path |
landing_show |
INT(3) | NULL | Show on landing page |
pc_show |
INT(3) | 1 |
Show on podcast subscription page |
ordering |
INT(11) | 0 |
Sort order |
published |
TINYINT(3) | 1 |
Publish state |
asset_id |
INT(10) UNSIGNED | 0 |
FK to #__assets
|
access |
INT(10) UNSIGNED | 1 |
View access level |
language |
CHAR(7) | NOT NULL | Language code |
created |
DATETIME | 0000-00-00 |
Creation date |
created_by |
INT(10) UNSIGNED | 0 |
Creating user |
created_by_alias |
VARCHAR(255) | '' |
Creator alias |
modified |
DATETIME | 0000-00-00 |
Modification date |
modified_by |
INT(10) UNSIGNED | 0 |
Modifying user |
Indexes: PRIMARY(id), idx_state(published), idx_access(access), idx_createdby(created_by), idx_published_access(published, access), idx_teacher_published(teacher, published)
Topic/subject tags for messages. Mapped to CwmtopicTable.
Validation: topic_text is required.
| Column | Type | Default | Description |
|---|---|---|---|
id |
INT(10) UNSIGNED | AUTO_INCREMENT | Primary key |
topic_text |
TEXT | NULL | Topic name (language key, e.g., JBS_TOP_PRAYER) (required) |
params |
VARCHAR(511) | NULL | JSON parameters (language translations) |
published |
TINYINT(3) | 1 |
Publish state |
asset_id |
INT(10) UNSIGNED | 0 |
FK to #__assets
|
access |
INT(10) UNSIGNED | 1 |
View access level |
language |
CHAR(7) | '*' |
Language code |
created |
DATETIME | 0000-00-00 |
Creation date |
created_by |
INT(10) UNSIGNED | 0 |
Creating user |
created_by_alias |
VARCHAR(255) | '' |
Creator alias |
modified |
DATETIME | 0000-00-00 |
Modification date |
modified_by |
INT(10) UNSIGNED | 0 |
Modifying user |
Indexes: PRIMARY(id), idx_state(published), idx_access(access), idx_published_access(published, access)
Many-to-many relationship between messages and topics. Mapped to CwmstudytopicsTable.
| Column | Type | Default | Description |
|---|---|---|---|
id |
INT(10) UNSIGNED | AUTO_INCREMENT | Primary key |
study_id |
INT(3) | 0 |
FK to #__bsms_studies.id
|
topic_id |
INT(3) | 0 |
FK to #__bsms_topics.id
|
asset_id |
INT(10) UNSIGNED | 0 |
FK to #__assets
|
access |
INT(10) UNSIGNED | 1 |
View access level |
Indexes: PRIMARY(id), idx_access(access), idx_study(study_id), idx_topic(topic_id), idx_study_topic(study_id, topic_id)
Physical locations where messages are delivered. Mapped to CwmlocationTable.
Validation: location_text is required.
| Column | Type | Default | Description |
|---|---|---|---|
id |
INT(10) UNSIGNED | AUTO_INCREMENT | Primary key |
location_text |
VARCHAR(250) | NULL | Location name (required) |
contact_id |
INT(10) UNSIGNED | 0 |
FK to Joomla com_contact
|
address |
TEXT | NULL | Street address |
suburb |
VARCHAR(100) | NULL | Suburb/city |
state |
VARCHAR(100) | NULL | State/province |
country |
VARCHAR(100) | NULL | Country |
postcode |
VARCHAR(100) | NULL | Postal/ZIP code |
telephone |
VARCHAR(255) | NULL | Phone number |
fax |
VARCHAR(255) | NULL | Fax number |
mobile |
VARCHAR(255) | '' |
Mobile phone |
email_to |
VARCHAR(255) | NULL | Contact email |
webpage |
VARCHAR(255) | '' |
Website URL |
image |
VARCHAR(255) | NULL | Location image |
misc |
MEDIUMTEXT | NULL | Miscellaneous notes |
default_con |
TINYINT(1) UNSIGNED | 0 |
Is default location |
sortname1 |
VARCHAR(255) | NOT NULL | Sort field 1 |
sortname2 |
VARCHAR(255) | NOT NULL | Sort field 2 |
sortname3 |
VARCHAR(255) | NOT NULL | Sort field 3 |
landing_show |
INT(3) | NULL | Show on landing page |
featured |
TINYINT(3) UNSIGNED | 0 |
Featured flag |
xreference |
VARCHAR(50) | NOT NULL | External reference linkage |
version |
INT(10) UNSIGNED | 1 |
Record version counter |
hits |
INT(10) UNSIGNED | 0 |
View count |
params |
TEXT | NOT NULL | JSON parameters |
user_id |
INT(11) | 0 |
Owner user ID |
metakey |
TEXT | NOT NULL | Meta keywords |
metadesc |
TEXT | NOT NULL | Meta description |
metadata |
TEXT | NOT NULL | Additional metadata (JSON) |
publish_up |
DATETIME | 0000-00-00 |
Publish start date |
publish_down |
DATETIME | 0000-00-00 |
Publish end date |
checked_out |
INT(10) UNSIGNED | 0 |
Checked-out user ID |
checked_out_time |
DATETIME | 0000-00-00 |
Checkout timestamp |
ordering |
INT(11) | 0 |
Sort order |
published |
TINYINT(3) | 1 |
Publish state |
asset_id |
INT(10) UNSIGNED | 0 |
FK to #__assets
|
access |
INT(10) UNSIGNED | 1 |
View access level |
language |
CHAR(7) | NOT NULL | Language code |
created |
DATETIME | 0000-00-00 |
Creation date |
created_by |
INT(10) UNSIGNED | 0 |
Creating user |
created_by_alias |
VARCHAR(255) | '' |
Creator alias |
modified |
DATETIME | 0000-00-00 |
Modification date |
modified_by |
INT(10) UNSIGNED | 0 |
Modifying user |
Indexes: PRIMARY(id), idx_state(published), idx_access(access), idx_published_access(published, access)
Classification types for messages (e.g., "Sunday", "Wednesday", "Special"). Mapped to CwmmessagetypeTable.
Validation: message_type is required.
| Column | Type | Default | Description |
|---|---|---|---|
id |
INT(10) UNSIGNED | AUTO_INCREMENT | Primary key |
message_type |
TEXT | NOT NULL | Type name (required) |
alias |
VARCHAR(255) | '' |
URL-safe alias (utf8_bin collation) |
landing_show |
INT(3) | NULL | Show on landing page |
ordering |
INT(11) | 0 |
Sort order |
published |
TINYINT(3) | 1 |
Publish state |
asset_id |
INT(10) UNSIGNED | 0 |
FK to #__assets
|
access |
INT(10) UNSIGNED | 1 |
View access level |
created |
DATETIME | 0000-00-00 |
Creation date |
created_by |
INT(10) UNSIGNED | 0 |
Creating user |
created_by_alias |
VARCHAR(255) | '' |
Creator alias |
modified |
DATETIME | 0000-00-00 |
Modification date |
modified_by |
INT(10) UNSIGNED | 0 |
Modifying user |
Indexes: PRIMARY(id), idx_state(published), idx_access(access)
User comments on messages. Mapped to CwmcommentTable.
Validation: user_id defaults to the current logged-in user if not provided.
| Column | Type | Default | Description |
|---|---|---|---|
id |
INT(10) UNSIGNED | AUTO_INCREMENT | Primary key |
study_id |
INT(11) | 0 |
FK to #__bsms_studies.id
|
user_id |
INT(11) | 0 |
FK to Joomla #__users.id
|
full_name |
VARCHAR(50) | '' |
Commenter display name |
user_email |
VARCHAR(100) | '' |
Commenter email |
comment_date |
DATETIME | 0000-00-00 |
Date of comment |
comment_text |
TEXT | NOT NULL | Comment body |
published |
TINYINT(3) | 0 |
Publish state (default unpublished for moderation) |
asset_id |
INT(10) UNSIGNED | 0 |
FK to #__assets
|
access |
INT(10) UNSIGNED | 0 |
View access level |
language |
CHAR(7) | NOT NULL | Language code |
Indexes: PRIMARY(id), idx_state(published), idx_access(access), idx_study_published(study_id, published, comment_date)
Lookup table of Bible books. Pre-populated with 73 books (66 Protestant canon + 7 Deuterocanonical). No Table class -- read-only reference data.
| Column | Type | Default | Description |
|---|---|---|---|
id |
INT(10) UNSIGNED | AUTO_INCREMENT | Primary key |
bookname |
VARCHAR(250) | NULL | Language key for book name (e.g., JBS_BBK_GENESIS) |
booknumber |
INT(5) | NULL | Numeric book ID (101=Genesis through 173=Baruch) |
published |
TINYINT(3) | 1 |
Publish state |
Indexes: PRIMARY(id), idx_state(published)
Individual media files attached to messages (audio, video, PDF, etc.). Mapped to CwmmediafileTable.
| Column | Type | Default | Description |
|---|---|---|---|
id |
INT(10) UNSIGNED | AUTO_INCREMENT | Primary key |
study_id |
INT(5) | NULL | FK to #__bsms_studies.id
|
server_id |
INT(5) | NULL | FK to #__bsms_servers.id
|
podcast_id |
VARCHAR(50) | NULL | Comma-separated podcast IDs (FK to #__bsms_podcast.id) |
createdate |
DATETIME | NULL | Media file creation date |
comment |
TEXT | NULL | Description/notes about the media file |
hits |
INT(10) | 0 |
View count |
downloads |
INT(10) | 0 |
Download count |
plays |
INT(10) | 0 |
Play count |
params |
TEXT | NULL | JSON config: filename, mime_type, player, popup, media_image, size, link_type, etc. |
metadata |
TEXT | NOT NULL | JSON statistics and transitive data |
ordering |
INT(11) | 0 |
Sort order |
published |
TINYINT(3) | 1 |
Publish state |
asset_id |
INT(10) UNSIGNED | 0 |
FK to #__assets
|
access |
INT(10) UNSIGNED | 1 |
View access level |
language |
CHAR(7) | NOT NULL | Language code |
created_by |
INT(10) UNSIGNED | 0 |
Creating user |
created_by_alias |
VARCHAR(255) | '' |
Creator alias |
modified |
DATETIME | 0000-00-00 |
Modification date |
modified_by |
INT(10) UNSIGNED | 0 |
Modifying user |
checked_out |
INT(11) UNSIGNED | 0 |
Checked-out user ID |
checked_out_time |
DATETIME | 0000-00-00 |
Checkout timestamp |
Indexes:
| Index Name | Columns | Purpose |
|---|---|---|
PRIMARY |
id |
Primary key |
idx_state |
published |
Filter by state |
idx_study_id |
study_id |
Find media for a message |
idx_access |
access |
Filter by access |
idx_checkout |
checked_out |
Find checked-out records |
idx_createdby |
created_by |
Filter by creator |
idx_study_published |
study_id, published, createdate |
Composite for listing |
idx_podcast_published |
podcast_id, published |
Podcast feed queries |
Media server configurations (defines how media files are accessed). Mapped to CwmserverTable.
Validation: server_name is required.
| Column | Type | Default | Description |
|---|---|---|---|
id |
INT(10) UNSIGNED | AUTO_INCREMENT | Primary key |
server_name |
VARCHAR(250) | '' |
Server display name (required) |
type |
CHAR(255) | NOT NULL | Server type (e.g., legacy, s3, local) |
params |
TEXT | NOT NULL | JSON server config: path, protocol, credentials |
media |
TEXT | NOT NULL | JSON media defaults: link_type, player, popup, media_image, mime_type, autostart |
published |
TINYINT(3) | 1 |
Publish state |
asset_id |
INT(10) UNSIGNED | 0 |
FK to #__assets
|
access |
INT(10) UNSIGNED | 1 |
View access level |
created |
DATETIME | 0000-00-00 |
Creation date |
created_by |
INT(10) UNSIGNED | 0 |
Creating user |
created_by_alias |
VARCHAR(255) | '' |
Creator alias |
modified |
DATETIME | 0000-00-00 |
Modification date |
modified_by |
INT(10) UNSIGNED | 0 |
Modifying user |
Indexes: PRIMARY(id), idx_state(published), idx_access(access)
Podcast feed configurations. Each row generates a separate RSS/XML podcast feed. Mapped to CwmpodcastTable.
Validation: title is required.
| Column | Type | Default | Description |
|---|---|---|---|
id |
INT(10) UNSIGNED | AUTO_INCREMENT | Primary key |
title |
VARCHAR(100) | NULL | Podcast title (required) |
website |
VARCHAR(100) | NULL | Podcast website URL |
podcastlink |
VARCHAR(100) | NULL | Podcast feed controller URL |
description |
TEXT | NULL | Podcast description |
subtitle |
TEXT | NULL | Short subtitle |
image |
VARCHAR(255) | NULL | Podcast cover image |
imageh |
INT(3) | NULL | Image height |
imagew |
INT(3) | NULL | Image width |
author |
VARCHAR(100) | NULL | Podcast author name |
podcastimage |
VARCHAR(255) | NULL | iTunes podcast artwork |
podcastsearch |
VARCHAR(255) | NULL | iTunes search keywords |
filename |
VARCHAR(150) | NULL | Output XML filename |
language |
VARCHAR(10) | 'en-us' |
Podcast language |
editor_name |
VARCHAR(150) | NULL | Managing editor name |
editor_email |
VARCHAR(150) | NULL | Managing editor email |
podcastlimit |
INT(5) | NULL | Maximum episodes in feed |
episodetitle |
INT(11) | NULL | Episode title field selector |
custom |
VARCHAR(200) | NULL | Custom episode title text |
episodesubtitle |
INT(11) | NULL | Episode subtitle field selector |
customsubtitle |
VARCHAR(200) | NULL | Custom episode subtitle text |
detailstemplateid |
INT(11) | NULL | FK to #__bsms_templates.id for episode detail page |
linktype |
INT(10) | 0 |
Link type: 0=episode page, 1=direct file, 2=popup player |
alternatelink |
VARCHAR(300) | NULL | Override podcast feed URL |
alternateimage |
VARCHAR(150) | NULL | Alternate image path |
podcast_subscribe_show |
INT(3) | NULL | Show subscribe widget |
podcast_image_subscribe |
VARCHAR(255) | NULL | Subscribe button image |
podcast_subscribe_desc |
VARCHAR(150) | NULL | Subscribe widget description |
alternatewords |
VARCHAR(20) | NULL | Alternate text label |
published |
TINYINT(3) | 1 |
Publish state |
asset_id |
INT(10) UNSIGNED | 0 |
FK to #__assets
|
access |
INT(10) UNSIGNED | 1 |
View access level |
created |
DATETIME | 0000-00-00 |
Creation date |
created_by |
INT(10) UNSIGNED | 0 |
Creating user |
created_by_alias |
VARCHAR(255) | '' |
Creator alias |
modified |
DATETIME | 0000-00-00 |
Modification date |
modified_by |
INT(10) UNSIGNED | 0 |
Modifying user |
Indexes: PRIMARY(id), idx_state(published), idx_access(access)
Display template configurations. Controls how messages, teachers, and series are rendered. Mapped to CwmtemplateTable. Template ID 1 is the default and cannot be deleted.
| Column | Type | Default | Description |
|---|---|---|---|
id |
INT(10) UNSIGNED | AUTO_INCREMENT | Primary key |
title |
TEXT | NULL | Template display name |
type |
VARCHAR(255) | NOT NULL | Template type identifier (e.g., tmplList) |
tmpl |
LONGTEXT | NOT NULL | Template content/code |
text |
TEXT | NULL | Text file icon image path |
pdf |
TEXT | NULL | PDF file icon image path |
params |
LONGTEXT | NULL | JSON: comprehensive display settings for all views (list, detail, teachers, series, landing page, player, social sharing, comments, etc.) |
published |
TINYINT(3) | 1 |
Publish state |
asset_id |
INT(10) UNSIGNED | 0 |
FK to #__assets
|
access |
INT(10) UNSIGNED | 0 |
View access level |
created |
DATETIME | 0000-00-00 |
Creation date |
created_by |
INT(10) UNSIGNED | 0 |
Creating user |
created_by_alias |
VARCHAR(255) | '' |
Creator alias |
modified |
DATETIME | 0000-00-00 |
Modification date |
modified_by |
INT(10) UNSIGNED | 0 |
Modifying user |
Indexes: PRIMARY(id), idx_state(published), idx_access(access)
Custom PHP template code files for different view types. Mapped to CwmtemplatecodeTable. On save, the code is written to a physical PHP file in the appropriate view folder.
Validation: filename is required and must not be a reserved name (main, simple, custom, formheader, formfooter). Type must be between 1 and 7.
| Column | Type | Default | Description |
|---|---|---|---|
id |
INT(10) UNSIGNED | AUTO_INCREMENT | Primary key |
filename |
TEXT | NOT NULL | Template file name (without default_ prefix and .php extension) |
type |
TINYINT(3) | NOT NULL | View type: 1=Sermons list, 2=Sermon detail, 3=Teachers list, 4=Teacher detail, 5=Series list, 6=Series detail, 7=Module |
templatecode |
MEDIUMTEXT | NOT NULL | PHP template code content |
published |
TINYINT(3) | 1 |
Publish state |
asset_id |
INT(10) UNSIGNED | 0 |
FK to #__assets
|
created |
DATETIME | 0000-00-00 |
Creation date |
created_by |
INT(10) UNSIGNED | 0 |
Creating user |
created_by_alias |
VARCHAR(255) | '' |
Creator alias |
modified |
DATETIME | 0000-00-00 |
Modification date |
modified_by |
INT(10) UNSIGNED | 0 |
Modifying user |
Indexes: PRIMARY(id)
Global component configuration. Single-row table (ID=1). Mapped to CwmadminTable.
| Column | Type | Default | Description |
|---|---|---|---|
id |
INT(10) UNSIGNED | AUTO_INCREMENT | Primary key (always 1) |
drop_tables |
INT(3) | 0 |
Whether to drop tables on uninstall |
params |
TEXT | NULL | JSON: global component settings (simple_mode, player config, default images, thumbnail sizes, JW Player settings, etc.) |
installstate |
TEXT | NULL | JSON: tracks installation/migration state |
debug |
TINYINT(3) | 0 |
Debug mode flag |
asset_id |
INT(10) UNSIGNED | 0 |
FK to #__assets
|
access |
INT(10) UNSIGNED | 0 |
View access level |
Indexes: PRIMARY(id), idx_access(access)
Version tracking for database migrations. Records which migration scripts have been applied.
| Column | Type | Default | Description |
|---|---|---|---|
id |
INT UNSIGNED | AUTO_INCREMENT | Primary key |
version |
VARCHAR(255) | NULL | Version string (e.g., 10.1.0-20251225) |
Indexes: PRIMARY(id)
Note: This table is dropped and recreated on each install to ensure a clean state.
Tracks backup schedule timestamps. Single-row table.
| Column | Type | Default | Description |
|---|---|---|---|
timeset |
VARCHAR(14) | '' |
Last backup timestamp (primary key) |
backup |
VARCHAR(14) | NULL | Backup reference timestamp |
Indexes: PRIMARY(timeset)
Every database table that supports CRUD operations has a corresponding PHP Table class in admin/src/Table/.
| Database Table | Table Class | Asset Name Pattern | Notes |
|---|---|---|---|
#__bsms_admin |
CwmadminTable |
com_proclaim.cwmadmin.{id} |
Single-row global config |
#__bsms_comments |
CwmcommentTable |
com_proclaim.comment.{id} |
Auto-assigns user_id |
#__bsms_locations |
CwmlocationTable |
com_proclaim.location.{id} |
Validates location_text |
#__bsms_mediafiles |
CwmmediafileTable |
com_proclaim.mediafile.{id} |
Custom checkIn(), binds podcast_id array to CSV |
#__bsms_message_type |
CwmmessagetypeTable |
com_proclaim.message_type.{id} |
Validates message_type |
#__bsms_podcast |
CwmpodcastTable |
com_proclaim.podcast.{id} |
Validates title |
#__bsms_series |
CwmserieTable |
com_proclaim.serie.{id} |
Validates series_text, cleans up images on delete |
#__bsms_servers |
CwmserverTable |
com_proclaim.server.{id} |
Validates server_name, binds params and media JSON |
#__bsms_studies |
CwmmessageTable |
com_proclaim.message.{id} |
Validates studytitle, cleans up images on delete |
#__bsms_studytopics |
CwmstudytopicsTable |
com_proclaim.studytopics.{id} |
Join table, no validation |
#__bsms_teachers |
CwmteacherTable |
com_proclaim.teacher.{id} |
Validates teachername, cleans up images on delete |
#__bsms_templatecode |
CwmtemplatecodeTable |
com_proclaim.templatecode.{id} |
Writes PHP file on store, deletes file on delete |
#__bsms_templates |
CwmtemplateTable |
com_proclaim.template.{id} |
Prevents deletion of ID 1 (default template) |
#__bsms_topics |
CwmtopicTable |
com_proclaim.topic.{id} |
Validates topic_text |
Tables without a Table class (read-only or managed by migrations):
-
#__bsms_books-- Reference data, pre-populated -
#__bsms_update-- Managed by installation scripts -
#__bsms_timeset-- Managed by backup utilities
Most content tables share these Joomla-standard columns:
| Column | Purpose |
|---|---|
id |
Auto-increment primary key |
published |
Publish state: 1=published, 0=unpublished, 2=archived, -2=trashed |
asset_id |
FK to #__assets for Joomla ACL permission management |
access |
Joomla view access level (1=Public, 2=Registered, etc.) |
language |
Joomla language tag (* for all, en-GB, etc.) |
ordering |
Integer for manual sort order |
checked_out |
User ID of who has the record locked for editing |
checked_out_time |
When the record was locked |
created |
Record creation timestamp |
created_by |
Joomla user ID of creator |
created_by_alias |
Alternative display name for creator |
modified |
Last modification timestamp |
modified_by |
Joomla user ID of last modifier |
params |
JSON-encoded configuration parameters |
All Table classes register assets under the com_proclaim component root using Cwmassets::parentId(), and all set default ACL rules on store if none are provided.
- Multi-Campus-Admin-Guide
- Multi-Campus-User-Guide
- Template-Customization-Guide
- Print-Friendly-View
- Content-Security-Policy
- Troubleshooting-FAQ
- Setting-up-your-development-environment
- Standards and Conventions
- Contributing-Workflow
- Database-Schema
- Location-API-Reference
- Backward-Compatibility-Breaks-10.1
- Proclaim-Code-Road-map
- Tasks
- Overview
- Admin Center
- Messages
- Media Files
- Servers
- Teachers
- Series
- Podcasts
- Topics
- Locations
- Comments
- Message Types
- Templates
- Utilities