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 int getLayoutsCount(
874 long groupId, boolean privateLayout, long parentLayoutId,
875 int priority) throws SystemException {
876
877 return layoutPersistence.filterCountByG_P_P_LtP(
878 groupId, privateLayout, parentLayoutId, priority);
879 }
880
881 @Override
882 public String[] getTempFileEntryNames(long groupId, String tempFolderName)
883 throws PortalException, SystemException {
884
885 GroupPermissionUtil.check(
886 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
887
888 return TempFileUtil.getTempFileEntryNames(
889 groupId, getUserId(),
890 DigesterUtil.digestHex(Digester.SHA_256, tempFolderName));
891 }
892
893
909 @Override
910 public void importLayouts(
911 long groupId, boolean privateLayout,
912 Map<String, String[]> parameterMap, byte[] bytes)
913 throws PortalException, SystemException {
914
915 GroupPermissionUtil.check(
916 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
917
918 layoutLocalService.importLayouts(
919 getUserId(), groupId, privateLayout, parameterMap, bytes);
920 }
921
922
938 @Override
939 public void importLayouts(
940 long groupId, boolean privateLayout,
941 Map<String, String[]> parameterMap, File file)
942 throws PortalException, SystemException {
943
944 GroupPermissionUtil.check(
945 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
946
947 layoutLocalService.importLayouts(
948 getUserId(), groupId, privateLayout, parameterMap, file);
949 }
950
951
967 @Override
968 public void importLayouts(
969 long groupId, boolean privateLayout,
970 Map<String, String[]> parameterMap, InputStream is)
971 throws PortalException, SystemException {
972
973 GroupPermissionUtil.check(
974 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
975
976 layoutLocalService.importLayouts(
977 getUserId(), groupId, privateLayout, parameterMap, is);
978 }
979
980 @Override
981 public long importLayoutsInBackground(
982 String taskName, long groupId, boolean privateLayout,
983 Map<String, String[]> parameterMap, File file)
984 throws PortalException, SystemException {
985
986 GroupPermissionUtil.check(
987 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
988
989 return layoutLocalService.importLayoutsInBackground(
990 getUserId(), taskName, groupId, privateLayout, parameterMap, file);
991 }
992
993 @Override
994 public long importLayoutsInBackground(
995 String taskName, long groupId, boolean privateLayout,
996 Map<String, String[]> parameterMap, InputStream inputStream)
997 throws PortalException, SystemException {
998
999 GroupPermissionUtil.check(
1000 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
1001
1002 return layoutLocalService.importLayoutsInBackground(
1003 getUserId(), taskName, groupId, privateLayout, parameterMap,
1004 inputStream);
1005 }
1006
1007
1024 @Override
1025 public void importPortletInfo(
1026 long plid, long groupId, String portletId,
1027 Map<String, String[]> parameterMap, File file)
1028 throws PortalException, SystemException {
1029
1030 GroupPermissionUtil.check(
1031 getPermissionChecker(), groupId,
1032 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1033
1034 layoutLocalService.importPortletInfo(
1035 getUserId(), plid, groupId, portletId, parameterMap, file);
1036 }
1037
1038
1055 @Override
1056 public void importPortletInfo(
1057 long plid, long groupId, String portletId,
1058 Map<String, String[]> parameterMap, InputStream is)
1059 throws PortalException, SystemException {
1060
1061 GroupPermissionUtil.check(
1062 getPermissionChecker(), groupId,
1063 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1064
1065 layoutLocalService.importPortletInfo(
1066 getUserId(), plid, groupId, portletId, parameterMap, is);
1067 }
1068
1069 @Override
1070 public void importPortletInfo(
1071 String portletId, Map<String, String[]> parameterMap, File file)
1072 throws PortalException, SystemException {
1073
1074 User user = userPersistence.findByPrimaryKey(getUserId());
1075
1076 Group companyGroup = groupLocalService.getCompanyGroup(
1077 user.getCompanyId());
1078
1079 GroupPermissionUtil.check(
1080 getPermissionChecker(), companyGroup.getGroupId(),
1081 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1082
1083 layoutLocalService.importPortletInfo(
1084 getUserId(), portletId, parameterMap, file);
1085 }
1086
1087 @Override
1088 public void importPortletInfo(
1089 String portletId, Map<String, String[]> parameterMap,
1090 InputStream is)
1091 throws PortalException, SystemException {
1092
1093 User user = userPersistence.findByPrimaryKey(getUserId());
1094
1095 Group companyGroup = groupLocalService.getCompanyGroup(
1096 user.getCompanyId());
1097
1098 GroupPermissionUtil.check(
1099 getPermissionChecker(), companyGroup.getGroupId(),
1100 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1101
1102 layoutLocalService.importPortletInfo(
1103 getUserId(), portletId, parameterMap, is);
1104 }
1105
1106 @Override
1107 public long importPortletInfoInBackground(
1108 String taskName, long plid, long groupId, String portletId,
1109 Map<String, String[]> parameterMap, File file)
1110 throws PortalException, SystemException {
1111
1112 GroupPermissionUtil.check(
1113 getPermissionChecker(), groupId,
1114 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1115
1116 return layoutLocalService.importPortletInfoInBackground(
1117 getUserId(), taskName, plid, groupId, portletId, parameterMap,
1118 file);
1119 }
1120
1121 @Override
1122 public long importPortletInfoInBackground(
1123 String taskName, long plid, long groupId, String portletId,
1124 Map<String, String[]> parameterMap, InputStream is)
1125 throws PortalException, SystemException {
1126
1127 GroupPermissionUtil.check(
1128 getPermissionChecker(), groupId,
1129 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1130
1131 return layoutLocalService.importPortletInfoInBackground(
1132 getUserId(), taskName, plid, groupId, portletId, parameterMap, is);
1133 }
1134
1135 @Override
1136 public void importPortletInfoInBackground(
1137 String taskName, String portletId,
1138 Map<String, String[]> parameterMap, File file)
1139 throws PortalException, SystemException {
1140
1141 User user = userPersistence.findByPrimaryKey(getUserId());
1142
1143 Group companyGroup = groupLocalService.getCompanyGroup(
1144 user.getCompanyId());
1145
1146 GroupPermissionUtil.check(
1147 getPermissionChecker(), companyGroup.getGroupId(),
1148 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1149
1150 layoutLocalService.importPortletInfoInBackground(
1151 getUserId(), taskName, portletId, parameterMap, file);
1152 }
1153
1154 @Override
1155 public void importPortletInfoInBackground(
1156 String taskName, String portletId,
1157 Map<String, String[]> parameterMap, InputStream is)
1158 throws PortalException, SystemException {
1159
1160 User user = userPersistence.findByPrimaryKey(getUserId());
1161
1162 Group companyGroup = groupLocalService.getCompanyGroup(
1163 user.getCompanyId());
1164
1165 GroupPermissionUtil.check(
1166 getPermissionChecker(), companyGroup.getGroupId(),
1167 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1168
1169 layoutLocalService.importPortletInfoInBackground(
1170 getUserId(), taskName, portletId, parameterMap, is);
1171 }
1172
1173
1200 @Override
1201 public void schedulePublishToLive(
1202 long sourceGroupId, long targetGroupId, boolean privateLayout,
1203 Map<Long, Boolean> layoutIdMap, Map<String, String[]> parameterMap,
1204 String scope, Date startDate, Date endDate, String groupName,
1205 String cronText, Date schedulerStartDate, Date schedulerEndDate,
1206 String description)
1207 throws PortalException, SystemException {
1208
1209 GroupPermissionUtil.check(
1210 getPermissionChecker(), targetGroupId, ActionKeys.PUBLISH_STAGING);
1211
1212 String jobName = PortalUUIDUtil.generate();
1213
1214 Trigger trigger = new CronTrigger(
1215 jobName, groupName, schedulerStartDate, schedulerEndDate, cronText);
1216
1217 String command = StringPool.BLANK;
1218
1219 if (scope.equals("all-pages")) {
1220 command = LayoutsLocalPublisherRequest.COMMAND_ALL_PAGES;
1221 }
1222 else if (scope.equals("selected-pages")) {
1223 command = LayoutsLocalPublisherRequest.COMMAND_SELECTED_PAGES;
1224 }
1225
1226 LayoutsLocalPublisherRequest publisherRequest =
1227 new LayoutsLocalPublisherRequest(
1228 command, getUserId(), sourceGroupId, targetGroupId,
1229 privateLayout, layoutIdMap, parameterMap, startDate, endDate);
1230
1231 SchedulerEngineHelperUtil.schedule(
1232 trigger, StorageType.PERSISTED, description,
1233 DestinationNames.LAYOUTS_LOCAL_PUBLISHER, publisherRequest, 0);
1234 }
1235
1236
1266 @Override
1267 public void schedulePublishToRemote(
1268 long sourceGroupId, boolean privateLayout,
1269 Map<Long, Boolean> layoutIdMap, Map<String, String[]> parameterMap,
1270 String remoteAddress, int remotePort, String remotePathContext,
1271 boolean secureConnection, long remoteGroupId,
1272 boolean remotePrivateLayout, Date startDate, Date endDate,
1273 String groupName, String cronText, Date schedulerStartDate,
1274 Date schedulerEndDate, String description)
1275 throws PortalException, SystemException {
1276
1277 GroupPermissionUtil.check(
1278 getPermissionChecker(), sourceGroupId, ActionKeys.PUBLISH_STAGING);
1279
1280 LayoutsRemotePublisherRequest publisherRequest =
1281 new LayoutsRemotePublisherRequest(
1282 getUserId(), sourceGroupId, privateLayout, layoutIdMap,
1283 parameterMap, remoteAddress, remotePort, remotePathContext,
1284 secureConnection, remoteGroupId, remotePrivateLayout, startDate,
1285 endDate);
1286
1287 String jobName = PortalUUIDUtil.generate();
1288
1289 Trigger trigger = new CronTrigger(
1290 jobName, groupName, schedulerStartDate, schedulerEndDate, cronText);
1291
1292 SchedulerEngineHelperUtil.schedule(
1293 trigger, StorageType.PERSISTED, description,
1294 DestinationNames.LAYOUTS_REMOTE_PUBLISHER, publisherRequest, 0);
1295 }
1296
1297
1313 @Override
1314 public void setLayouts(
1315 long groupId, boolean privateLayout, long parentLayoutId,
1316 long[] layoutIds, ServiceContext serviceContext)
1317 throws PortalException, SystemException {
1318
1319 GroupPermissionUtil.check(
1320 getPermissionChecker(), groupId, ActionKeys.UPDATE);
1321
1322 layoutLocalService.setLayouts(
1323 groupId, privateLayout, parentLayoutId, layoutIds, serviceContext);
1324 }
1325
1326
1338 @Override
1339 public void unschedulePublishToLive(
1340 long groupId, String jobName, String groupName)
1341 throws PortalException, SystemException {
1342
1343 GroupPermissionUtil.check(
1344 getPermissionChecker(), groupId, ActionKeys.PUBLISH_STAGING);
1345
1346 SchedulerEngineHelperUtil.delete(
1347 jobName, groupName, StorageType.PERSISTED);
1348 }
1349
1350
1362 @Override
1363 public void unschedulePublishToRemote(
1364 long groupId, String jobName, String groupName)
1365 throws PortalException, SystemException {
1366
1367 GroupPermissionUtil.check(
1368 getPermissionChecker(), groupId, ActionKeys.PUBLISH_STAGING);
1369
1370 SchedulerEngineHelperUtil.delete(
1371 jobName, groupName, StorageType.PERSISTED);
1372 }
1373
1374
1408 @Override
1409 public Layout updateLayout(
1410 long groupId, boolean privateLayout, long layoutId,
1411 long parentLayoutId, Map<Locale, String> localeNamesMap,
1412 Map<Locale, String> localeTitlesMap,
1413 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
1414 Map<Locale, String> robotsMap, String type, boolean hidden,
1415 Map<Locale, String> friendlyURLMap, Boolean iconImage,
1416 byte[] iconBytes, ServiceContext serviceContext)
1417 throws PortalException, SystemException {
1418
1419 LayoutPermissionUtil.check(
1420 getPermissionChecker(), groupId, privateLayout, layoutId,
1421 ActionKeys.UPDATE);
1422
1423 return layoutLocalService.updateLayout(
1424 groupId, privateLayout, layoutId, parentLayoutId, localeNamesMap,
1425 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
1426 hidden, friendlyURLMap, iconImage, iconBytes, serviceContext);
1427 }
1428
1429
1468 @Override
1469 public Layout updateLayout(
1470 long groupId, boolean privateLayout, long layoutId,
1471 long parentLayoutId, Map<Locale, String> localeNamesMap,
1472 Map<Locale, String> localeTitlesMap,
1473 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
1474 Map<Locale, String> robotsMap, String type, boolean hidden,
1475 String friendlyURL, Boolean iconImage, byte[] iconBytes,
1476 ServiceContext serviceContext)
1477 throws PortalException, SystemException {
1478
1479 LayoutPermissionUtil.check(
1480 getPermissionChecker(), groupId, privateLayout, layoutId,
1481 ActionKeys.UPDATE);
1482
1483 return layoutLocalService.updateLayout(
1484 groupId, privateLayout, layoutId, parentLayoutId, localeNamesMap,
1485 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
1486 hidden, friendlyURL, iconImage, iconBytes, serviceContext);
1487 }
1488
1489
1503 @Override
1504 public Layout updateLayout(
1505 long groupId, boolean privateLayout, long layoutId,
1506 String typeSettings)
1507 throws PortalException, SystemException {
1508
1509 LayoutPermissionUtil.check(
1510 getPermissionChecker(), groupId, privateLayout, layoutId,
1511 ActionKeys.UPDATE);
1512
1513 return layoutLocalService.updateLayout(
1514 groupId, privateLayout, layoutId, typeSettings);
1515 }
1516
1517
1533 @Override
1534 public Layout updateLookAndFeel(
1535 long groupId, boolean privateLayout, long layoutId, String themeId,
1536 String colorSchemeId, String css, boolean wapTheme)
1537 throws PortalException, SystemException {
1538
1539 LayoutPermissionUtil.check(
1540 getPermissionChecker(), groupId, privateLayout, layoutId,
1541 ActionKeys.UPDATE);
1542
1543 if (Validator.isNotNull(themeId)) {
1544 pluginSettingLocalService.checkPermission(
1545 getUserId(), themeId, Plugin.TYPE_THEME);
1546 }
1547
1548 return layoutLocalService.updateLookAndFeel(
1549 groupId, privateLayout, layoutId, themeId, colorSchemeId, css,
1550 wapTheme);
1551 }
1552
1553
1569 @Override
1570 public Layout updateName(
1571 long groupId, boolean privateLayout, long layoutId, String name,
1572 String languageId)
1573 throws PortalException, SystemException {
1574
1575 LayoutPermissionUtil.check(
1576 getPermissionChecker(), groupId, privateLayout, layoutId,
1577 ActionKeys.UPDATE);
1578
1579 return layoutLocalService.updateName(
1580 groupId, privateLayout, layoutId, name, languageId);
1581 }
1582
1583
1596 @Override
1597 public Layout updateName(long plid, String name, String languageId)
1598 throws PortalException, SystemException {
1599
1600 LayoutPermissionUtil.check(
1601 getPermissionChecker(), plid, ActionKeys.UPDATE);
1602
1603 return layoutLocalService.updateName(plid, name, languageId);
1604 }
1605
1606
1621 @Override
1622 public Layout updateParentLayoutId(
1623 long groupId, boolean privateLayout, long layoutId,
1624 long parentLayoutId)
1625 throws PortalException, SystemException {
1626
1627 LayoutPermissionUtil.check(
1628 getPermissionChecker(), groupId, privateLayout, layoutId,
1629 ActionKeys.UPDATE);
1630
1631 return layoutLocalService.updateParentLayoutId(
1632 groupId, privateLayout, layoutId, parentLayoutId);
1633 }
1634
1635
1650 @Override
1651 public Layout updateParentLayoutId(long plid, long parentPlid)
1652 throws PortalException, SystemException {
1653
1654 LayoutPermissionUtil.check(
1655 getPermissionChecker(), plid, ActionKeys.UPDATE);
1656
1657 return layoutLocalService.updateParentLayoutId(plid, parentPlid);
1658 }
1659
1660 @Override
1661 public Layout updateParentLayoutIdAndPriority(
1662 long plid, long parentPlid, int priority)
1663 throws PortalException, SystemException {
1664
1665 return layoutLocalService.updateParentLayoutIdAndPriority(
1666 plid, parentPlid, priority);
1667 }
1668
1669
1682 @Override
1683 public Layout updatePriority(
1684 long groupId, boolean privateLayout, long layoutId, int priority)
1685 throws PortalException, SystemException {
1686
1687 LayoutPermissionUtil.check(
1688 getPermissionChecker(), groupId, privateLayout, layoutId,
1689 ActionKeys.UPDATE);
1690
1691 return layoutLocalService.updatePriority(
1692 groupId, privateLayout, layoutId, priority);
1693 }
1694
1695
1710 @Override
1711 public Layout updatePriority(
1712 long groupId, boolean privateLayout, long layoutId,
1713 long nextLayoutId, long previousLayoutId)
1714 throws PortalException, SystemException {
1715
1716 LayoutPermissionUtil.check(
1717 getPermissionChecker(), groupId, privateLayout, layoutId,
1718 ActionKeys.UPDATE);
1719
1720 return layoutLocalService.updatePriority(
1721 groupId, privateLayout, layoutId, nextLayoutId, previousLayoutId);
1722 }
1723
1724
1734 @Override
1735 public Layout updatePriority(long plid, int priority)
1736 throws PortalException, SystemException {
1737
1738 LayoutPermissionUtil.check(
1739 getPermissionChecker(), plid, ActionKeys.UPDATE);
1740
1741 return layoutLocalService.updatePriority(plid, priority);
1742 }
1743
1744 @Override
1745 public MissingReferences validateImportLayoutsFile(
1746 long groupId, boolean privateLayout,
1747 Map<String, String[]> parameterMap, File file)
1748 throws PortalException, SystemException {
1749
1750 GroupPermissionUtil.check(
1751 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
1752
1753 return layoutLocalService.validateImportLayoutsFile(
1754 getUserId(), groupId, privateLayout, parameterMap, file);
1755 }
1756
1757 @Override
1758 public MissingReferences validateImportLayoutsFile(
1759 long groupId, boolean privateLayout,
1760 Map<String, String[]> parameterMap, InputStream inputStream)
1761 throws PortalException, SystemException {
1762
1763 GroupPermissionUtil.check(
1764 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
1765
1766 return layoutLocalService.validateImportLayoutsFile(
1767 getUserId(), groupId, privateLayout, parameterMap, inputStream);
1768 }
1769
1770 @Override
1771 public MissingReferences validateImportPortletInfo(
1772 long plid, long groupId, String portletId,
1773 Map<String, String[]> parameterMap, File file)
1774 throws PortalException, SystemException {
1775
1776 PortletPermissionUtil.check(
1777 getPermissionChecker(), plid, portletId, ActionKeys.CONFIGURATION);
1778
1779 return layoutLocalService.validateImportPortletInfo(
1780 getUserId(), plid, groupId, portletId, parameterMap, file);
1781 }
1782
1783 @Override
1784 public MissingReferences validateImportPortletInfo(
1785 long plid, long groupId, String portletId,
1786 Map<String, String[]> parameterMap, InputStream inputStream)
1787 throws PortalException, SystemException {
1788
1789 PortletPermissionUtil.check(
1790 getPermissionChecker(), plid, portletId, ActionKeys.CONFIGURATION);
1791
1792 return layoutLocalService.validateImportPortletInfo(
1793 getUserId(), plid, groupId, portletId, parameterMap, inputStream);
1794 }
1795
1796 protected List<Layout> filterLayouts(List<Layout> layouts)
1797 throws PortalException, SystemException {
1798
1799 List<Layout> filteredLayouts = new ArrayList<Layout>();
1800
1801 for (Layout layout : layouts) {
1802 if (LayoutPermissionUtil.contains(
1803 getPermissionChecker(), layout.getPlid(),
1804 ActionKeys.VIEW)) {
1805
1806 filteredLayouts.add(layout);
1807 }
1808 }
1809
1810 return filteredLayouts;
1811 }
1812
1813 }