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.
@@ -47,6 +47,12 @@ module.exports = {
47
47
  this.browse(...arguments);
48
48
  },
49
49
 
50
+ exportCSV() {
51
+ debug('exportCSV');
52
+
53
+ this.browse(...arguments);
54
+ },
55
+
50
56
  add(apiConfig, frame) {
51
57
  debug('add');
52
58
  if (frame.data.members[0].labels) {
@@ -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' ? undefined : fromAddress.value,
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 = Object.assign({}, knexOptions, {limit: 1});
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: options.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, Object.assign({}, frame.options, {apiVersion: this.apiVersion}));
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.0",
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.0",
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.0":
2086
- version "1.1.0"
2087
- resolved "https://registry.yarnpkg.com/@tryghost/limit-service/-/limit-service-1.1.0.tgz#12af2d0b8242212871be8cf893e2563466c25ec2"
2088
- integrity sha512-CC0/Ly1KIVIiYMKwqWfgKPkFoGssyyPjwcdS4XzJ3KyqdwEckzPX1e2jZMzptZlMqDuAa4uZ0xSf5VH4YZ71+Q==
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"