1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   *
12   * 
13   */
14  
15  package com.liferay.portlet.journal.service.impl;
16  
17  import com.liferay.portal.PortalException;
18  import com.liferay.portal.SystemException;
19  import com.liferay.portal.model.User;
20  import com.liferay.portal.security.permission.ActionKeys;
21  import com.liferay.portal.service.permission.PortletPermissionUtil;
22  import com.liferay.portal.theme.ThemeDisplay;
23  import com.liferay.portal.util.PortletKeys;
24  import com.liferay.portlet.journal.model.JournalArticle;
25  import com.liferay.portlet.journal.service.base.JournalArticleServiceBaseImpl;
26  import com.liferay.portlet.journal.service.permission.JournalArticlePermission;
27  
28  import java.io.File;
29  
30  import java.util.Map;
31  
32  import javax.portlet.PortletPreferences;
33  
34  /**
35   * <a href="JournalArticleServiceImpl.java.html"><b><i>View Source</i></b></a>
36   *
37   * @author Brian Wing Shun Chan
38   */
39  public class JournalArticleServiceImpl extends JournalArticleServiceBaseImpl {
40  
41      public JournalArticle addArticle(
42              String articleId, boolean autoArticleId, long plid, String title,
43              String description, String content, String type, String structureId,
44              String templateId, int displayDateMonth, int displayDateDay,
45              int displayDateYear, int displayDateHour, int displayDateMinute,
46              int expirationDateMonth, int expirationDateDay,
47              int expirationDateYear, int expirationDateHour,
48              int expirationDateMinute, boolean neverExpire, int reviewDateMonth,
49              int reviewDateDay, int reviewDateYear, int reviewDateHour,
50              int reviewDateMinute, boolean neverReview, boolean indexable,
51              String articleURL, String[] tagsEntries,
52              boolean addCommunityPermissions, boolean addGuestPermissions)
53          throws PortalException, SystemException {
54  
55          PortletPermissionUtil.check(
56              getPermissionChecker(), plid, PortletKeys.JOURNAL,
57              ActionKeys.ADD_ARTICLE);
58  
59          return journalArticleLocalService.addArticle(
60              getUserId(), articleId, autoArticleId, plid, title, description,
61              content, type, structureId, templateId, displayDateMonth,
62              displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
63              expirationDateMonth, expirationDateDay, expirationDateYear,
64              expirationDateHour, expirationDateMinute, neverExpire,
65              reviewDateMonth, reviewDateDay, reviewDateYear, reviewDateHour,
66              reviewDateMinute, neverReview, indexable, false, null, null, null,
67              articleURL, null, tagsEntries, addCommunityPermissions,
68              addGuestPermissions);
69      }
70  
71      public JournalArticle addArticle(
72              String articleId, boolean autoArticleId, long plid, String title,
73              String description, String content, String type, String structureId,
74              String templateId, int displayDateMonth, int displayDateDay,
75              int displayDateYear, int displayDateHour, int displayDateMinute,
76              int expirationDateMonth, int expirationDateDay,
77              int expirationDateYear, int expirationDateHour,
78              int expirationDateMinute, boolean neverExpire, int reviewDateMonth,
79              int reviewDateDay, int reviewDateYear, int reviewDateHour,
80              int reviewDateMinute, boolean neverReview, boolean indexable,
81              boolean smallImage, String smallImageURL, File smallFile,
82              Map<String, byte[]> images, String articleURL,
83              PortletPreferences prefs, String[] tagsEntries,
84              boolean addCommunityPermissions, boolean addGuestPermissions)
85          throws PortalException, SystemException {
86  
87          PortletPermissionUtil.check(
88              getPermissionChecker(), plid, PortletKeys.JOURNAL,
89              ActionKeys.ADD_ARTICLE);
90  
91          return journalArticleLocalService.addArticle(
92              getUserId(), articleId, autoArticleId, plid, title, description,
93              content, type, structureId, templateId, displayDateMonth,
94              displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
95              expirationDateMonth, expirationDateDay, expirationDateYear,
96              expirationDateHour, expirationDateMinute, neverExpire,
97              reviewDateMonth, reviewDateDay, reviewDateYear, reviewDateHour,
98              reviewDateMinute, neverReview, indexable, smallImage, smallImageURL,
99              smallFile, images, articleURL, prefs, tagsEntries,
100             addCommunityPermissions, addGuestPermissions);
101     }
102 
103     public JournalArticle addArticle(
104             String articleId, boolean autoArticleId, long plid, String title,
105             String description, String content, String type, String structureId,
106             String templateId, int displayDateMonth, int displayDateDay,
107             int displayDateYear, int displayDateHour, int displayDateMinute,
108             int expirationDateMonth, int expirationDateDay,
109             int expirationDateYear, int expirationDateHour,
110             int expirationDateMinute, boolean neverExpire, int reviewDateMonth,
111             int reviewDateDay, int reviewDateYear, int reviewDateHour,
112             int reviewDateMinute, boolean neverReview, boolean indexable,
113             String articleURL, String[] tagsEntries,
114             String[] communityPermissions, String[] guestPermissions)
115         throws PortalException, SystemException {
116 
117         PortletPermissionUtil.check(
118             getPermissionChecker(), plid, PortletKeys.JOURNAL,
119             ActionKeys.ADD_ARTICLE);
120 
121         return journalArticleLocalService.addArticle(
122             getUserId(), articleId, autoArticleId, plid, title, description,
123             content, type, structureId, templateId, displayDateMonth,
124             displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
125             expirationDateMonth, expirationDateDay, expirationDateYear,
126             expirationDateHour, expirationDateMinute, neverExpire,
127             reviewDateMonth, reviewDateDay, reviewDateYear, reviewDateHour,
128             reviewDateMinute, neverReview, indexable, false, null, null, null,
129             articleURL, null, tagsEntries, communityPermissions,
130             guestPermissions);
131     }
132 
133     public JournalArticle addArticle(
134             String articleId, boolean autoArticleId, long plid, String title,
135             String description, String content, String type, String structureId,
136             String templateId, int displayDateMonth, int displayDateDay,
137             int displayDateYear, int displayDateHour, int displayDateMinute,
138             int expirationDateMonth, int expirationDateDay,
139             int expirationDateYear, int expirationDateHour,
140             int expirationDateMinute, boolean neverExpire, int reviewDateMonth,
141             int reviewDateDay, int reviewDateYear, int reviewDateHour,
142             int reviewDateMinute, boolean neverReview, boolean indexable,
143             boolean smallImage, String smallImageURL, File smallFile,
144             Map<String, byte[]> images, String articleURL,
145             PortletPreferences prefs, String[] tagsEntries,
146             String[] communityPermissions, String[] guestPermissions)
147         throws PortalException, SystemException {
148 
149         PortletPermissionUtil.check(
150             getPermissionChecker(), plid, PortletKeys.JOURNAL,
151             ActionKeys.ADD_ARTICLE);
152 
153         return journalArticleLocalService.addArticle(
154             getUserId(), articleId, autoArticleId, plid, title, description,
155             content, type, structureId, templateId, displayDateMonth,
156             displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
157             expirationDateMonth, expirationDateDay, expirationDateYear,
158             expirationDateHour, expirationDateMinute, neverExpire,
159             reviewDateMonth, reviewDateDay, reviewDateYear, reviewDateHour,
160             reviewDateMinute, neverReview, indexable, smallImage, smallImageURL,
161             smallFile, images, articleURL, prefs, tagsEntries,
162             communityPermissions, guestPermissions);
163     }
164 
165     public JournalArticle approveArticle(
166             long groupId, String articleId, double version, long plid,
167             String articleURL, PortletPreferences prefs)
168         throws PortalException, SystemException {
169 
170         User user = getUser();
171 
172         PortletPermissionUtil.check(
173             getPermissionChecker(), plid, PortletKeys.JOURNAL,
174             ActionKeys.APPROVE_ARTICLE);
175 
176         return journalArticleLocalService.approveArticle(
177             user.getUserId(), groupId, articleId, version, articleURL, prefs);
178     }
179 
180     /**
181      * @deprecated This method does not check permissions correctly.
182      */
183     public JournalArticle copyArticle(
184             long groupId, String oldArticleId, String newArticleId,
185             boolean autoArticleId, double version)
186         throws PortalException, SystemException {
187 
188         JournalArticlePermission.check(
189             getPermissionChecker(), groupId, oldArticleId, version,
190             ActionKeys.ADD_ARTICLE);
191 
192         return journalArticleLocalService.copyArticle(
193             getUserId(), groupId, oldArticleId, newArticleId, autoArticleId,
194             version);
195     }
196 
197     public JournalArticle copyArticle(
198             long groupId, String oldArticleId, String newArticleId,
199             boolean autoArticleId, double version, long plid)
200         throws PortalException, SystemException {
201 
202         PortletPermissionUtil.check(
203             getPermissionChecker(), plid, PortletKeys.JOURNAL,
204             ActionKeys.ADD_ARTICLE);
205 
206         return journalArticleLocalService.copyArticle(
207             getUserId(), groupId, oldArticleId, newArticleId, autoArticleId,
208             version);
209     }
210 
211     public JournalArticle getArticle(
212             long groupId, String articleId, double version)
213         throws PortalException, SystemException {
214 
215         JournalArticlePermission.check(
216             getPermissionChecker(), groupId, articleId, version,
217             ActionKeys.VIEW);
218 
219         return journalArticleLocalService.getArticle(
220             groupId, articleId, version);
221     }
222 
223     public String getArticleContent(
224             long groupId, String articleId, String languageId,
225             ThemeDisplay themeDisplay)
226         throws PortalException, SystemException {
227 
228         JournalArticlePermission.check(
229             getPermissionChecker(), groupId, articleId, ActionKeys.VIEW);
230 
231         return journalArticleLocalService.getArticleContent(
232             groupId, articleId, languageId, themeDisplay);
233     }
234 
235     public String getArticleContent(
236             long groupId, String articleId, double version, String languageId,
237             ThemeDisplay themeDisplay)
238         throws PortalException, SystemException {
239 
240         JournalArticlePermission.check(
241             getPermissionChecker(), groupId, articleId, version,
242             ActionKeys.VIEW);
243 
244         return journalArticleLocalService.getArticleContent(
245             groupId, articleId, version, languageId, themeDisplay);
246     }
247 
248     public void deleteArticle(
249             long groupId, String articleId, double version, String articleURL,
250             PortletPreferences prefs)
251         throws PortalException, SystemException {
252 
253         JournalArticlePermission.check(
254             getPermissionChecker(), groupId, articleId, version,
255             ActionKeys.DELETE);
256 
257         journalArticleLocalService.deleteArticle(
258             groupId, articleId, version, articleURL, prefs);
259     }
260 
261     public void expireArticle(
262             long groupId, String articleId, double version, String articleURL,
263             PortletPreferences prefs)
264         throws PortalException, SystemException {
265 
266         JournalArticlePermission.check(
267             getPermissionChecker(), groupId, articleId, version,
268             ActionKeys.EXPIRE);
269 
270         journalArticleLocalService.expireArticle(
271             groupId, articleId, version, articleURL, prefs);
272     }
273 
274     public void removeArticleLocale(long companyId, String languageId)
275         throws PortalException, SystemException {
276 
277         for (JournalArticle article :
278                 journalArticlePersistence.findByCompanyId(companyId)) {
279 
280             removeArticleLocale(
281                 article.getGroupId(), article.getArticleId(),
282                 article.getVersion(), languageId);
283         }
284     }
285 
286     public JournalArticle removeArticleLocale(
287             long groupId, String articleId, double version, String languageId)
288         throws PortalException, SystemException {
289 
290         JournalArticlePermission.check(
291             getPermissionChecker(), groupId, articleId, version,
292             ActionKeys.UPDATE);
293 
294         return journalArticleLocalService.removeArticleLocale(
295             groupId, articleId, version, languageId);
296     }
297 
298     public JournalArticle updateArticle(
299             long groupId, String articleId, double version,
300             boolean incrementVersion, String title, String description,
301             String content, String type, String structureId, String templateId,
302             int displayDateMonth, int displayDateDay, int displayDateYear,
303             int displayDateHour, int displayDateMinute, int expirationDateMonth,
304             int expirationDateDay, int expirationDateYear,
305             int expirationDateHour, int expirationDateMinute,
306             boolean neverExpire, int reviewDateMonth, int reviewDateDay,
307             int reviewDateYear, int reviewDateHour, int reviewDateMinute,
308             boolean neverReview, boolean indexable, boolean smallImage,
309             String smallImageURL, File smallFile, Map<String, byte[]> images,
310             String articleURL, PortletPreferences prefs, String[] tagsEntries)
311         throws PortalException, SystemException {
312 
313         JournalArticlePermission.check(
314             getPermissionChecker(), groupId, articleId, version,
315             ActionKeys.UPDATE);
316 
317         return journalArticleLocalService.updateArticle(
318             getUserId(), groupId, articleId, version, incrementVersion, title,
319             description, content, type, structureId, templateId,
320             displayDateMonth, displayDateDay, displayDateYear, displayDateHour,
321             displayDateMinute, expirationDateMonth, expirationDateDay,
322             expirationDateYear, expirationDateHour, expirationDateMinute,
323             neverExpire, reviewDateMonth, reviewDateDay, reviewDateYear,
324             reviewDateHour, reviewDateMinute, neverReview, indexable,
325             smallImage, smallImageURL, smallFile, images, articleURL, prefs,
326             tagsEntries);
327     }
328 
329     public JournalArticle updateContent(
330             long groupId, String articleId, double version, String content)
331         throws PortalException, SystemException {
332 
333         JournalArticlePermission.check(
334             getPermissionChecker(), groupId, articleId, version,
335             ActionKeys.UPDATE);
336 
337         return journalArticleLocalService.updateContent(
338             groupId, articleId, version, content);
339     }
340 
341 }