ghost 4.47.0 → 4.47.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core/server/api/canary/utils/serializers/input/members.js +6 -0
- package/core/server/data/importer/importers/data/posts.js +5 -0
- package/core/server/data/migrations/versions/4.47/2022-05-03-15-30-update-newsletter-sending-options.js +1 -1
- package/core/server/services/mega/mega.js +4 -6
- package/core/server/services/posts/posts-service.js +3 -1
- package/package.json +2 -2
- package/yarn.lock +4 -4
|
@@ -6,6 +6,7 @@ const mobiledocLib = require('../../../../lib/mobiledoc');
|
|
|
6
6
|
const validator = require('@tryghost/validator');
|
|
7
7
|
const postsMetaSchema = require('../../../schema').tables.posts_meta;
|
|
8
8
|
const metaAttrs = _.keys(_.omit(postsMetaSchema, ['id']));
|
|
9
|
+
const ignoredColumns = ['newsletter_id'];
|
|
9
10
|
|
|
10
11
|
class PostsImporter extends BaseImporter {
|
|
11
12
|
constructor(allDataFromFile) {
|
|
@@ -42,6 +43,10 @@ class PostsImporter extends BaseImporter {
|
|
|
42
43
|
}
|
|
43
44
|
delete obj.send_email_when_published;
|
|
44
45
|
}
|
|
46
|
+
|
|
47
|
+
ignoredColumns.forEach((column) => {
|
|
48
|
+
delete obj[column];
|
|
49
|
+
});
|
|
45
50
|
});
|
|
46
51
|
}
|
|
47
52
|
|
|
@@ -22,7 +22,7 @@ module.exports = createTransactionalMigration(
|
|
|
22
22
|
await knex('newsletters')
|
|
23
23
|
.update({
|
|
24
24
|
// CASE: members_from_address is 'noreply' - we leave it as null to maintain fallback behaviour
|
|
25
|
-
sender_email: !fromAddress || fromAddress.value === 'noreply' ?
|
|
25
|
+
sender_email: !fromAddress || fromAddress.value === 'noreply' ? null : fromAddress.value,
|
|
26
26
|
sender_reply_to: replyTo ? replyTo.value : undefined
|
|
27
27
|
})
|
|
28
28
|
.whereNull('sender_email')
|
|
@@ -214,12 +214,10 @@ const addEmail = async (postModel, options) => {
|
|
|
214
214
|
}
|
|
215
215
|
|
|
216
216
|
const knexOptions = _.pick(options, ['transacting', 'forUpdate']);
|
|
217
|
-
const filterOptions =
|
|
217
|
+
const filterOptions = {...knexOptions, limit: 1};
|
|
218
|
+
|
|
219
|
+
const newsletter = await postModel.related('newsletter').fetch({require: true, ..._.pick(options, ['transacting'])});
|
|
218
220
|
|
|
219
|
-
let newsletter;
|
|
220
|
-
if (labsService.isSet('multipleNewsletters')) {
|
|
221
|
-
newsletter = await postModel.related('newsletter').fetch(Object.assign({}, {require: false}, _.pick(options, ['transacting'])));
|
|
222
|
-
}
|
|
223
221
|
const emailRecipientFilter = postModel.get('email_recipient_filter');
|
|
224
222
|
filterOptions.filter = transformEmailRecipientFilter(emailRecipientFilter, {errorProperty: 'email_recipient_filter'}, newsletter);
|
|
225
223
|
|
|
@@ -257,7 +255,7 @@ const addEmail = async (postModel, options) => {
|
|
|
257
255
|
submitted_at: moment().toDate(),
|
|
258
256
|
track_opens: !!settingsCache.get('email_track_opens'),
|
|
259
257
|
recipient_filter: emailRecipientFilter,
|
|
260
|
-
newsletter_id:
|
|
258
|
+
newsletter_id: newsletter.id
|
|
261
259
|
}, knexOptions);
|
|
262
260
|
} else {
|
|
263
261
|
return existing;
|
|
@@ -30,6 +30,8 @@ class PostsService {
|
|
|
30
30
|
}
|
|
31
31
|
} else {
|
|
32
32
|
// Set the newsletter_id if it isn't passed to the API
|
|
33
|
+
// NOTE: this option is ignored if the newsletter_id is already set on the post.
|
|
34
|
+
// Never use frame.options.newsletter_id to do actual logic. Use model.newsletter_id after the edit.
|
|
33
35
|
const newsletters = await this.models.Newsletter.findPage({filter: 'status:active', limit: 1, columns: ['id']}, {transacting: frame.options.transacting});
|
|
34
36
|
if (newsletters.data.length > 0) {
|
|
35
37
|
frame.options.newsletter_id = newsletters.data[0].id;
|
|
@@ -85,7 +87,7 @@ class PostsService {
|
|
|
85
87
|
let postEmail = model.relations.email;
|
|
86
88
|
|
|
87
89
|
if (!postEmail) {
|
|
88
|
-
const email = await this.mega.addEmail(model,
|
|
90
|
+
const email = await this.mega.addEmail(model, {...frame.options, apiVersion: this.apiVersion});
|
|
89
91
|
model.set('email', email);
|
|
90
92
|
} else if (postEmail && postEmail.get('status') === 'failed') {
|
|
91
93
|
const email = await this.mega.retryFailedEmail(postEmail);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ghost",
|
|
3
|
-
"version": "4.47.
|
|
3
|
+
"version": "4.47.1",
|
|
4
4
|
"description": "The professional publishing platform",
|
|
5
5
|
"author": "Ghost Foundation",
|
|
6
6
|
"homepage": "https://ghost.org",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"@tryghost/kg-default-cards": "5.16.2",
|
|
81
81
|
"@tryghost/kg-markdown-html-renderer": "5.1.5",
|
|
82
82
|
"@tryghost/kg-mobiledoc-html-renderer": "5.3.5",
|
|
83
|
-
"@tryghost/limit-service": "1.1.
|
|
83
|
+
"@tryghost/limit-service": "1.1.2",
|
|
84
84
|
"@tryghost/logging": "2.1.8",
|
|
85
85
|
"@tryghost/magic-link": "1.0.24",
|
|
86
86
|
"@tryghost/member-events": "0.4.4",
|
package/yarn.lock
CHANGED
|
@@ -2082,10 +2082,10 @@
|
|
|
2082
2082
|
dependencies:
|
|
2083
2083
|
semver "^7.3.5"
|
|
2084
2084
|
|
|
2085
|
-
"@tryghost/limit-service@1.1.
|
|
2086
|
-
version "1.1.
|
|
2087
|
-
resolved "https://registry.yarnpkg.com/@tryghost/limit-service/-/limit-service-1.1.
|
|
2088
|
-
integrity sha512-
|
|
2085
|
+
"@tryghost/limit-service@1.1.2":
|
|
2086
|
+
version "1.1.2"
|
|
2087
|
+
resolved "https://registry.yarnpkg.com/@tryghost/limit-service/-/limit-service-1.1.2.tgz#248f5b1c5383d302a6e29e8bcd2948ff9eb9ab4f"
|
|
2088
|
+
integrity sha512-aOUVnNvhYDANqtx+2pS0c0RADG39QDQ5tB7CLPjpcz2B6Nsc1fg4dEJeXU8fI1JT0YpMDRSliiNRh0/MMkozbA==
|
|
2089
2089
|
dependencies:
|
|
2090
2090
|
"@tryghost/errors" "^1.2.1"
|
|
2091
2091
|
lodash "^4.17.21"
|