2021-01-21 21:06:52 +00:00
|
|
|
'use strict';
|
2014-12-29 21:13:49 +01:00
|
|
|
/**
|
2014-12-30 00:12:26 +01:00
|
|
|
* 2014 John McLear (Etherpad Foundation / McLear Ltd)
|
2014-12-29 21:13:49 +01:00
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS-IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
*/
|
|
|
|
|
2022-04-13 03:57:47 -04:00
|
|
|
const authorManager = require('../db/AuthorManager');
|
2021-01-21 21:06:52 +00:00
|
|
|
const hooks = require('../../static/js/pluginfw/hooks');
|
2022-04-13 03:57:47 -04:00
|
|
|
const padManager = require('../db/PadManager');
|
2014-12-29 21:13:49 +01:00
|
|
|
|
2021-06-29 19:13:10 +02:00
|
|
|
exports.getPadRaw = async (padId, readOnlyId) => {
|
2022-04-13 03:57:47 -04:00
|
|
|
const pad = await padManager.getPad(padId);
|
|
|
|
const pfx = `pad:${readOnlyId || padId}`;
|
|
|
|
const data = {[pfx]: pad};
|
|
|
|
for (const authorId of pad.getAllAuthors()) {
|
|
|
|
const authorEntry = await authorManager.getAuthor(authorId);
|
2022-04-13 04:21:15 -04:00
|
|
|
if (!authorEntry) continue;
|
2022-04-13 03:57:47 -04:00
|
|
|
data[`globalAuthor:${authorId}`] = authorEntry;
|
2022-04-13 04:21:15 -04:00
|
|
|
if (!authorEntry.padIDs) continue;
|
|
|
|
authorEntry.padIDs = readOnlyId || padId;
|
|
|
|
}
|
2022-04-13 03:57:47 -04:00
|
|
|
for (let i = 0; i <= pad.head; ++i) data[`${pfx}:revs:${i}`] = await pad.getRevision(i);
|
|
|
|
for (let i = 0; i <= pad.chatHead; ++i) data[`${pfx}:chat:${i}`] = await pad.getChatMessage(i);
|
2020-11-10 01:20:05 -05:00
|
|
|
const prefixes = await hooks.aCallAll('exportEtherpadAdditionalContent');
|
|
|
|
await Promise.all(prefixes.map(async (prefix) => {
|
2022-04-13 03:57:47 -04:00
|
|
|
data[`${prefix}:${readOnlyId || padId}`] = await pad.db.get(`${prefix}:${padId}`);
|
2020-11-10 01:20:05 -05:00
|
|
|
}));
|
2019-01-31 08:55:36 +00:00
|
|
|
return data;
|
2020-11-23 13:24:19 -05:00
|
|
|
};
|