Skip to content

Commit abdc78c

Browse files
authored
SAK-51090 Announcements cc+ don't import adding draft announcements for assignments (#13413)
1 parent bdb2cd2 commit abdc78c

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

announcement/announcement-impl/impl/src/java/org/sakaiproject/announcement/impl/BaseAnnouncementService.java

+27
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@
114114
import org.sakaiproject.util.Validator;
115115
import org.w3c.dom.Document;
116116
import org.w3c.dom.Element;
117+
import org.w3c.dom.NodeList;
117118

118119
/**
119120
* <p>
@@ -1767,6 +1768,32 @@ public boolean approveMessageSender(String userId) {
17671768
return true; // Always approve the sender
17681769
}
17691770

1771+
/**
1772+
* This method is used to check if a message can be merged - it is called with an element from the XML that represents the message
1773+
*
1774+
* <message body="T3BljAwIEFNIEVTVC4=" body-html="PHA+T3BjAwIEFNIEVTVC48L3A+">
1775+
* <header access="channel" date="20250217200655521" draft="true" from="" id="ad7bcb9a-f335-46a7-ad01-907778fb9df5" message_order="2"
1776+
* subject="Assignment: Open Date for ''HW2''"/>
1777+
* <properties>
1778+
* <property enc="BASE64" list="list" name="noti_history" value="MjAyNSaXzA=" B64Decoded="2025-02-17T20:06:55.538289588Z_0"/>
1779+
* <property enc="BASE64" name="assignmentReference" value="L2Fzc2e8/5fab8f09-e029-4672-b478-43cfa3e17d64"/>
1780+
* </properties>
1781+
* </message>
1782+
*/
1783+
@Override
1784+
public boolean checkAllowMergeElement(Element element) {
1785+
NodeList propertyList = element.getElementsByTagName("property");
1786+
for (int i = 0; i < propertyList.getLength(); i++) {
1787+
Element propertyElement = (Element) propertyList.item(i);
1788+
String name = propertyElement.getAttribute("name");
1789+
if (name.equals("assignmentReference")) {
1790+
log.debug("Assignment announcement found, not merging");
1791+
return false;
1792+
}
1793+
}
1794+
return true;
1795+
}
1796+
17701797
@Override
17711798
public String getToolTitle(String url) {
17721799
return getToolTitle();

message/message-api/api/src/java/org/sakaiproject/message/api/MessageService.java

+10
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
import java.util.List;
3131
import java.util.Map;
32+
import org.w3c.dom.Element;
3233

3334
/**
3435
* <p>
@@ -335,5 +336,14 @@ public List<Message> getMessages(String channelRef, Time afterDate, int limitedT
335336
*/
336337
public String getToolTitle(String url);
337338

339+
/**
340+
* Allows a service extending MessageService to check if a message can be merged
341+
*
342+
* @param element
343+
* The element to check
344+
* @return true if the message can be merged, false otherwise
345+
*/
346+
public boolean checkAllowMergeElement(Element element);
347+
338348
} // MessageService
339349

message/message-util/util/src/java/org/sakaiproject/message/util/BaseMessage.java

+16
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,17 @@ public boolean approveMessageSender(String userId) {
371371
return false;
372372
}
373373

374+
/**
375+
* Allows a service extending BaseMessageService to check if a message can be merged
376+
*
377+
* @param element
378+
* The element to check
379+
* @return true if the message can be merged, false otherwise
380+
*/
381+
public boolean checkAllowMergeElement(Element element) {
382+
return true;
383+
}
384+
374385
/**
375386
* Access the internal reference which can be used to access the message from within the system.
376387
*
@@ -1967,6 +1978,11 @@ else if (element2.getTagName().equals(SYNOPTIC_TOOL))
19671978
}
19681979
}
19691980
}
1981+
1982+
// Once last moment to consult the extending service to allow or disallow merging
1983+
if ( goAhead ) {
1984+
goAhead = checkAllowMergeElement(element3);
1985+
}
19701986
// merge if ok
19711987
if (goAhead)
19721988
{

0 commit comments

Comments
 (0)