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.lar.ExportImportHelperUtil;
021 import com.liferay.portal.kernel.lar.MissingReferences;
022 import com.liferay.portal.kernel.lar.exportimportconfiguration.ExportImportConfigurationConstants;
023 import com.liferay.portal.kernel.lar.exportimportconfiguration.ExportImportConfigurationSettingsMapFactory;
024 import com.liferay.portal.kernel.messaging.DestinationNames;
025 import com.liferay.portal.kernel.repository.model.FileEntry;
026 import com.liferay.portal.kernel.scheduler.CronTrigger;
027 import com.liferay.portal.kernel.scheduler.SchedulerEngineHelperUtil;
028 import com.liferay.portal.kernel.scheduler.StorageType;
029 import com.liferay.portal.kernel.scheduler.Trigger;
030 import com.liferay.portal.kernel.util.GetterUtil;
031 import com.liferay.portal.kernel.util.TempFileEntryUtil;
032 import com.liferay.portal.kernel.util.Validator;
033 import com.liferay.portal.kernel.uuid.PortalUUIDUtil;
034 import com.liferay.portal.kernel.workflow.WorkflowConstants;
035 import com.liferay.portal.model.ExportImportConfiguration;
036 import com.liferay.portal.model.Group;
037 import com.liferay.portal.model.Layout;
038 import com.liferay.portal.model.LayoutConstants;
039 import com.liferay.portal.model.LayoutReference;
040 import com.liferay.portal.model.LayoutTypePortlet;
041 import com.liferay.portal.model.Plugin;
042 import com.liferay.portal.model.User;
043 import com.liferay.portal.security.permission.ActionKeys;
044 import com.liferay.portal.security.permission.PermissionChecker;
045 import com.liferay.portal.service.ServiceContext;
046 import com.liferay.portal.service.base.LayoutServiceBaseImpl;
047 import com.liferay.portal.service.permission.GroupPermissionUtil;
048 import com.liferay.portal.service.permission.LayoutPermissionUtil;
049 import com.liferay.portal.service.permission.PortletPermissionUtil;
050 import com.liferay.portal.util.PortletKeys;
051 import com.liferay.portlet.PortletPreferencesFactoryUtil;
052
053 import java.io.File;
054 import java.io.InputStream;
055 import java.io.Serializable;
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
120 @Deprecated
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 {
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
193 @Override
194 public Layout addLayout(
195 long groupId, boolean privateLayout, long parentLayoutId,
196 Map<Locale, String> localeNamesMap,
197 Map<Locale, String> localeTitlesMap,
198 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
199 Map<Locale, String> robotsMap, String type, String typeSettings,
200 boolean hidden, Map<Locale, String> friendlyURLMap,
201 ServiceContext serviceContext)
202 throws PortalException {
203
204 PermissionChecker permissionChecker = getPermissionChecker();
205
206 if (parentLayoutId == LayoutConstants.DEFAULT_PARENT_LAYOUT_ID) {
207 GroupPermissionUtil.check(
208 permissionChecker, groupId, ActionKeys.ADD_LAYOUT);
209 }
210 else {
211 LayoutPermissionUtil.check(
212 permissionChecker, groupId, privateLayout, parentLayoutId,
213 ActionKeys.ADD_LAYOUT);
214 }
215
216 return layoutLocalService.addLayout(
217 getUserId(), groupId, privateLayout, parentLayoutId, localeNamesMap,
218 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
219 typeSettings, hidden, friendlyURLMap, serviceContext);
220 }
221
222
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 {
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 folderName, String fileName,
289 InputStream inputStream, String mimeType)
290 throws PortalException {
291
292 GroupPermissionUtil.check(
293 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
294
295 return TempFileEntryUtil.addTempFileEntry(
296 groupId, getUserId(), folderName, fileName, inputStream, mimeType);
297 }
298
299
311 @Override
312 public void deleteLayout(
313 long groupId, boolean privateLayout, long layoutId,
314 ServiceContext serviceContext)
315 throws PortalException {
316
317 LayoutPermissionUtil.check(
318 getPermissionChecker(), groupId, privateLayout, layoutId,
319 ActionKeys.DELETE);
320
321 layoutLocalService.deleteLayout(
322 groupId, privateLayout, layoutId, serviceContext);
323 }
324
325
335 @Override
336 public void deleteLayout(long plid, ServiceContext serviceContext)
337 throws PortalException {
338
339 LayoutPermissionUtil.check(
340 getPermissionChecker(), plid, ActionKeys.DELETE);
341
342 layoutLocalService.deleteLayout(plid, serviceContext);
343 }
344
345 @Override
346 public void deleteTempFileEntry(
347 long groupId, String folderName, String fileName)
348 throws PortalException {
349
350 GroupPermissionUtil.check(
351 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
352
353 TempFileEntryUtil.deleteTempFileEntry(
354 groupId, getUserId(), folderName, fileName);
355 }
356
357
375 @Override
376 public byte[] exportLayouts(
377 long groupId, boolean privateLayout, long[] layoutIds,
378 Map<String, String[]> parameterMap, Date startDate, Date endDate)
379 throws PortalException {
380
381 GroupPermissionUtil.check(
382 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
383
384 return layoutLocalService.exportLayouts(
385 groupId, privateLayout, layoutIds, parameterMap, startDate,
386 endDate);
387 }
388
389
405 @Override
406 public byte[] exportLayouts(
407 long groupId, boolean privateLayout,
408 Map<String, String[]> parameterMap, Date startDate, Date endDate)
409 throws PortalException {
410
411 GroupPermissionUtil.check(
412 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
413
414 return layoutLocalService.exportLayouts(
415 groupId, privateLayout, parameterMap, startDate, endDate);
416 }
417
418
436 @Override
437 public File exportLayoutsAsFile(
438 long groupId, boolean privateLayout, long[] layoutIds,
439 Map<String, String[]> parameterMap, Date startDate, Date endDate)
440 throws PortalException {
441
442 GroupPermissionUtil.check(
443 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
444
445 return layoutLocalService.exportLayoutsAsFile(
446 groupId, privateLayout, layoutIds, parameterMap, startDate,
447 endDate);
448 }
449
450 @Override
451 public long exportLayoutsAsFileInBackground(
452 ExportImportConfiguration exportImportConfiguration)
453 throws PortalException {
454
455 GroupPermissionUtil.check(
456 getPermissionChecker(), exportImportConfiguration.getGroupId(),
457 ActionKeys.EXPORT_IMPORT_LAYOUTS);
458
459 return layoutLocalService.exportLayoutsAsFileInBackground(
460 getUserId(), exportImportConfiguration);
461 }
462
463 @Override
464 public long exportLayoutsAsFileInBackground(
465 long exportImportConfigurationId)
466 throws PortalException {
467
468 ExportImportConfiguration exportImportConfiguration =
469 exportImportConfigurationLocalService.getExportImportConfiguration(
470 exportImportConfigurationId);
471
472 GroupPermissionUtil.check(
473 getPermissionChecker(), exportImportConfiguration.getGroupId(),
474 ActionKeys.EXPORT_IMPORT_LAYOUTS);
475
476 return layoutLocalService.exportLayoutsAsFileInBackground(
477 getUserId(), exportImportConfigurationId);
478 }
479
480 @Override
481 public long exportLayoutsAsFileInBackground(
482 String taskName, long groupId, boolean privateLayout,
483 long[] layoutIds, Map<String, String[]> parameterMap,
484 Date startDate, Date endDate)
485 throws PortalException {
486
487 GroupPermissionUtil.check(
488 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
489
490 return layoutLocalService.exportLayoutsAsFileInBackground(
491 getUserId(), taskName, groupId, privateLayout, layoutIds,
492 parameterMap, startDate, endDate);
493 }
494
495
500 @Deprecated
501 @Override
502 public long exportLayoutsAsFileInBackground(
503 String taskName, long groupId, boolean privateLayout,
504 long[] layoutIds, Map<String, String[]> parameterMap,
505 Date startDate, Date endDate, String fileName)
506 throws PortalException {
507
508 GroupPermissionUtil.check(
509 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
510
511 return layoutLocalService.exportLayoutsAsFileInBackground(
512 getUserId(), taskName, groupId, privateLayout, layoutIds,
513 parameterMap, startDate, endDate, fileName);
514 }
515
516
535 @Override
536 public byte[] exportPortletInfo(
537 long plid, long groupId, String portletId,
538 Map<String, String[]> parameterMap, Date startDate, Date endDate)
539 throws PortalException {
540
541 Layout layout = layoutLocalService.getLayout(plid);
542
543 GroupPermissionUtil.check(
544 getPermissionChecker(), layout.getGroupId(),
545 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
546
547 return layoutLocalService.exportPortletInfo(
548 plid, groupId, portletId, parameterMap, startDate, endDate);
549 }
550
551 @Override
552 public byte[] exportPortletInfo(
553 long companyId, String portletId,
554 Map<String, String[]> parameterMap, Date startDate, Date endDate)
555 throws PortalException {
556
557 Group companyGroup = groupLocalService.getCompanyGroup(companyId);
558
559 GroupPermissionUtil.check(
560 getPermissionChecker(), companyGroup,
561 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
562
563 return layoutLocalService.exportPortletInfo(
564 companyId, portletId, parameterMap, startDate, endDate);
565 }
566
567
586 @Override
587 public File exportPortletInfoAsFile(
588 long plid, long groupId, String portletId,
589 Map<String, String[]> parameterMap, Date startDate, Date endDate)
590 throws PortalException {
591
592 Layout layout = layoutLocalService.getLayout(plid);
593
594 GroupPermissionUtil.check(
595 getPermissionChecker(), layout.getGroupId(),
596 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
597
598 return layoutLocalService.exportPortletInfoAsFile(
599 plid, groupId, portletId, parameterMap, startDate, endDate);
600 }
601
602 @Override
603 public File exportPortletInfoAsFile(
604 String portletId, Map<String, String[]> parameterMap,
605 Date startDate, Date endDate)
606 throws PortalException {
607
608 User user = userPersistence.findByPrimaryKey(getUserId());
609
610 Group companyGroup = groupLocalService.getCompanyGroup(
611 user.getCompanyId());
612
613 GroupPermissionUtil.check(
614 getPermissionChecker(), companyGroup,
615 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
616
617 return layoutLocalService.exportPortletInfoAsFile(
618 user.getCompanyId(), portletId, parameterMap, startDate, endDate);
619 }
620
621 @Override
622 public long exportPortletInfoAsFileInBackground(
623 String taskName, long plid, long groupId, String portletId,
624 Map<String, String[]> parameterMap, Date startDate, Date endDate,
625 String fileName)
626 throws PortalException {
627
628 Layout layout = layoutLocalService.getLayout(plid);
629
630 GroupPermissionUtil.check(
631 getPermissionChecker(), layout.getGroupId(),
632 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
633
634 return layoutLocalService.exportPortletInfoAsFileInBackground(
635 getUserId(), taskName, plid, groupId, portletId, parameterMap,
636 startDate, endDate, fileName);
637 }
638
639 @Override
640 public long exportPortletInfoAsFileInBackground(
641 String taskName, String portletId,
642 Map<String, String[]> parameterMap, Date startDate, Date endDate,
643 String fileName)
644 throws PortalException {
645
646 User user = userPersistence.findByPrimaryKey(getUserId());
647
648 Group companyGroup = groupLocalService.getCompanyGroup(
649 user.getCompanyId());
650
651 GroupPermissionUtil.check(
652 getPermissionChecker(), companyGroup,
653 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
654
655 return layoutLocalService.exportPortletInfoAsFileInBackground(
656 getUserId(), taskName, portletId, parameterMap, startDate, endDate,
657 fileName);
658 }
659
660
668 @Override
669 public List<Layout> getAncestorLayouts(long plid) throws PortalException {
670 Layout layout = layoutLocalService.getLayout(plid);
671
672 List<Layout> ancestors = layout.getAncestors();
673
674 return filterLayouts(ancestors);
675 }
676
677
690 @Override
691 public long getDefaultPlid(
692 long groupId, long scopeGroupId, boolean privateLayout,
693 String portletId)
694 throws PortalException {
695
696 if (groupId <= 0) {
697 return LayoutConstants.DEFAULT_PLID;
698 }
699
700 PermissionChecker permissionChecker = getPermissionChecker();
701
702 String scopeGroupLayoutUuid = null;
703
704 Group scopeGroup = groupLocalService.getGroup(scopeGroupId);
705
706 if (scopeGroup.isLayout()) {
707 Layout scopeGroupLayout = layoutLocalService.getLayout(
708 scopeGroup.getClassPK());
709
710 scopeGroupLayoutUuid = scopeGroupLayout.getUuid();
711 }
712
713 Map<Long, javax.portlet.PortletPreferences> jxPortletPreferencesMap =
714 PortletPreferencesFactoryUtil.getPortletSetupMap(
715 scopeGroup.getCompanyId(), groupId,
716 PortletKeys.PREFS_OWNER_ID_DEFAULT,
717 PortletKeys.PREFS_OWNER_TYPE_LAYOUT, portletId, privateLayout);
718
719 for (Map.Entry<Long, javax.portlet.PortletPreferences> entry :
720 jxPortletPreferencesMap.entrySet()) {
721
722 long plid = entry.getKey();
723
724 Layout layout = null;
725
726 try {
727 layout = layoutLocalService.getLayout(plid);
728 }
729 catch (NoSuchLayoutException nsle) {
730 continue;
731 }
732
733 if (!LayoutPermissionUtil.contains(
734 permissionChecker, layout, ActionKeys.VIEW)) {
735
736 continue;
737 }
738
739 if (!layout.isTypePortlet()) {
740 continue;
741 }
742
743 LayoutTypePortlet layoutTypePortlet =
744 (LayoutTypePortlet)layout.getLayoutType();
745
746 if (!layoutTypePortlet.hasPortletId(portletId)) {
747 continue;
748 }
749
750 javax.portlet.PortletPreferences jxPortletPreferences =
751 entry.getValue();
752
753 String scopeType = GetterUtil.getString(
754 jxPortletPreferences.getValue("lfrScopeType", null));
755
756 if (scopeGroup.isLayout()) {
757 String scopeLayoutUuid = GetterUtil.getString(
758 jxPortletPreferences.getValue("lfrScopeLayoutUuid", null));
759
760 if (Validator.isNotNull(scopeType) &&
761 Validator.isNotNull(scopeLayoutUuid) &&
762 scopeLayoutUuid.equals(scopeGroupLayoutUuid)) {
763
764 return layout.getPlid();
765 }
766 }
767 else if (scopeGroup.isCompany()) {
768 if (Validator.isNotNull(scopeType) &&
769 scopeType.equals("company")) {
770
771 return layout.getPlid();
772 }
773 }
774 else {
775 if (Validator.isNull(scopeType)) {
776 return layout.getPlid();
777 }
778 }
779 }
780
781 return LayoutConstants.DEFAULT_PLID;
782 }
783
784 @Override
785 @ThreadLocalCachable
786 public long getDefaultPlid(
787 long groupId, long scopeGroupId, String portletId)
788 throws PortalException {
789
790 long plid = getDefaultPlid(groupId, scopeGroupId, false, portletId);
791
792 if (plid == 0) {
793 plid = getDefaultPlid(groupId, scopeGroupId, true, portletId);
794 }
795
796 return plid;
797 }
798
799
810 @Override
811 public Layout getLayoutByUuidAndGroupId(
812 String uuid, long groupId, boolean privateLayout)
813 throws PortalException {
814
815 Layout layout = layoutLocalService.getLayoutByUuidAndGroupId(
816 uuid, groupId, privateLayout);
817
818 LayoutPermissionUtil.check(
819 getPermissionChecker(), layout, ActionKeys.VIEW);
820
821 return layout;
822 }
823
824
835 @Override
836 public String getLayoutName(
837 long groupId, boolean privateLayout, long layoutId,
838 String languageId)
839 throws PortalException {
840
841 Layout layout = layoutLocalService.getLayout(
842 groupId, privateLayout, layoutId);
843
844 return layout.getName(languageId);
845 }
846
847
857 @Override
858 public LayoutReference[] getLayoutReferences(
859 long companyId, String portletId, String preferencesKey,
860 String preferencesValue) {
861
862 return layoutLocalService.getLayouts(
863 companyId, portletId, preferencesKey, preferencesValue);
864 }
865
866 @Override
867 public List<Layout> getLayouts(long groupId, boolean privateLayout) {
868 return layoutPersistence.filterFindByG_P(groupId, privateLayout);
869 }
870
871 @Override
872 public List<Layout> getLayouts(
873 long groupId, boolean privateLayout, long parentLayoutId) {
874
875 return layoutPersistence.filterFindByG_P_P(
876 groupId, privateLayout, parentLayoutId);
877 }
878
879 @Override
880 public List<Layout> getLayouts(
881 long groupId, boolean privateLayout, long parentLayoutId,
882 boolean incomplete, int start, int end)
883 throws PortalException {
884
885 List<Layout> layouts = layoutLocalService.getLayouts(
886 groupId, privateLayout, parentLayoutId, incomplete, start, end);
887
888 return filterLayouts(layouts);
889 }
890
891 @Override
892 public int getLayoutsCount(
893 long groupId, boolean privateLayout, long parentLayoutId) {
894
895 return layoutPersistence.filterCountByG_P_P(
896 groupId, privateLayout, parentLayoutId);
897 }
898
899 @Override
900 public String[] getTempFileNames(long groupId, String folderName)
901 throws PortalException {
902
903 GroupPermissionUtil.check(
904 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
905
906 return TempFileEntryUtil.getTempFileNames(
907 groupId, getUserId(), folderName);
908 }
909
910
925 @Override
926 public void importLayouts(
927 long groupId, boolean privateLayout,
928 Map<String, String[]> parameterMap, byte[] bytes)
929 throws PortalException {
930
931 GroupPermissionUtil.check(
932 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
933
934 layoutLocalService.importLayouts(
935 getUserId(), groupId, privateLayout, parameterMap, bytes);
936 }
937
938
953 @Override
954 public void importLayouts(
955 long groupId, boolean privateLayout,
956 Map<String, String[]> parameterMap, File file)
957 throws PortalException {
958
959 GroupPermissionUtil.check(
960 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
961
962 layoutLocalService.importLayouts(
963 getUserId(), groupId, privateLayout, parameterMap, file);
964 }
965
966
981 @Override
982 public void importLayouts(
983 long groupId, boolean privateLayout,
984 Map<String, String[]> parameterMap, InputStream is)
985 throws PortalException {
986
987 GroupPermissionUtil.check(
988 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
989
990 layoutLocalService.importLayouts(
991 getUserId(), groupId, privateLayout, parameterMap, is);
992 }
993
994 @Override
995 public long importLayoutsInBackground(
996 String taskName, long groupId, boolean privateLayout,
997 Map<String, String[]> parameterMap, File file)
998 throws PortalException {
999
1000 GroupPermissionUtil.check(
1001 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
1002
1003 return layoutLocalService.importLayoutsInBackground(
1004 getUserId(), taskName, groupId, privateLayout, parameterMap, file);
1005 }
1006
1007 @Override
1008 public long importLayoutsInBackground(
1009 String taskName, long groupId, boolean privateLayout,
1010 Map<String, String[]> parameterMap, InputStream inputStream)
1011 throws PortalException {
1012
1013 GroupPermissionUtil.check(
1014 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
1015
1016 return layoutLocalService.importLayoutsInBackground(
1017 getUserId(), taskName, groupId, privateLayout, parameterMap,
1018 inputStream);
1019 }
1020
1021
1037 @Override
1038 public void importPortletInfo(
1039 long plid, long groupId, String portletId,
1040 Map<String, String[]> parameterMap, File file)
1041 throws PortalException {
1042
1043 GroupPermissionUtil.check(
1044 getPermissionChecker(), groupId,
1045 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1046
1047 layoutLocalService.importPortletInfo(
1048 getUserId(), plid, groupId, portletId, parameterMap, file);
1049 }
1050
1051
1067 @Override
1068 public void importPortletInfo(
1069 long plid, long groupId, String portletId,
1070 Map<String, String[]> parameterMap, InputStream is)
1071 throws PortalException {
1072
1073 GroupPermissionUtil.check(
1074 getPermissionChecker(), groupId,
1075 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1076
1077 layoutLocalService.importPortletInfo(
1078 getUserId(), plid, groupId, portletId, parameterMap, is);
1079 }
1080
1081 @Override
1082 public void importPortletInfo(
1083 String portletId, Map<String, String[]> parameterMap, File file)
1084 throws PortalException {
1085
1086 User user = userPersistence.findByPrimaryKey(getUserId());
1087
1088 Group companyGroup = groupLocalService.getCompanyGroup(
1089 user.getCompanyId());
1090
1091 GroupPermissionUtil.check(
1092 getPermissionChecker(), companyGroup,
1093 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1094
1095 layoutLocalService.importPortletInfo(
1096 getUserId(), portletId, parameterMap, file);
1097 }
1098
1099 @Override
1100 public void importPortletInfo(
1101 String portletId, Map<String, String[]> parameterMap,
1102 InputStream is)
1103 throws PortalException {
1104
1105 User user = userPersistence.findByPrimaryKey(getUserId());
1106
1107 Group companyGroup = groupLocalService.getCompanyGroup(
1108 user.getCompanyId());
1109
1110 GroupPermissionUtil.check(
1111 getPermissionChecker(), companyGroup,
1112 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1113
1114 layoutLocalService.importPortletInfo(
1115 getUserId(), portletId, parameterMap, is);
1116 }
1117
1118 @Override
1119 public long importPortletInfoInBackground(
1120 String taskName, long plid, long groupId, String portletId,
1121 Map<String, String[]> parameterMap, File file)
1122 throws PortalException {
1123
1124 GroupPermissionUtil.check(
1125 getPermissionChecker(), groupId,
1126 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1127
1128 return layoutLocalService.importPortletInfoInBackground(
1129 getUserId(), taskName, plid, groupId, portletId, parameterMap,
1130 file);
1131 }
1132
1133 @Override
1134 public long importPortletInfoInBackground(
1135 String taskName, long plid, long groupId, String portletId,
1136 Map<String, String[]> parameterMap, InputStream is)
1137 throws PortalException {
1138
1139 GroupPermissionUtil.check(
1140 getPermissionChecker(), groupId,
1141 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1142
1143 return layoutLocalService.importPortletInfoInBackground(
1144 getUserId(), taskName, plid, groupId, portletId, parameterMap, is);
1145 }
1146
1147 @Override
1148 public void importPortletInfoInBackground(
1149 String taskName, String portletId,
1150 Map<String, String[]> parameterMap, File file)
1151 throws PortalException {
1152
1153 User user = userPersistence.findByPrimaryKey(getUserId());
1154
1155 Group companyGroup = groupLocalService.getCompanyGroup(
1156 user.getCompanyId());
1157
1158 GroupPermissionUtil.check(
1159 getPermissionChecker(), companyGroup,
1160 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1161
1162 layoutLocalService.importPortletInfoInBackground(
1163 getUserId(), taskName, portletId, parameterMap, file);
1164 }
1165
1166 @Override
1167 public void importPortletInfoInBackground(
1168 String taskName, String portletId,
1169 Map<String, String[]> parameterMap, InputStream is)
1170 throws PortalException {
1171
1172 User user = userPersistence.findByPrimaryKey(getUserId());
1173
1174 Group companyGroup = groupLocalService.getCompanyGroup(
1175 user.getCompanyId());
1176
1177 GroupPermissionUtil.check(
1178 getPermissionChecker(), companyGroup,
1179 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1180
1181 layoutLocalService.importPortletInfoInBackground(
1182 getUserId(), taskName, portletId, parameterMap, is);
1183 }
1184
1185
1211 @Override
1212 public void schedulePublishToLive(
1213 long sourceGroupId, long targetGroupId, boolean privateLayout,
1214 long[] layoutIds, Map<String, String[]> parameterMap, String scope,
1215 Date startDate, Date endDate, String groupName, String cronText,
1216 Date schedulerStartDate, Date schedulerEndDate, String description)
1217 throws PortalException {
1218
1219 GroupPermissionUtil.check(
1220 getPermissionChecker(), targetGroupId, ActionKeys.PUBLISH_STAGING);
1221
1222 Trigger trigger = new CronTrigger(
1223 PortalUUIDUtil.generate(), groupName, schedulerStartDate,
1224 schedulerEndDate, cronText);
1225
1226 User user = userPersistence.findByPrimaryKey(getUserId());
1227
1228 Map<String, Serializable> settingsMap =
1229 ExportImportConfigurationSettingsMapFactory.buildSettingsMap(
1230 getUserId(), sourceGroupId, targetGroupId, privateLayout,
1231 layoutIds, parameterMap, startDate, endDate, user.getLocale(),
1232 user.getTimeZone());
1233
1234 ExportImportConfiguration exportImportConfiguration =
1235 exportImportConfigurationLocalService.addExportImportConfiguration(
1236 getUserId(), sourceGroupId, trigger.getJobName(), description,
1237 ExportImportConfigurationConstants.
1238 TYPE_SCHEDULED_PUBLISH_LAYOUT_LOCAL,
1239 settingsMap, WorkflowConstants.STATUS_DRAFT,
1240 new ServiceContext());
1241
1242 SchedulerEngineHelperUtil.schedule(
1243 trigger, StorageType.PERSISTED, description,
1244 DestinationNames.LAYOUTS_LOCAL_PUBLISHER,
1245 exportImportConfiguration.getExportImportConfigurationId(), 0);
1246 }
1247
1248
1280 @Deprecated
1281 @Override
1282 public void schedulePublishToLive(
1283 long sourceGroupId, long targetGroupId, boolean privateLayout,
1284 Map<Long, Boolean> layoutIdMap, Map<String, String[]> parameterMap,
1285 String scope, Date startDate, Date endDate, String groupName,
1286 String cronText, Date schedulerStartDate, Date schedulerEndDate,
1287 String description)
1288 throws PortalException {
1289
1290 schedulePublishToLive(
1291 sourceGroupId, targetGroupId, privateLayout,
1292 ExportImportHelperUtil.getLayoutIds(layoutIdMap, targetGroupId),
1293 parameterMap, scope, startDate, endDate, groupName, cronText,
1294 schedulerStartDate, schedulerEndDate, description);
1295 }
1296
1297
1326 @Override
1327 public void schedulePublishToRemote(
1328 long sourceGroupId, boolean privateLayout,
1329 Map<Long, Boolean> layoutIdMap, Map<String, String[]> parameterMap,
1330 String remoteAddress, int remotePort, String remotePathContext,
1331 boolean secureConnection, long remoteGroupId,
1332 boolean remotePrivateLayout, Date startDate, Date endDate,
1333 String groupName, String cronText, Date schedulerStartDate,
1334 Date schedulerEndDate, String description)
1335 throws PortalException {
1336
1337 GroupPermissionUtil.check(
1338 getPermissionChecker(), sourceGroupId, ActionKeys.PUBLISH_STAGING);
1339
1340 Trigger trigger = new CronTrigger(
1341 PortalUUIDUtil.generate(), groupName, schedulerStartDate,
1342 schedulerEndDate, cronText);
1343
1344 User user = userPersistence.findByPrimaryKey(getUserId());
1345
1346 Map<String, Serializable> settingsMap =
1347 ExportImportConfigurationSettingsMapFactory.buildSettingsMap(
1348 getUserId(), sourceGroupId, privateLayout, layoutIdMap,
1349 parameterMap, remoteAddress, remotePort, remotePathContext,
1350 secureConnection, remoteGroupId, remotePrivateLayout, startDate,
1351 endDate, user.getLocale(), user.getTimeZone());
1352
1353 ExportImportConfiguration exportImportConfiguration =
1354 exportImportConfigurationLocalService.addExportImportConfiguration(
1355 getUserId(), sourceGroupId, trigger.getJobName(), description,
1356 ExportImportConfigurationConstants.
1357 TYPE_SCHEDULED_PUBLISH_LAYOUT_REMOTE,
1358 settingsMap, WorkflowConstants.STATUS_DRAFT,
1359 new ServiceContext());
1360
1361 SchedulerEngineHelperUtil.schedule(
1362 trigger, StorageType.PERSISTED, description,
1363 DestinationNames.LAYOUTS_REMOTE_PUBLISHER,
1364 exportImportConfiguration.getExportImportConfigurationId(), 0);
1365 }
1366
1367
1382 @Override
1383 public void setLayouts(
1384 long groupId, boolean privateLayout, long parentLayoutId,
1385 long[] layoutIds, ServiceContext serviceContext)
1386 throws PortalException {
1387
1388 GroupPermissionUtil.check(
1389 getPermissionChecker(), groupId, ActionKeys.UPDATE);
1390
1391 layoutLocalService.setLayouts(
1392 groupId, privateLayout, parentLayoutId, layoutIds, serviceContext);
1393 }
1394
1395
1406 @Override
1407 public void unschedulePublishToLive(
1408 long groupId, String jobName, String groupName)
1409 throws PortalException {
1410
1411 GroupPermissionUtil.check(
1412 getPermissionChecker(), groupId, ActionKeys.PUBLISH_STAGING);
1413
1414 SchedulerEngineHelperUtil.delete(
1415 jobName, groupName, StorageType.PERSISTED);
1416 }
1417
1418
1429 @Override
1430 public void unschedulePublishToRemote(
1431 long groupId, String jobName, String groupName)
1432 throws PortalException {
1433
1434 GroupPermissionUtil.check(
1435 getPermissionChecker(), groupId, ActionKeys.PUBLISH_STAGING);
1436
1437 SchedulerEngineHelperUtil.delete(
1438 jobName, groupName, StorageType.PERSISTED);
1439 }
1440
1441 @Override
1442 public Layout updateIconImage(long plid, byte[] bytes)
1443 throws PortalException {
1444
1445 LayoutPermissionUtil.check(
1446 getPermissionChecker(), plid, ActionKeys.UPDATE);
1447
1448 return layoutLocalService.updateIconImage(plid, bytes);
1449 }
1450
1451
1484 @Override
1485 public Layout updateLayout(
1486 long groupId, boolean privateLayout, long layoutId,
1487 long parentLayoutId, Map<Locale, String> localeNamesMap,
1488 Map<Locale, String> localeTitlesMap,
1489 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
1490 Map<Locale, String> robotsMap, String type, boolean hidden,
1491 Map<Locale, String> friendlyURLMap, boolean iconImage,
1492 byte[] iconBytes, ServiceContext serviceContext)
1493 throws PortalException {
1494
1495 LayoutPermissionUtil.check(
1496 getPermissionChecker(), groupId, privateLayout, layoutId,
1497 ActionKeys.UPDATE);
1498
1499 return layoutLocalService.updateLayout(
1500 groupId, privateLayout, layoutId, parentLayoutId, localeNamesMap,
1501 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
1502 hidden, friendlyURLMap, iconImage, iconBytes, serviceContext);
1503 }
1504
1505
1543 @Deprecated
1544 @Override
1545 public Layout updateLayout(
1546 long groupId, boolean privateLayout, long layoutId,
1547 long parentLayoutId, Map<Locale, String> localeNamesMap,
1548 Map<Locale, String> localeTitlesMap,
1549 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
1550 Map<Locale, String> robotsMap, String type, boolean hidden,
1551 String friendlyURL, Boolean iconImage, byte[] iconBytes,
1552 ServiceContext serviceContext)
1553 throws PortalException {
1554
1555 LayoutPermissionUtil.check(
1556 getPermissionChecker(), groupId, privateLayout, layoutId,
1557 ActionKeys.UPDATE);
1558
1559 return layoutLocalService.updateLayout(
1560 groupId, privateLayout, layoutId, parentLayoutId, localeNamesMap,
1561 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
1562 hidden, friendlyURL, iconImage, iconBytes, serviceContext);
1563 }
1564
1565
1578 @Override
1579 public Layout updateLayout(
1580 long groupId, boolean privateLayout, long layoutId,
1581 String typeSettings)
1582 throws PortalException {
1583
1584 LayoutPermissionUtil.check(
1585 getPermissionChecker(), groupId, privateLayout, layoutId,
1586 ActionKeys.UPDATE);
1587
1588 return layoutLocalService.updateLayout(
1589 groupId, privateLayout, layoutId, typeSettings);
1590 }
1591
1592
1607 @Override
1608 public Layout updateLookAndFeel(
1609 long groupId, boolean privateLayout, long layoutId, String themeId,
1610 String colorSchemeId, String css, boolean wapTheme)
1611 throws PortalException {
1612
1613 LayoutPermissionUtil.check(
1614 getPermissionChecker(), groupId, privateLayout, layoutId,
1615 ActionKeys.UPDATE);
1616
1617 if (Validator.isNotNull(themeId)) {
1618 pluginSettingLocalService.checkPermission(
1619 getUserId(), themeId, Plugin.TYPE_THEME);
1620 }
1621
1622 return layoutLocalService.updateLookAndFeel(
1623 groupId, privateLayout, layoutId, themeId, colorSchemeId, css,
1624 wapTheme);
1625 }
1626
1627
1642 @Override
1643 public Layout updateName(
1644 long groupId, boolean privateLayout, long layoutId, String name,
1645 String languageId)
1646 throws PortalException {
1647
1648 LayoutPermissionUtil.check(
1649 getPermissionChecker(), groupId, privateLayout, layoutId,
1650 ActionKeys.UPDATE);
1651
1652 return layoutLocalService.updateName(
1653 groupId, privateLayout, layoutId, name, languageId);
1654 }
1655
1656
1668 @Override
1669 public Layout updateName(long plid, String name, String languageId)
1670 throws PortalException {
1671
1672 LayoutPermissionUtil.check(
1673 getPermissionChecker(), plid, ActionKeys.UPDATE);
1674
1675 return layoutLocalService.updateName(plid, name, languageId);
1676 }
1677
1678
1692 @Override
1693 public Layout updateParentLayoutId(
1694 long groupId, boolean privateLayout, long layoutId,
1695 long parentLayoutId)
1696 throws PortalException {
1697
1698 LayoutPermissionUtil.check(
1699 getPermissionChecker(), groupId, privateLayout, layoutId,
1700 ActionKeys.UPDATE);
1701
1702 return layoutLocalService.updateParentLayoutId(
1703 groupId, privateLayout, layoutId, parentLayoutId);
1704 }
1705
1706
1720 @Override
1721 public Layout updateParentLayoutId(long plid, long parentPlid)
1722 throws PortalException {
1723
1724 LayoutPermissionUtil.check(
1725 getPermissionChecker(), plid, ActionKeys.UPDATE);
1726
1727 return layoutLocalService.updateParentLayoutId(plid, parentPlid);
1728 }
1729
1730
1739 @Override
1740 public Layout updateParentLayoutIdAndPriority(
1741 long plid, long parentPlid, int priority)
1742 throws PortalException {
1743
1744 return layoutLocalService.updateParentLayoutIdAndPriority(
1745 plid, parentPlid, priority);
1746 }
1747
1748
1760 @Override
1761 public Layout updatePriority(
1762 long groupId, boolean privateLayout, long layoutId, int priority)
1763 throws PortalException {
1764
1765 LayoutPermissionUtil.check(
1766 getPermissionChecker(), groupId, privateLayout, layoutId,
1767 ActionKeys.UPDATE);
1768
1769 return layoutLocalService.updatePriority(
1770 groupId, privateLayout, layoutId, priority);
1771 }
1772
1773
1787 @Override
1788 public Layout updatePriority(
1789 long groupId, boolean privateLayout, long layoutId,
1790 long nextLayoutId, long previousLayoutId)
1791 throws PortalException {
1792
1793 LayoutPermissionUtil.check(
1794 getPermissionChecker(), groupId, privateLayout, layoutId,
1795 ActionKeys.UPDATE);
1796
1797 return layoutLocalService.updatePriority(
1798 groupId, privateLayout, layoutId, nextLayoutId, previousLayoutId);
1799 }
1800
1801
1810 @Override
1811 public Layout updatePriority(long plid, int priority)
1812 throws PortalException {
1813
1814 LayoutPermissionUtil.check(
1815 getPermissionChecker(), plid, ActionKeys.UPDATE);
1816
1817 return layoutLocalService.updatePriority(plid, priority);
1818 }
1819
1820 @Override
1821 public MissingReferences validateImportLayoutsFile(
1822 long groupId, boolean privateLayout,
1823 Map<String, String[]> parameterMap, File file)
1824 throws PortalException {
1825
1826 GroupPermissionUtil.check(
1827 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
1828
1829 return layoutLocalService.validateImportLayoutsFile(
1830 getUserId(), groupId, privateLayout, parameterMap, file);
1831 }
1832
1833 @Override
1834 public MissingReferences validateImportLayoutsFile(
1835 long groupId, boolean privateLayout,
1836 Map<String, String[]> parameterMap, InputStream inputStream)
1837 throws PortalException {
1838
1839 GroupPermissionUtil.check(
1840 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
1841
1842 return layoutLocalService.validateImportLayoutsFile(
1843 getUserId(), groupId, privateLayout, parameterMap, inputStream);
1844 }
1845
1846 @Override
1847 public MissingReferences validateImportPortletInfo(
1848 long plid, long groupId, String portletId,
1849 Map<String, String[]> parameterMap, File file)
1850 throws PortalException {
1851
1852 PortletPermissionUtil.check(
1853 getPermissionChecker(), plid, portletId, ActionKeys.CONFIGURATION);
1854
1855 return layoutLocalService.validateImportPortletInfo(
1856 getUserId(), plid, groupId, portletId, parameterMap, file);
1857 }
1858
1859 @Override
1860 public MissingReferences validateImportPortletInfo(
1861 long plid, long groupId, String portletId,
1862 Map<String, String[]> parameterMap, InputStream inputStream)
1863 throws PortalException {
1864
1865 PortletPermissionUtil.check(
1866 getPermissionChecker(), plid, portletId, ActionKeys.CONFIGURATION);
1867
1868 return layoutLocalService.validateImportPortletInfo(
1869 getUserId(), plid, groupId, portletId, parameterMap, inputStream);
1870 }
1871
1872 protected List<Layout> filterLayouts(List<Layout> layouts)
1873 throws PortalException {
1874
1875 List<Layout> filteredLayouts = new ArrayList<Layout>();
1876
1877 for (Layout layout : layouts) {
1878 if (LayoutPermissionUtil.contains(
1879 getPermissionChecker(), layout, ActionKeys.VIEW)) {
1880
1881 filteredLayouts.add(layout);
1882 }
1883 }
1884
1885 return filteredLayouts;
1886 }
1887
1888 }