Skip to content

Commit

Permalink
fixed issues around reports after parent posts have been deleted, mer…
Browse files Browse the repository at this point in the history
…ged or approved; reports will be auto-deleted going forward
  • Loading branch information
albogdano committed Mar 7, 2024
1 parent 5673552 commit 25377ce
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -278,6 +278,7 @@ public String modApprove(@PathVariable String id, HttpServletRequest req) {
showPost.setType(Utils.type(Reply.class));
pc.create(showPost);
}
utils.deleteReportsAfterModAction(showPost);
}
return "redirect:" + ((showPost == null) ? QUESTIONSLINK : showPost.getPostLinkForRedirect());
}
Expand Down Expand Up @@ -397,6 +398,7 @@ public String delete(@PathVariable String id, HttpServletRequest req, Model mode
if (!showPost.isReply()) {
if ((utils.isMine(showPost, authUser) && utils.canDelete(showPost, authUser)) || utils.isMod(authUser)) {
showPost.delete();
utils.deleteReportsAfterModAction(showPost);
model.addAttribute("deleted", true);
return "redirect:" + QUESTIONSLINK + "?success=true&code=16";
}
Expand All @@ -408,6 +410,7 @@ public String delete(@PathVariable String id, HttpServletRequest req, Model mode
parent.setAnswerid(showPost.getId().equals(parent.getAnswerid()) ? "" : parent.getAnswerid());
parent.update();
showPost.delete();
utils.deleteReportsAfterModAction(showPost);
model.addAttribute("deleted", true);
}
}
Expand Down Expand Up @@ -461,6 +464,7 @@ public String merge(@PathVariable String id, @RequestParam String id2, HttpServl
});
targetPost.update();
showPost.delete();
utils.deleteReportsAfterModAction(showPost);
}
return "redirect:" + targetPost.getPostLinkForRedirect();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@
import com.erudika.scoold.core.UnapprovedReply;
import com.erudika.scoold.utils.ScooldUtils;
import java.io.IOException;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -215,7 +214,7 @@ public String approveItem(@PathVariable String id, HttpServletRequest req, HttpS
questionController.modApprove(report.getParentid(), req);
report.setClosed(true);
report.setDescription(report.getDescription() + " ");
report.update();
report.delete();
}
if (!utils.isAjaxRequest(req)) {
return "redirect:" + REPORTSLINK;
Expand Down Expand Up @@ -244,7 +243,7 @@ public String deleteAll(HttpServletRequest req, HttpServletResponse res) {
Profile authUser = utils.getAuthUser(req);
if (utils.isAdmin(authUser)) {
pc.readEverything(pager -> {
pager.setSelect(Collections.singletonList(Config._ID));
//pager.setSelect(Collections.singletonList(Config._ID));
List<Sysprop> reports = pc.findQuery(Utils.type(Report.class), "*", pager);
pc.deleteAll(reports.stream().map(r -> r.getId()).collect(Collectors.toList()));
return reports;
Expand All @@ -261,7 +260,7 @@ public String cleanupUnapproved(HttpServletRequest req, HttpServletResponse res)
if (utils.isAdmin(authUser)) {
List<String> toDelete = new LinkedList<>();
pc.readEverything(pager -> {
pager.setSelect(Collections.singletonList(Config._ID));
//pager.setSelect(Collections.singletonList(Config._ID));
List<ParaObject> objects = pc.findQuery("", Config._TYPE + ":" + Utils.type(UnapprovedQuestion.class) +
" OR " + Config._TYPE + ":" + Utils.type(UnapprovedReply.class), pager);
toDelete.addAll(objects.stream().map(r -> r.getId()).collect(Collectors.toList()));
Expand Down
12 changes: 12 additions & 0 deletions src/main/java/com/erudika/scoold/utils/ScooldUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -841,6 +841,18 @@ public void sendCommentNotifications(Post parentPost, Comment comment, Profile c
}
}

public void deleteReportsAfterModAction(Post parent) {
if (parent != null) {
List<String> toDelete = new LinkedList<>();
pc.readEverything(pager -> {
List<ParaObject> objects = pc.getChildren(parent, Utils.type(Report.class), pager);
toDelete.addAll(objects.stream().map(r -> r.getId()).collect(Collectors.toList()));
return objects;
});
pc.deleteAll(toDelete);
}
}

private void createReportCopyOfNotificiation(String author, String url, String subject, String template, boolean awaitingApproval) {
if (CONF.notificationsAsReportsEnabled() && !awaitingApproval) {
Report rep = new Report();
Expand Down

0 comments on commit 25377ce

Please sign in to comment.