Warning: session_start(): open(/var/lib/php/sessions/sess_bjqovln1953867i5kbg8kt0qm4, 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 BEAObject {
}
cmodule2 GazelleBEA > DynGazelleRocks {
void init {
super.init();
botName = heading = adminName = "Gazelle BEA";
set enableVars;
set showTalkToBotLink;
unset phoneNumberSpecialInputField;
}
L crudClasses(Req req) {
ret listPlus(super.crudClasses(req), BEAObject);
}
S authFormHeading() {
ret h3("Gazelle BEA");
}
void makeFramer(Req req) {
super.makeFramer(req);
req.framer.renderTitle = () -> h1(ahref(baseLink + "/", "Gazelle BEA")
+ " " + htmlEncode2(req.framer.title));
}
HCRUD_Concepts crudData(Class c, Req req) {
HCRUD_Concepts cc = super.crudData(c, req);
if (c == BEAObject) {
cc.itemName = () -> "BEA Object";
cc.getObjectForDuplication = id -> {
MapSO item = cc.getObjectForDuplication_base(id);
item.put(f_creator := req.auth.user!); // set default creator to current user
item.put(f_createdFrom := getConcept((long) id));
ret item;
};
}
ret cc;
}
HCRUD makeCRUD(Class c, Req req, HTMLFramer1 framer) {
HCRUD crud = super.makeCRUD(c, req, framer);
if (c == BEAObject) {
crud.massageFormMatrix = (map, matrix) -> {
matrix.add(ll("Add field", htmlTable2_noHtmlEncode(ll(
ll("Name", htextfield newField_name(), "Value", htextfield newField_value())),
noHeader := true)));
};
crud.preprocessUpdateParams = params -> {
params = cloneMap(params);
S name = params.get("newField_name"), value = params.get("newField_value");
if (nempty(name) && nempty(value))
params.put(crud.fieldPrefix + name, value);
ret params;
};
}
ret crud;
}
O serveBotFunction(Req req, S function, Map data, User user) {
if (eq(function, "beaList")) {
long changedAfter = toLong(data.get("changedAfter"));
double pollFor = min(bot_maxPollSeconds, toLong(data.get("pollFor"))); // how long to poll (seconds)
long startTime = sysNow();
// We're super-anal about catching all changes. This will probably never trigger
if (changedAfter > 0 && changedAfter == now()) sleep(1);
Cl objects;
while true {
objects = changedAfter == 0 ? list(BEAObject)
: conceptsWithFieldGreaterThan_sorted(BEAObject, _modified := changedAfter);
// return when there are results, no polling or poll expired
if (nempty(objects) || pollFor == 0 || elapsedSeconds_sysNow(startTime) >= pollFor)
ret serveJSON_breakAtLevels(2, result := map(objects, obj ->
litmap(id := obj.id) // TODO
));
// sleep and try again
sleep(bot_pollInterval);
}
}
ret super.serveBotFunction(req, function, data, user);
}
} // end of module