|
|
@@ -2,12 +2,13 @@ const db = require("./data.js");
|
|
|
|
|
|
let projectData = [];
|
|
|
|
|
|
-projectData.retrieveProjectImages = async function(id){
|
|
|
+projectData.retrieveProjectImages = async function(id, lang, max){
|
|
|
return new Promise((resolve, reject) => {
|
|
|
db.all(
|
|
|
"SELECT id, project, home, path, video, "
|
|
|
- + db.langQuery("title") + ", " + db.langQuery("description")
|
|
|
- + ", priority FROM project_image WHERE visible=1 AND project=? ORDER BY priority",
|
|
|
+ + db.langQuery("title", lang) + ", " + db.langQuery("description", lang)
|
|
|
+ + ", priority FROM project_image WHERE visible=1 AND project=? ORDER BY priority "
|
|
|
+ + (parseInt(max) > 0 ? " LIMIT " + parseInt(max) : ""),
|
|
|
parseInt(id),
|
|
|
(err, imgs) => {
|
|
|
if (err) reject(err);
|
|
|
@@ -17,75 +18,83 @@ projectData.retrieveProjectImages = async function(id){
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-projectData.getProjects = function() {
|
|
|
+projectData.getProjects = function(lang = null, images = null) {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
projects = new Array();
|
|
|
db.all(
|
|
|
- "SELECT id, permalink, " + db.langQuery("title") + ", " + db.langQuery("description")
|
|
|
- + ", priority, null AS images FROM project WHERE visible=1 ORDER BY priority",
|
|
|
+ "SELECT id, permalink, "
|
|
|
+ + db.langQuery("title", lang) + ", " + db.langQuery("description", lang)
|
|
|
+ + ", priority FROM project WHERE visible=1 ORDER BY priority",
|
|
|
async (err, rows) => {
|
|
|
if(err) reject(err);
|
|
|
else{
|
|
|
- for (var i = 0; i < rows.length; i ++){
|
|
|
- rows[i].images = new Array();
|
|
|
- rows[i].images = await this.retrieveProjectImages(rows[i].id);
|
|
|
- projects.push(rows[i]);
|
|
|
+ if (images == false || parseInt(images) <= 0) resolve(rows);
|
|
|
+ else{
|
|
|
+ for (var i = 0; i < rows.length; i ++){
|
|
|
+ if (images == true || parseInt(images) > 0){
|
|
|
+ rows[i].images = new Array();
|
|
|
+ var max = null;
|
|
|
+ if (parseInt(images) > 0) max = parseInt(images);
|
|
|
+ rows[i].images
|
|
|
+ = await this.retrieveProjectImages(rows[i].id, lang, max);
|
|
|
+ }
|
|
|
+ projects.push(rows[i]);
|
|
|
+ }
|
|
|
+ resolve(projects);
|
|
|
}
|
|
|
- resolve(projects);
|
|
|
}
|
|
|
}
|
|
|
);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-projectData.getProject = function(id) {
|
|
|
+projectData.getProject = function(id, lang = null, images = null) {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
db.get(
|
|
|
- "SELECT id, permalink, " + db.langQuery("title") + ", " + db.langQuery("description")
|
|
|
+ "SELECT id, permalink, " + db.langQuery("title", lang)
|
|
|
+ + ", " + db.langQuery("description", lang)
|
|
|
+ ", priority, null AS images FROM project WHERE visible=1 AND (id=? OR permalink=?)",
|
|
|
parseInt(id), String(id),
|
|
|
async (err, row) => {
|
|
|
if(err) reject(err);
|
|
|
else{
|
|
|
- row.images = new Array();
|
|
|
- row.images.push.apply(row.images, await this.retrieveProjectImages(row.id));
|
|
|
- resolve(row);
|
|
|
+ if (images == false || parseInt(images) <= 0) resolve(row);
|
|
|
+ else{
|
|
|
+ row.images = await this.retrieveProjectImages(row.id, lang, images);
|
|
|
+ resolve(row);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-projectData.getProjectImages = function(id) {
|
|
|
+projectData.getProjectImages = function(id, lang = null, max = null) {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
- console.log("GETTING ALL IMAGES FRO " + id);
|
|
|
db.all(
|
|
|
"SELECT id, project, home, path, video, "
|
|
|
- + db.langQuery("title") + ", " + db.langQuery("description")
|
|
|
+ + db.langQuery("title", lang) + ", " + db.langQuery("description", lang)
|
|
|
+ ", priority FROM project_image WHERE visible = 1 AND project IN "
|
|
|
+ "(SELECT id FROM project WHERE visible = 1 AND (id = ? OR permalink = ?)) "
|
|
|
- + "ORDER BY priority",
|
|
|
+ + "ORDER BY priority " + (parseInt(max) > 0 ? " LIMIT " + parseInt(max) : ""),
|
|
|
parseInt(id), String(id),
|
|
|
(err, imgs) => {
|
|
|
if (err) reject(err);
|
|
|
- else{
|
|
|
- console.log(" TOTAL : " + imgs.length);
|
|
|
- resolve(imgs);
|
|
|
- }
|
|
|
+ else resolve(imgs);
|
|
|
}
|
|
|
);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-projectData.getProjectImage = function(projectId, imageId) {
|
|
|
+projectData.getProjectImage = function(projectId, imageId, lang = null) {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
if (imageId.toLowerCase() == "random"){
|
|
|
db.get(
|
|
|
"SELECT id, project, home, path, video, "
|
|
|
- + db.langQuery("title") + ", " + db.langQuery("description")
|
|
|
+ + db.langQuery("title", lang) + ", " + db.langQuery("description", lang)
|
|
|
+ ", priority FROM project_image WHERE visible=1 AND home=1 AND project IN "
|
|
|
- + "(SELECT id FROM project WHERE visible=1 AND (id=? OR permalink=?)) "
|
|
|
- + "ORDER BY RANDOM() LIMIT 1",
|
|
|
+ + "(SELECT id FROM project WHERE visible=1 AND home=1 AND video=0 "
|
|
|
+ + "AND (id=? OR permalink=?)) ORDER BY RANDOM() LIMIT 1",
|
|
|
parseInt(projectId), String(projectId),
|
|
|
async (err, row) => {
|
|
|
if(err) reject(err);
|
|
|
@@ -96,7 +105,7 @@ projectData.getProjectImage = function(projectId, imageId) {
|
|
|
else{
|
|
|
db.get(
|
|
|
"SELECT id, project, home, path, video, "
|
|
|
- + db.langQuery("title") + ", " + db.langQuery("description")
|
|
|
+ + db.langQuery("title", lang) + ", " + db.langQuery("description", lang)
|
|
|
+ ", priority FROM project_image WHERE id=? AND home=1 AND visible=1 AND project IN "
|
|
|
+ "(SELECT id FROM project WHERE visible=1 AND (id=? OR permalink=?))",
|
|
|
parseInt(projectId), String(projectId),
|