summaryrefslogtreecommitdiff
path: root/src/node/utils/ExportEtherpad.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/node/utils/ExportEtherpad.js')
-rw-r--r--src/node/utils/ExportEtherpad.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/node/utils/ExportEtherpad.js b/src/node/utils/ExportEtherpad.js
new file mode 100644
index 00000000..46ae0d7a
--- /dev/null
+++ b/src/node/utils/ExportEtherpad.js
@@ -0,0 +1,79 @@
+/**
+ * 2014 John McLear (Etherpad Foundation / McLear Ltd)
+ *
+ * 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.
+ */
+
+
+var async = require("async");
+var db = require("../db/DB").db;
+var ERR = require("async-stacktrace");
+
+exports.getPadRaw = function(padId, callback){
+ async.waterfall([
+ function(cb){
+
+ // Get the Pad
+ db.findKeys("pad:"+padId, null, function(err,padcontent){
+ if(!err){
+ cb(err, padcontent);
+ }
+ })
+ },
+ function(padcontent,cb){
+
+ // Get the Pad available content keys
+ db.findKeys("pad:"+padId+":*", null, function(err,records){
+ if(!err){
+ for (var key in padcontent) { records.push(padcontent[key]);}
+ cb(err, records);
+ }
+ })
+ },
+ function(records, cb){
+ var data = {};
+
+ async.forEachSeries(Object.keys(records), function(key, r){
+
+ // For each piece of info about a pad.
+ db.get(records[key], function(err, entry){
+ data[records[key]] = entry;
+
+ // Get the Pad Authors
+ if(entry.pool && entry.pool.numToAttrib){
+ var authors = entry.pool.numToAttrib;
+ async.forEachSeries(Object.keys(authors), function(k, c){
+ if(authors[k][0] === "author"){
+ var authorId = authors[k][1];
+
+ // Get the author info
+ db.get("globalAuthor:"+authorId, function(e, authorEntry){
+ if(authorEntry && authorEntry.padIDs) authorEntry.padIDs = padId;
+ if(!e) data["globalAuthor:"+authorId] = authorEntry;
+ });
+
+ }
+ // console.log("authorsK", authors[k]);
+ c(null);
+ });
+ }
+ r(null); // callback;
+ });
+ }, function(err){
+ cb(err, data);
+ })
+ }
+ ], function(err, data){
+ callback(null, data);
+ });
+}