Extensions sevenx_multisite activates
This page is for administrators and hosts who need to know which extensions a sevenx_multisite install switches
on, and for developers who add one. It answers: which extensions are listed, in which order, which ones are only
active in the administration, and how their tables are created.
Contents
- Where the list lives
- The list, in order
- Why the order matters
- Extensions of the administration only
- Extensions the installer checks for
- Extension tables
Where the list lives
initSettings() in settings/sevenx-multi-site-installer.php stores the list as the setting extension_list.
commonSiteINISettings() writes it to settings/override/site.ini.append.php as
[ExtensionSettings] ActiveExtensions. The same list is used during the install itself: preInstall() adds the
settings/ folder of each listed extension to the running configuration (activateSiteExtensionSettings()), so their
datatypes and INI files are known while the packages are imported.
Warning
The extensions must be present in extension/ of the installation; the package does not bring them. A listed
extension that is missing is simply not found at run time.
The list, in order
| # | Extensions | Notes from the installer |
|---|---|---|
| 1 | xrowmetadata | the metadata datatype many classes use |
| 2-3 | expui, ezjscore | Exponential UI before ezjscore, so its settings (jQuery 4, the admin's script and style lists) win |
| 4 | expservices | remote services for admin apps and JavaScript front ends; its portal designs get no siteaccess |
| 5 | expqueue | the job queue (Setup > Job queue); its worker runs with the admin siteaccess from cron |
| 6 | ezoracle | the Oracle driver, "inert on any other database" |
| 7-9 | ezoe, ezformtoken, expwt | the online editor, cross site request forgery protection for posted forms, the website sidebar (in place of ezwt, the website toolbar, from the site packages built for 6.0.15) |
| 10-16 | ezstarrating, ezgmaplocation, ezautosave, ezodf, ezie, ezprestapi, ezpaypal | |
| 17-18 | owsimpleoperator, swark | template operators |
| 19-21 | bcgooglesitemaps, bcwebsitestatistics, bccie | |
| 22-24 | xrowextract, enhancedezbinaryfile, enhancedselection2 | enhancedselection2 owns the sckenhancedselection datatype of several ng_* classes |
| 25 | birthday | the ezbirthday datatype |
| 26-27 | ezwebin, ezmultiupload | |
| 28 | syndication | content syndication between installations |
| 29-30 | ezupdate, git_manager | |
| 31-32 | eztags, ngclasslist | |
| 33-44 | explayouts, explayouts_core, explayouts_api, explayouts_standard, explayouts_site_api, explayouts_relation_list_query, explayouts_tags_query, explayouts_content_browser_core, explayouts_content_browser, explayouts_content_browser_ui, explayouts_ui, explayouts_ui_api | the layouts family, "the providers ... listed before the UI that consumes them" |
| 45-48 | expquery_translator, expsite_core, expsite_api, expsite_app | |
| 49-51 | exp_enhanced_link, expchangeclass, ezownerchange | ezownerchange changes the owner of an object or a subtree |
| 52 | cjw_newsletter | its classes and tree are imported by a post-install step |
| 53-54 | recaptcha, hcaptcha | hcaptcha "needs its keys set" |
| 55 | sevenx_authentication_2fa | two-factor and social login |
| 56-57 | powercontent, sevenx_dse | |
| 58-59 | sevenx_themes_media, sevenx_themes_simple | the two themes, kept at the end |
| 60 | ezurlmultisite | links to content of the other site point at the siteaccess that serves it |
Why the order matters
The comment above the list explains it: "Order matters: later extensions win design and template overrides, so the
two themes stay at the end." When a datatype is looked up, "the first match wins", which is why
activateSiteExtensionSettings() adds the settings folders in the order the site will load them
(eZExtension::extensionOrdering() is applied when [ExtensionSettings] ExtensionOrdering=enabled). For settings,
the extension listed first wins: each one's settings folder is put in front of the ones before it
(Configuring, section 2).
Tip
To add an extension to the default install, add it to extension_list in the place its settings need, and check
whether it has tables (see below). The extension history of the installer shows the pattern: "activates
ezownerchange" (2026-10-15), "activates ezurlmultisite with the node ids of the new installation" (2026-10-14).
See Changing the installer script.
Extensions of the administration only
Three extensions are deliberately not in extension_list. adminAccessExtensionList() returns expai,
exp_adminui and sqliimport, each only when extension/<name> exists, and adminSiteINISettings() writes them as
[ExtensionSettings] ActiveAccessExtensions of the admin siteaccess. The editor and adminui siteaccesses are copies
of the admin's files and inherit them, except that the setup step makes the editor without sqliimport.
expai(Exponential Intelligence) "installs switched off: its own [AISettings] Enabled=false, no provider key is written". Its cron part needs the admin siteaccess.exp_adminuimakes Admin UI a choice of the design menu in the admin and editor; "every other siteaccess keeps its own design".sqliimport(imports, with schedules on the expqueue worker) needsexpqueueandexpui, which are inextension_list. Its 13 tables come fromextensionSchemas(), its Imports tab sits between Export and CIE in the admin's tab list, and only the Administrator role has its policies. Its schedules run from cron every minute with the admin siteaccess:php runcronjobs.php -q -s <admin> expqueueandphp runcronjobs.php -q -s <admin> sqliimport.
Extensions the installer checks for
| Extension | What the installer does when it is present |
|---|---|
sevenx_authentication_2fa | adds the "Two-step sign-in" field to the user class, writes sevenxauthentication2fa.ini (Enforce2FA=enabled with EnforcedGroups[] Administrator users and Editors, so their members set up a second step at their first sign-in while every other account chooses for itself; DefaultMethod=totp, RecoveryCodes=10, no exemptions, no grace period, a SecretKey made for this installation), sets LoginHandler sevenxUser2fa then standard, and gives user2fa/setup and user2fa/verify to Member, Editor and Partner |
cjw_newsletter | imports its content classes into the class group "Newsletter", creates the newsletter tree and sets its root folder setting |
exp_adminui | creates the adminui siteaccess |
ezurlmultisite | writes settings/override/ezurlmultisite.ini.append.php (see What you have after installing) |
explayouts | imports the default admin layouts from share/fragments/admin_layouts_db_data.dba |
Extension tables
extensionSchemas() decides which extensions get their tables during preInstall():
- The extensions named by hand in
declaredExtensionSchemas(), in this order:sevenx_themes_media(schema and data),ezstarrating,ezgmaplocation,eztags,explayouts(schema and data),enhancedselection2,cjw_newsletter,syndication. - Every other extension of
extension_list, andexpaiandexp_adminui, that ships ashare/db_schema.dbaor asql/<engine>/schema.sql(schema only).
dropExtensionTables() first drops every table those schemas declare, because a reinstall's database "remove" drops
only tables named ez* and "the others kept the previous site's rows". insertDBFile() then creates each schema
through eZDbSchema, skipping tables an earlier schema of the same run already created, and falls back to
sql/<engine>/ files on a database without an eZDbSchema handler. createMissingSchemaTables() creates any table
the schema insert left out. What this means for the layout data is on
Layouts data and the share .dba files.
Related pages
- sevenx_multisite
- The multisite installer script
- Siteaccesses and languages
- Multisite cross-site links
- Site packages: start here
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
Become an Exponential Partner
Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.