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.Digester;
029 import com.liferay.portal.kernel.util.DigesterUtil;
030 import com.liferay.portal.kernel.util.GetterUtil;
031 import com.liferay.portal.kernel.util.StringPool;
032 import com.liferay.portal.kernel.util.TempFileUtil;
033 import com.liferay.portal.kernel.util.Validator;
034 import com.liferay.portal.kernel.uuid.PortalUUIDUtil;
035 import com.liferay.portal.messaging.LayoutsLocalPublisherRequest;
036 import com.liferay.portal.messaging.LayoutsRemotePublisherRequest;
037 import com.liferay.portal.model.Group;
038 import com.liferay.portal.model.Layout;
039 import com.liferay.portal.model.LayoutConstants;
040 import com.liferay.portal.model.LayoutReference;
041 import com.liferay.portal.model.LayoutTypePortlet;
042 import com.liferay.portal.model.Plugin;
043 import com.liferay.portal.model.User;
044 import com.liferay.portal.security.permission.ActionKeys;
045 import com.liferay.portal.security.permission.PermissionChecker;
046 import com.liferay.portal.service.ServiceContext;
047 import com.liferay.portal.service.base.LayoutServiceBaseImpl;
048 import com.liferay.portal.service.permission.GroupPermissionUtil;
049 import com.liferay.portal.service.permission.LayoutPermissionUtil;
050 import com.liferay.portal.service.permission.PortletPermissionUtil;
051 import com.liferay.portal.util.PortletKeys;
052 import com.liferay.portlet.PortletPreferencesFactoryUtil;
053
054 import java.io.File;
055 import java.io.InputStream;
056
057 import java.util.ArrayList;
058 import java.util.Date;
059 import java.util.List;
060 import java.util.Locale;
061 import java.util.Map;
062
063
072 public class LayoutServiceImpl extends LayoutServiceBaseImpl {
073
074
121 @Override
122 public Layout addLayout(
123 long groupId, boolean privateLayout, long parentLayoutId,
124 Map<Locale, String> localeNamesMap,
125 Map<Locale, String> localeTitlesMap,
126 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
127 Map<Locale, String> robotsMap, String type, boolean hidden,
128 String friendlyURL, ServiceContext serviceContext)
129 throws PortalException, SystemException {
130
131 PermissionChecker permissionChecker = getPermissionChecker();
132
133 if (parentLayoutId == LayoutConstants.DEFAULT_PARENT_LAYOUT_ID) {
134 GroupPermissionUtil.check(
135 permissionChecker, groupId, ActionKeys.ADD_LAYOUT);
136 }
137 else {
138 LayoutPermissionUtil.check(
139 permissionChecker, groupId, privateLayout, parentLayoutId,
140 ActionKeys.ADD_LAYOUT);
141 }
142
143 return layoutLocalService.addLayout(
144 getUserId(), groupId, privateLayout, parentLayoutId, localeNamesMap,
145 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
146 hidden, friendlyURL, serviceContext);
147 }
148
149
194 @Override
195 public Layout addLayout(
196 long groupId, boolean privateLayout, long parentLayoutId,
197 Map<Locale, String> localeNamesMap,
198 Map<Locale, String> localeTitlesMap,
199 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
200 Map<Locale, String> robotsMap, String type, String typeSettings,
201 boolean hidden, Map<Locale, String> friendlyURLMap,
202 ServiceContext serviceContext)
203 throws PortalException, SystemException {
204
205 PermissionChecker permissionChecker = getPermissionChecker();
206
207 if (parentLayoutId == LayoutConstants.DEFAULT_PARENT_LAYOUT_ID) {
208 GroupPermissionUtil.check(
209 permissionChecker, groupId, ActionKeys.ADD_LAYOUT);
210 }
211 else {
212 LayoutPermissionUtil.check(
213 permissionChecker, groupId, privateLayout, parentLayoutId,
214 ActionKeys.ADD_LAYOUT);
215 }
216
217 return layoutLocalService.addLayout(
218 getUserId(), groupId, privateLayout, parentLayoutId, localeNamesMap,
219 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
220 typeSettings, hidden, friendlyURLMap, serviceContext);
221 }
222
223
264 @Override
265 public Layout addLayout(
266 long groupId, boolean privateLayout, long parentLayoutId,
267 String name, String title, String description, String type,
268 boolean hidden, String friendlyURL, ServiceContext serviceContext)
269 throws PortalException, SystemException {
270
271 PermissionChecker permissionChecker = getPermissionChecker();
272
273 if (parentLayoutId == LayoutConstants.DEFAULT_PARENT_LAYOUT_ID) {
274 GroupPermissionUtil.check(
275 permissionChecker, groupId, ActionKeys.ADD_LAYOUT);
276 }
277 else {
278 LayoutPermissionUtil.check(
279 permissionChecker, groupId, privateLayout, parentLayoutId,
280 ActionKeys.ADD_LAYOUT);
281 }
282
283 return layoutLocalService.addLayout(
284 getUserId(), groupId, privateLayout, parentLayoutId, name, title,
285 description, type, hidden, friendlyURL, serviceContext);
286 }
287
288 @Override
289 public FileEntry addTempFileEntry(
290 long groupId, String fileName, String tempFolderName,
291 InputStream inputStream, String mimeType)
292 throws PortalException, SystemException {
293
294 GroupPermissionUtil.check(
295 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
296
297 return TempFileUtil.addTempFile(
298 groupId, getUserId(), fileName,
299 DigesterUtil.digestHex(Digester.SHA_256, tempFolderName),
300 inputStream, mimeType);
301 }
302
303
316 @Override
317 public void deleteLayout(
318 long groupId, boolean privateLayout, long layoutId,
319 ServiceContext serviceContext)
320 throws PortalException, SystemException {
321
322 LayoutPermissionUtil.check(
323 getPermissionChecker(), groupId, privateLayout, layoutId,
324 ActionKeys.DELETE);
325
326 layoutLocalService.deleteLayout(
327 groupId, privateLayout, layoutId, serviceContext);
328 }
329
330
341 @Override
342 public void deleteLayout(long plid, ServiceContext serviceContext)
343 throws PortalException, SystemException {
344
345 LayoutPermissionUtil.check(
346 getPermissionChecker(), plid, ActionKeys.DELETE);
347
348 layoutLocalService.deleteLayout(plid, serviceContext);
349 }
350
351 @Override
352 public void deleteTempFileEntry(
353 long groupId, String fileName, String tempFolderName)
354 throws PortalException, SystemException {
355
356 GroupPermissionUtil.check(
357 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
358
359 TempFileUtil.deleteTempFile(
360 groupId, getUserId(), fileName,
361 DigesterUtil.digestHex(Digester.SHA_256, tempFolderName));
362 }
363
364
383 @Override
384 public byte[] exportLayouts(
385 long groupId, boolean privateLayout, long[] layoutIds,
386 Map<String, String[]> parameterMap, Date startDate, Date endDate)
387 throws PortalException, SystemException {
388
389 GroupPermissionUtil.check(
390 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
391
392 return layoutLocalService.exportLayouts(
393 groupId, privateLayout, layoutIds, parameterMap, startDate,
394 endDate);
395 }
396
397
414 @Override
415 public byte[] exportLayouts(
416 long groupId, boolean privateLayout,
417 Map<String, String[]> parameterMap, Date startDate, Date endDate)
418 throws PortalException, SystemException {
419
420 GroupPermissionUtil.check(
421 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
422
423 return layoutLocalService.exportLayouts(
424 groupId, privateLayout, parameterMap, startDate, endDate);
425 }
426
427
446 @Override
447 public File exportLayoutsAsFile(
448 long groupId, boolean privateLayout, long[] layoutIds,
449 Map<String, String[]> parameterMap, Date startDate, Date endDate)
450 throws PortalException, SystemException {
451
452 GroupPermissionUtil.check(
453 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
454
455 return layoutLocalService.exportLayoutsAsFile(
456 groupId, privateLayout, layoutIds, parameterMap, startDate,
457 endDate);
458 }
459
460 @Override
461 public long exportLayoutsAsFileInBackground(
462 String taskName, long groupId, boolean privateLayout,
463 long[] layoutIds, Map<String, String[]> parameterMap,
464 Date startDate, Date endDate, String fileName)
465 throws PortalException, SystemException {
466
467 GroupPermissionUtil.check(
468 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
469
470 return layoutLocalService.exportLayoutsAsFileInBackground(
471 getUserId(), taskName, groupId, privateLayout, layoutIds,
472 parameterMap, startDate, endDate, fileName);
473 }
474
475
495 @Override
496 public byte[] exportPortletInfo(
497 long plid, long groupId, String portletId,
498 Map<String, String[]> parameterMap, Date startDate, Date endDate)
499 throws PortalException, SystemException {
500
501 Layout layout = layoutLocalService.getLayout(plid);
502
503 GroupPermissionUtil.check(
504 getPermissionChecker(), layout.getGroupId(),
505 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
506
507 return layoutLocalService.exportPortletInfo(
508 plid, groupId, portletId, parameterMap, startDate, endDate);
509 }
510
511 @Override
512 public byte[] exportPortletInfo(
513 long companyId, String portletId,
514 Map<String, String[]> parameterMap, Date startDate, Date endDate)
515 throws PortalException, SystemException {
516
517 Group companyGroup = groupLocalService.getCompanyGroup(companyId);
518
519 GroupPermissionUtil.check(
520 getPermissionChecker(), companyGroup.getGroupId(),
521 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
522
523 return layoutLocalService.exportPortletInfo(
524 companyId, portletId, parameterMap, startDate, endDate);
525 }
526
527
547 @Override
548 public File exportPortletInfoAsFile(
549 long plid, long groupId, String portletId,
550 Map<String, String[]> parameterMap, Date startDate, Date endDate)
551 throws PortalException, SystemException {
552
553 Layout layout = layoutLocalService.getLayout(plid);
554
555 GroupPermissionUtil.check(
556 getPermissionChecker(), layout.getGroupId(),
557 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
558
559 return layoutLocalService.exportPortletInfoAsFile(
560 plid, groupId, portletId, parameterMap, startDate, endDate);
561 }
562
563 @Override
564 public File exportPortletInfoAsFile(
565 String portletId, Map<String, String[]> parameterMap,
566 Date startDate, Date endDate)
567 throws PortalException, SystemException {
568
569 User user = userPersistence.findByPrimaryKey(getUserId());
570
571 Group companyGroup = groupLocalService.getCompanyGroup(
572 user.getCompanyId());
573
574 GroupPermissionUtil.check(
575 getPermissionChecker(), companyGroup.getGroupId(),
576 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
577
578 return layoutLocalService.exportPortletInfoAsFile(
579 user.getCompanyId(), portletId, parameterMap, startDate, endDate);
580 }
581
582 @Override
583 public long exportPortletInfoAsFileInBackground(
584 String taskName, long plid, long groupId, String portletId,
585 Map<String, String[]> parameterMap, Date startDate, Date endDate,
586 String fileName)
587 throws PortalException, SystemException {
588
589 Layout layout = layoutLocalService.getLayout(plid);
590
591 GroupPermissionUtil.check(
592 getPermissionChecker(), layout.getGroupId(),
593 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
594
595 return layoutLocalService.exportPortletInfoAsFileInBackground(
596 getUserId(), taskName, plid, groupId, portletId, parameterMap,
597 startDate, endDate, fileName);
598 }
599
600 @Override
601 public long exportPortletInfoAsFileInBackground(
602 String taskName, String portletId,
603 Map<String, String[]> parameterMap, Date startDate, Date endDate,
604 String fileName)
605 throws PortalException, SystemException {
606
607 User user = userPersistence.findByPrimaryKey(getUserId());
608
609 Group companyGroup = groupLocalService.getCompanyGroup(
610 user.getCompanyId());
611
612 GroupPermissionUtil.check(
613 getPermissionChecker(), companyGroup.getGroupId(),
614 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
615
616 return layoutLocalService.exportPortletInfoAsFileInBackground(
617 getUserId(), taskName, portletId, parameterMap, startDate, endDate,
618 fileName);
619 }
620
621
630 @Override
631 public List<Layout> getAncestorLayouts(long plid)
632 throws PortalException, SystemException {
633
634 Layout layout = layoutLocalService.getLayout(plid);
635
636 List<Layout> ancestors = layout.getAncestors();
637
638 return filterLayouts(ancestors);
639 }
640
641
655 @Override
656 public long getDefaultPlid(
657 long groupId, long scopeGroupId, boolean privateLayout,
658 String portletId)
659 throws PortalException, SystemException {
660
661 if (groupId <= 0) {
662 return LayoutConstants.DEFAULT_PLID;
663 }
664
665 PermissionChecker permissionChecker = getPermissionChecker();
666
667 String scopeGroupLayoutUuid = null;
668
669 Group scopeGroup = groupLocalService.getGroup(scopeGroupId);
670
671 if (scopeGroup.isLayout()) {
672 Layout scopeGroupLayout = layoutLocalService.getLayout(
673 scopeGroup.getClassPK());
674
675 scopeGroupLayoutUuid = scopeGroupLayout.getUuid();
676 }
677
678 Map<Long, javax.portlet.PortletPreferences> jxPortletPreferencesMap =
679 PortletPreferencesFactoryUtil.getPortletSetupMap(
680 scopeGroup.getCompanyId(), groupId,
681 PortletKeys.PREFS_OWNER_ID_DEFAULT,
682 PortletKeys.PREFS_OWNER_TYPE_LAYOUT, portletId, privateLayout);
683
684 for (Map.Entry<Long, javax.portlet.PortletPreferences> entry :
685 jxPortletPreferencesMap.entrySet()) {
686
687 long plid = entry.getKey();
688
689 Layout layout = null;
690
691 try {
692 layout = layoutLocalService.getLayout(plid);
693 }
694 catch (NoSuchLayoutException nsle) {
695 continue;
696 }
697
698 if (!LayoutPermissionUtil.contains(
699 permissionChecker, layout, ActionKeys.VIEW)) {
700
701 continue;
702 }
703
704 if (!layout.isTypePortlet()) {
705 continue;
706 }
707
708 LayoutTypePortlet layoutTypePortlet =
709 (LayoutTypePortlet)layout.getLayoutType();
710
711 if (!layoutTypePortlet.hasPortletId(portletId)) {
712 continue;
713 }
714
715 javax.portlet.PortletPreferences jxPortletPreferences =
716 entry.getValue();
717
718 String scopeType = GetterUtil.getString(
719 jxPortletPreferences.getValue("lfrScopeType", null));
720
721 if (scopeGroup.isLayout()) {
722 String scopeLayoutUuid = GetterUtil.getString(
723 jxPortletPreferences.getValue("lfrScopeLayoutUuid", null));
724
725 if (Validator.isNotNull(scopeType) &&
726 Validator.isNotNull(scopeLayoutUuid) &&
727 scopeLayoutUuid.equals(scopeGroupLayoutUuid)) {
728
729 return layout.getPlid();
730 }
731 }
732 else if (scopeGroup.isCompany()) {
733 if (Validator.isNotNull(scopeType) &&
734 scopeType.equals("company")) {
735
736 return layout.getPlid();
737 }
738 }
739 else {
740 if (Validator.isNull(scopeType)) {
741 return layout.getPlid();
742 }
743 }
744 }
745
746 return LayoutConstants.DEFAULT_PLID;
747 }
748
749 @Override
750 @ThreadLocalCachable
751 public long getDefaultPlid(
752 long groupId, long scopeGroupId, String portletId)
753 throws PortalException, SystemException {
754
755 long plid = getDefaultPlid(groupId, scopeGroupId, false, portletId);
756
757 if (plid == 0) {
758 plid = getDefaultPlid(groupId, scopeGroupId, true, portletId);
759 }
760
761 return plid;
762 }
763
764
776 @Override
777 public Layout getLayoutByUuidAndGroupId(
778 String uuid, long groupId, boolean privateLayout)
779 throws PortalException, SystemException {
780
781 Layout layout = layoutLocalService.getLayoutByUuidAndGroupId(
782 uuid, groupId, privateLayout);
783
784 LayoutPermissionUtil.check(
785 getPermissionChecker(), layout, ActionKeys.VIEW);
786
787 return layout;
788 }
789
790
802 @Override
803 public String getLayoutName(
804 long groupId, boolean privateLayout, long layoutId,
805 String languageId)
806 throws PortalException, SystemException {
807
808 Layout layout = layoutLocalService.getLayout(
809 groupId, privateLayout, layoutId);
810
811 return layout.getName(languageId);
812 }
813
814
825 @Override
826 public LayoutReference[] getLayoutReferences(
827 long companyId, String portletId, String preferencesKey,
828 String preferencesValue)
829 throws SystemException {
830
831 return layoutLocalService.getLayouts(
832 companyId, portletId, preferencesKey, preferencesValue);
833 }
834
835 @Override
836 public List<Layout> getLayouts(long groupId, boolean privateLayout)
837 throws SystemException {
838
839 return layoutPersistence.filterFindByG_P(groupId, privateLayout);
840 }
841
842 @Override
843 public List<Layout> getLayouts(
844 long groupId, boolean privateLayout, long parentLayoutId)
845 throws SystemException {
846
847 return layoutPersistence.filterFindByG_P_P(
848 groupId, privateLayout, parentLayoutId);
849 }
850
851 @Override
852 public List<Layout> getLayouts(
853 long groupId, boolean privateLayout, long parentLayoutId,
854 boolean incomplete, int start, int end)
855 throws PortalException, SystemException {
856
857 List<Layout> layouts = layoutLocalService.getLayouts(
858 groupId, privateLayout, parentLayoutId, incomplete, start, end);
859
860 return filterLayouts(layouts);
861 }
862
863 @Override
864 public int getLayoutsCount(
865 long groupId, boolean privateLayout, long parentLayoutId)
866 throws SystemException {
867
868 return layoutPersistence.filterCountByG_P_P(
869 groupId, privateLayout, parentLayoutId);
870 }
871
872 @Override
873 public String[] getTempFileEntryNames(long groupId, String tempFolderName)
874 throws PortalException, SystemException {
875
876 GroupPermissionUtil.check(
877 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
878
879 return TempFileUtil.getTempFileEntryNames(
880 groupId, getUserId(),
881 DigesterUtil.digestHex(Digester.SHA_256, tempFolderName));
882 }
883
884
900 @Override
901 public void importLayouts(
902 long groupId, boolean privateLayout,
903 Map<String, String[]> parameterMap, byte[] bytes)
904 throws PortalException, SystemException {
905
906 GroupPermissionUtil.check(
907 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
908
909 layoutLocalService.importLayouts(
910 getUserId(), groupId, privateLayout, parameterMap, bytes);
911 }
912
913
929 @Override
930 public void importLayouts(
931 long groupId, boolean privateLayout,
932 Map<String, String[]> parameterMap, File file)
933 throws PortalException, SystemException {
934
935 GroupPermissionUtil.check(
936 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
937
938 layoutLocalService.importLayouts(
939 getUserId(), groupId, privateLayout, parameterMap, file);
940 }
941
942
958 @Override
959 public void importLayouts(
960 long groupId, boolean privateLayout,
961 Map<String, String[]> parameterMap, InputStream is)
962 throws PortalException, SystemException {
963
964 GroupPermissionUtil.check(
965 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
966
967 layoutLocalService.importLayouts(
968 getUserId(), groupId, privateLayout, parameterMap, is);
969 }
970
971 @Override
972 public long importLayoutsInBackground(
973 String taskName, long groupId, boolean privateLayout,
974 Map<String, String[]> parameterMap, File file)
975 throws PortalException, SystemException {
976
977 GroupPermissionUtil.check(
978 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
979
980 return layoutLocalService.importLayoutsInBackground(
981 getUserId(), taskName, groupId, privateLayout, parameterMap, file);
982 }
983
984 @Override
985 public long importLayoutsInBackground(
986 String taskName, long groupId, boolean privateLayout,
987 Map<String, String[]> parameterMap, InputStream inputStream)
988 throws PortalException, SystemException {
989
990 GroupPermissionUtil.check(
991 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
992
993 return layoutLocalService.importLayoutsInBackground(
994 getUserId(), taskName, groupId, privateLayout, parameterMap,
995 inputStream);
996 }
997
998
1015 @Override
1016 public void importPortletInfo(
1017 long plid, long groupId, String portletId,
1018 Map<String, String[]> parameterMap, File file)
1019 throws PortalException, SystemException {
1020
1021 GroupPermissionUtil.check(
1022 getPermissionChecker(), groupId,
1023 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1024
1025 layoutLocalService.importPortletInfo(
1026 getUserId(), plid, groupId, portletId, parameterMap, file);
1027 }
1028
1029
1046 @Override
1047 public void importPortletInfo(
1048 long plid, long groupId, String portletId,
1049 Map<String, String[]> parameterMap, InputStream is)
1050 throws PortalException, SystemException {
1051
1052 GroupPermissionUtil.check(
1053 getPermissionChecker(), groupId,
1054 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1055
1056 layoutLocalService.importPortletInfo(
1057 getUserId(), plid, groupId, portletId, parameterMap, is);
1058 }
1059
1060 @Override
1061 public void importPortletInfo(
1062 String portletId, Map<String, String[]> parameterMap, File file)
1063 throws PortalException, SystemException {
1064
1065 User user = userPersistence.findByPrimaryKey(getUserId());
1066
1067 Group companyGroup = groupLocalService.getCompanyGroup(
1068 user.getCompanyId());
1069
1070 GroupPermissionUtil.check(
1071 getPermissionChecker(), companyGroup.getGroupId(),
1072 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1073
1074 layoutLocalService.importPortletInfo(
1075 getUserId(), portletId, parameterMap, file);
1076 }
1077
1078 @Override
1079 public void importPortletInfo(
1080 String portletId, Map<String, String[]> parameterMap,
1081 InputStream is)
1082 throws PortalException, SystemException {
1083
1084 User user = userPersistence.findByPrimaryKey(getUserId());
1085
1086 Group companyGroup = groupLocalService.getCompanyGroup(
1087 user.getCompanyId());
1088
1089 GroupPermissionUtil.check(
1090 getPermissionChecker(), companyGroup.getGroupId(),
1091 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1092
1093 layoutLocalService.importPortletInfo(
1094 getUserId(), portletId, parameterMap, is);
1095 }
1096
1097 @Override
1098 public long importPortletInfoInBackground(
1099 String taskName, long plid, long groupId, String portletId,
1100 Map<String, String[]> parameterMap, File file)
1101 throws PortalException, SystemException {
1102
1103 GroupPermissionUtil.check(
1104 getPermissionChecker(), groupId,
1105 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1106
1107 return layoutLocalService.importPortletInfoInBackground(
1108 getUserId(), taskName, plid, groupId, portletId, parameterMap,
1109 file);
1110 }
1111
1112 @Override
1113 public long importPortletInfoInBackground(
1114 String taskName, long plid, long groupId, String portletId,
1115 Map<String, String[]> parameterMap, InputStream is)
1116 throws PortalException, SystemException {
1117
1118 GroupPermissionUtil.check(
1119 getPermissionChecker(), groupId,
1120 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1121
1122 return layoutLocalService.importPortletInfoInBackground(
1123 getUserId(), taskName, plid, groupId, portletId, parameterMap, is);
1124 }
1125
1126 @Override
1127 public void importPortletInfoInBackground(
1128 String taskName, String portletId,
1129 Map<String, String[]> parameterMap, File file)
1130 throws PortalException, SystemException {
1131
1132 User user = userPersistence.findByPrimaryKey(getUserId());
1133
1134 Group companyGroup = groupLocalService.getCompanyGroup(
1135 user.getCompanyId());
1136
1137 GroupPermissionUtil.check(
1138 getPermissionChecker(), companyGroup.getGroupId(),
1139 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1140
1141 layoutLocalService.importPortletInfoInBackground(
1142 getUserId(), taskName, portletId, parameterMap, file);
1143 }
1144
1145 @Override
1146 public void importPortletInfoInBackground(
1147 String taskName, String portletId,
1148 Map<String, String[]> parameterMap, InputStream is)
1149 throws PortalException, SystemException {
1150
1151 User user = userPersistence.findByPrimaryKey(getUserId());
1152
1153 Group companyGroup = groupLocalService.getCompanyGroup(
1154 user.getCompanyId());
1155
1156 GroupPermissionUtil.check(
1157 getPermissionChecker(), companyGroup.getGroupId(),
1158 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1159
1160 layoutLocalService.importPortletInfoInBackground(
1161 getUserId(), taskName, portletId, parameterMap, is);
1162 }
1163
1164
1191 @Override
1192 public void schedulePublishToLive(
1193 long sourceGroupId, long targetGroupId, boolean privateLayout,
1194 Map<Long, Boolean> layoutIdMap, Map<String, String[]> parameterMap,
1195 String scope, Date startDate, Date endDate, String groupName,
1196 String cronText, Date schedulerStartDate, Date schedulerEndDate,
1197 String description)
1198 throws PortalException, SystemException {
1199
1200 GroupPermissionUtil.check(
1201 getPermissionChecker(), targetGroupId, ActionKeys.PUBLISH_STAGING);
1202
1203 String jobName = PortalUUIDUtil.generate();
1204
1205 Trigger trigger = new CronTrigger(
1206 jobName, groupName, schedulerStartDate, schedulerEndDate, cronText);
1207
1208 String command = StringPool.BLANK;
1209
1210 if (scope.equals("all-pages")) {
1211 command = LayoutsLocalPublisherRequest.COMMAND_ALL_PAGES;
1212 }
1213 else if (scope.equals("selected-pages")) {
1214 command = LayoutsLocalPublisherRequest.COMMAND_SELECTED_PAGES;
1215 }
1216
1217 LayoutsLocalPublisherRequest publisherRequest =
1218 new LayoutsLocalPublisherRequest(
1219 command, getUserId(), sourceGroupId, targetGroupId,
1220 privateLayout, layoutIdMap, parameterMap, startDate, endDate);
1221
1222 SchedulerEngineHelperUtil.schedule(
1223 trigger, StorageType.PERSISTED, description,
1224 DestinationNames.LAYOUTS_LOCAL_PUBLISHER, publisherRequest, 0);
1225 }
1226
1227
1257 @Override
1258 public void schedulePublishToRemote(
1259 long sourceGroupId, boolean privateLayout,
1260 Map<Long, Boolean> layoutIdMap, Map<String, String[]> parameterMap,
1261 String remoteAddress, int remotePort, String remotePathContext,
1262 boolean secureConnection, long remoteGroupId,
1263 boolean remotePrivateLayout, Date startDate, Date endDate,
1264 String groupName, String cronText, Date schedulerStartDate,
1265 Date schedulerEndDate, String description)
1266 throws PortalException, SystemException {
1267
1268 GroupPermissionUtil.check(
1269 getPermissionChecker(), sourceGroupId, ActionKeys.PUBLISH_STAGING);
1270
1271 LayoutsRemotePublisherRequest publisherRequest =
1272 new LayoutsRemotePublisherRequest(
1273 getUserId(), sourceGroupId, privateLayout, layoutIdMap,
1274 parameterMap, remoteAddress, remotePort, remotePathContext,
1275 secureConnection, remoteGroupId, remotePrivateLayout, startDate,
1276 endDate);
1277
1278 String jobName = PortalUUIDUtil.generate();
1279
1280 Trigger trigger = new CronTrigger(
1281 jobName, groupName, schedulerStartDate, schedulerEndDate, cronText);
1282
1283 SchedulerEngineHelperUtil.schedule(
1284 trigger, StorageType.PERSISTED, description,
1285 DestinationNames.LAYOUTS_REMOTE_PUBLISHER, publisherRequest, 0);
1286 }
1287
1288
1304 @Override
1305 public void setLayouts(
1306 long groupId, boolean privateLayout, long parentLayoutId,
1307 long[] layoutIds, ServiceContext serviceContext)
1308 throws PortalException, SystemException {
1309
1310 GroupPermissionUtil.check(
1311 getPermissionChecker(), groupId, ActionKeys.UPDATE);
1312
1313 layoutLocalService.setLayouts(
1314 groupId, privateLayout, parentLayoutId, layoutIds, serviceContext);
1315 }
1316
1317
1329 @Override
1330 public void unschedulePublishToLive(
1331 long groupId, String jobName, String groupName)
1332 throws PortalException, SystemException {
1333
1334 GroupPermissionUtil.check(
1335 getPermissionChecker(), groupId, ActionKeys.PUBLISH_STAGING);
1336
1337 SchedulerEngineHelperUtil.delete(
1338 jobName, groupName, StorageType.PERSISTED);
1339 }
1340
1341
1353 @Override
1354 public void unschedulePublishToRemote(
1355 long groupId, String jobName, String groupName)
1356 throws PortalException, SystemException {
1357
1358 GroupPermissionUtil.check(
1359 getPermissionChecker(), groupId, ActionKeys.PUBLISH_STAGING);
1360
1361 SchedulerEngineHelperUtil.delete(
1362 jobName, groupName, StorageType.PERSISTED);
1363 }
1364
1365
1399 @Override
1400 public Layout updateLayout(
1401 long groupId, boolean privateLayout, long layoutId,
1402 long parentLayoutId, Map<Locale, String> localeNamesMap,
1403 Map<Locale, String> localeTitlesMap,
1404 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
1405 Map<Locale, String> robotsMap, String type, boolean hidden,
1406 Map<Locale, String> friendlyURLMap, Boolean iconImage,
1407 byte[] iconBytes, ServiceContext serviceContext)
1408 throws PortalException, SystemException {
1409
1410 LayoutPermissionUtil.check(
1411 getPermissionChecker(), groupId, privateLayout, layoutId,
1412 ActionKeys.UPDATE);
1413
1414 return layoutLocalService.updateLayout(
1415 groupId, privateLayout, layoutId, parentLayoutId, localeNamesMap,
1416 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
1417 hidden, friendlyURLMap, iconImage, iconBytes, serviceContext);
1418 }
1419
1420
1459 @Override
1460 public Layout updateLayout(
1461 long groupId, boolean privateLayout, long layoutId,
1462 long parentLayoutId, Map<Locale, String> localeNamesMap,
1463 Map<Locale, String> localeTitlesMap,
1464 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
1465 Map<Locale, String> robotsMap, String type, boolean hidden,
1466 String friendlyURL, Boolean iconImage, byte[] iconBytes,
1467 ServiceContext serviceContext)
1468 throws PortalException, SystemException {
1469
1470 LayoutPermissionUtil.check(
1471 getPermissionChecker(), groupId, privateLayout, layoutId,
1472 ActionKeys.UPDATE);
1473
1474 return layoutLocalService.updateLayout(
1475 groupId, privateLayout, layoutId, parentLayoutId, localeNamesMap,
1476 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
1477 hidden, friendlyURL, iconImage, iconBytes, serviceContext);
1478 }
1479
1480
1494 @Override
1495 public Layout updateLayout(
1496 long groupId, boolean privateLayout, long layoutId,
1497 String typeSettings)
1498 throws PortalException, SystemException {
1499
1500 LayoutPermissionUtil.check(
1501 getPermissionChecker(), groupId, privateLayout, layoutId,
1502 ActionKeys.UPDATE);
1503
1504 return layoutLocalService.updateLayout(
1505 groupId, privateLayout, layoutId, typeSettings);
1506 }
1507
1508
1524 @Override
1525 public Layout updateLookAndFeel(
1526 long groupId, boolean privateLayout, long layoutId, String themeId,
1527 String colorSchemeId, String css, boolean wapTheme)
1528 throws PortalException, SystemException {
1529
1530 LayoutPermissionUtil.check(
1531 getPermissionChecker(), groupId, privateLayout, layoutId,
1532 ActionKeys.UPDATE);
1533
1534 if (Validator.isNotNull(themeId)) {
1535 pluginSettingLocalService.checkPermission(
1536 getUserId(), themeId, Plugin.TYPE_THEME);
1537 }
1538
1539 return layoutLocalService.updateLookAndFeel(
1540 groupId, privateLayout, layoutId, themeId, colorSchemeId, css,
1541 wapTheme);
1542 }
1543
1544
1560 @Override
1561 public Layout updateName(
1562 long groupId, boolean privateLayout, long layoutId, String name,
1563 String languageId)
1564 throws PortalException, SystemException {
1565
1566 LayoutPermissionUtil.check(
1567 getPermissionChecker(), groupId, privateLayout, layoutId,
1568 ActionKeys.UPDATE);
1569
1570 return layoutLocalService.updateName(
1571 groupId, privateLayout, layoutId, name, languageId);
1572 }
1573
1574
1587 @Override
1588 public Layout updateName(long plid, String name, String languageId)
1589 throws PortalException, SystemException {
1590
1591 LayoutPermissionUtil.check(
1592 getPermissionChecker(), plid, ActionKeys.UPDATE);
1593
1594 return layoutLocalService.updateName(plid, name, languageId);
1595 }
1596
1597
1612 @Override
1613 public Layout updateParentLayoutId(
1614 long groupId, boolean privateLayout, long layoutId,
1615 long parentLayoutId)
1616 throws PortalException, SystemException {
1617
1618 LayoutPermissionUtil.check(
1619 getPermissionChecker(), groupId, privateLayout, layoutId,
1620 ActionKeys.UPDATE);
1621
1622 return layoutLocalService.updateParentLayoutId(
1623 groupId, privateLayout, layoutId, parentLayoutId);
1624 }
1625
1626
1641 @Override
1642 public Layout updateParentLayoutId(long plid, long parentPlid)
1643 throws PortalException, SystemException {
1644
1645 LayoutPermissionUtil.check(
1646 getPermissionChecker(), plid, ActionKeys.UPDATE);
1647
1648 return layoutLocalService.updateParentLayoutId(plid, parentPlid);
1649 }
1650
1651 @Override
1652 public Layout updateParentLayoutIdAndPriority(
1653 long plid, long parentPlid, int priority)
1654 throws PortalException, SystemException {
1655
1656 return layoutLocalService.updateParentLayoutIdAndPriority(
1657 plid, parentPlid, priority);
1658 }
1659
1660
1673 @Override
1674 public Layout updatePriority(
1675 long groupId, boolean privateLayout, long layoutId, int priority)
1676 throws PortalException, SystemException {
1677
1678 LayoutPermissionUtil.check(
1679 getPermissionChecker(), groupId, privateLayout, layoutId,
1680 ActionKeys.UPDATE);
1681
1682 return layoutLocalService.updatePriority(
1683 groupId, privateLayout, layoutId, priority);
1684 }
1685
1686
1701 @Override
1702 public Layout updatePriority(
1703 long groupId, boolean privateLayout, long layoutId,
1704 long nextLayoutId, long previousLayoutId)
1705 throws PortalException, SystemException {
1706
1707 LayoutPermissionUtil.check(
1708 getPermissionChecker(), groupId, privateLayout, layoutId,
1709 ActionKeys.UPDATE);
1710
1711 return layoutLocalService.updatePriority(
1712 groupId, privateLayout, layoutId, nextLayoutId, previousLayoutId);
1713 }
1714
1715
1725 @Override
1726 public Layout updatePriority(long plid, int priority)
1727 throws PortalException, SystemException {
1728
1729 LayoutPermissionUtil.check(
1730 getPermissionChecker(), plid, ActionKeys.UPDATE);
1731
1732 return layoutLocalService.updatePriority(plid, priority);
1733 }
1734
1735 @Override
1736 public MissingReferences validateImportLayoutsFile(
1737 long groupId, boolean privateLayout,
1738 Map<String, String[]> parameterMap, File file)
1739 throws PortalException, SystemException {
1740
1741 GroupPermissionUtil.check(
1742 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
1743
1744 return layoutLocalService.validateImportLayoutsFile(
1745 getUserId(), groupId, privateLayout, parameterMap, file);
1746 }
1747
1748 @Override
1749 public MissingReferences validateImportLayoutsFile(
1750 long groupId, boolean privateLayout,
1751 Map<String, String[]> parameterMap, InputStream inputStream)
1752 throws PortalException, SystemException {
1753
1754 GroupPermissionUtil.check(
1755 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
1756
1757 return layoutLocalService.validateImportLayoutsFile(
1758 getUserId(), groupId, privateLayout, parameterMap, inputStream);
1759 }
1760
1761 @Override
1762 public MissingReferences validateImportPortletInfo(
1763 long plid, long groupId, String portletId,
1764 Map<String, String[]> parameterMap, File file)
1765 throws PortalException, SystemException {
1766
1767 PortletPermissionUtil.check(
1768 getPermissionChecker(), plid, portletId, ActionKeys.CONFIGURATION);
1769
1770 return layoutLocalService.validateImportPortletInfo(
1771 getUserId(), plid, groupId, portletId, parameterMap, file);
1772 }
1773
1774 @Override
1775 public MissingReferences validateImportPortletInfo(
1776 long plid, long groupId, String portletId,
1777 Map<String, String[]> parameterMap, InputStream inputStream)
1778 throws PortalException, SystemException {
1779
1780 PortletPermissionUtil.check(
1781 getPermissionChecker(), plid, portletId, ActionKeys.CONFIGURATION);
1782
1783 return layoutLocalService.validateImportPortletInfo(
1784 getUserId(), plid, groupId, portletId, parameterMap, inputStream);
1785 }
1786
1787 protected List<Layout> filterLayouts(List<Layout> layouts)
1788 throws PortalException, SystemException {
1789
1790 List<Layout> filteredLayouts = new ArrayList<Layout>();
1791
1792 for (Layout layout : layouts) {
1793 if (LayoutPermissionUtil.contains(
1794 getPermissionChecker(), layout.getPlid(),
1795 ActionKeys.VIEW)) {
1796
1797 filteredLayouts.add(layout);
1798 }
1799 }
1800
1801 return filteredLayouts;
1802 }
1803
1804 }