001
014
015 package com.liferay.portal.service.impl;
016
017 import com.liferay.portal.NoSuchLayoutException;
018 import com.liferay.portal.kernel.cache.ThreadLocalCachable;
019 import com.liferay.portal.kernel.exception.PortalException;
020 import com.liferay.portal.kernel.exception.SystemException;
021 import com.liferay.portal.kernel.lar.MissingReferences;
022 import com.liferay.portal.kernel.messaging.DestinationNames;
023 import com.liferay.portal.kernel.repository.model.FileEntry;
024 import com.liferay.portal.kernel.scheduler.CronTrigger;
025 import com.liferay.portal.kernel.scheduler.SchedulerEngineHelperUtil;
026 import com.liferay.portal.kernel.scheduler.StorageType;
027 import com.liferay.portal.kernel.scheduler.Trigger;
028 import com.liferay.portal.kernel.util.GetterUtil;
029 import com.liferay.portal.kernel.util.StringPool;
030 import com.liferay.portal.kernel.util.TempFileUtil;
031 import com.liferay.portal.kernel.util.Validator;
032 import com.liferay.portal.kernel.uuid.PortalUUIDUtil;
033 import com.liferay.portal.messaging.LayoutsLocalPublisherRequest;
034 import com.liferay.portal.messaging.LayoutsRemotePublisherRequest;
035 import com.liferay.portal.model.Group;
036 import com.liferay.portal.model.Layout;
037 import com.liferay.portal.model.LayoutConstants;
038 import com.liferay.portal.model.LayoutReference;
039 import com.liferay.portal.model.LayoutTypePortlet;
040 import com.liferay.portal.model.Plugin;
041 import com.liferay.portal.model.User;
042 import com.liferay.portal.security.permission.ActionKeys;
043 import com.liferay.portal.security.permission.PermissionChecker;
044 import com.liferay.portal.service.ServiceContext;
045 import com.liferay.portal.service.base.LayoutServiceBaseImpl;
046 import com.liferay.portal.service.permission.GroupPermissionUtil;
047 import com.liferay.portal.service.permission.LayoutPermissionUtil;
048 import com.liferay.portal.service.permission.PortletPermissionUtil;
049 import com.liferay.portal.util.PortletKeys;
050 import com.liferay.portlet.PortletPreferencesFactoryUtil;
051
052 import java.io.File;
053 import java.io.InputStream;
054
055 import java.util.ArrayList;
056 import java.util.Date;
057 import java.util.List;
058 import java.util.Locale;
059 import java.util.Map;
060
061
070 public class LayoutServiceImpl extends LayoutServiceBaseImpl {
071
072
119 @Override
120 public Layout addLayout(
121 long groupId, boolean privateLayout, long parentLayoutId,
122 Map<Locale, String> localeNamesMap,
123 Map<Locale, String> localeTitlesMap,
124 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
125 Map<Locale, String> robotsMap, String type, boolean hidden,
126 String friendlyURL, ServiceContext serviceContext)
127 throws PortalException, SystemException {
128
129 PermissionChecker permissionChecker = getPermissionChecker();
130
131 if (parentLayoutId == LayoutConstants.DEFAULT_PARENT_LAYOUT_ID) {
132 GroupPermissionUtil.check(
133 permissionChecker, groupId, ActionKeys.ADD_LAYOUT);
134 }
135 else {
136 LayoutPermissionUtil.check(
137 permissionChecker, groupId, privateLayout, parentLayoutId,
138 ActionKeys.ADD_LAYOUT);
139 }
140
141 return layoutLocalService.addLayout(
142 getUserId(), groupId, privateLayout, parentLayoutId, localeNamesMap,
143 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
144 hidden, friendlyURL, serviceContext);
145 }
146
147
192 @Override
193 public Layout addLayout(
194 long groupId, boolean privateLayout, long parentLayoutId,
195 Map<Locale, String> localeNamesMap,
196 Map<Locale, String> localeTitlesMap,
197 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
198 Map<Locale, String> robotsMap, String type, String typeSettings,
199 boolean hidden, Map<Locale, String> friendlyURLMap,
200 ServiceContext serviceContext)
201 throws PortalException, SystemException {
202
203 PermissionChecker permissionChecker = getPermissionChecker();
204
205 if (parentLayoutId == LayoutConstants.DEFAULT_PARENT_LAYOUT_ID) {
206 GroupPermissionUtil.check(
207 permissionChecker, groupId, ActionKeys.ADD_LAYOUT);
208 }
209 else {
210 LayoutPermissionUtil.check(
211 permissionChecker, groupId, privateLayout, parentLayoutId,
212 ActionKeys.ADD_LAYOUT);
213 }
214
215 return layoutLocalService.addLayout(
216 getUserId(), groupId, privateLayout, parentLayoutId, localeNamesMap,
217 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
218 typeSettings, hidden, friendlyURLMap, serviceContext);
219 }
220
221
262 @Override
263 public Layout addLayout(
264 long groupId, boolean privateLayout, long parentLayoutId,
265 String name, String title, String description, String type,
266 boolean hidden, String friendlyURL, ServiceContext serviceContext)
267 throws PortalException, SystemException {
268
269 PermissionChecker permissionChecker = getPermissionChecker();
270
271 if (parentLayoutId == LayoutConstants.DEFAULT_PARENT_LAYOUT_ID) {
272 GroupPermissionUtil.check(
273 permissionChecker, groupId, ActionKeys.ADD_LAYOUT);
274 }
275 else {
276 LayoutPermissionUtil.check(
277 permissionChecker, groupId, privateLayout, parentLayoutId,
278 ActionKeys.ADD_LAYOUT);
279 }
280
281 return layoutLocalService.addLayout(
282 getUserId(), groupId, privateLayout, parentLayoutId, name, title,
283 description, type, hidden, friendlyURL, serviceContext);
284 }
285
286 @Override
287 public FileEntry addTempFileEntry(
288 long groupId, String fileName, String tempFolderName,
289 InputStream inputStream, String mimeType)
290 throws PortalException, SystemException {
291
292 GroupPermissionUtil.check(
293 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
294
295 return TempFileUtil.addTempFile(
296 groupId, getUserId(), fileName, tempFolderName, inputStream,
297 mimeType);
298 }
299
300
313 @Override
314 public void deleteLayout(
315 long groupId, boolean privateLayout, long layoutId,
316 ServiceContext serviceContext)
317 throws PortalException, SystemException {
318
319 LayoutPermissionUtil.check(
320 getPermissionChecker(), groupId, privateLayout, layoutId,
321 ActionKeys.DELETE);
322
323 layoutLocalService.deleteLayout(
324 groupId, privateLayout, layoutId, serviceContext);
325 }
326
327
338 @Override
339 public void deleteLayout(long plid, ServiceContext serviceContext)
340 throws PortalException, SystemException {
341
342 LayoutPermissionUtil.check(
343 getPermissionChecker(), plid, ActionKeys.DELETE);
344
345 layoutLocalService.deleteLayout(plid, serviceContext);
346 }
347
348 @Override
349 public void deleteTempFileEntry(
350 long groupId, String fileName, String tempFolderName)
351 throws PortalException, SystemException {
352
353 GroupPermissionUtil.check(
354 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
355
356 TempFileUtil.deleteTempFile(
357 groupId, getUserId(), fileName, tempFolderName);
358 }
359
360
379 @Override
380 public byte[] exportLayouts(
381 long groupId, boolean privateLayout, long[] layoutIds,
382 Map<String, String[]> parameterMap, Date startDate, Date endDate)
383 throws PortalException, SystemException {
384
385 GroupPermissionUtil.check(
386 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
387
388 return layoutLocalService.exportLayouts(
389 groupId, privateLayout, layoutIds, parameterMap, startDate,
390 endDate);
391 }
392
393
410 @Override
411 public byte[] exportLayouts(
412 long groupId, boolean privateLayout,
413 Map<String, String[]> parameterMap, Date startDate, Date endDate)
414 throws PortalException, SystemException {
415
416 GroupPermissionUtil.check(
417 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
418
419 return layoutLocalService.exportLayouts(
420 groupId, privateLayout, parameterMap, startDate, endDate);
421 }
422
423
442 @Override
443 public File exportLayoutsAsFile(
444 long groupId, boolean privateLayout, long[] layoutIds,
445 Map<String, String[]> parameterMap, Date startDate, Date endDate)
446 throws PortalException, SystemException {
447
448 GroupPermissionUtil.check(
449 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
450
451 return layoutLocalService.exportLayoutsAsFile(
452 groupId, privateLayout, layoutIds, parameterMap, startDate,
453 endDate);
454 }
455
456 @Override
457 public long exportLayoutsAsFileInBackground(
458 String taskName, long groupId, boolean privateLayout,
459 long[] layoutIds, Map<String, String[]> parameterMap,
460 Date startDate, Date endDate, String fileName)
461 throws PortalException, SystemException {
462
463 GroupPermissionUtil.check(
464 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
465
466 return layoutLocalService.exportLayoutsAsFileInBackground(
467 getUserId(), taskName, groupId, privateLayout, layoutIds,
468 parameterMap, startDate, endDate, fileName);
469 }
470
471
491 @Override
492 public byte[] exportPortletInfo(
493 long plid, long groupId, String portletId,
494 Map<String, String[]> parameterMap, Date startDate, Date endDate)
495 throws PortalException, SystemException {
496
497 Layout layout = layoutLocalService.getLayout(plid);
498
499 GroupPermissionUtil.check(
500 getPermissionChecker(), layout.getGroupId(),
501 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
502
503 return layoutLocalService.exportPortletInfo(
504 plid, groupId, portletId, parameterMap, startDate, endDate);
505 }
506
507 @Override
508 public byte[] exportPortletInfo(
509 long companyId, String portletId,
510 Map<String, String[]> parameterMap, Date startDate, Date endDate)
511 throws PortalException, SystemException {
512
513 Group companyGroup = groupLocalService.getCompanyGroup(companyId);
514
515 GroupPermissionUtil.check(
516 getPermissionChecker(), companyGroup.getGroupId(),
517 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
518
519 return layoutLocalService.exportPortletInfo(
520 companyId, portletId, parameterMap, startDate, endDate);
521 }
522
523
543 @Override
544 public File exportPortletInfoAsFile(
545 long plid, long groupId, String portletId,
546 Map<String, String[]> parameterMap, Date startDate, Date endDate)
547 throws PortalException, SystemException {
548
549 Layout layout = layoutLocalService.getLayout(plid);
550
551 GroupPermissionUtil.check(
552 getPermissionChecker(), layout.getGroupId(),
553 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
554
555 return layoutLocalService.exportPortletInfoAsFile(
556 plid, groupId, portletId, parameterMap, startDate, endDate);
557 }
558
559 @Override
560 public File exportPortletInfoAsFile(
561 String portletId, Map<String, String[]> parameterMap,
562 Date startDate, Date endDate)
563 throws PortalException, SystemException {
564
565 User user = userPersistence.findByPrimaryKey(getUserId());
566
567 Group companyGroup = groupLocalService.getCompanyGroup(
568 user.getCompanyId());
569
570 GroupPermissionUtil.check(
571 getPermissionChecker(), companyGroup.getGroupId(),
572 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
573
574 return layoutLocalService.exportPortletInfoAsFile(
575 user.getCompanyId(), portletId, parameterMap, startDate, endDate);
576 }
577
578 @Override
579 public long exportPortletInfoAsFileInBackground(
580 String taskName, long plid, long groupId, String portletId,
581 Map<String, String[]> parameterMap, Date startDate, Date endDate,
582 String fileName)
583 throws PortalException, SystemException {
584
585 Layout layout = layoutLocalService.getLayout(plid);
586
587 GroupPermissionUtil.check(
588 getPermissionChecker(), layout.getGroupId(),
589 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
590
591 return layoutLocalService.exportPortletInfoAsFileInBackground(
592 getUserId(), taskName, plid, groupId, portletId, parameterMap,
593 startDate, endDate, fileName);
594 }
595
596 @Override
597 public long exportPortletInfoAsFileInBackground(
598 String taskName, String portletId,
599 Map<String, String[]> parameterMap, Date startDate, Date endDate,
600 String fileName)
601 throws PortalException, SystemException {
602
603 User user = userPersistence.findByPrimaryKey(getUserId());
604
605 Group companyGroup = groupLocalService.getCompanyGroup(
606 user.getCompanyId());
607
608 GroupPermissionUtil.check(
609 getPermissionChecker(), companyGroup.getGroupId(),
610 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
611
612 return layoutLocalService.exportPortletInfoAsFileInBackground(
613 getUserId(), taskName, portletId, parameterMap, startDate, endDate,
614 fileName);
615 }
616
617
626 @Override
627 public List<Layout> getAncestorLayouts(long plid)
628 throws PortalException, SystemException {
629
630 Layout layout = layoutLocalService.getLayout(plid);
631
632 List<Layout> ancestors = layout.getAncestors();
633
634 return filterLayouts(ancestors);
635 }
636
637
651 @Override
652 public long getDefaultPlid(
653 long groupId, long scopeGroupId, boolean privateLayout,
654 String portletId)
655 throws PortalException, SystemException {
656
657 if (groupId <= 0) {
658 return LayoutConstants.DEFAULT_PLID;
659 }
660
661 PermissionChecker permissionChecker = getPermissionChecker();
662
663 String scopeGroupLayoutUuid = null;
664
665 Group scopeGroup = groupLocalService.getGroup(scopeGroupId);
666
667 if (scopeGroup.isLayout()) {
668 Layout scopeGroupLayout = layoutLocalService.getLayout(
669 scopeGroup.getClassPK());
670
671 scopeGroupLayoutUuid = scopeGroupLayout.getUuid();
672 }
673
674 Map<Long, javax.portlet.PortletPreferences> jxPortletPreferencesMap =
675 PortletPreferencesFactoryUtil.getPortletSetupMap(
676 scopeGroup.getCompanyId(), groupId,
677 PortletKeys.PREFS_OWNER_ID_DEFAULT,
678 PortletKeys.PREFS_OWNER_TYPE_LAYOUT, portletId, privateLayout);
679
680 for (Map.Entry<Long, javax.portlet.PortletPreferences> entry :
681 jxPortletPreferencesMap.entrySet()) {
682
683 long plid = entry.getKey();
684
685 Layout layout = null;
686
687 try {
688 layout = layoutLocalService.getLayout(plid);
689 }
690 catch (NoSuchLayoutException nsle) {
691 continue;
692 }
693
694 if (!LayoutPermissionUtil.contains(
695 permissionChecker, layout, ActionKeys.VIEW)) {
696
697 continue;
698 }
699
700 if (!layout.isTypePortlet()) {
701 continue;
702 }
703
704 LayoutTypePortlet layoutTypePortlet =
705 (LayoutTypePortlet)layout.getLayoutType();
706
707 if (!layoutTypePortlet.hasPortletId(portletId)) {
708 continue;
709 }
710
711 javax.portlet.PortletPreferences jxPortletPreferences =
712 entry.getValue();
713
714 String scopeType = GetterUtil.getString(
715 jxPortletPreferences.getValue("lfrScopeType", null));
716
717 if (scopeGroup.isLayout()) {
718 String scopeLayoutUuid = GetterUtil.getString(
719 jxPortletPreferences.getValue("lfrScopeLayoutUuid", null));
720
721 if (Validator.isNotNull(scopeType) &&
722 Validator.isNotNull(scopeLayoutUuid) &&
723 scopeLayoutUuid.equals(scopeGroupLayoutUuid)) {
724
725 return layout.getPlid();
726 }
727 }
728 else if (scopeGroup.isCompany()) {
729 if (Validator.isNotNull(scopeType) &&
730 scopeType.equals("company")) {
731
732 return layout.getPlid();
733 }
734 }
735 else {
736 if (Validator.isNull(scopeType)) {
737 return layout.getPlid();
738 }
739 }
740 }
741
742 return LayoutConstants.DEFAULT_PLID;
743 }
744
745 @Override
746 @ThreadLocalCachable
747 public long getDefaultPlid(
748 long groupId, long scopeGroupId, String portletId)
749 throws PortalException, SystemException {
750
751 long plid = getDefaultPlid(groupId, scopeGroupId, false, portletId);
752
753 if (plid == 0) {
754 plid = getDefaultPlid(groupId, scopeGroupId, true, portletId);
755 }
756
757 return plid;
758 }
759
760
772 @Override
773 public Layout getLayoutByUuidAndGroupId(
774 String uuid, long groupId, boolean privateLayout)
775 throws PortalException, SystemException {
776
777 Layout layout = layoutLocalService.getLayoutByUuidAndGroupId(
778 uuid, groupId, privateLayout);
779
780 LayoutPermissionUtil.check(
781 getPermissionChecker(), layout, ActionKeys.VIEW);
782
783 return layout;
784 }
785
786
798 @Override
799 public String getLayoutName(
800 long groupId, boolean privateLayout, long layoutId,
801 String languageId)
802 throws PortalException, SystemException {
803
804 Layout layout = layoutLocalService.getLayout(
805 groupId, privateLayout, layoutId);
806
807 return layout.getName(languageId);
808 }
809
810
821 @Override
822 public LayoutReference[] getLayoutReferences(
823 long companyId, String portletId, String preferencesKey,
824 String preferencesValue)
825 throws SystemException {
826
827 return layoutLocalService.getLayouts(
828 companyId, portletId, preferencesKey, preferencesValue);
829 }
830
831 @Override
832 public List<Layout> getLayouts(long groupId, boolean privateLayout)
833 throws SystemException {
834
835 return layoutPersistence.filterFindByG_P(groupId, privateLayout);
836 }
837
838 @Override
839 public List<Layout> getLayouts(
840 long groupId, boolean privateLayout, long parentLayoutId)
841 throws SystemException {
842
843 return layoutPersistence.filterFindByG_P_P(
844 groupId, privateLayout, parentLayoutId);
845 }
846
847 @Override
848 public List<Layout> getLayouts(
849 long groupId, boolean privateLayout, long parentLayoutId,
850 boolean incomplete, int start, int end)
851 throws PortalException, SystemException {
852
853 List<Layout> layouts = layoutLocalService.getLayouts(
854 groupId, privateLayout, parentLayoutId, incomplete, start, end);
855
856 return filterLayouts(layouts);
857 }
858
859 @Override
860 public String[] getTempFileEntryNames(long groupId, String tempFolderName)
861 throws PortalException, SystemException {
862
863 GroupPermissionUtil.check(
864 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
865
866 return TempFileUtil.getTempFileEntryNames(
867 groupId, getUserId(), tempFolderName);
868 }
869
870
886 @Override
887 public void importLayouts(
888 long groupId, boolean privateLayout,
889 Map<String, String[]> parameterMap, byte[] bytes)
890 throws PortalException, SystemException {
891
892 GroupPermissionUtil.check(
893 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
894
895 layoutLocalService.importLayouts(
896 getUserId(), groupId, privateLayout, parameterMap, bytes);
897 }
898
899
915 @Override
916 public void importLayouts(
917 long groupId, boolean privateLayout,
918 Map<String, String[]> parameterMap, File file)
919 throws PortalException, SystemException {
920
921 GroupPermissionUtil.check(
922 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
923
924 layoutLocalService.importLayouts(
925 getUserId(), groupId, privateLayout, parameterMap, file);
926 }
927
928
944 @Override
945 public void importLayouts(
946 long groupId, boolean privateLayout,
947 Map<String, String[]> parameterMap, InputStream is)
948 throws PortalException, SystemException {
949
950 GroupPermissionUtil.check(
951 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
952
953 layoutLocalService.importLayouts(
954 getUserId(), groupId, privateLayout, parameterMap, is);
955 }
956
957 @Override
958 public long importLayoutsInBackground(
959 String taskName, long groupId, boolean privateLayout,
960 Map<String, String[]> parameterMap, File file)
961 throws PortalException, SystemException {
962
963 GroupPermissionUtil.check(
964 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
965
966 return layoutLocalService.importLayoutsInBackground(
967 getUserId(), taskName, groupId, privateLayout, parameterMap, file);
968 }
969
970 @Override
971 public long importLayoutsInBackground(
972 String taskName, long groupId, boolean privateLayout,
973 Map<String, String[]> parameterMap, InputStream inputStream)
974 throws PortalException, SystemException {
975
976 GroupPermissionUtil.check(
977 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
978
979 return layoutLocalService.importLayoutsInBackground(
980 getUserId(), taskName, groupId, privateLayout, parameterMap,
981 inputStream);
982 }
983
984
1001 @Override
1002 public void importPortletInfo(
1003 long plid, long groupId, String portletId,
1004 Map<String, String[]> parameterMap, File file)
1005 throws PortalException, SystemException {
1006
1007 GroupPermissionUtil.check(
1008 getPermissionChecker(), groupId,
1009 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1010
1011 layoutLocalService.importPortletInfo(
1012 getUserId(), plid, groupId, portletId, parameterMap, file);
1013 }
1014
1015
1032 @Override
1033 public void importPortletInfo(
1034 long plid, long groupId, String portletId,
1035 Map<String, String[]> parameterMap, InputStream is)
1036 throws PortalException, SystemException {
1037
1038 GroupPermissionUtil.check(
1039 getPermissionChecker(), groupId,
1040 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1041
1042 layoutLocalService.importPortletInfo(
1043 getUserId(), plid, groupId, portletId, parameterMap, is);
1044 }
1045
1046 @Override
1047 public void importPortletInfo(
1048 String portletId, Map<String, String[]> parameterMap, File file)
1049 throws PortalException, SystemException {
1050
1051 User user = userPersistence.findByPrimaryKey(getUserId());
1052
1053 Group companyGroup = groupLocalService.getCompanyGroup(
1054 user.getCompanyId());
1055
1056 GroupPermissionUtil.check(
1057 getPermissionChecker(), companyGroup.getGroupId(),
1058 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1059
1060 layoutLocalService.importPortletInfo(
1061 getUserId(), portletId, parameterMap, file);
1062 }
1063
1064 @Override
1065 public void importPortletInfo(
1066 String portletId, Map<String, String[]> parameterMap,
1067 InputStream is)
1068 throws PortalException, SystemException {
1069
1070 User user = userPersistence.findByPrimaryKey(getUserId());
1071
1072 Group companyGroup = groupLocalService.getCompanyGroup(
1073 user.getCompanyId());
1074
1075 GroupPermissionUtil.check(
1076 getPermissionChecker(), companyGroup.getGroupId(),
1077 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1078
1079 layoutLocalService.importPortletInfo(
1080 getUserId(), portletId, parameterMap, is);
1081 }
1082
1083 @Override
1084 public long importPortletInfoInBackground(
1085 String taskName, long plid, long groupId, String portletId,
1086 Map<String, String[]> parameterMap, File file)
1087 throws PortalException, SystemException {
1088
1089 GroupPermissionUtil.check(
1090 getPermissionChecker(), groupId,
1091 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1092
1093 return layoutLocalService.importPortletInfoInBackground(
1094 getUserId(), taskName, plid, groupId, portletId, parameterMap,
1095 file);
1096 }
1097
1098 @Override
1099 public long importPortletInfoInBackground(
1100 String taskName, long plid, long groupId, String portletId,
1101 Map<String, String[]> parameterMap, InputStream is)
1102 throws PortalException, SystemException {
1103
1104 GroupPermissionUtil.check(
1105 getPermissionChecker(), groupId,
1106 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1107
1108 return layoutLocalService.importPortletInfoInBackground(
1109 getUserId(), taskName, plid, groupId, portletId, parameterMap, is);
1110 }
1111
1112 @Override
1113 public void importPortletInfoInBackground(
1114 String taskName, String portletId,
1115 Map<String, String[]> parameterMap, File file)
1116 throws PortalException, SystemException {
1117
1118 User user = userPersistence.findByPrimaryKey(getUserId());
1119
1120 Group companyGroup = groupLocalService.getCompanyGroup(
1121 user.getCompanyId());
1122
1123 GroupPermissionUtil.check(
1124 getPermissionChecker(), companyGroup.getGroupId(),
1125 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1126
1127 layoutLocalService.importPortletInfoInBackground(
1128 getUserId(), taskName, portletId, parameterMap, file);
1129 }
1130
1131 @Override
1132 public void importPortletInfoInBackground(
1133 String taskName, String portletId,
1134 Map<String, String[]> parameterMap, InputStream is)
1135 throws PortalException, SystemException {
1136
1137 User user = userPersistence.findByPrimaryKey(getUserId());
1138
1139 Group companyGroup = groupLocalService.getCompanyGroup(
1140 user.getCompanyId());
1141
1142 GroupPermissionUtil.check(
1143 getPermissionChecker(), companyGroup.getGroupId(),
1144 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1145
1146 layoutLocalService.importPortletInfoInBackground(
1147 getUserId(), taskName, portletId, parameterMap, is);
1148 }
1149
1150
1177 @Override
1178 public void schedulePublishToLive(
1179 long sourceGroupId, long targetGroupId, boolean privateLayout,
1180 Map<Long, Boolean> layoutIdMap, Map<String, String[]> parameterMap,
1181 String scope, Date startDate, Date endDate, String groupName,
1182 String cronText, Date schedulerStartDate, Date schedulerEndDate,
1183 String description)
1184 throws PortalException, SystemException {
1185
1186 GroupPermissionUtil.check(
1187 getPermissionChecker(), targetGroupId, ActionKeys.PUBLISH_STAGING);
1188
1189 String jobName = PortalUUIDUtil.generate();
1190
1191 Trigger trigger = new CronTrigger(
1192 jobName, groupName, schedulerStartDate, schedulerEndDate, cronText);
1193
1194 String command = StringPool.BLANK;
1195
1196 if (scope.equals("all-pages")) {
1197 command = LayoutsLocalPublisherRequest.COMMAND_ALL_PAGES;
1198 }
1199 else if (scope.equals("selected-pages")) {
1200 command = LayoutsLocalPublisherRequest.COMMAND_SELECTED_PAGES;
1201 }
1202
1203 LayoutsLocalPublisherRequest publisherRequest =
1204 new LayoutsLocalPublisherRequest(
1205 command, getUserId(), sourceGroupId, targetGroupId,
1206 privateLayout, layoutIdMap, parameterMap, startDate, endDate);
1207
1208 SchedulerEngineHelperUtil.schedule(
1209 trigger, StorageType.PERSISTED, description,
1210 DestinationNames.LAYOUTS_LOCAL_PUBLISHER, publisherRequest, 0);
1211 }
1212
1213
1243 @Override
1244 public void schedulePublishToRemote(
1245 long sourceGroupId, boolean privateLayout,
1246 Map<Long, Boolean> layoutIdMap, Map<String, String[]> parameterMap,
1247 String remoteAddress, int remotePort, String remotePathContext,
1248 boolean secureConnection, long remoteGroupId,
1249 boolean remotePrivateLayout, Date startDate, Date endDate,
1250 String groupName, String cronText, Date schedulerStartDate,
1251 Date schedulerEndDate, String description)
1252 throws PortalException, SystemException {
1253
1254 GroupPermissionUtil.check(
1255 getPermissionChecker(), sourceGroupId, ActionKeys.PUBLISH_STAGING);
1256
1257 LayoutsRemotePublisherRequest publisherRequest =
1258 new LayoutsRemotePublisherRequest(
1259 getUserId(), sourceGroupId, privateLayout, layoutIdMap,
1260 parameterMap, remoteAddress, remotePort, remotePathContext,
1261 secureConnection, remoteGroupId, remotePrivateLayout, startDate,
1262 endDate);
1263
1264 String jobName = PortalUUIDUtil.generate();
1265
1266 Trigger trigger = new CronTrigger(
1267 jobName, groupName, schedulerStartDate, schedulerEndDate, cronText);
1268
1269 SchedulerEngineHelperUtil.schedule(
1270 trigger, StorageType.PERSISTED, description,
1271 DestinationNames.LAYOUTS_REMOTE_PUBLISHER, publisherRequest, 0);
1272 }
1273
1274
1290 @Override
1291 public void setLayouts(
1292 long groupId, boolean privateLayout, long parentLayoutId,
1293 long[] layoutIds, ServiceContext serviceContext)
1294 throws PortalException, SystemException {
1295
1296 GroupPermissionUtil.check(
1297 getPermissionChecker(), groupId, ActionKeys.UPDATE);
1298
1299 layoutLocalService.setLayouts(
1300 groupId, privateLayout, parentLayoutId, layoutIds, serviceContext);
1301 }
1302
1303
1315 @Override
1316 public void unschedulePublishToLive(
1317 long groupId, String jobName, String groupName)
1318 throws PortalException, SystemException {
1319
1320 GroupPermissionUtil.check(
1321 getPermissionChecker(), groupId, ActionKeys.PUBLISH_STAGING);
1322
1323 SchedulerEngineHelperUtil.delete(
1324 jobName, groupName, StorageType.PERSISTED);
1325 }
1326
1327
1339 @Override
1340 public void unschedulePublishToRemote(
1341 long groupId, String jobName, String groupName)
1342 throws PortalException, SystemException {
1343
1344 GroupPermissionUtil.check(
1345 getPermissionChecker(), groupId, ActionKeys.PUBLISH_STAGING);
1346
1347 SchedulerEngineHelperUtil.delete(
1348 jobName, groupName, StorageType.PERSISTED);
1349 }
1350
1351
1385 @Override
1386 public Layout updateLayout(
1387 long groupId, boolean privateLayout, long layoutId,
1388 long parentLayoutId, Map<Locale, String> localeNamesMap,
1389 Map<Locale, String> localeTitlesMap,
1390 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
1391 Map<Locale, String> robotsMap, String type, boolean hidden,
1392 Map<Locale, String> friendlyURLMap, Boolean iconImage,
1393 byte[] iconBytes, ServiceContext serviceContext)
1394 throws PortalException, SystemException {
1395
1396 LayoutPermissionUtil.check(
1397 getPermissionChecker(), groupId, privateLayout, layoutId,
1398 ActionKeys.UPDATE);
1399
1400 return layoutLocalService.updateLayout(
1401 groupId, privateLayout, layoutId, parentLayoutId, localeNamesMap,
1402 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
1403 hidden, friendlyURLMap, iconImage, iconBytes, serviceContext);
1404 }
1405
1406
1445 @Override
1446 public Layout updateLayout(
1447 long groupId, boolean privateLayout, long layoutId,
1448 long parentLayoutId, Map<Locale, String> localeNamesMap,
1449 Map<Locale, String> localeTitlesMap,
1450 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
1451 Map<Locale, String> robotsMap, String type, boolean hidden,
1452 String friendlyURL, Boolean iconImage, byte[] iconBytes,
1453 ServiceContext serviceContext)
1454 throws PortalException, SystemException {
1455
1456 LayoutPermissionUtil.check(
1457 getPermissionChecker(), groupId, privateLayout, layoutId,
1458 ActionKeys.UPDATE);
1459
1460 return layoutLocalService.updateLayout(
1461 groupId, privateLayout, layoutId, parentLayoutId, localeNamesMap,
1462 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
1463 hidden, friendlyURL, iconImage, iconBytes, serviceContext);
1464 }
1465
1466
1480 @Override
1481 public Layout updateLayout(
1482 long groupId, boolean privateLayout, long layoutId,
1483 String typeSettings)
1484 throws PortalException, SystemException {
1485
1486 LayoutPermissionUtil.check(
1487 getPermissionChecker(), groupId, privateLayout, layoutId,
1488 ActionKeys.UPDATE);
1489
1490 return layoutLocalService.updateLayout(
1491 groupId, privateLayout, layoutId, typeSettings);
1492 }
1493
1494
1510 @Override
1511 public Layout updateLookAndFeel(
1512 long groupId, boolean privateLayout, long layoutId, String themeId,
1513 String colorSchemeId, String css, boolean wapTheme)
1514 throws PortalException, SystemException {
1515
1516 LayoutPermissionUtil.check(
1517 getPermissionChecker(), groupId, privateLayout, layoutId,
1518 ActionKeys.UPDATE);
1519
1520 if (Validator.isNotNull(themeId)) {
1521 pluginSettingLocalService.checkPermission(
1522 getUserId(), themeId, Plugin.TYPE_THEME);
1523 }
1524
1525 return layoutLocalService.updateLookAndFeel(
1526 groupId, privateLayout, layoutId, themeId, colorSchemeId, css,
1527 wapTheme);
1528 }
1529
1530
1546 @Override
1547 public Layout updateName(
1548 long groupId, boolean privateLayout, long layoutId, String name,
1549 String languageId)
1550 throws PortalException, SystemException {
1551
1552 LayoutPermissionUtil.check(
1553 getPermissionChecker(), groupId, privateLayout, layoutId,
1554 ActionKeys.UPDATE);
1555
1556 return layoutLocalService.updateName(
1557 groupId, privateLayout, layoutId, name, languageId);
1558 }
1559
1560
1573 @Override
1574 public Layout updateName(long plid, String name, String languageId)
1575 throws PortalException, SystemException {
1576
1577 LayoutPermissionUtil.check(
1578 getPermissionChecker(), plid, ActionKeys.UPDATE);
1579
1580 return layoutLocalService.updateName(plid, name, languageId);
1581 }
1582
1583
1598 @Override
1599 public Layout updateParentLayoutId(
1600 long groupId, boolean privateLayout, long layoutId,
1601 long parentLayoutId)
1602 throws PortalException, SystemException {
1603
1604 LayoutPermissionUtil.check(
1605 getPermissionChecker(), groupId, privateLayout, layoutId,
1606 ActionKeys.UPDATE);
1607
1608 return layoutLocalService.updateParentLayoutId(
1609 groupId, privateLayout, layoutId, parentLayoutId);
1610 }
1611
1612
1627 @Override
1628 public Layout updateParentLayoutId(long plid, long parentPlid)
1629 throws PortalException, SystemException {
1630
1631 LayoutPermissionUtil.check(
1632 getPermissionChecker(), plid, ActionKeys.UPDATE);
1633
1634 return layoutLocalService.updateParentLayoutId(plid, parentPlid);
1635 }
1636
1637
1650 @Override
1651 public Layout updatePriority(
1652 long groupId, boolean privateLayout, long layoutId, int priority)
1653 throws PortalException, SystemException {
1654
1655 LayoutPermissionUtil.check(
1656 getPermissionChecker(), groupId, privateLayout, layoutId,
1657 ActionKeys.UPDATE);
1658
1659 return layoutLocalService.updatePriority(
1660 groupId, privateLayout, layoutId, priority);
1661 }
1662
1663
1678 @Override
1679 public Layout updatePriority(
1680 long groupId, boolean privateLayout, long layoutId,
1681 long nextLayoutId, long previousLayoutId)
1682 throws PortalException, SystemException {
1683
1684 LayoutPermissionUtil.check(
1685 getPermissionChecker(), groupId, privateLayout, layoutId,
1686 ActionKeys.UPDATE);
1687
1688 return layoutLocalService.updatePriority(
1689 groupId, privateLayout, layoutId, nextLayoutId, previousLayoutId);
1690 }
1691
1692
1702 @Override
1703 public Layout updatePriority(long plid, int priority)
1704 throws PortalException, SystemException {
1705
1706 LayoutPermissionUtil.check(
1707 getPermissionChecker(), plid, ActionKeys.UPDATE);
1708
1709 return layoutLocalService.updatePriority(plid, priority);
1710 }
1711
1712 @Override
1713 public MissingReferences validateImportLayoutsFile(
1714 long groupId, boolean privateLayout,
1715 Map<String, String[]> parameterMap, File file)
1716 throws PortalException, SystemException {
1717
1718 GroupPermissionUtil.check(
1719 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
1720
1721 return layoutLocalService.validateImportLayoutsFile(
1722 getUserId(), groupId, privateLayout, parameterMap, file);
1723 }
1724
1725 @Override
1726 public MissingReferences validateImportLayoutsFile(
1727 long groupId, boolean privateLayout,
1728 Map<String, String[]> parameterMap, InputStream inputStream)
1729 throws PortalException, SystemException {
1730
1731 GroupPermissionUtil.check(
1732 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
1733
1734 return layoutLocalService.validateImportLayoutsFile(
1735 getUserId(), groupId, privateLayout, parameterMap, inputStream);
1736 }
1737
1738 @Override
1739 public MissingReferences validateImportPortletInfo(
1740 long plid, long groupId, String portletId,
1741 Map<String, String[]> parameterMap, File file)
1742 throws PortalException, SystemException {
1743
1744 PortletPermissionUtil.check(
1745 getPermissionChecker(), plid, portletId, ActionKeys.CONFIGURATION);
1746
1747 return layoutLocalService.validateImportPortletInfo(
1748 getUserId(), plid, groupId, portletId, parameterMap, file);
1749 }
1750
1751 @Override
1752 public MissingReferences validateImportPortletInfo(
1753 long plid, long groupId, String portletId,
1754 Map<String, String[]> parameterMap, InputStream inputStream)
1755 throws PortalException, SystemException {
1756
1757 PortletPermissionUtil.check(
1758 getPermissionChecker(), plid, portletId, ActionKeys.CONFIGURATION);
1759
1760 return layoutLocalService.validateImportPortletInfo(
1761 getUserId(), plid, groupId, portletId, parameterMap, inputStream);
1762 }
1763
1764 protected List<Layout> filterLayouts(List<Layout> layouts)
1765 throws PortalException, SystemException {
1766
1767 List<Layout> filteredLayouts = new ArrayList<Layout>();
1768
1769 for (Layout layout : layouts) {
1770 if (LayoutPermissionUtil.contains(
1771 getPermissionChecker(), layout.getPlid(),
1772 ActionKeys.VIEW)) {
1773
1774 filteredLayouts.add(layout);
1775 }
1776 }
1777
1778 return filteredLayouts;
1779 }
1780
1781 }