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 SystemException {
852
853 return layoutPersistence.filterFindByG_P_P(
854 groupId, privateLayout, parentLayoutId, start, end);
855 }
856
857 @Override
858 public int getLayoutsCount(
859 long groupId, boolean privateLayout, long parentLayoutId)
860 throws SystemException {
861
862 return layoutPersistence.filterCountByG_P_P(
863 groupId, privateLayout, parentLayoutId);
864 }
865
866 @Override
867 public String[] getTempFileEntryNames(long groupId, String tempFolderName)
868 throws PortalException, SystemException {
869
870 GroupPermissionUtil.check(
871 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
872
873 return TempFileUtil.getTempFileEntryNames(
874 groupId, getUserId(), tempFolderName);
875 }
876
877
893 @Override
894 public void importLayouts(
895 long groupId, boolean privateLayout,
896 Map<String, String[]> parameterMap, byte[] bytes)
897 throws PortalException, SystemException {
898
899 GroupPermissionUtil.check(
900 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
901
902 layoutLocalService.importLayouts(
903 getUserId(), groupId, privateLayout, parameterMap, bytes);
904 }
905
906
922 @Override
923 public void importLayouts(
924 long groupId, boolean privateLayout,
925 Map<String, String[]> parameterMap, File file)
926 throws PortalException, SystemException {
927
928 GroupPermissionUtil.check(
929 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
930
931 layoutLocalService.importLayouts(
932 getUserId(), groupId, privateLayout, parameterMap, file);
933 }
934
935
951 @Override
952 public void importLayouts(
953 long groupId, boolean privateLayout,
954 Map<String, String[]> parameterMap, InputStream is)
955 throws PortalException, SystemException {
956
957 GroupPermissionUtil.check(
958 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
959
960 layoutLocalService.importLayouts(
961 getUserId(), groupId, privateLayout, parameterMap, is);
962 }
963
964 @Override
965 public long importLayoutsInBackground(
966 String taskName, long groupId, boolean privateLayout,
967 Map<String, String[]> parameterMap, File file)
968 throws PortalException, SystemException {
969
970 GroupPermissionUtil.check(
971 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
972
973 return layoutLocalService.importLayoutsInBackground(
974 getUserId(), taskName, groupId, privateLayout, parameterMap, file);
975 }
976
977 @Override
978 public long importLayoutsInBackground(
979 String taskName, long groupId, boolean privateLayout,
980 Map<String, String[]> parameterMap, InputStream inputStream)
981 throws PortalException, SystemException {
982
983 GroupPermissionUtil.check(
984 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
985
986 return layoutLocalService.importLayoutsInBackground(
987 getUserId(), taskName, groupId, privateLayout, parameterMap,
988 inputStream);
989 }
990
991
1008 @Override
1009 public void importPortletInfo(
1010 long plid, long groupId, String portletId,
1011 Map<String, String[]> parameterMap, File file)
1012 throws PortalException, SystemException {
1013
1014 GroupPermissionUtil.check(
1015 getPermissionChecker(), groupId,
1016 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1017
1018 layoutLocalService.importPortletInfo(
1019 getUserId(), plid, groupId, portletId, parameterMap, file);
1020 }
1021
1022
1039 @Override
1040 public void importPortletInfo(
1041 long plid, long groupId, String portletId,
1042 Map<String, String[]> parameterMap, InputStream is)
1043 throws PortalException, SystemException {
1044
1045 GroupPermissionUtil.check(
1046 getPermissionChecker(), groupId,
1047 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1048
1049 layoutLocalService.importPortletInfo(
1050 getUserId(), plid, groupId, portletId, parameterMap, is);
1051 }
1052
1053 @Override
1054 public void importPortletInfo(
1055 String portletId, Map<String, String[]> parameterMap, File file)
1056 throws PortalException, SystemException {
1057
1058 User user = userPersistence.findByPrimaryKey(getUserId());
1059
1060 Group companyGroup = groupLocalService.getCompanyGroup(
1061 user.getCompanyId());
1062
1063 GroupPermissionUtil.check(
1064 getPermissionChecker(), companyGroup.getGroupId(),
1065 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1066
1067 layoutLocalService.importPortletInfo(
1068 getUserId(), portletId, parameterMap, file);
1069 }
1070
1071 @Override
1072 public void importPortletInfo(
1073 String portletId, Map<String, String[]> parameterMap,
1074 InputStream is)
1075 throws PortalException, SystemException {
1076
1077 User user = userPersistence.findByPrimaryKey(getUserId());
1078
1079 Group companyGroup = groupLocalService.getCompanyGroup(
1080 user.getCompanyId());
1081
1082 GroupPermissionUtil.check(
1083 getPermissionChecker(), companyGroup.getGroupId(),
1084 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1085
1086 layoutLocalService.importPortletInfo(
1087 getUserId(), portletId, parameterMap, is);
1088 }
1089
1090 @Override
1091 public long importPortletInfoInBackground(
1092 String taskName, long plid, long groupId, String portletId,
1093 Map<String, String[]> parameterMap, File file)
1094 throws PortalException, SystemException {
1095
1096 GroupPermissionUtil.check(
1097 getPermissionChecker(), groupId,
1098 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1099
1100 return layoutLocalService.importPortletInfoInBackground(
1101 getUserId(), taskName, plid, groupId, portletId, parameterMap,
1102 file);
1103 }
1104
1105 @Override
1106 public long importPortletInfoInBackground(
1107 String taskName, long plid, long groupId, String portletId,
1108 Map<String, String[]> parameterMap, InputStream is)
1109 throws PortalException, SystemException {
1110
1111 GroupPermissionUtil.check(
1112 getPermissionChecker(), groupId,
1113 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1114
1115 return layoutLocalService.importPortletInfoInBackground(
1116 getUserId(), taskName, plid, groupId, portletId, parameterMap, is);
1117 }
1118
1119 @Override
1120 public void importPortletInfoInBackground(
1121 String taskName, String portletId,
1122 Map<String, String[]> parameterMap, File file)
1123 throws PortalException, SystemException {
1124
1125 User user = userPersistence.findByPrimaryKey(getUserId());
1126
1127 Group companyGroup = groupLocalService.getCompanyGroup(
1128 user.getCompanyId());
1129
1130 GroupPermissionUtil.check(
1131 getPermissionChecker(), companyGroup.getGroupId(),
1132 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1133
1134 layoutLocalService.importPortletInfoInBackground(
1135 getUserId(), taskName, portletId, parameterMap, file);
1136 }
1137
1138 @Override
1139 public void importPortletInfoInBackground(
1140 String taskName, String portletId,
1141 Map<String, String[]> parameterMap, InputStream is)
1142 throws PortalException, SystemException {
1143
1144 User user = userPersistence.findByPrimaryKey(getUserId());
1145
1146 Group companyGroup = groupLocalService.getCompanyGroup(
1147 user.getCompanyId());
1148
1149 GroupPermissionUtil.check(
1150 getPermissionChecker(), companyGroup.getGroupId(),
1151 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1152
1153 layoutLocalService.importPortletInfoInBackground(
1154 getUserId(), taskName, portletId, parameterMap, is);
1155 }
1156
1157
1184 @Override
1185 public void schedulePublishToLive(
1186 long sourceGroupId, long targetGroupId, boolean privateLayout,
1187 Map<Long, Boolean> layoutIdMap, Map<String, String[]> parameterMap,
1188 String scope, Date startDate, Date endDate, String groupName,
1189 String cronText, Date schedulerStartDate, Date schedulerEndDate,
1190 String description)
1191 throws PortalException, SystemException {
1192
1193 GroupPermissionUtil.check(
1194 getPermissionChecker(), targetGroupId, ActionKeys.PUBLISH_STAGING);
1195
1196 String jobName = PortalUUIDUtil.generate();
1197
1198 Trigger trigger = new CronTrigger(
1199 jobName, groupName, schedulerStartDate, schedulerEndDate, cronText);
1200
1201 String command = StringPool.BLANK;
1202
1203 if (scope.equals("all-pages")) {
1204 command = LayoutsLocalPublisherRequest.COMMAND_ALL_PAGES;
1205 }
1206 else if (scope.equals("selected-pages")) {
1207 command = LayoutsLocalPublisherRequest.COMMAND_SELECTED_PAGES;
1208 }
1209
1210 LayoutsLocalPublisherRequest publisherRequest =
1211 new LayoutsLocalPublisherRequest(
1212 command, getUserId(), sourceGroupId, targetGroupId,
1213 privateLayout, layoutIdMap, parameterMap, startDate, endDate);
1214
1215 SchedulerEngineHelperUtil.schedule(
1216 trigger, StorageType.PERSISTED, description,
1217 DestinationNames.LAYOUTS_LOCAL_PUBLISHER, publisherRequest, 0);
1218 }
1219
1220
1250 @Override
1251 public void schedulePublishToRemote(
1252 long sourceGroupId, boolean privateLayout,
1253 Map<Long, Boolean> layoutIdMap, Map<String, String[]> parameterMap,
1254 String remoteAddress, int remotePort, String remotePathContext,
1255 boolean secureConnection, long remoteGroupId,
1256 boolean remotePrivateLayout, Date startDate, Date endDate,
1257 String groupName, String cronText, Date schedulerStartDate,
1258 Date schedulerEndDate, String description)
1259 throws PortalException, SystemException {
1260
1261 GroupPermissionUtil.check(
1262 getPermissionChecker(), sourceGroupId, ActionKeys.PUBLISH_STAGING);
1263
1264 LayoutsRemotePublisherRequest publisherRequest =
1265 new LayoutsRemotePublisherRequest(
1266 getUserId(), sourceGroupId, privateLayout, layoutIdMap,
1267 parameterMap, remoteAddress, remotePort, remotePathContext,
1268 secureConnection, remoteGroupId, remotePrivateLayout, startDate,
1269 endDate);
1270
1271 String jobName = PortalUUIDUtil.generate();
1272
1273 Trigger trigger = new CronTrigger(
1274 jobName, groupName, schedulerStartDate, schedulerEndDate, cronText);
1275
1276 SchedulerEngineHelperUtil.schedule(
1277 trigger, StorageType.PERSISTED, description,
1278 DestinationNames.LAYOUTS_REMOTE_PUBLISHER, publisherRequest, 0);
1279 }
1280
1281
1297 @Override
1298 public void setLayouts(
1299 long groupId, boolean privateLayout, long parentLayoutId,
1300 long[] layoutIds, ServiceContext serviceContext)
1301 throws PortalException, SystemException {
1302
1303 GroupPermissionUtil.check(
1304 getPermissionChecker(), groupId, ActionKeys.UPDATE);
1305
1306 layoutLocalService.setLayouts(
1307 groupId, privateLayout, parentLayoutId, layoutIds, serviceContext);
1308 }
1309
1310
1322 @Override
1323 public void unschedulePublishToLive(
1324 long groupId, String jobName, String groupName)
1325 throws PortalException, SystemException {
1326
1327 GroupPermissionUtil.check(
1328 getPermissionChecker(), groupId, ActionKeys.PUBLISH_STAGING);
1329
1330 SchedulerEngineHelperUtil.delete(
1331 jobName, groupName, StorageType.PERSISTED);
1332 }
1333
1334
1346 @Override
1347 public void unschedulePublishToRemote(
1348 long groupId, String jobName, String groupName)
1349 throws PortalException, SystemException {
1350
1351 GroupPermissionUtil.check(
1352 getPermissionChecker(), groupId, ActionKeys.PUBLISH_STAGING);
1353
1354 SchedulerEngineHelperUtil.delete(
1355 jobName, groupName, StorageType.PERSISTED);
1356 }
1357
1358
1392 @Override
1393 public Layout updateLayout(
1394 long groupId, boolean privateLayout, long layoutId,
1395 long parentLayoutId, Map<Locale, String> localeNamesMap,
1396 Map<Locale, String> localeTitlesMap,
1397 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
1398 Map<Locale, String> robotsMap, String type, boolean hidden,
1399 Map<Locale, String> friendlyURLMap, Boolean iconImage,
1400 byte[] iconBytes, ServiceContext serviceContext)
1401 throws PortalException, SystemException {
1402
1403 LayoutPermissionUtil.check(
1404 getPermissionChecker(), groupId, privateLayout, layoutId,
1405 ActionKeys.UPDATE);
1406
1407 return layoutLocalService.updateLayout(
1408 groupId, privateLayout, layoutId, parentLayoutId, localeNamesMap,
1409 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
1410 hidden, friendlyURLMap, iconImage, iconBytes, serviceContext);
1411 }
1412
1413
1452 @Override
1453 public Layout updateLayout(
1454 long groupId, boolean privateLayout, long layoutId,
1455 long parentLayoutId, Map<Locale, String> localeNamesMap,
1456 Map<Locale, String> localeTitlesMap,
1457 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
1458 Map<Locale, String> robotsMap, String type, boolean hidden,
1459 String friendlyURL, Boolean iconImage, byte[] iconBytes,
1460 ServiceContext serviceContext)
1461 throws PortalException, SystemException {
1462
1463 LayoutPermissionUtil.check(
1464 getPermissionChecker(), groupId, privateLayout, layoutId,
1465 ActionKeys.UPDATE);
1466
1467 return layoutLocalService.updateLayout(
1468 groupId, privateLayout, layoutId, parentLayoutId, localeNamesMap,
1469 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
1470 hidden, friendlyURL, iconImage, iconBytes, serviceContext);
1471 }
1472
1473
1487 @Override
1488 public Layout updateLayout(
1489 long groupId, boolean privateLayout, long layoutId,
1490 String typeSettings)
1491 throws PortalException, SystemException {
1492
1493 LayoutPermissionUtil.check(
1494 getPermissionChecker(), groupId, privateLayout, layoutId,
1495 ActionKeys.UPDATE);
1496
1497 return layoutLocalService.updateLayout(
1498 groupId, privateLayout, layoutId, typeSettings);
1499 }
1500
1501
1517 @Override
1518 public Layout updateLookAndFeel(
1519 long groupId, boolean privateLayout, long layoutId, String themeId,
1520 String colorSchemeId, String css, boolean wapTheme)
1521 throws PortalException, SystemException {
1522
1523 LayoutPermissionUtil.check(
1524 getPermissionChecker(), groupId, privateLayout, layoutId,
1525 ActionKeys.UPDATE);
1526
1527 if (Validator.isNotNull(themeId)) {
1528 pluginSettingLocalService.checkPermission(
1529 getUserId(), themeId, Plugin.TYPE_THEME);
1530 }
1531
1532 return layoutLocalService.updateLookAndFeel(
1533 groupId, privateLayout, layoutId, themeId, colorSchemeId, css,
1534 wapTheme);
1535 }
1536
1537
1553 @Override
1554 public Layout updateName(
1555 long groupId, boolean privateLayout, long layoutId, String name,
1556 String languageId)
1557 throws PortalException, SystemException {
1558
1559 LayoutPermissionUtil.check(
1560 getPermissionChecker(), groupId, privateLayout, layoutId,
1561 ActionKeys.UPDATE);
1562
1563 return layoutLocalService.updateName(
1564 groupId, privateLayout, layoutId, name, languageId);
1565 }
1566
1567
1580 @Override
1581 public Layout updateName(long plid, String name, String languageId)
1582 throws PortalException, SystemException {
1583
1584 LayoutPermissionUtil.check(
1585 getPermissionChecker(), plid, ActionKeys.UPDATE);
1586
1587 return layoutLocalService.updateName(plid, name, languageId);
1588 }
1589
1590
1605 @Override
1606 public Layout updateParentLayoutId(
1607 long groupId, boolean privateLayout, long layoutId,
1608 long parentLayoutId)
1609 throws PortalException, SystemException {
1610
1611 LayoutPermissionUtil.check(
1612 getPermissionChecker(), groupId, privateLayout, layoutId,
1613 ActionKeys.UPDATE);
1614
1615 return layoutLocalService.updateParentLayoutId(
1616 groupId, privateLayout, layoutId, parentLayoutId);
1617 }
1618
1619
1634 @Override
1635 public Layout updateParentLayoutId(long plid, long parentPlid)
1636 throws PortalException, SystemException {
1637
1638 LayoutPermissionUtil.check(
1639 getPermissionChecker(), plid, ActionKeys.UPDATE);
1640
1641 return layoutLocalService.updateParentLayoutId(plid, parentPlid);
1642 }
1643
1644 @Override
1645 public Layout updateParentLayoutIdAndPriority(
1646 long plid, long parentPlid, int priority)
1647 throws PortalException, SystemException {
1648
1649 return layoutLocalService.updateParentLayoutIdAndPriority(
1650 plid, parentPlid, priority);
1651 }
1652
1653
1666 @Override
1667 public Layout updatePriority(
1668 long groupId, boolean privateLayout, long layoutId, int priority)
1669 throws PortalException, SystemException {
1670
1671 LayoutPermissionUtil.check(
1672 getPermissionChecker(), groupId, privateLayout, layoutId,
1673 ActionKeys.UPDATE);
1674
1675 return layoutLocalService.updatePriority(
1676 groupId, privateLayout, layoutId, priority);
1677 }
1678
1679
1694 @Override
1695 public Layout updatePriority(
1696 long groupId, boolean privateLayout, long layoutId,
1697 long nextLayoutId, long previousLayoutId)
1698 throws PortalException, SystemException {
1699
1700 LayoutPermissionUtil.check(
1701 getPermissionChecker(), groupId, privateLayout, layoutId,
1702 ActionKeys.UPDATE);
1703
1704 return layoutLocalService.updatePriority(
1705 groupId, privateLayout, layoutId, nextLayoutId, previousLayoutId);
1706 }
1707
1708
1718 @Override
1719 public Layout updatePriority(long plid, int priority)
1720 throws PortalException, SystemException {
1721
1722 LayoutPermissionUtil.check(
1723 getPermissionChecker(), plid, ActionKeys.UPDATE);
1724
1725 return layoutLocalService.updatePriority(plid, priority);
1726 }
1727
1728 @Override
1729 public MissingReferences validateImportLayoutsFile(
1730 long groupId, boolean privateLayout,
1731 Map<String, String[]> parameterMap, File file)
1732 throws PortalException, SystemException {
1733
1734 GroupPermissionUtil.check(
1735 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
1736
1737 return layoutLocalService.validateImportLayoutsFile(
1738 getUserId(), groupId, privateLayout, parameterMap, file);
1739 }
1740
1741 @Override
1742 public MissingReferences validateImportLayoutsFile(
1743 long groupId, boolean privateLayout,
1744 Map<String, String[]> parameterMap, InputStream inputStream)
1745 throws PortalException, SystemException {
1746
1747 GroupPermissionUtil.check(
1748 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
1749
1750 return layoutLocalService.validateImportLayoutsFile(
1751 getUserId(), groupId, privateLayout, parameterMap, inputStream);
1752 }
1753
1754 @Override
1755 public MissingReferences validateImportPortletInfo(
1756 long plid, long groupId, String portletId,
1757 Map<String, String[]> parameterMap, File file)
1758 throws PortalException, SystemException {
1759
1760 PortletPermissionUtil.check(
1761 getPermissionChecker(), plid, portletId, ActionKeys.CONFIGURATION);
1762
1763 return layoutLocalService.validateImportPortletInfo(
1764 getUserId(), plid, groupId, portletId, parameterMap, file);
1765 }
1766
1767 @Override
1768 public MissingReferences validateImportPortletInfo(
1769 long plid, long groupId, String portletId,
1770 Map<String, String[]> parameterMap, InputStream inputStream)
1771 throws PortalException, SystemException {
1772
1773 PortletPermissionUtil.check(
1774 getPermissionChecker(), plid, portletId, ActionKeys.CONFIGURATION);
1775
1776 return layoutLocalService.validateImportPortletInfo(
1777 getUserId(), plid, groupId, portletId, parameterMap, inputStream);
1778 }
1779
1780 protected List<Layout> filterLayouts(List<Layout> layouts)
1781 throws PortalException, SystemException {
1782
1783 List<Layout> filteredLayouts = new ArrayList<Layout>();
1784
1785 for (Layout layout : layouts) {
1786 if (LayoutPermissionUtil.contains(
1787 getPermissionChecker(), layout.getPlid(),
1788 ActionKeys.VIEW)) {
1789
1790 filteredLayouts.add(layout);
1791 }
1792 }
1793
1794 return filteredLayouts;
1795 }
1796
1797 }