Skip to content

Commit 08f9dbe

Browse files
authored
Remove deprecated feature : R report sharing (#7795)
## Rationale Removing this feature. ## Tasks 📍 - [x] Claude Code Review - [x] Manual Testing @labkey-adam
1 parent b4d88a1 commit 08f9dbe

13 files changed

Lines changed: 1 addition & 311 deletions

File tree

api/src/org/labkey/api/query/QueryView.java

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import org.jetbrains.annotations.NotNull;
2727
import org.jetbrains.annotations.Nullable;
2828
import org.labkey.api.action.ApiQueryResponse;
29-
import org.labkey.api.admin.notification.NotificationService;
3029
import org.labkey.api.attachments.ByteArrayAttachmentFile;
3130
import org.labkey.api.compliance.ComplianceService;
3231
import org.labkey.api.data.AbstractTableInfo;
@@ -1132,17 +1131,6 @@ protected ActionButton createPrintButton()
11321131
return btnPrint;
11331132
}
11341133

1135-
private ActionButton createShareButton(@NotNull ActionURL url, @Nullable String tooltip)
1136-
{
1137-
ActionButton shareBtn = new ActionButton(url, "Share");
1138-
shareBtn.setActionType(ActionButton.Action.LINK);
1139-
shareBtn.setIconCls("share");
1140-
if (tooltip != null)
1141-
shareBtn.setTooltip(tooltip);
1142-
1143-
return shareBtn;
1144-
}
1145-
11461134
/**
11471135
* Make all links rendered in columns target the specified browser window/tab
11481136
*/
@@ -2026,23 +2014,9 @@ private void renderReportView(HttpServletRequest request, HttpServletResponse re
20262014

20272015
ButtonBar bar = new ButtonBar();
20282016
populateReportButtonBar(bar);
2029-
2030-
if (_report.allowShareButton(getUser(), getContainer()))
2031-
{
2032-
ActionURL shareUrl = PageFlowUtil.urlProvider(ReportUrls.class).urlShareReport(getContainer(), _report);
2033-
if (shareUrl != null)
2034-
bar.add(createShareButton(shareUrl, "Share report"));
2035-
}
2036-
20372017
dr.setButtonBar(bar);
20382018
}
20392019
dr.render(ctx, request, response);
2040-
2041-
// if the user is viewing a shared report, remove any notifications related to it
2042-
NotificationService.get().removeNotifications(
2043-
getContainer(), _report.getDescriptor().getReportId().toString(),
2044-
Collections.singletonList(Report.SHARE_REPORT_TYPE), getUser().getUserId()
2045-
);
20462020
}
20472021
catch (Exception e)
20482022
{

api/src/org/labkey/api/reports/Report.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,6 @@
4545

4646
public interface Report extends AttachmentParent, ThumbnailProvider
4747
{
48-
String SHARE_REPORT_TYPE = "Report.ShareReport";
49-
5048
Report clone();
5149
String getType();
5250
String getTypeDescription();
@@ -84,11 +82,6 @@ public interface Report extends AttachmentParent, ThumbnailProvider
8482
boolean canShare(User user, Container container);
8583
boolean canShare(User user, Container container, List<ValidationError> errors);
8684

87-
/**
88-
* Determine if this report type allows sharing via the shareReport action.
89-
*/
90-
boolean allowShareButton(User user, Container container);
91-
9285
/**
9386
* Determines whether the user can delete this report
9487
*/

api/src/org/labkey/api/reports/ReportService.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@
4646

4747
public interface ReportService
4848
{
49-
String R_REPORT_CUSTOM_SHARING = "rReportCustomSharing";
50-
5149
// this logger is to enable all report loggers in the admin ui (org.labkey.api.reports.*)
5250
@SuppressWarnings({"UnusedDeclaration", "SSBasedInspection"})
5351
Logger packageLogger = LogManager.getLogger(ReportService.class.getPackageName());

api/src/org/labkey/api/reports/report/AbstractReport.java

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@
2020
import org.labkey.api.admin.FolderExportContext;
2121
import org.labkey.api.attachments.Attachment;
2222
import org.labkey.api.attachments.AttachmentFile;
23-
import org.labkey.api.attachments.AttachmentService;
2423
import org.labkey.api.attachments.AttachmentParentType;
24+
import org.labkey.api.attachments.AttachmentService;
2525
import org.labkey.api.attachments.InputStreamAttachmentFile;
2626
import org.labkey.api.data.Container;
2727
import org.labkey.api.data.ContainerManager;
@@ -476,13 +476,6 @@ public boolean canShare(User user, Container container)
476476
return canShare(user, container, new ArrayList<>());
477477
}
478478

479-
@Override
480-
public boolean allowShareButton(User user, Container container)
481-
{
482-
// See RReport, currently only allowing ShareReportAction for that report type
483-
return false;
484-
}
485-
486479
@Override
487480
public boolean canDelete(User user, Container container)
488481
{

api/src/org/labkey/api/reports/report/ReportUrls.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ public interface ReportUrls extends UrlProvider
4040
ActionURL urlReportSections(Container c);
4141
ActionURL urlManageViews(Container c);
4242
ActionURL urlExportCrosstab(Container c);
43-
ActionURL urlShareReport(Container c, Report r);
4443
// Thumbnail or icon, depending on ImageType
4544
ActionURL urlImage(Container c, Report r, ThumbnailService.ImageType type, @Nullable Integer revision);
4645
ActionURL urlAttachmentReport(Container c, ActionURL returnUrl);

api/src/org/labkey/api/reports/report/r/RReport.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
import org.labkey.api.rstudio.RStudioService;
4747
import org.labkey.api.security.SecurityManager;
4848
import org.labkey.api.security.User;
49-
import org.labkey.api.settings.OptionalFeatureService;
5049
import org.labkey.api.thumbnail.Thumbnail;
5150
import org.labkey.api.util.FileUtil;
5251
import org.labkey.api.util.PageFlowUtil;
@@ -75,8 +74,6 @@
7574
import java.util.Map;
7675
import java.util.Set;
7776

78-
import static org.labkey.api.reports.ReportService.R_REPORT_CUSTOM_SHARING;
79-
8077
public class RReport extends ExternalScriptEngineReport
8178
{
8279
public static final String TYPE = "ReportService.rReport";
@@ -939,17 +936,6 @@ public String getEditAreaSyntax()
939936
return "text/x-rsrc";
940937
}
941938

942-
@Override
943-
public boolean allowShareButton(User user, Container container)
944-
{
945-
if (OptionalFeatureService.get().isFeatureEnabled(R_REPORT_CUSTOM_SHARING))
946-
{
947-
// allow sharing if this R report is a DB report and the user canShare
948-
return !getDescriptor().isModuleBased() && canShare(user, container);
949-
}
950-
return false;
951-
}
952-
953939
public static class TestCase extends Assert
954940
{
955941
@Test

api/src/org/labkey/api/reports/report/view/ajaxScriptReportDesigner.jsp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@
6969
List<String> includedReports = bean.getIncludedReports();
7070
String helpHtml = report.getDesignerHelpHtml();
7171
boolean readOnly = bean.isReadOnly() || !report.canEdit(user, c);
72-
boolean allowShareReport = report.allowShareButton(user, c);
7372
Mode mode = bean.getMode();
7473
boolean sourceAndHelp = mode.showSourceAndHelp(ctx) || bean.isSourceTabVisible();
7574
String knitrFormat = bean.getKnitrFormat() != null ? bean.getKnitrFormat() : "None";
@@ -188,7 +187,6 @@
188187
var panel = Ext4.create('LABKEY.ext4.ScriptReportPanel', {
189188
renderTo : <%=q(renderId)%>,
190189
readOnly : <%=readOnly%>,
191-
allowShareReport: <%=allowShareReport%>,
192190
minHeight : 500,
193191
minWidth : 500,
194192
initialURL : <%=q(initialViewURL)%>,

query/src/org/labkey/query/QueryModule.java

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,6 @@
7777
import org.labkey.api.security.roles.PlatformDeveloperRole;
7878
import org.labkey.api.security.roles.Role;
7979
import org.labkey.api.security.roles.RoleManager;
80-
import org.labkey.api.settings.OptionalFeatureFlag;
8180
import org.labkey.api.settings.OptionalFeatureService;
8281
import org.labkey.api.stats.AnalyticsProviderRegistry;
8382
import org.labkey.api.stats.SummaryStatisticRegistry;
@@ -149,7 +148,6 @@
149148
import java.util.function.Supplier;
150149

151150
import static org.labkey.api.query.QueryService.USE_ROW_BY_ROW_UPDATE;
152-
import static org.labkey.api.reports.ReportService.R_REPORT_CUSTOM_SHARING;
153151

154152
public class QueryModule extends DefaultModule
155153
{
@@ -352,14 +350,6 @@ public void doStartup(ModuleContext moduleContext)
352350
if (null != trustedAnalystRole)
353351
trustedAnalystRole.addPermission(EditQueriesPermission.class);
354352

355-
OptionalFeatureService.get().addFeatureFlag(new OptionalFeatureFlag(R_REPORT_CUSTOM_SHARING,
356-
"Restore custom R report sharing",
357-
"Allows R reports to be shared on a per user basis. This option will be removed in LabKey Server 26.7.",
358-
false,
359-
false,
360-
OptionalFeatureService.FeatureType.Deprecated)
361-
);
362-
363353
McpService.get().register(new QueryMcp());
364354
QueryUserSchema.register(this);
365355
}

query/src/org/labkey/query/reports/ReportsController.java

Lines changed: 0 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
import org.labkey.api.action.ReturnUrlForm;
4242
import org.labkey.api.action.SimpleViewAction;
4343
import org.labkey.api.action.SpringActionController;
44-
import org.labkey.api.admin.notification.NotificationService;
4544
import org.labkey.api.attachments.Attachment;
4645
import org.labkey.api.attachments.AttachmentFile;
4746
import org.labkey.api.attachments.AttachmentForm;
@@ -81,7 +80,6 @@
8180
import org.labkey.api.reports.model.ViewCategory;
8281
import org.labkey.api.reports.model.ViewCategoryManager;
8382
import org.labkey.api.reports.model.ViewInfo;
84-
import org.labkey.api.reports.permissions.ShareReportPermission;
8583
import org.labkey.api.reports.report.AbstractReport;
8684
import org.labkey.api.reports.report.AbstractReportIdentifier;
8785
import org.labkey.api.reports.report.ModuleReportIdentifier;
@@ -112,7 +110,6 @@
112110
import org.labkey.api.security.RequiresNoPermission;
113111
import org.labkey.api.security.RequiresPermission;
114112
import org.labkey.api.security.RequiresSiteAdmin;
115-
import org.labkey.api.security.SecurityManager;
116113
import org.labkey.api.security.User;
117114
import org.labkey.api.security.UserManager;
118115
import org.labkey.api.security.permissions.AdminOperationsPermission;
@@ -123,7 +120,6 @@
123120
import org.labkey.api.study.Dataset;
124121
import org.labkey.api.study.Study;
125122
import org.labkey.api.study.StudyService;
126-
import org.labkey.api.study.StudyUrls;
127123
import org.labkey.api.study.reports.CrosstabReport;
128124
import org.labkey.api.thumbnail.BaseThumbnailAction;
129125
import org.labkey.api.thumbnail.ThumbnailProvider;
@@ -281,16 +277,6 @@ public ActionURL urlExportCrosstab(Container c)
281277
return new ActionURL(CrosstabExportAction.class, c);
282278
}
283279

284-
@Override
285-
public ActionURL urlShareReport(Container c, Report r)
286-
{
287-
if (r.getDescriptor().getReportId() == null)
288-
return null;
289-
ActionURL url = new ActionURL(ShareReportAction.class, c);
290-
url.addParameter("reportId", r.getDescriptor().getReportId().toString());
291-
return url;
292-
}
293-
294280
@Override
295281
public ActionURL urlImage(Container c, Report r, ImageType type, @Nullable Integer revision)
296282
{
@@ -1036,115 +1022,6 @@ public void addNavTrail(NavTree root)
10361022
}
10371023
}
10381024

1039-
@RequiresPermission(ShareReportPermission.class)
1040-
public static class ShareReportAction extends FormViewAction<ShareReportForm>
1041-
{
1042-
Report _report = null;
1043-
List<User> _validRecipients = new ArrayList<>();
1044-
1045-
@Override
1046-
public ModelAndView getView(ShareReportForm form, boolean reshow, BindException errors)
1047-
{
1048-
return new JspView<>("/org/labkey/query/reports/view/shareReport.jsp", form, errors);
1049-
}
1050-
1051-
@Override
1052-
public void validateCommand(ShareReportForm form, Errors errors)
1053-
{
1054-
_validRecipients = SecurityManager.parseRecipientListForContainer(getContainer(), form.getRecipientList(), errors);
1055-
}
1056-
1057-
@Override
1058-
public boolean handlePost(ShareReportForm form, BindException errors) throws Exception
1059-
{
1060-
if (null != form.getReportId())
1061-
_report = form.getReportId().getReport(getViewContext());
1062-
1063-
if (!errors.hasErrors() && !_validRecipients.isEmpty() && _report != null)
1064-
{
1065-
for (User recipient : _validRecipients)
1066-
{
1067-
NotificationService.get().sendMessageForRecipient(
1068-
getContainer(), getUser(), recipient,
1069-
form.getMessageSubject(), form.getMessageBody(), _report.getRunReportURL(getViewContext()),
1070-
form.getReportId().toString(), Report.SHARE_REPORT_TYPE
1071-
);
1072-
1073-
// if the report is already public, send the notification but don't update the policy
1074-
if (!ReportDescriptor.REPORT_ACCESS_PUBLIC.equals(_report.getDescriptor().getAccess()))
1075-
ReportUtil.updateReportSecurityPolicy(getViewContext(), _report, recipient.getUserId(), true);
1076-
1077-
String auditMsg = "The following report was shared: recipient: " + recipient.getName() + " (" + recipient.getUserId() + ")"
1078-
+ ", reportId: " + _report.getDescriptor().getReportId()
1079-
+ ", name: " + _report.getDescriptor().getReportName();
1080-
StudyService.get().addStudyAuditEvent(getContainer(), getUser(), auditMsg);
1081-
}
1082-
}
1083-
1084-
return !errors.hasErrors();
1085-
}
1086-
1087-
@Override
1088-
public URLHelper getSuccessURL(ShareReportForm form)
1089-
{
1090-
if (_report != null && getContainer().hasPermission(getUser(), AdminPermission.class))
1091-
{
1092-
return urlProvider(StudyUrls.class).getManageReportPermissions(getContainer()).
1093-
addParameter(ReportDescriptor.Prop.reportId, _report.getDescriptor().getReportId().toString());
1094-
}
1095-
1096-
return form.getReturnActionURL(form.getDefaultUrl(getContainer()));
1097-
}
1098-
1099-
@Override
1100-
public void addNavTrail(NavTree root)
1101-
{
1102-
root.addChild("Share Report");
1103-
}
1104-
}
1105-
1106-
public static class ShareReportForm extends ReportDesignBean<Report>
1107-
{
1108-
private String _recipientList;
1109-
private String _messageSubject;
1110-
private String _messageBody;
1111-
1112-
public String getRecipientList()
1113-
{
1114-
return _recipientList;
1115-
}
1116-
1117-
public void setRecipientList(String recipientList)
1118-
{
1119-
_recipientList = recipientList;
1120-
}
1121-
1122-
public String getMessageSubject()
1123-
{
1124-
return _messageSubject;
1125-
}
1126-
1127-
public void setMessageSubject(String messageSubject)
1128-
{
1129-
_messageSubject = messageSubject;
1130-
}
1131-
1132-
public String getMessageBody()
1133-
{
1134-
return _messageBody;
1135-
}
1136-
1137-
public void setMessageBody(String messageBody)
1138-
{
1139-
_messageBody = messageBody;
1140-
}
1141-
1142-
public ActionURL getDefaultUrl(Container container)
1143-
{
1144-
return new ActionURL(ManageViewsAction.class, container);
1145-
}
1146-
}
1147-
11481025
@RequiresPermission(ReadPermission.class)
11491026
public class DetailsAction extends SimpleViewAction<ReportDesignBean<?>>
11501027
{

query/src/org/labkey/query/reports/view/reportDetails.jsp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
<%@ page import="org.labkey.api.reports.model.ReportPropsManager" %>
2020
<%@ page import="org.labkey.api.reports.report.ModuleReportDescriptor" %>
2121
<%@ page import="org.labkey.api.reports.report.ReportDescriptor" %>
22-
<%@ page import="org.labkey.api.reports.report.ReportUrls" %>
2322
<%@ page import="org.labkey.api.reports.report.view.ReportDesignBean" %>
2423
<%@ page import="org.labkey.api.reports.report.view.ReportUtil" %>
2524
<%@ page import="org.labkey.api.security.UserManager" %>
@@ -50,7 +49,6 @@
5049
5150
ActionURL vewReportURL = report.getRunReportURL(context);
5251
ActionURL editReportURL = report.getEditReportURL(context, getActionURL());
53-
ActionURL shareReportURL = urlProvider(ReportUrls.class).urlShareReport(getContainer(), report);
5452
5553
String type = report.getTypeDescription();
5654
String category = "";
@@ -253,7 +251,6 @@
253251
<td colspan="2">
254252
<%= button("View Report").href(vewReportURL).target(report.getRunReportTarget()) %>
255253
<%= report.canEdit(getUser(), getContainer()) && (editReportURL != null) ? button("Edit Report").href(editReportURL) : HtmlString.EMPTY_STRING%>
256-
<%= report.allowShareButton(getUser(), getContainer()) && (shareReportURL != null) ? button("Share Report").href(shareReportURL) : HtmlString.EMPTY_STRING%>
257254
</td>
258255
</tr>
259256
</table>

0 commit comments

Comments
 (0)