Skip to main content

System Configuration

Settings that control Jethro's behaviour. Most can be set via Admin → System Configuration; some are file-only in conf.php.

Label displayed at the top of every page
ⓘ️ hide
Label displayed at the top of every page

Permissions and Security

Foundation settings: feature flags, default permissions, and session management.

Which Jethro features are visible to users?
ⓘ️ hide
Which Jethro features are visible to users?
Default: NOTES,PHOTOS,ATTENDANCE,ROSTERS&SERVICES,SERVICEDETAILS,DOCUMENTS,SERVICEDOCUMENTS,SMS.
Permissions to grant to new user accounts by default
ⓘ️ hide
Permissions to grant to new user accounts by default
Default: 8519679.
Allow users with group/congregation restrictions to create new persons and families?
ⓘ️ hide
Allow users with group/congregation restrictions to create new persons and families?
Default: 0.
Minimum password length
ⓘ️ hide
Minimum password length
Default: 8.
Inactive sessions will be logged out after this number of minutes
ⓘ️ hide
Inactive sessions will be logged out after this number of minutes
Default: 90.
Every session will be logged out this many minutes after login
ⓘ️ hide
Every session will be logged out this many minutes after login
Default: 480.

2-Factor Authentication

Require a one-time SMS code at login for users holding specific permissions.

Users who hold permission levels selected here will be required to complete 2-factor authentication at login.
ⓘ️ hide
Users who hold permission levels selected here will be required to complete 2-factor authentication at login.
Require 2-factor auth even for accounts with group/congregation restrictions?
ⓘ️ hide
Require 2-factor auth even for accounts with group/congregation restrictions?
Default: 0.
Users can tick a box to skip 2-factor auth for this many days. Set to 0 to disable.
ⓘ️ hide
Users can tick a box to skip 2-factor auth for this many days. Set to 0 to disable.
Default: 30.
Sender ID for 2-factor auth messages. Mirrors SMS_SENDER.
ⓘ️ hide
Sender ID for 2-factor auth messages. Mirrors SMS_SENDER.
Default: Jethro.
// Master kill-switch for 2-factor authentication. Set to false to disable 2FA entirely.
// Setting to true still requires other 2FA parameters to be defined for 2FA to be applied.
define('2FA_ENABLED', 'true'); // Master kill-switch. Set to false to disable 2FA entirely.

Jethro Behaviour Options

Controls defaults for rosters, notes, attendance, person lists, envelopes, and more.

Whether an initial note is required when adding new family
ⓘ️ hide
Whether an initial note is required when adding new family
Default: 1.
Default status when creating a new note
ⓘ️ hide
Default status when creating a new note
Default: pending.
Order to display person and family notes
ⓘ️ hide
Order to display person and family notes
Default: ASC.
Number of minutes users have to edit an object before their lock expires
ⓘ️ hide
Number of minutes users have to edit an object before their lock expires
Default: 10.
Show all groups when listing persons?
ⓘ️ hide
Show all groups when listing persons?
Default: 0.
Batch size to aim for when dividing lists of items
ⓘ️ hide
Batch size to aim for when dividing lists of items
Default: 100.
When a roster has this many columns, show the date on the right as well as the left
ⓘ️ hide
When a roster has this many columns, show the date on the right as well as the left
Default: 10.
Number of weeks to show in rosters by default
ⓘ️ hide
Number of weeks to show in rosters by default
Default: 8.
Default day to record attendance
ⓘ️ hide
Default day to record attendance
Default: Sunday.
Default order for recording/showing attendance
ⓘ️ hide
Default order for recording/showing attendance
Default: status.
Envelope width (mm)
ⓘ️ hide
Envelope width (mm)
Default: 220.
Envelope height (mm)
ⓘ️ hide
Envelope height (mm)
Default: 110.

Data Structure options

Defines the values available in dropdowns throughout Jethro: person statuses, age brackets, address fields, and telephone formats.

ⓘ️ hide
Configuration for <code>PERSON_STATUS_OPTIONS</code>.
Default: .
ⓘ️ hide
Configuration for <code>AGE_BRACKET_OPTIONS</code>.
Default: .
ⓘ️ hide
Configuration for <code>GROUP_MEMBERSHIP_STATUS_OPTIONS</code>.
Default: .
ⓘ️ hide
Configuration for <code>TIMEZONE</code>.
Default: Australia/Sydney.
(Leave blank to hide the state field)
ⓘ️ hide
(Leave blank to hide the state field)
Default: ACT,NSW,NT,QLD,SA,TAS,VIC,WA.
Label for the 'state' field. (Leave blank to hide the state field)
ⓘ️ hide
Label for the 'state' field. (Leave blank to hide the state field)
Default: State.
Default state
ⓘ️ hide
Default state
Default: NSW.
Label for the 'suburb' field
ⓘ️ hide
Label for the 'suburb' field
Default: Suburb.
Label for the 'postcode' field
ⓘ️ hide
Label for the 'postcode' field
Default: Postcode.
Width of the postcode box
ⓘ️ hide
Width of the postcode box
Default: 4.
Regex to validate postcodes; eg /^[0-9][0-9][0-9][0-9]$/ for 4 digits
ⓘ️ hide
Regex to validate postcodes; eg /^[0-9][0-9][0-9][0-9]$/ for 4 digits
Default: /^[0-9][0-9][0-9][0-9]$/.
Valid formats for home phone; use X for a digit
ⓘ️ hide
Valid formats for home phone; use X for a digit
Default: XXXX-XXXX\n(XX) XXXX-XXXX.
Valid formats for work phone; use X for a digit
ⓘ️ hide
Valid formats for work phone; use X for a digit
Default: XXXX-XXXX\n(XX) XXXX-XXXX.
Valid formats for mobile phone; use X for a digit
ⓘ️ hide
Valid formats for mobile phone; use X for a digit
Default: XXXX-XXX-XXX.

Member area

Self-service portal where congregation members can log in to view their details and rosters.

Should church members be able to log in at <system_url>members ?
ⓘ️ hide
Should church members be able to log in at <system_url>members ?
Default: 0.
Sender name for member rego emails
ⓘ️ hide
Sender name for member rego emails
Sender address for member rego emails
ⓘ️ hide
Sender address for member rego emails
Subject for member rego emails
ⓘ️ hide
Subject for member rego emails
Default: Setting up your account.
Should members be able to see and edit the age bracket field?
ⓘ️ hide
Should members be able to see and edit the age bracket field?
Default: 1.
Folders in Documents which, if they exist, are visible to Members. Separate multiple directories with a pipe (|) character.
ⓘ️ hide
Folders in Documents which, if they exist, are visible to Members. Separate multiple directories with a pipe (|) character.
Default: Member_Files.
Address that users can contact for assistance with member rego (optional)
ⓘ️ hide
Address that users can contact for assistance with member rego (optional)
Address to notifiy when member rego fails
ⓘ️ hide
Address to notifiy when member rego fails
Minimum length for member passwords
ⓘ️ hide
Minimum length for member passwords
Default: 7.
Should addresses be visible in the members area?
ⓘ️ hide
Should addresses be visible in the members area?
Default: 0.
// HTML displayed beneath the Members Area login form, e.g. a link to terms and conditions.
define('MEMBER_LOGIN_NOTE', ''); // HTML beneath the member login form.
// Pipe-separated document folder paths visible to members. Paths are relative to DOCUMENTS_ROOT_PATH.
// Generally this should be left unset — use the 'Member Visible Folders' web config setting instead.
define('MEMBER_FILES_DIRS', ''); // Pipe-separated document folder paths visible to members.

iCal feeds

Publish roster information as iCal feeds for congregation members to subscribe to.

Whether users can access their roster assignments via an ical feed with secret URL
ⓘ️ hide
Whether users can access their roster assignments via an ical feed with secret URL
Default: 1.

Public area

Make selected content available on a public-facing page without requiring login.

Whether to allow public access to certain info at <system_url>public
ⓘ️ hide
Whether to allow public access to certain info at <system_url>public
Default: 0.
Should service notes be visible in the public area at <system_url>public?
ⓘ️ hide
Should service notes be visible in the public area at <system_url>public?
Default: 0.
Advanced: Only allow access to public rosters if the URL contains \"&secret=<this-secret>\"
ⓘ️ hide
Advanced: Only allow access to public rosters if the URL contains \"&secret=<this-secret>\"

URLs and integration settings for external services: Bible lookup, CCLI, postcode search, maps, QR codes, and bulk-email settings.

URL Template for bible passage links, with the keyword __REFERENCE__
ⓘ️ hide
URL Template for bible passage links, with the keyword __REFERENCE__
Default: https://www.biblegateway.com/passage/?search=__REFERENCE__&version=NIVUK.
URL Template for searching CCLI, with the keyword __TITLE__
ⓘ️ hide
URL Template for searching CCLI, with the keyword __TITLE__
Default: https://songselect.ccli.com/search/results?search=__TITLE__.
URL Template for CCLI song details by song number, with the keyword __NUMBER__
ⓘ️ hide
URL Template for CCLI song details by song number, with the keyword __NUMBER__
Default: https://songselect.ccli.com/songs/__NUMBER__.
URL Template for reporting usage to CCLI by song number, with keyword __NUMBER__
ⓘ️ hide
URL Template for reporting usage to CCLI by song number, with keyword __NUMBER__
Default: https://reporting.ccli.com/search?s=__NUMBER__&page=1&category=all.
URL template for looking up postcodes, with the keyword __SUBURB__
ⓘ️ hide
URL template for looking up postcodes, with the keyword __SUBURB__
Default: https://auspost.com.au/postcode/__SUBURB__.
URL template for map links, with the keywords __ADDRESS_STREET__, __ADDRESS_SUBURB__, __ADDRESS_POSTCODE__, __ADDRESS_STATE__
ⓘ️ hide
URL template for map links, with the keywords __ADDRESS_STREET__, __ADDRESS_SUBURB__, __ADDRESS_POSTCODE__, __ADDRESS_STATE__
Default: http://maps.google.com.au?q=__ADDRESS_STREET__,%20__ADDRESS_SUBURB__,%20__ADDRESS_STATE__,%20__ADDRESS_POSTCODE__.
URL template for generating QR codes, containing the placeholder __URL__
ⓘ️ hide
URL template for generating QR codes, containing the placeholder __URL__
Default: https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=__URL__.
When displaying mailto links for emails, divide into batches of this size
ⓘ️ hide
When displaying mailto links for emails, divide into batches of this size
Default: 25.
When displaying mailto links for emails, separate addresses using this character
ⓘ️ hide
When displaying mailto links for emails, separate addresses using this character
Default: ,.

Task Notifications

Email notifications for task assignments and reminders.

(This feature also requires the task_reminder.php script to be called by cron every 5 minutes)
ⓘ️ hide
(This feature also requires the task_reminder.php script to be called by cron every 5 minutes)
Default: 0.
Name from which task notifications should be sent
ⓘ️ hide
Name from which task notifications should be sent
Default: Jethro.
Email address from which task notifications should be sent
ⓘ️ hide
Email address from which task notifications should be sent
ⓘ️ hide
Configuration for <code>TASK_NOTIFICATION_SUBJECT</code>.
Default: New notes assigned to you.

Mailchimp Sync

Sync person data with a Mailchimp audience for bulk email campaigns.

API Key for Mailchimp integration. NB the mailchimp sync script must also be called regularly by cron.
ⓘ️ hide
API Key for Mailchimp integration. NB the mailchimp sync script must also be called regularly by cron.

SMTP Email Server

Outgoing email server configuration for system-generated emails (notifications, member area).

SMTP server for sending emails
ⓘ️ hide
SMTP server for sending emails
Encryption method for SMTP server
ⓘ️ hide
Encryption method for SMTP server
Default: .
Username for SMTP server
ⓘ️ hide
Username for SMTP server
Password for SMTP server
ⓘ️ hide
Password for SMTP server
Port to connect to the SMTP server. Usually 25, 465 for SSL, or 587 for TLS.
ⓘ️ hide
Port to connect to the SMTP server. Usually 25, 465 for SSL, or 587 for TLS.
Default: 25.
// Force the From: address on Jethro-sent emails. The user-specified From becomes Reply-To instead.
// Use this when the From address (set e.g. in a script .ini file) is where you want replies to go, but you are not DKIM-authorised to send from its domain.
define('OVERRIDE_EMAIL_FROM', ''); // Force the From: address on Jethro-sent emails. The user-specified From becomes Reply-To instead.

SMS

SMS messaging configuration — message limits, gateway templates, and 2FA transport. See the SMS Administration guide for setup instructions and provider details.

Sender

Controls the "From" dropdown on the SMS send page. See SMS Sender for examples and Sender ID registration.

Hardcoded sender ID or mobile number that SMSes will appear to come from
ⓘ️ hide
Hardcoded sender ID or mobile number that SMSes will appear to come from. Use <code>_USER_MOBILE_</code> to use the current user's mobile number.
Sender options for the SMS dropdown. Tokens: _USER_MOBILE_ (user's mobile), _SENDER_IDS_ (upstream-registered IDs).
ⓘ️ hide
Comma-separated sender options for the dropdown. Tokens <code>_SENDER_IDS_</code> (every ID the provider reports) and <code>_USER_MOBILE_</code> are supported alongside literal IDs. Defaults to <code>_SENDER_IDS_,_USER_MOBILE_</code>. Example: <code>StBarnabas,_SENDER_IDS_,_USER_MOBILE_</code>. Set to an empty string to disable all Sender ID lookup.
Default: _SENDER_IDS_,_USER_MOBILE_.
Default sender selected in the SMS sender dropdown.
ⓘ️ hide
Default selection in the sender dropdown (Sender ID or <code>_USER_MOBILE_</code>). Blank = first option in SMS_SENDER_OPTIONS.

Post-send behaviour

Settings affecting the SMS Create Note… behaviour, and post-send 'cooloff'. See Post-send behaviour.

Whether to save each sent SMS as a person note by default
ⓘ️ hide
Pre-tick the 'Save as Note' checkbox.
Default: 0.
ⓘ️ hide
Default subject for SMS-saved notes.
Default: SMS follow-up.
Delay before sending to allow cancellation
ⓘ️ hide
Delay in seconds applied to all immediate (non-deferred) sends. When unset, a 30-second cool-off is applied automatically — giving the user a window to cancel a mistaken send. Set to <code>0</code> to disable.
Default: 30.

Balance

See Low Balance for balance enforcement and notification.

Notify a staff member when SMS account balance drops below this amount (0 = disabled)
ⓘ️ hide
Trigger a low-balance alert below this credit count. <code>0</code> disables.
Default: 0.
Person ID of the staff member to notify when SMS balance is low
ⓘ️ hide
Person ID to notify on low balance.
Default: 0.
// Balance override. Numeric (e.g. 100) = hardcoded value, useful for testing or as a send cap. 'database' = calculate from sms_purchases table. Unset = query upstream API.
define('SMS_BALANCE', 'Upstream API');
// Block sends when remaining balance &lt; recipient count. Works with all SMS_BALANCE modes.
define('SMS_BALANCE_ENFORCED', 'false');

Provider selection

See Provider selection for auto-detection and manual overrides.

Which SMS provider to use for sending
ⓘ️ hide
Which SMS provider to use for sending. Short key or fully-qualified class name. Short keys: <code>5centsmsv5</code>, <code>cellcast</code>, <code>smsbroadcast</code>. When unset, Jethro auto-detects from whichever required provider constants are defined.
Default: .
FiveCent SMS v5 API key ID
ⓘ️ hide
API key ID from your 5CentSMS dashboard (required). See <a href="https://www.5centsms.com.au/dashboard/api">5centsms.com.au/dashboard/api</a>.
FiveCent SMS v5 API key secret
ⓘ️ hide
API key secret from your 5CentSMS dashboard (required). See <a href="https://www.5centsms.com.au/dashboard/api">5centsms.com.au/dashboard/api</a>.
ⓘ️ hide
API base URL (optional; defaults to <code>https://www.5centsms.com.au/api/v5</code>).
Default: https://www.5centsms.com.au/api/v5.
ⓘ️ hide
API base URL (optional; defaults to <code>https://api.cellcast.com</code>).
Default: https://api.cellcast.com.
// Bearer token from your Cellcast dashboard (required).
define('SMS_CELLCAST_APIKEY', ''); // Cellcast API bearer token
// API username for SMS Broadcast (smsbroadcast.com.au). Required if using the SMS Broadcast provider.
define('SMS_SMSBROADCAST_USERNAME', '');
// API password for SMS Broadcast (smsbroadcast.com.au). Required if using the SMS Broadcast provider.
define('SMS_SMSBROADCAST_PASSWORD', '');
// API endpoint URL (optional; defaults to https://www.smsbroadcast.com.au/api-adv.php).
define('SMS_SMSBROADCAST_URL', 'https://www.smsbroadcast.com.au/api-adv.php');

Message body

Limits on what the user can type in SMS messages. See Message body.

ⓘ️ hide
Character limit for SMS messages. 160 chars is usually a one-part SMS.
SMSes are billed per 160 characters (or 70 if emojis / unicode are present), so setting SMS_MAX_LENGTH to 160 keeps costs down by enforcing brevity. To allow longer messages increase SMS_MAX_LENGTH to 306 (2x SMS segments), 459 (3x), 612 (4x), 765 (5x) etc.
Default: 160.

Debugging & cost display

See Debugging & cost display.

// Path to a JSONP log file for SMS send audit trail (optional).
define('SMS_SEND_LOGFILE', '');
// Length of a single SMS segment for cost estimation purposes
define('SMS_SEGMENT_LENGTH', 160);

Legacy HTTP template gateway

Only needed if using TemplateSmsProvider, FiveCentSmsV4Provider, or a custom HTTP-template gateway. Most users should use one of the provider-specific sections above instead. See configuring a provider for modern alternatives.

// URL of the SMS gateway to send SMSes through. Used by TemplateSmsProvider / legacy gateway.
define('SMS_HTTP_URL', ''); // URL of the SMS messaging service
// Template for the HTTP headers of the POST request Jethro sends to the SMS gateway. Some gateways use headers for authentication.
// Example for 5CentSMS: User: me@example.com\r\nApi-Key: MyAPIKey\r\n
define('SMS_HTTP_HEADER_TEMPLATE', ''); // Template for the headers of a request to the SMS messaging service
// Template for the body of the HTTP POST request Jethro sends to the SMS gateway.
// Supports keywords: _MESSAGE_, _RECIPIENTS_COMMAS_, _RECIPIENTS_NEWLINES_, _RECIPIENTS_ARRAY_, _RECIPIENTS_INTERNATIONAL_COMMAS_, _RECIPIENTS_INTERNATIONAL_NEWLINES_, _RECIPIENTS_INTERNATIONAL_ARRAY_, _USER_MOBILE_, _USER_EMAIL_.Example for SMSBroadcast: username=MYUSER&password=MYPASS&to=_RECIPIENTS_COMMAS_&from=_USER_MOBILE_&message=_MESSAGE_Example for 5CentSMS: sender=_USER_MOBILE_&to=_RECIPIENTS_COMMAS_&message=_MESSAGE_
define('SMS_HTTP_POST_TEMPLATE', ''); // Template for the body of a request to the SMS messaging service
// Base name for the _RECIPIENTS_ARRAY_ keyword in SMS_HTTP_POST_TEMPLATE.
// Set to number to produce number[]=0412333444&number[]=0413555666.
define('SMS_RECIPIENT_ARRAY_PARAMETER', '');
// Regex to detect a per-recipient success message from the SMS gateway. Omit slash delimiters.
// Keywords: _RECIPIENT_, _RECIPIENT_INTERNATIONAL_.Leave blank to ignore the response.Example for 5CentSMS: [{]\s*"destination":\s*"_RECIPIENT_",[^}]*"status":\s*"?(1000|1001|1002|1004|1006|1011|1527)"?,
define('SMS_HTTP_RESPONSE_OK_REGEX', ''); // Regex for recognising a successful send
// Regex to detect an overall error response from the API server (e.g. bad credentials). Omit slash delimiters. Leave blank to ignore.
define('SMS_HTTP_RESPONSE_ERROR_REGEX', ''); // Regex for recognising an API error
// Regex with a capture group to extract the remote message ID from the gateway response.
// The first capture group is stored as the remote message ID.
define('SMS_HTTP_RESPONSE_ID_REGEX', '');
// Local prefix used in the mobile numbers stored in Jethro. Stripped before prepending the international prefix.
// Needed for SMS gateways that use international-format numbers. E.g. 0.
define('SMS_LOCAL_PREFIX', ''); // Used for converting local to international numbers. eg 0
// International prefix, which replaces the local prefix to form an international-format number.
// Needed for SMS gateways that use international-format numbers. E.g. 61 for Australia.
define('SMS_INTERNATIONAL_PREFIX', ''); // Used for converting local to international numbers. eg +61

2FA SMS gateway (file-only)

If you want 2FA to use a different SMS gateway than regular sends. When unset, 2FA falls back to the regular SMS constants. See 2FA SMS for setup and troubleshooting.

// Dedicated SMS gateway URL for 2FA messages. If set, 2FA uses these 2FA_SMS_* settings instead of SMS_HTTP_*.
// 2FA messages sent through this gateway are NOT logged in SMS_SEND_LOGFILE.
define('2FA_SMS_URL', ''); // Gateway URL for 2FA messages.
// POST body template for the dedicated 2FA SMS gateway.
define('2FA_SMS_POST_TEMPLATE', ''); // POST body template for 2FA messages.
// Extra HTTP headers for the dedicated 2FA SMS gateway.
define('2FA_SMS_HEADER_TEMPLATE', ''); // Extra HTTP headers for 2FA messages.
// Success detection regex for the dedicated 2FA SMS gateway. Omit slash delimiters.
define('2FA_SMS_RESPONSE_OK_REGEX', ''); // Success detection regex for 2FA messages.
// Error detection regex for the dedicated 2FA SMS gateway. Omit slash delimiters.
define('2FA_SMS_RESPONSE_ERROR_REGEX', ''); // Error detection regex for 2FA messages.
// Remote message ID regex for the dedicated 2FA SMS gateway.
define('2FA_SMS_RESPONSE_ID_REGEX', ''); // Remote message ID regex for 2FA messages.

2FA logging (file-only)

See Audit log for log levels and blocking.

// Path to a log file for the 2FA audit trail. Example: /var/log/jethro-2fa.log.
define('SMS_2FA_LOGFILE', ''); // Path to JSONP log file for 2FA audit trail.
// Log verbosity for 2FA audit trail: full for everything, or quiet for errors only.
define('SMS_2FA_LOG_LEVEL', 'full'); // full or quiet.
// Dev-only: log 2FA intentions without actually sending SMS messages.
define('SMS_2FA_BLOCK_MESSAGES', 'false'); // Dev-only: log intentions without sending.

Essential

Core infrastructure: database connection and base URL. These must be set for the system to run.

// Name of the MySQL database, e.g. jethro.
define('DB_DATABASE', ''); // MySQL database name.
// Username of the MySQL account Jethro uses to access the database.
define('DB_USERNAME', ''); // MySQL user.
// Password of the MySQL account Jethro uses to access the database.
// Optional if DB_DSN is set for socket-based authentication.
define('DB_PASSWORD', ''); // MySQL password. Optional if DB_DSN is set.
// Server on which MySQL is running — usually localhost.
define('DB_HOST', 'localhost'); // MySQL server hostname.
// Database driver — usually mysql.
define('DB_TYPE', 'mysql'); // Database driver.
// Full PDO DSN instead of DB_PASSWORD, e.g. mysql:dbname=jethro.
// For socket-based authentication. If your PHP-FPM runs as a dedicated OS user (jethro), you can create a MySQL user with unix_socket auth and specify the DSN directly instead of a password.
define('DB_DSN', ''); // Full PDO DSN instead of DB_PASSWORD, e.g. mysql:dbname=jethro. For socket-based auth.
// The URL Jethro runs at. Only needed if behind a proxy without X-Forwarded-Proto / X-Forwarded-Host, or when running CLI scripts like task_reminder.php where the base URL cannot be inferred.
define('BASE_URL', ''); // URL Jethro runs at. Set if behind a proxy without X-Forwarded-Proto / X-Forwarded-Host.

Database accounts (optional)

Separate MySQL credentials for the Members and Public areas, to restrict which tables those interfaces can access. All default to the main credentials.

// MySQL username for the Members area. Restrict table access for extra security.
// Defaults to the main DB_USERNAME if not set.
define('DB_MEMBERS_USERNAME', ''); // Members-area MySQL user.
// MySQL password for the Members area.
// Defaults to the main DB_PASSWORD if not set.
define('DB_MEMBERS_PASSWORD', ''); // Members-area MySQL password.
// MySQL username for the Public area. Restrict table access for extra security.
// Defaults to the main DB_USERNAME if not set.
define('DB_PUBLIC_USERNAME', ''); // Public-area MySQL user.
// MySQL password for the Public area.
// Defaults to the main DB_PASSWORD if not set.
define('DB_PUBLIC_PASSWORD', ''); // Public-area MySQL password.

Bible API (file-only)

Auto-fetches Bible passage text for service handouts. Requires a key from api.bible.

// API key from api.bible. Empty = Bible passage auto-fetch disabled.
// Obtainable after registering on api.bible. Enables automatic fetching of Bible reading passages in service handouts.
define('BIBLE_API_APIKEY', ''); // API key from api.bible. Empty = disabled.
// Base URL for the API.Bible REST API, used for fetching Bible passage text in service handouts.
// Defaults to the standard API.Bible endpoint if not set.
define('BIBLE_API_URL', 'https://rest.api.bible/v1'); // API base URL.
// Timeout in seconds for API.Bible REST API requests.
// Defaults to 10 if not set.
define('BIBLE_API_TIMEOUT', '10'); // Request timeout in seconds.

Advanced (file-only)

Server-side and display options: error reporting, SQL mode, pre-filled credentials, custom CSS, and more.

// Allow all configuration settings to be defined in conf.php rather than via the admin web interface (legacy mode).
define('ALLOW_SETTINGS_IN_FILE', 'true'); // Allow all settings to be defined in conf.php rather than via the admin web interface (legacy mode).
// Directory where the Documents view stores files.
// Defaults to files/ under the Jethro root directory.
define('DOCUMENTS_ROOT_PATH', ''); // Document storage path. Defaults to files/ under Jethro root.
// Directory where custom report SQL files are stored.
// Defaults to custom_reports/ under the Jethro root directory.
define('CUSTOM_REPORTS_DIR', ''); // Custom report SQL directory. Defaults to custom_reports/ under Jethro root.
// Pipe-separated folder paths for the 'Populate' feature when generating service documents.
// Paths can be absolute or relative to DOCUMENTS_ROOT_PATH.
define('SERVICE_DOCS_TO_POPULATE_DIRS', ''); // Pipe-separated template folders for the Populate feature.
// Pipe-separated folder paths for the 'Expand' feature when generating service documents.
// Paths can be absolute or relative to DOCUMENTS_ROOT_PATH.
define('SERVICE_DOCS_TO_EXPAND_DIRS', ''); // Pipe-separated template folders for the Expand feature.
// System administrator contact link — mailto:someone@domain.com or a URL.
define('SYSADMIN_HREF', ''); // System administrator contact link — mailto:someone@domain.com or a URL.
// Email address where error reports are sent.
define('ERRORS_EMAIL_ADDRESS', ''); // Email address for error reports.
// Override the MySQL SQL_MODE variable.
// If MySQL 8 throws ONLY_FULL_GROUP_BY errors, turn it off with: STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
define('SQL_MODE', ''); // Override MySQL SQL_MODE. Use if MySQL 8 throws ONLY_FULL_GROUP_BY errors.
// Pre-filled username on the login form. Demo systems only.
define('PREFILL_USERNAME', ''); // Pre-filled login form value. Demo systems only.
// Pre-filled password on the login form. Demo systems only.
define('PREFILL_PASSWORD', ''); // Pre-filled login form value. Demo systems only.
// HTML injected into &lt;head&gt; on every page, e.g. custom CSS &lt;link&gt; tags.
define('EXTRA_HEAD_HTML', ''); // HTML injected into , e.g. custom CSS tags.
// Override LESS variables for a custom colour scheme.
// See resources/less/jethro.less.php for available variables. Example: @linkColor: #008791;
define('CUSTOM_LESS_VARS', ''); // Override LESS variables for custom colour scheme, e.g. @linkColor: #008791;.
// HTML displayed beneath the Control Centre login button, e.g. a link to terms and conditions.
define('LOGIN_NOTE', ''); // HTML beneath the Control Centre login button.
// Show error details in the browser. Turn off in production.
define('SHOW_ERROR_DETAILS', 'false'); // Show error details in the browser.