Warning: session_start(): open(/var/lib/php/sessions/sess_rc8mpre301ne7027cpo7jc6hia, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
concept Domain {
S domain;
S moduleLibID;
bool mustBeEnabled;
}
cmodule Eleu3 > DynEleu {
transient CRUD domainCRUD;
switchable bool verbose;
switchable S sameSite;
start {
dbIndexingCI(Domain, 'domain);
uniqCI Domain(domain := "");
domainCRUD = new CRUD(Domain);
dm_onFieldChangeAndNow sameSite(r {
cookieHandler.metaParams = appendPrefixIfNempty("SameSite=", sameSite)
});
}
visual jtabs(
"Main", super,
"Domains" := domainCRUD.visualize());
@Override
S moduleForDomain(S domain) {
for (Domain d : domainsInMatchingOrder()) {
if (domainIsUnder(domain, d.domain)) {
S mod = findMod(d);
if (verbose) print("Domain matched: " + domain + " / " + d.domain + " => " + mod);
try answer mod;
} else
if (verbose) print("Domain not matched: " + domain + " / " + d.domain);
}
ret findMod(defaultDomain());
}
Domain defaultDomain() {
ret conceptWhereCI Domain(domain := "");
}
S findMod(Domain d) {
if (d == null) null;
ret d.mustBeEnabled
? dm_findModuleWithParams(d.moduleLibID, enabled := true)
: dm_findModule(d.moduleLibID);
}
// API
Cl domainsInMatchingOrder() {
ret sortByCalculatedFieldICDesc(
filter(list(Domain), d -> !eqic(d.domain, "")),
d -> reversed(d.domain));
}
}