Skip to content

Commit 442769d

Browse files
committed
Merge branch 'master' of https://github.com/Countly/countly-server into SER-1096
2 parents 5e02587 + 193c531 commit 442769d

File tree

28 files changed

+132
-60
lines changed

28 files changed

+132
-60
lines changed

CHANGELOG.md

+13
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,16 @@
1+
## Version 23.11.9
2+
Fixes:
3+
- [core] Add option to pass bucket (daily, monthly) for /o/analytics/session and /o/analytics/events endpoints
4+
- [dashboards] Dasboard name and tooltip sanitization
5+
- [notes] Notes content sanitization
6+
- [populator] Do not update last data on populator
7+
- [push] fix on timezone for recurring messages
8+
- [push] skippable audience estimation
9+
10+
Enterprise Fixes:
11+
- [drill] Modify export filename no do not include full query if query is too long
12+
- [retention] Classical & Unbound Retention query breakdown fix
13+
114
## Version 23.11.8
215
Fixes:
316
- [push] Fix for messages failure that show infinity in detail

api/jobs/appExpire.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class AppExpireJob extends job.Job {
3030
const INDEX_NAME = "cd_1";
3131

3232
let collections = [];
33-
let events = ["[CLY]_session", "[CLY]_crash", "[CLY]_view", "[CLY]_action", "[CLY]_push_action", "[CLY]_star_rating", "[CLY]_nps", "[CLY]_survey"];
33+
let events = ["[CLY]_session", "[CLY]_crash", "[CLY]_view", "[CLY]_action", "[CLY]_push_action", "[CLY]_push_sent", "[CLY]_star_rating", "[CLY]_nps", "[CLY]_survey", "[CLY]_consent"];
3434
let fromPlugins = plugins.getExpireList();
3535

3636
// predefined drill events

bin/scripts/drill_index.js

+2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ Promise.all([plugins.dbConnection("countly"), plugins.dbConnection("countly_dril
1717
hashes["drill_events" + crypto.createHash('sha1').update("[CLY]_session" + apps[i]._id).digest('hex')] = "[CLY]_session";
1818
hashes["drill_events" + crypto.createHash('sha1').update("[CLY]_crash" + apps[i]._id).digest('hex')] = "[CLY]_crash";
1919
hashes["drill_events" + crypto.createHash('sha1').update("[CLY]_push_action" + apps[i]._id).digest('hex')] = "[CLY]_push_action";
20+
hashes["drill_events" + crypto.createHash('sha1').update("[CLY]_push_sent" + apps[i]._id).digest('hex')] = "[CLY]_push_sent";
21+
hashes["drill_events" + crypto.createHash('sha1').update("[CLY]_consent" + apps[i]._id).digest('hex')] = "[CLY]_consent";
2022
hashes["drill_events" + crypto.createHash('sha1').update("[CLY]_star_rating" + apps[i]._id).digest('hex')] = "[CLY]_star_rating";
2123
hashes["drill_events" + crypto.createHash('sha1').update("[CLY]_nps" + apps[i]._id).digest('hex')] = "[CLY]_nps";
2224
hashes["drill_events" + crypto.createHash('sha1').update("[CLY]_survery" + apps[i]._id).digest('hex')] = "[CLY]_survey";

bin/scripts/expire-data/countly_single_app_expireData.js

+6
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,13 @@ Promise.all([plugins.dbConnection("countly"), plugins.dbConnection("countly_dril
2424
collections.push("drill_events" + crypto.createHash('sha1').update("[CLY]_view" + APP_ID).digest('hex'));
2525
collections.push("drill_events" + crypto.createHash('sha1').update("[CLY]_action" + APP_ID).digest('hex'));
2626
collections.push("drill_events" + crypto.createHash('sha1').update("[CLY]_push_action" + APP_ID).digest('hex'));
27+
collections.push("drill_events" + crypto.createHash('sha1').update("[CLY]_push_sent" + APP_ID).digest('hex'));
2728
collections.push("drill_events" + crypto.createHash('sha1').update("[CLY]_star_rating" + APP_ID).digest('hex'));
29+
collections.push("drill_events" + crypto.createHash('sha1').update("[CLY]_consent" + APP_ID).digest('hex'));
30+
collections.push("drill_events" + crypto.createHash('sha1').update("[CLY]_nps" + APP_ID).digest('hex'));
31+
collections.push("drill_events" + crypto.createHash('sha1').update("[CLY]_survey" + APP_ID).digest('hex'));
32+
collections.push("drill_events" + crypto.createHash('sha1').update("[CLY]_apm_device" + APP_ID).digest('hex'));
33+
collections.push("drill_events" + crypto.createHash('sha1').update("[CLY]_apm_network" + APP_ID).digest('hex'));
2834
db.collection("events").findOne({'_id': db.ObjectID(APP_ID)}, {list: 1}, function(err, eventData) {
2935
if (eventData && eventData.list) {
3036
for (var i = 0; i < eventData.list.length; i++) {

bin/scripts/expire-data/countly_single_app_expireDataBatches.js

+2
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,8 @@ function processDrillCollections(db, drill_db, callback) {
184184
collections.push({'db': drill_db, 'collection': "drill_events" + crypto.createHash('sha1').update("[CLY]_survey" + APP_ID).digest('hex')});
185185
collections.push({'db': drill_db, 'collection': "drill_events" + crypto.createHash('sha1').update("[CLY]_push_action" + APP_ID).digest('hex')});
186186
collections.push({'db': drill_db, 'collection': "drill_events" + crypto.createHash('sha1').update("[CLY]_star_rating" + APP_ID).digest('hex')});
187+
collections.push({'db': drill_db, 'collection': "drill_events" + crypto.createHash('sha1').update("[CLY]_push_sent" + APP_ID).digest('hex')});
188+
collections.push({'db': drill_db, 'collection': "drill_events" + crypto.createHash('sha1').update("[CLY]_consent" + APP_ID).digest('hex')});
187189
db.collection("events").findOne({'_id': db.ObjectID(APP_ID)}, {list: 1}, function(err, eventData) {
188190
if (eventData && eventData.list) {
189191
for (var i = 0; i < eventData.list.length; i++) {

bin/scripts/export-data/drill_collections_anonymized.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ Promise.all([pluginManager.dbConnection("countly"), pluginManager.dbConnection("
7474
var collections = [];
7575
try {
7676
var events = await countlyDb.collection("events").findOne({_id: common.db.ObjectID(appId)});
77-
var list = ["[CLY]_session", "[CLY]_crash", "[CLY]_view", "[CLY]_action", "[CLY]_push_action", "[CLY]_star_rating", "[CLY]_nps", "[CLY]_survey", "[CLY]_apm_network", "[CLY]_apm_device"];
77+
var list = ["[CLY]_session", "[CLY]_crash", "[CLY]_view", "[CLY]_action", "[CLY]_push_action", "[CLY]_push_sent", "[CLY]_star_rating", "[CLY]_nps", "[CLY]_survey", "[CLY]_apm_network", "[CLY]_apm_device", "[CLY]_consent"];
7878

7979
if (events && events.list) {
8080
for (var p = 0; p < events.list.length; p++) {

bin/scripts/export-data/getAllEventsForApp.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ var APP_ID = "5ab0c3ef92938d0e61cf77f4";
1010

1111
var plugins = require("../../../plugins/pluginManager.js");
1212
var crypto = require("crypto");
13-
var internalDrillEvents = ["[CLY]_session", "[CLY]_view", "[CLY]_nps", "[CLY]_crash", "[CLY]_action", "[CLY]_session", "[CLY]_survey", "[CLY]_star_rating", "[CLY]_apm_device", "[CLY]_apm_network", "[CLY]_push_action"];
13+
var internalDrillEvents = ["[CLY]_session", "[CLY]_crash", "[CLY]_view", "[CLY]_action", "[CLY]_push_action", "[CLY]_push_sent", "[CLY]_star_rating", "[CLY]_nps", "[CLY]_survey", "[CLY]_apm_network", "[CLY]_apm_device", "[CLY]_consent"];
1414
var result = [];
1515
plugins.dbConnection("countly").then(function(db) {
1616
db.collection("events").findOne({_id: db.ObjectID(APP_ID)}, {"list": true}, function(err, event) {

bin/scripts/fix-data/recheck_merges.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ Promise.all([pluginManager.dbConnection("countly"), pluginManager.dbConnection("
7272
var collections = [];
7373
try {
7474
var events = await countlyDb.collection("events").findOne({_id: common.db.ObjectID(app_id)});
75-
var list = ["[CLY]_session", "[CLY]_crash", "[CLY]_view", "[CLY]_action", "[CLY]_push_action", "[CLY]_star_rating", "[CLY]_nps", "[CLY]_survey", "[CLY]_apm_network", "[CLY]_apm_device"];
75+
var list = ["[CLY]_session", "[CLY]_crash", "[CLY]_view", "[CLY]_action", "[CLY]_push_action", "[CLY]_push_sent", "[CLY]_star_rating", "[CLY]_nps", "[CLY]_survey", "[CLY]_apm_network", "[CLY]_apm_device", "[CLY]_consent"];
7676

7777
if (events && events.list) {
7878
for (var p = 0; p < events.list.length; p++) {

bin/scripts/fix-data/recheck_merges_new.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ Promise.all([pluginManager.dbConnection("countly"), pluginManager.dbConnection("
5050
var collections = [];
5151
try {
5252
var events = await countlyDb.collection("events").findOne({_id: common.db.ObjectID(app_id)});
53-
var list = ["[CLY]_session", "[CLY]_crash", "[CLY]_view", "[CLY]_action", "[CLY]_push_action", "[CLY]_star_rating", "[CLY]_nps", "[CLY]_survey", "[CLY]_apm_network", "[CLY]_apm_device"];
53+
var list = ["[CLY]_session", "[CLY]_crash", "[CLY]_view", "[CLY]_action", "[CLY]_push_action", "[CLY]_push_sent", "[CLY]_star_rating", "[CLY]_nps", "[CLY]_survey", "[CLY]_apm_network", "[CLY]_apm_device", "[CLY]_consent"];
5454

5555
if (events && events.list) {
5656
for (var p = 0; p < events.list.length; p++) {

bin/scripts/modify-data/delete/delete_user_properties.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ var plugins = require("./../../../../plugins/pluginManager.js");
1717
var asyncjs = require("async");
1818
var crypto = require("crypto");
1919

20-
var internal_events = ["[CLY]_view", "[CLY]_session", "[CLY]_crash", "[CLY]_push_action", "[CLY]_star_rating", "[CLY]_action", "[CLY]_apm_device", "[CLY]_apm_network", "[CLY]_action"];
20+
var internal_events = ["[CLY]_session", "[CLY]_crash", "[CLY]_view", "[CLY]_action", "[CLY]_push_action", "[CLY]_push_sent", "[CLY]_star_rating", "[CLY]_nps", "[CLY]_survey", "[CLY]_apm_network", "[CLY]_apm_device", "[CLY]_consent"];
2121
var unset = {};
2222
unset[PROPERTY] = "";
2323

bin/scripts/modify-data/list_unused_collections.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ function checkEvents(countlyDb, collections, apps, callback) {
2929
}
3030
}
3131

32-
var internalDrillEvents = ["[CLY]_session", "[CLY]_view", "[CLY]_nps", "[CLY]_crash", "[CLY]_action", "[CLY]_session", "[CLY]_survey", "[CLY]_star_rating", "[CLY]_apm_device", "[CLY]_apm_network", "[CLY]_push_action"];
33-
var internalEvents = ["[CLY]_session", "[CLY]_view", "[CLY]_nps", "[CLY]_crash", "[CLY]_action", "[CLY]_session", "[CLY]_survey", "[CLY]_star_rating", "[CLY]_apm_device", "[CLY]_apm_network", "[CLY]_push_action"];
32+
var internalDrillEvents = ["[CLY]_session", "[CLY]_crash", "[CLY]_view", "[CLY]_action", "[CLY]_push_action", "[CLY]_push_sent", "[CLY]_star_rating", "[CLY]_nps", "[CLY]_survey", "[CLY]_apm_network", "[CLY]_apm_device", "[CLY]_consent"];
33+
var internalEvents = ["[CLY]_session", "[CLY]_crash", "[CLY]_view", "[CLY]_action", "[CLY]_push_action", "[CLY]_push_sent", "[CLY]_star_rating", "[CLY]_nps", "[CLY]_survey", "[CLY]_apm_network", "[CLY]_apm_device", "[CLY]_consent"];
3434

3535
if (internalDrillEvents) {
3636
for (let i = 0; i < internalDrillEvents.length; i++) {

frontend/express/app.js

+11-16
Original file line numberDiff line numberDiff line change
@@ -463,22 +463,17 @@ Promise.all([plugins.dbConnection(countlyConfig), plugins.dbConnection("countly_
463463
app.use(cookieParser());
464464
//server theme images
465465
app.use(function(req, res, next) {
466-
if (req.url.indexOf(countlyConfig.path + '/images/') === 0) {
467-
var urlPath = req.url.replace(countlyConfig.path, "");
468-
var theme = req.cookies.theme || curTheme;
469-
if (theme && theme.length) {
470-
fs.exists(__dirname + '/public/themes/' + theme + urlPath, function(exists) {
471-
if (exists) {
472-
res.sendFile(__dirname + '/public/themes/' + theme + urlPath);
473-
}
474-
else {
475-
next();
476-
}
477-
});
478-
}
479-
else { //serve default location
480-
next();
481-
}
466+
var urlPath = req.url.replace(countlyConfig.path, "");
467+
var theme = req.cookies.theme || curTheme;
468+
if (theme && theme.length && (req.url.indexOf(countlyConfig.path + '/images/') === 0 || req.url.indexOf(countlyConfig.path + '/geodata/') === 0)) {
469+
fs.exists(__dirname + '/public/themes/' + theme + urlPath, function(exists) {
470+
if (exists) {
471+
res.sendFile(__dirname + '/public/themes/' + theme + urlPath);
472+
}
473+
else {
474+
next();
475+
}
476+
});
482477
}
483478
else {
484479
next();

frontend/express/public/javascripts/countly/vue/components/helpers.js

+16-1
Original file line numberDiff line numberDiff line change
@@ -597,6 +597,14 @@
597597
}
598598

599599

600+
if (countlyGlobal.plugins.indexOf('compliance-hub') !== -1) {
601+
availableEvents.push({
602+
"label": this.i18n('internal-events.[CLY]_consent'),
603+
"name": "[CLY]_consent",
604+
"options": [ { label: this.i18n('internal-events.[CLY]_consent'), value: '[CLY]_consent' } ]
605+
});
606+
}
607+
600608
if (countlyGlobal.plugins.indexOf('crashes') !== -1) {
601609
availableEvents.push({
602610
"label": this.i18n('internal-events.[CLY]_crash'),
@@ -607,7 +615,14 @@
607615

608616
if (countlyGlobal.plugins.indexOf('push') !== -1) {
609617
availableEvents.push({
610-
"label": 'Push',
618+
"label": 'Push Sent',
619+
"name": "[CLY]_push_sent",
620+
"options": [
621+
{ label: this.i18n('internal-events.[CLY]_push_sent'), value: '[CLY]_push_sent' }
622+
]
623+
});
624+
availableEvents.push({
625+
"label": 'Push Actioned',
611626
"name": "[CLY]_push_action",
612627
"options": [
613628
{ label: this.i18n('internal-events.[CLY]_push_action'), value: '[CLY]_push_action' }

0 commit comments

Comments
 (0)