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.Collections;
059 import java.util.Date;
060 import java.util.List;
061 import java.util.Locale;
062 import java.util.Map;
063
064
073 public class LayoutServiceImpl extends LayoutServiceBaseImpl {
074
075
122 @Override
123 public Layout addLayout(
124 long groupId, boolean privateLayout, long parentLayoutId,
125 Map<Locale, String> localeNamesMap,
126 Map<Locale, String> localeTitlesMap,
127 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
128 Map<Locale, String> robotsMap, String type, boolean hidden,
129 String friendlyURL, ServiceContext serviceContext)
130 throws PortalException, SystemException {
131
132 PermissionChecker permissionChecker = getPermissionChecker();
133
134 if (parentLayoutId == LayoutConstants.DEFAULT_PARENT_LAYOUT_ID) {
135 GroupPermissionUtil.check(
136 permissionChecker, groupId, ActionKeys.ADD_LAYOUT);
137 }
138 else {
139 LayoutPermissionUtil.check(
140 permissionChecker, groupId, privateLayout, parentLayoutId,
141 ActionKeys.ADD_LAYOUT);
142 }
143
144 return layoutLocalService.addLayout(
145 getUserId(), groupId, privateLayout, parentLayoutId, localeNamesMap,
146 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
147 hidden, friendlyURL, serviceContext);
148 }
149
150
195 @Override
196 public Layout addLayout(
197 long groupId, boolean privateLayout, long parentLayoutId,
198 Map<Locale, String> localeNamesMap,
199 Map<Locale, String> localeTitlesMap,
200 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
201 Map<Locale, String> robotsMap, String type, String typeSettings,
202 boolean hidden, Map<Locale, String> friendlyURLMap,
203 ServiceContext serviceContext)
204 throws PortalException, SystemException {
205
206 PermissionChecker permissionChecker = getPermissionChecker();
207
208 if (parentLayoutId == LayoutConstants.DEFAULT_PARENT_LAYOUT_ID) {
209 GroupPermissionUtil.check(
210 permissionChecker, groupId, ActionKeys.ADD_LAYOUT);
211 }
212 else {
213 LayoutPermissionUtil.check(
214 permissionChecker, groupId, privateLayout, parentLayoutId,
215 ActionKeys.ADD_LAYOUT);
216 }
217
218 Layout layout = layoutLocalService.addLayout(
219 getUserId(), groupId, privateLayout, parentLayoutId, localeNamesMap,
220 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
221 typeSettings, hidden, friendlyURLMap, serviceContext);
222
223 checkLayoutTypeSettings(layout, StringPool.BLANK, typeSettings);
224
225 return layout;
226 }
227
228
269 @Override
270 public Layout addLayout(
271 long groupId, boolean privateLayout, long parentLayoutId,
272 String name, String title, String description, String type,
273 boolean hidden, String friendlyURL, ServiceContext serviceContext)
274 throws PortalException, SystemException {
275
276 PermissionChecker permissionChecker = getPermissionChecker();
277
278 if (parentLayoutId == LayoutConstants.DEFAULT_PARENT_LAYOUT_ID) {
279 GroupPermissionUtil.check(
280 permissionChecker, groupId, ActionKeys.ADD_LAYOUT);
281 }
282 else {
283 LayoutPermissionUtil.check(
284 permissionChecker, groupId, privateLayout, parentLayoutId,
285 ActionKeys.ADD_LAYOUT);
286 }
287
288 return layoutLocalService.addLayout(
289 getUserId(), groupId, privateLayout, parentLayoutId, name, title,
290 description, type, hidden, friendlyURL, serviceContext);
291 }
292
293 @Override
294 public FileEntry addTempFileEntry(
295 long groupId, String fileName, String tempFolderName,
296 InputStream inputStream, String mimeType)
297 throws PortalException, SystemException {
298
299 GroupPermissionUtil.check(
300 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
301
302 return TempFileUtil.addTempFile(
303 groupId, getUserId(), fileName,
304 DigesterUtil.digestHex(Digester.SHA_256, tempFolderName),
305 inputStream, mimeType);
306 }
307
308
321 @Override
322 public void deleteLayout(
323 long groupId, boolean privateLayout, long layoutId,
324 ServiceContext serviceContext)
325 throws PortalException, SystemException {
326
327 LayoutPermissionUtil.check(
328 getPermissionChecker(), groupId, privateLayout, layoutId,
329 ActionKeys.DELETE);
330
331 layoutLocalService.deleteLayout(
332 groupId, privateLayout, layoutId, serviceContext);
333 }
334
335
346 @Override
347 public void deleteLayout(long plid, ServiceContext serviceContext)
348 throws PortalException, SystemException {
349
350 LayoutPermissionUtil.check(
351 getPermissionChecker(), plid, ActionKeys.DELETE);
352
353 layoutLocalService.deleteLayout(plid, serviceContext);
354 }
355
356 @Override
357 public void deleteTempFileEntry(
358 long groupId, String fileName, String tempFolderName)
359 throws PortalException, SystemException {
360
361 GroupPermissionUtil.check(
362 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
363
364 TempFileUtil.deleteTempFile(
365 groupId, getUserId(), fileName,
366 DigesterUtil.digestHex(Digester.SHA_256, tempFolderName));
367 }
368
369
388 @Override
389 public byte[] exportLayouts(
390 long groupId, boolean privateLayout, long[] layoutIds,
391 Map<String, String[]> parameterMap, Date startDate, Date endDate)
392 throws PortalException, SystemException {
393
394 GroupPermissionUtil.check(
395 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
396
397 return layoutLocalService.exportLayouts(
398 groupId, privateLayout, layoutIds, parameterMap, startDate,
399 endDate);
400 }
401
402
419 @Override
420 public byte[] exportLayouts(
421 long groupId, boolean privateLayout,
422 Map<String, String[]> parameterMap, Date startDate, Date endDate)
423 throws PortalException, SystemException {
424
425 GroupPermissionUtil.check(
426 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
427
428 return layoutLocalService.exportLayouts(
429 groupId, privateLayout, parameterMap, startDate, endDate);
430 }
431
432
451 @Override
452 public File exportLayoutsAsFile(
453 long groupId, boolean privateLayout, long[] layoutIds,
454 Map<String, String[]> parameterMap, Date startDate, Date endDate)
455 throws PortalException, SystemException {
456
457 GroupPermissionUtil.check(
458 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
459
460 return layoutLocalService.exportLayoutsAsFile(
461 groupId, privateLayout, layoutIds, parameterMap, startDate,
462 endDate);
463 }
464
465 @Override
466 public long exportLayoutsAsFileInBackground(
467 String taskName, long groupId, boolean privateLayout,
468 long[] layoutIds, Map<String, String[]> parameterMap,
469 Date startDate, Date endDate, String fileName)
470 throws PortalException, SystemException {
471
472 GroupPermissionUtil.check(
473 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
474
475 return layoutLocalService.exportLayoutsAsFileInBackground(
476 getUserId(), taskName, groupId, privateLayout, layoutIds,
477 parameterMap, startDate, endDate, fileName);
478 }
479
480
500 @Override
501 public byte[] exportPortletInfo(
502 long plid, long groupId, String portletId,
503 Map<String, String[]> parameterMap, Date startDate, Date endDate)
504 throws PortalException, SystemException {
505
506 Layout layout = layoutLocalService.getLayout(plid);
507
508 GroupPermissionUtil.check(
509 getPermissionChecker(), layout.getGroupId(),
510 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
511
512 return layoutLocalService.exportPortletInfo(
513 plid, groupId, portletId, parameterMap, startDate, endDate);
514 }
515
516 @Override
517 public byte[] exportPortletInfo(
518 long companyId, String portletId,
519 Map<String, String[]> parameterMap, Date startDate, Date endDate)
520 throws PortalException, SystemException {
521
522 Group companyGroup = groupLocalService.getCompanyGroup(companyId);
523
524 GroupPermissionUtil.check(
525 getPermissionChecker(), companyGroup.getGroupId(),
526 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
527
528 return layoutLocalService.exportPortletInfo(
529 companyId, portletId, parameterMap, startDate, endDate);
530 }
531
532
552 @Override
553 public File exportPortletInfoAsFile(
554 long plid, long groupId, String portletId,
555 Map<String, String[]> parameterMap, Date startDate, Date endDate)
556 throws PortalException, SystemException {
557
558 Layout layout = layoutLocalService.getLayout(plid);
559
560 GroupPermissionUtil.check(
561 getPermissionChecker(), layout.getGroupId(),
562 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
563
564 return layoutLocalService.exportPortletInfoAsFile(
565 plid, groupId, portletId, parameterMap, startDate, endDate);
566 }
567
568 @Override
569 public File exportPortletInfoAsFile(
570 String portletId, Map<String, String[]> parameterMap,
571 Date startDate, Date endDate)
572 throws PortalException, SystemException {
573
574 User user = userPersistence.findByPrimaryKey(getUserId());
575
576 Group companyGroup = groupLocalService.getCompanyGroup(
577 user.getCompanyId());
578
579 GroupPermissionUtil.check(
580 getPermissionChecker(), companyGroup.getGroupId(),
581 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
582
583 return layoutLocalService.exportPortletInfoAsFile(
584 user.getCompanyId(), portletId, parameterMap, startDate, endDate);
585 }
586
587 @Override
588 public long exportPortletInfoAsFileInBackground(
589 String taskName, long plid, long groupId, String portletId,
590 Map<String, String[]> parameterMap, Date startDate, Date endDate,
591 String fileName)
592 throws PortalException, SystemException {
593
594 Layout layout = layoutLocalService.getLayout(plid);
595
596 GroupPermissionUtil.check(
597 getPermissionChecker(), layout.getGroupId(),
598 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
599
600 return layoutLocalService.exportPortletInfoAsFileInBackground(
601 getUserId(), taskName, plid, groupId, portletId, parameterMap,
602 startDate, endDate, fileName);
603 }
604
605 @Override
606 public long exportPortletInfoAsFileInBackground(
607 String taskName, String portletId,
608 Map<String, String[]> parameterMap, Date startDate, Date endDate,
609 String fileName)
610 throws PortalException, SystemException {
611
612 User user = userPersistence.findByPrimaryKey(getUserId());
613
614 Group companyGroup = groupLocalService.getCompanyGroup(
615 user.getCompanyId());
616
617 GroupPermissionUtil.check(
618 getPermissionChecker(), companyGroup.getGroupId(),
619 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
620
621 return layoutLocalService.exportPortletInfoAsFileInBackground(
622 getUserId(), taskName, portletId, parameterMap, startDate, endDate,
623 fileName);
624 }
625
626
635 @Override
636 public List<Layout> getAncestorLayouts(long plid)
637 throws PortalException, SystemException {
638
639 Layout layout = layoutLocalService.getLayout(plid);
640
641 List<Layout> ancestors = layout.getAncestors();
642
643 return filterLayouts(ancestors);
644 }
645
646
660 @Override
661 public long getDefaultPlid(
662 long groupId, long scopeGroupId, boolean privateLayout,
663 String portletId)
664 throws PortalException, SystemException {
665
666 if (groupId <= 0) {
667 return LayoutConstants.DEFAULT_PLID;
668 }
669
670 PermissionChecker permissionChecker = getPermissionChecker();
671
672 String scopeGroupLayoutUuid = null;
673
674 Group scopeGroup = groupLocalService.getGroup(scopeGroupId);
675
676 if (scopeGroup.isLayout()) {
677 Layout scopeGroupLayout = layoutLocalService.getLayout(
678 scopeGroup.getClassPK());
679
680 scopeGroupLayoutUuid = scopeGroupLayout.getUuid();
681 }
682
683 Map<Long, javax.portlet.PortletPreferences> jxPortletPreferencesMap =
684 PortletPreferencesFactoryUtil.getPortletSetupMap(
685 scopeGroup.getCompanyId(), groupId,
686 PortletKeys.PREFS_OWNER_ID_DEFAULT,
687 PortletKeys.PREFS_OWNER_TYPE_LAYOUT, portletId, privateLayout);
688
689 for (Map.Entry<Long, javax.portlet.PortletPreferences> entry :
690 jxPortletPreferencesMap.entrySet()) {
691
692 long plid = entry.getKey();
693
694 Layout layout = null;
695
696 try {
697 layout = layoutLocalService.getLayout(plid);
698 }
699 catch (NoSuchLayoutException nsle) {
700 continue;
701 }
702
703 if (!LayoutPermissionUtil.contains(
704 permissionChecker, layout, ActionKeys.VIEW)) {
705
706 continue;
707 }
708
709 if (!layout.isTypePortlet()) {
710 continue;
711 }
712
713 LayoutTypePortlet layoutTypePortlet =
714 (LayoutTypePortlet)layout.getLayoutType();
715
716 if (!layoutTypePortlet.hasPortletId(portletId)) {
717 continue;
718 }
719
720 javax.portlet.PortletPreferences jxPortletPreferences =
721 entry.getValue();
722
723 String scopeType = GetterUtil.getString(
724 jxPortletPreferences.getValue("lfrScopeType", null));
725
726 if (scopeGroup.isLayout()) {
727 String scopeLayoutUuid = GetterUtil.getString(
728 jxPortletPreferences.getValue("lfrScopeLayoutUuid", null));
729
730 if (Validator.isNotNull(scopeType) &&
731 Validator.isNotNull(scopeLayoutUuid) &&
732 scopeLayoutUuid.equals(scopeGroupLayoutUuid)) {
733
734 return layout.getPlid();
735 }
736 }
737 else if (scopeGroup.isCompany()) {
738 if (Validator.isNotNull(scopeType) &&
739 scopeType.equals("company")) {
740
741 return layout.getPlid();
742 }
743 }
744 else {
745 if (Validator.isNull(scopeType)) {
746 return layout.getPlid();
747 }
748 }
749 }
750
751 return LayoutConstants.DEFAULT_PLID;
752 }
753
754 @Override
755 @ThreadLocalCachable
756 public long getDefaultPlid(
757 long groupId, long scopeGroupId, String portletId)
758 throws PortalException, SystemException {
759
760 long plid = getDefaultPlid(groupId, scopeGroupId, false, portletId);
761
762 if (plid == 0) {
763 plid = getDefaultPlid(groupId, scopeGroupId, true, portletId);
764 }
765
766 return plid;
767 }
768
769
781 @Override
782 public Layout getLayoutByUuidAndGroupId(
783 String uuid, long groupId, boolean privateLayout)
784 throws PortalException, SystemException {
785
786 Layout layout = layoutLocalService.getLayoutByUuidAndGroupId(
787 uuid, groupId, privateLayout);
788
789 LayoutPermissionUtil.check(
790 getPermissionChecker(), layout, ActionKeys.VIEW);
791
792 return layout;
793 }
794
795
807 @Override
808 public String getLayoutName(
809 long groupId, boolean privateLayout, long layoutId,
810 String languageId)
811 throws PortalException, SystemException {
812
813 Layout layout = layoutLocalService.getLayout(
814 groupId, privateLayout, layoutId);
815
816 return layout.getName(languageId);
817 }
818
819
830 @Override
831 public LayoutReference[] getLayoutReferences(
832 long companyId, String portletId, String preferencesKey,
833 String preferencesValue)
834 throws SystemException {
835
836 return layoutLocalService.getLayouts(
837 companyId, portletId, preferencesKey, preferencesValue);
838 }
839
840 @Override
841 public List<Layout> getLayouts(long groupId, boolean privateLayout)
842 throws SystemException {
843
844 return layoutPersistence.filterFindByG_P(groupId, privateLayout);
845 }
846
847 @Override
848 public List<Layout> getLayouts(
849 long groupId, boolean privateLayout, long parentLayoutId)
850 throws SystemException {
851
852 return layoutPersistence.filterFindByG_P_P(
853 groupId, privateLayout, parentLayoutId);
854 }
855
856 @Override
857 public List<Layout> getLayouts(
858 long groupId, boolean privateLayout, long parentLayoutId,
859 boolean incomplete, int start, int end)
860 throws PortalException, SystemException {
861
862 List<Layout> layouts = layoutLocalService.getLayouts(
863 groupId, privateLayout, parentLayoutId, incomplete, start, end);
864
865 return filterLayouts(layouts);
866 }
867
868 @Override
869 public int getLayoutsCount(
870 long groupId, boolean privateLayout, long parentLayoutId)
871 throws SystemException {
872
873 return layoutPersistence.filterCountByG_P_P(
874 groupId, privateLayout, parentLayoutId);
875 }
876
877 @Override
878 public int getLayoutsCount(
879 long groupId, boolean privateLayout, long parentLayoutId,
880 int priority) throws SystemException {
881
882 return layoutPersistence.filterCountByG_P_P_LtP(
883 groupId, privateLayout, parentLayoutId, priority);
884 }
885
886 @Override
887 public String[] getTempFileEntryNames(long groupId, String tempFolderName)
888 throws PortalException, SystemException {
889
890 GroupPermissionUtil.check(
891 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
892
893 return TempFileUtil.getTempFileEntryNames(
894 groupId, getUserId(),
895 DigesterUtil.digestHex(Digester.SHA_256, tempFolderName));
896 }
897
898
914 @Override
915 public void importLayouts(
916 long groupId, boolean privateLayout,
917 Map<String, String[]> parameterMap, byte[] bytes)
918 throws PortalException, SystemException {
919
920 GroupPermissionUtil.check(
921 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
922
923 layoutLocalService.importLayouts(
924 getUserId(), groupId, privateLayout, parameterMap, bytes);
925 }
926
927
943 @Override
944 public void importLayouts(
945 long groupId, boolean privateLayout,
946 Map<String, String[]> parameterMap, File file)
947 throws PortalException, SystemException {
948
949 GroupPermissionUtil.check(
950 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
951
952 layoutLocalService.importLayouts(
953 getUserId(), groupId, privateLayout, parameterMap, file);
954 }
955
956
972 @Override
973 public void importLayouts(
974 long groupId, boolean privateLayout,
975 Map<String, String[]> parameterMap, InputStream is)
976 throws PortalException, SystemException {
977
978 GroupPermissionUtil.check(
979 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
980
981 layoutLocalService.importLayouts(
982 getUserId(), groupId, privateLayout, parameterMap, is);
983 }
984
985 @Override
986 public long importLayoutsInBackground(
987 String taskName, long groupId, boolean privateLayout,
988 Map<String, String[]> parameterMap, File file)
989 throws PortalException, SystemException {
990
991 GroupPermissionUtil.check(
992 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
993
994 return layoutLocalService.importLayoutsInBackground(
995 getUserId(), taskName, groupId, privateLayout, parameterMap, file);
996 }
997
998 @Override
999 public long importLayoutsInBackground(
1000 String taskName, long groupId, boolean privateLayout,
1001 Map<String, String[]> parameterMap, InputStream inputStream)
1002 throws PortalException, SystemException {
1003
1004 GroupPermissionUtil.check(
1005 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
1006
1007 return layoutLocalService.importLayoutsInBackground(
1008 getUserId(), taskName, groupId, privateLayout, parameterMap,
1009 inputStream);
1010 }
1011
1012
1029 @Override
1030 public void importPortletInfo(
1031 long plid, long groupId, String portletId,
1032 Map<String, String[]> parameterMap, File file)
1033 throws PortalException, SystemException {
1034
1035 GroupPermissionUtil.check(
1036 getPermissionChecker(), groupId,
1037 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1038
1039 layoutLocalService.importPortletInfo(
1040 getUserId(), plid, groupId, portletId, parameterMap, file);
1041 }
1042
1043
1060 @Override
1061 public void importPortletInfo(
1062 long plid, long groupId, String portletId,
1063 Map<String, String[]> parameterMap, InputStream is)
1064 throws PortalException, SystemException {
1065
1066 GroupPermissionUtil.check(
1067 getPermissionChecker(), groupId,
1068 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1069
1070 layoutLocalService.importPortletInfo(
1071 getUserId(), plid, groupId, portletId, parameterMap, is);
1072 }
1073
1074 @Override
1075 public void importPortletInfo(
1076 String portletId, Map<String, String[]> parameterMap, File file)
1077 throws PortalException, SystemException {
1078
1079 User user = userPersistence.findByPrimaryKey(getUserId());
1080
1081 Group companyGroup = groupLocalService.getCompanyGroup(
1082 user.getCompanyId());
1083
1084 GroupPermissionUtil.check(
1085 getPermissionChecker(), companyGroup.getGroupId(),
1086 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1087
1088 layoutLocalService.importPortletInfo(
1089 getUserId(), portletId, parameterMap, file);
1090 }
1091
1092 @Override
1093 public void importPortletInfo(
1094 String portletId, Map<String, String[]> parameterMap,
1095 InputStream is)
1096 throws PortalException, SystemException {
1097
1098 User user = userPersistence.findByPrimaryKey(getUserId());
1099
1100 Group companyGroup = groupLocalService.getCompanyGroup(
1101 user.getCompanyId());
1102
1103 GroupPermissionUtil.check(
1104 getPermissionChecker(), companyGroup.getGroupId(),
1105 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1106
1107 layoutLocalService.importPortletInfo(
1108 getUserId(), portletId, parameterMap, is);
1109 }
1110
1111 @Override
1112 public long importPortletInfoInBackground(
1113 String taskName, long plid, long groupId, String portletId,
1114 Map<String, String[]> parameterMap, File file)
1115 throws PortalException, SystemException {
1116
1117 GroupPermissionUtil.check(
1118 getPermissionChecker(), groupId,
1119 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1120
1121 return layoutLocalService.importPortletInfoInBackground(
1122 getUserId(), taskName, plid, groupId, portletId, parameterMap,
1123 file);
1124 }
1125
1126 @Override
1127 public long importPortletInfoInBackground(
1128 String taskName, long plid, long groupId, String portletId,
1129 Map<String, String[]> parameterMap, InputStream is)
1130 throws PortalException, SystemException {
1131
1132 GroupPermissionUtil.check(
1133 getPermissionChecker(), groupId,
1134 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1135
1136 return layoutLocalService.importPortletInfoInBackground(
1137 getUserId(), taskName, plid, groupId, portletId, parameterMap, is);
1138 }
1139
1140 @Override
1141 public void importPortletInfoInBackground(
1142 String taskName, String portletId,
1143 Map<String, String[]> parameterMap, File file)
1144 throws PortalException, SystemException {
1145
1146 User user = userPersistence.findByPrimaryKey(getUserId());
1147
1148 Group companyGroup = groupLocalService.getCompanyGroup(
1149 user.getCompanyId());
1150
1151 GroupPermissionUtil.check(
1152 getPermissionChecker(), companyGroup.getGroupId(),
1153 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1154
1155 layoutLocalService.importPortletInfoInBackground(
1156 getUserId(), taskName, portletId, parameterMap, file);
1157 }
1158
1159 @Override
1160 public void importPortletInfoInBackground(
1161 String taskName, String portletId,
1162 Map<String, String[]> parameterMap, InputStream is)
1163 throws PortalException, SystemException {
1164
1165 User user = userPersistence.findByPrimaryKey(getUserId());
1166
1167 Group companyGroup = groupLocalService.getCompanyGroup(
1168 user.getCompanyId());
1169
1170 GroupPermissionUtil.check(
1171 getPermissionChecker(), companyGroup.getGroupId(),
1172 ActionKeys.EXPORT_IMPORT_PORTLET_INFO);
1173
1174 layoutLocalService.importPortletInfoInBackground(
1175 getUserId(), taskName, portletId, parameterMap, is);
1176 }
1177
1178
1205 @Override
1206 public void schedulePublishToLive(
1207 long sourceGroupId, long targetGroupId, boolean privateLayout,
1208 Map<Long, Boolean> layoutIdMap, Map<String, String[]> parameterMap,
1209 String scope, Date startDate, Date endDate, String groupName,
1210 String cronText, Date schedulerStartDate, Date schedulerEndDate,
1211 String description)
1212 throws PortalException, SystemException {
1213
1214 GroupPermissionUtil.check(
1215 getPermissionChecker(), targetGroupId, ActionKeys.PUBLISH_STAGING);
1216
1217 String jobName = PortalUUIDUtil.generate();
1218
1219 Trigger trigger = new CronTrigger(
1220 jobName, groupName, schedulerStartDate, schedulerEndDate, cronText);
1221
1222 String command = StringPool.BLANK;
1223
1224 if (scope.equals("all-pages")) {
1225 command = LayoutsLocalPublisherRequest.COMMAND_ALL_PAGES;
1226 }
1227 else if (scope.equals("selected-pages")) {
1228 command = LayoutsLocalPublisherRequest.COMMAND_SELECTED_PAGES;
1229 }
1230
1231 LayoutsLocalPublisherRequest publisherRequest =
1232 new LayoutsLocalPublisherRequest(
1233 command, getUserId(), sourceGroupId, targetGroupId,
1234 privateLayout, layoutIdMap, parameterMap, startDate, endDate);
1235
1236 SchedulerEngineHelperUtil.schedule(
1237 trigger, StorageType.PERSISTED, description,
1238 DestinationNames.LAYOUTS_LOCAL_PUBLISHER, publisherRequest, 0);
1239 }
1240
1241
1271 @Override
1272 public void schedulePublishToRemote(
1273 long sourceGroupId, boolean privateLayout,
1274 Map<Long, Boolean> layoutIdMap, Map<String, String[]> parameterMap,
1275 String remoteAddress, int remotePort, String remotePathContext,
1276 boolean secureConnection, long remoteGroupId,
1277 boolean remotePrivateLayout, Date startDate, Date endDate,
1278 String groupName, String cronText, Date schedulerStartDate,
1279 Date schedulerEndDate, String description)
1280 throws PortalException, SystemException {
1281
1282 GroupPermissionUtil.check(
1283 getPermissionChecker(), sourceGroupId, ActionKeys.PUBLISH_STAGING);
1284
1285 LayoutsRemotePublisherRequest publisherRequest =
1286 new LayoutsRemotePublisherRequest(
1287 getUserId(), sourceGroupId, privateLayout, layoutIdMap,
1288 parameterMap, remoteAddress, remotePort, remotePathContext,
1289 secureConnection, remoteGroupId, remotePrivateLayout, startDate,
1290 endDate);
1291
1292 String jobName = PortalUUIDUtil.generate();
1293
1294 Trigger trigger = new CronTrigger(
1295 jobName, groupName, schedulerStartDate, schedulerEndDate, cronText);
1296
1297 SchedulerEngineHelperUtil.schedule(
1298 trigger, StorageType.PERSISTED, description,
1299 DestinationNames.LAYOUTS_REMOTE_PUBLISHER, publisherRequest, 0);
1300 }
1301
1302
1318 @Override
1319 public void setLayouts(
1320 long groupId, boolean privateLayout, long parentLayoutId,
1321 long[] layoutIds, ServiceContext serviceContext)
1322 throws PortalException, SystemException {
1323
1324 GroupPermissionUtil.check(
1325 getPermissionChecker(), groupId, ActionKeys.UPDATE);
1326
1327 layoutLocalService.setLayouts(
1328 groupId, privateLayout, parentLayoutId, layoutIds, serviceContext);
1329 }
1330
1331
1343 @Override
1344 public void unschedulePublishToLive(
1345 long groupId, String jobName, String groupName)
1346 throws PortalException, SystemException {
1347
1348 GroupPermissionUtil.check(
1349 getPermissionChecker(), groupId, ActionKeys.PUBLISH_STAGING);
1350
1351 SchedulerEngineHelperUtil.delete(
1352 jobName, groupName, StorageType.PERSISTED);
1353 }
1354
1355
1367 @Override
1368 public void unschedulePublishToRemote(
1369 long groupId, String jobName, String groupName)
1370 throws PortalException, SystemException {
1371
1372 GroupPermissionUtil.check(
1373 getPermissionChecker(), groupId, ActionKeys.PUBLISH_STAGING);
1374
1375 SchedulerEngineHelperUtil.delete(
1376 jobName, groupName, StorageType.PERSISTED);
1377 }
1378
1379
1413 @Override
1414 public Layout updateLayout(
1415 long groupId, boolean privateLayout, long layoutId,
1416 long parentLayoutId, Map<Locale, String> localeNamesMap,
1417 Map<Locale, String> localeTitlesMap,
1418 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
1419 Map<Locale, String> robotsMap, String type, boolean hidden,
1420 Map<Locale, String> friendlyURLMap, Boolean iconImage,
1421 byte[] iconBytes, ServiceContext serviceContext)
1422 throws PortalException, SystemException {
1423
1424 Layout layout = layoutLocalService.getLayout(
1425 groupId, privateLayout, layoutId);
1426
1427 LayoutPermissionUtil.check(
1428 getPermissionChecker(), layout, ActionKeys.UPDATE);
1429
1430 Layout updatedLayout = layoutLocalService.updateLayout(
1431 groupId, privateLayout, layoutId, parentLayoutId, localeNamesMap,
1432 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
1433 hidden, friendlyURLMap, iconImage, iconBytes, serviceContext);
1434
1435 if (!(layout.getLayoutType() instanceof LayoutTypePortlet)) {
1436 checkLayoutTypeSettings(
1437 layout, StringPool.BLANK, updatedLayout.getTypeSettings());
1438 }
1439
1440 return updatedLayout;
1441 }
1442
1443
1482 @Override
1483 public Layout updateLayout(
1484 long groupId, boolean privateLayout, long layoutId,
1485 long parentLayoutId, Map<Locale, String> localeNamesMap,
1486 Map<Locale, String> localeTitlesMap,
1487 Map<Locale, String> descriptionMap, Map<Locale, String> keywordsMap,
1488 Map<Locale, String> robotsMap, String type, boolean hidden,
1489 String friendlyURL, Boolean iconImage, byte[] iconBytes,
1490 ServiceContext serviceContext)
1491 throws PortalException, SystemException {
1492
1493 LayoutPermissionUtil.check(
1494 getPermissionChecker(), groupId, privateLayout, layoutId,
1495 ActionKeys.UPDATE);
1496
1497 return layoutLocalService.updateLayout(
1498 groupId, privateLayout, layoutId, parentLayoutId, localeNamesMap,
1499 localeTitlesMap, descriptionMap, keywordsMap, robotsMap, type,
1500 hidden, friendlyURL, iconImage, iconBytes, serviceContext);
1501 }
1502
1503
1517 @Override
1518 public Layout updateLayout(
1519 long groupId, boolean privateLayout, long layoutId,
1520 String typeSettings)
1521 throws PortalException, SystemException {
1522
1523 Layout layout = layoutLocalService.getLayout(
1524 groupId, privateLayout, layoutId);
1525
1526 LayoutPermissionUtil.check(
1527 getPermissionChecker(), layout, ActionKeys.UPDATE);
1528
1529 checkLayoutTypeSettings(layout, layout.getTypeSettings(), typeSettings);
1530
1531 return layoutLocalService.updateLayout(
1532 groupId, privateLayout, layoutId, typeSettings);
1533 }
1534
1535
1551 @Override
1552 public Layout updateLookAndFeel(
1553 long groupId, boolean privateLayout, long layoutId, String themeId,
1554 String colorSchemeId, String css, boolean wapTheme)
1555 throws PortalException, SystemException {
1556
1557 LayoutPermissionUtil.check(
1558 getPermissionChecker(), groupId, privateLayout, layoutId,
1559 ActionKeys.UPDATE);
1560
1561 if (Validator.isNotNull(themeId)) {
1562 pluginSettingLocalService.checkPermission(
1563 getUserId(), themeId, Plugin.TYPE_THEME);
1564 }
1565
1566 return layoutLocalService.updateLookAndFeel(
1567 groupId, privateLayout, layoutId, themeId, colorSchemeId, css,
1568 wapTheme);
1569 }
1570
1571
1587 @Override
1588 public Layout updateName(
1589 long groupId, boolean privateLayout, long layoutId, String name,
1590 String languageId)
1591 throws PortalException, SystemException {
1592
1593 LayoutPermissionUtil.check(
1594 getPermissionChecker(), groupId, privateLayout, layoutId,
1595 ActionKeys.UPDATE);
1596
1597 return layoutLocalService.updateName(
1598 groupId, privateLayout, layoutId, name, languageId);
1599 }
1600
1601
1614 @Override
1615 public Layout updateName(long plid, String name, String languageId)
1616 throws PortalException, SystemException {
1617
1618 LayoutPermissionUtil.check(
1619 getPermissionChecker(), plid, ActionKeys.UPDATE);
1620
1621 return layoutLocalService.updateName(plid, name, languageId);
1622 }
1623
1624
1639 @Override
1640 public Layout updateParentLayoutId(
1641 long groupId, boolean privateLayout, long layoutId,
1642 long parentLayoutId)
1643 throws PortalException, SystemException {
1644
1645 LayoutPermissionUtil.check(
1646 getPermissionChecker(), groupId, privateLayout, layoutId,
1647 ActionKeys.UPDATE);
1648
1649 return layoutLocalService.updateParentLayoutId(
1650 groupId, privateLayout, layoutId, parentLayoutId);
1651 }
1652
1653
1668 @Override
1669 public Layout updateParentLayoutId(long plid, long parentPlid)
1670 throws PortalException, SystemException {
1671
1672 LayoutPermissionUtil.check(
1673 getPermissionChecker(), plid, ActionKeys.UPDATE);
1674
1675 return layoutLocalService.updateParentLayoutId(plid, parentPlid);
1676 }
1677
1678 @Override
1679 public Layout updateParentLayoutIdAndPriority(
1680 long plid, long parentPlid, int priority)
1681 throws PortalException, SystemException {
1682
1683 return layoutLocalService.updateParentLayoutIdAndPriority(
1684 plid, parentPlid, priority);
1685 }
1686
1687
1700 @Override
1701 public Layout updatePriority(
1702 long groupId, boolean privateLayout, long layoutId, int priority)
1703 throws PortalException, SystemException {
1704
1705 LayoutPermissionUtil.check(
1706 getPermissionChecker(), groupId, privateLayout, layoutId,
1707 ActionKeys.UPDATE);
1708
1709 return layoutLocalService.updatePriority(
1710 groupId, privateLayout, layoutId, priority);
1711 }
1712
1713
1728 @Override
1729 public Layout updatePriority(
1730 long groupId, boolean privateLayout, long layoutId,
1731 long nextLayoutId, long previousLayoutId)
1732 throws PortalException, SystemException {
1733
1734 LayoutPermissionUtil.check(
1735 getPermissionChecker(), groupId, privateLayout, layoutId,
1736 ActionKeys.UPDATE);
1737
1738 return layoutLocalService.updatePriority(
1739 groupId, privateLayout, layoutId, nextLayoutId, previousLayoutId);
1740 }
1741
1742
1752 @Override
1753 public Layout updatePriority(long plid, int priority)
1754 throws PortalException, SystemException {
1755
1756 LayoutPermissionUtil.check(
1757 getPermissionChecker(), plid, ActionKeys.UPDATE);
1758
1759 return layoutLocalService.updatePriority(plid, priority);
1760 }
1761
1762 @Override
1763 public MissingReferences validateImportLayoutsFile(
1764 long groupId, boolean privateLayout,
1765 Map<String, String[]> parameterMap, File file)
1766 throws PortalException, SystemException {
1767
1768 GroupPermissionUtil.check(
1769 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
1770
1771 return layoutLocalService.validateImportLayoutsFile(
1772 getUserId(), groupId, privateLayout, parameterMap, file);
1773 }
1774
1775 @Override
1776 public MissingReferences validateImportLayoutsFile(
1777 long groupId, boolean privateLayout,
1778 Map<String, String[]> parameterMap, InputStream inputStream)
1779 throws PortalException, SystemException {
1780
1781 GroupPermissionUtil.check(
1782 getPermissionChecker(), groupId, ActionKeys.EXPORT_IMPORT_LAYOUTS);
1783
1784 return layoutLocalService.validateImportLayoutsFile(
1785 getUserId(), groupId, privateLayout, parameterMap, inputStream);
1786 }
1787
1788 @Override
1789 public MissingReferences validateImportPortletInfo(
1790 long plid, long groupId, String portletId,
1791 Map<String, String[]> parameterMap, File file)
1792 throws PortalException, SystemException {
1793
1794 PortletPermissionUtil.check(
1795 getPermissionChecker(), plid, portletId, ActionKeys.CONFIGURATION);
1796
1797 return layoutLocalService.validateImportPortletInfo(
1798 getUserId(), plid, groupId, portletId, parameterMap, file);
1799 }
1800
1801 @Override
1802 public MissingReferences validateImportPortletInfo(
1803 long plid, long groupId, String portletId,
1804 Map<String, String[]> parameterMap, InputStream inputStream)
1805 throws PortalException, SystemException {
1806
1807 PortletPermissionUtil.check(
1808 getPermissionChecker(), plid, portletId, ActionKeys.CONFIGURATION);
1809
1810 return layoutLocalService.validateImportPortletInfo(
1811 getUserId(), plid, groupId, portletId, parameterMap, inputStream);
1812 }
1813
1814 protected void checkLayoutTypeSettings(
1815 Layout layout, String originalTypeSettings, String newTypeSettings)
1816 throws PortalException, SystemException {
1817
1818 if (!(layout.getLayoutType() instanceof LayoutTypePortlet)) {
1819 return;
1820 }
1821
1822 List<String> originalPortletIds = _getPortletIds(
1823 layout, originalTypeSettings);
1824 List<String> newPortletIds = _getPortletIds(layout, newTypeSettings);
1825
1826 for (String portletId : newPortletIds) {
1827 if (originalPortletIds.contains(portletId)) {
1828 continue;
1829 }
1830
1831 PortletPermissionUtil.check(
1832 getPermissionChecker(), layout.getPlid(), portletId,
1833 ActionKeys.ADD_TO_PAGE);
1834 }
1835 }
1836
1837 protected List<Layout> filterLayouts(List<Layout> layouts)
1838 throws PortalException, SystemException {
1839
1840 List<Layout> filteredLayouts = new ArrayList<Layout>();
1841
1842 for (Layout layout : layouts) {
1843 if (LayoutPermissionUtil.contains(
1844 getPermissionChecker(), layout.getPlid(),
1845 ActionKeys.VIEW)) {
1846
1847 filteredLayouts.add(layout);
1848 }
1849 }
1850
1851 return filteredLayouts;
1852 }
1853
1854 private List<String> _getPortletIds(
1855 Layout originalLayout, String typeSettings) {
1856
1857 if (Validator.isBlank(typeSettings)) {
1858 return Collections.emptyList();
1859 }
1860
1861 Layout container = (Layout)originalLayout.clone();
1862
1863 container.setType(LayoutConstants.TYPE_PORTLET);
1864 container.setTypeSettings(typeSettings);
1865
1866 LayoutTypePortlet layoutTypePortlet =
1867 (LayoutTypePortlet)container.getLayoutType();
1868
1869 return layoutTypePortlet.getPortletIds();
1870 }
1871
1872 }