1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   *
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.portlet.journal.service.impl;
24  
25  import com.liferay.portal.PortalException;
26  import com.liferay.portal.SystemException;
27  import com.liferay.portal.model.User;
28  import com.liferay.portal.security.permission.ActionKeys;
29  import com.liferay.portal.theme.ThemeDisplay;
30  import com.liferay.portlet.journal.model.JournalArticle;
31  import com.liferay.portlet.journal.service.base.JournalArticleServiceBaseImpl;
32  import com.liferay.portlet.journal.service.permission.JournalArticlePermission;
33  import com.liferay.portlet.journal.service.permission.JournalPermission;
34  
35  import java.io.File;
36  
37  import java.util.Map;
38  
39  import javax.portlet.PortletPreferences;
40  
41  /**
42   * <a href="JournalArticleServiceImpl.java.html"><b><i>View Source</i></b></a>
43   *
44   * @author Brian Wing Shun Chan
45   *
46   */
47  public class JournalArticleServiceImpl extends JournalArticleServiceBaseImpl {
48  
49      public JournalArticle addArticle(
50              long groupId, String articleId, boolean autoArticleId, String title,
51              String description, String content, String type, String structureId,
52              String templateId, int displayDateMonth, int displayDateDay,
53              int displayDateYear, int displayDateHour, int displayDateMinute,
54              int expirationDateMonth, int expirationDateDay,
55              int expirationDateYear, int expirationDateHour,
56              int expirationDateMinute, boolean neverExpire, int reviewDateMonth,
57              int reviewDateDay, int reviewDateYear, int reviewDateHour,
58              int reviewDateMinute, boolean neverReview, boolean indexable,
59              String articleURL, String[] tagsCategories, String[] tagsEntries,
60              boolean addCommunityPermissions, boolean addGuestPermissions)
61          throws PortalException, SystemException {
62  
63          JournalPermission.check(
64              getPermissionChecker(), groupId, ActionKeys.ADD_ARTICLE);
65  
66          return journalArticleLocalService.addArticle(
67              getUserId(), groupId, articleId, autoArticleId, title, description,
68              content, type, structureId, templateId, displayDateMonth,
69              displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
70              expirationDateMonth, expirationDateDay, expirationDateYear,
71              expirationDateHour, expirationDateMinute, neverExpire,
72              reviewDateMonth, reviewDateDay, reviewDateYear, reviewDateHour,
73              reviewDateMinute, neverReview, indexable, false, null, null, null,
74              articleURL, null, tagsCategories, tagsEntries,
75              addCommunityPermissions, addGuestPermissions);
76      }
77  
78      public JournalArticle addArticle(
79              long groupId, String articleId, boolean autoArticleId, String title,
80              String description, String content, String type, String structureId,
81              String templateId, int displayDateMonth, int displayDateDay,
82              int displayDateYear, int displayDateHour, int displayDateMinute,
83              int expirationDateMonth, int expirationDateDay,
84              int expirationDateYear, int expirationDateHour,
85              int expirationDateMinute, boolean neverExpire, int reviewDateMonth,
86              int reviewDateDay, int reviewDateYear, int reviewDateHour,
87              int reviewDateMinute, boolean neverReview, boolean indexable,
88              boolean smallImage, String smallImageURL, File smallFile,
89              Map<String, byte[]> images, String articleURL,
90              PortletPreferences preferences, String[] tagsCategories,
91              String[] tagsEntries, boolean addCommunityPermissions,
92              boolean addGuestPermissions)
93          throws PortalException, SystemException {
94  
95          JournalPermission.check(
96              getPermissionChecker(), groupId, ActionKeys.ADD_ARTICLE);
97  
98          return journalArticleLocalService.addArticle(
99              getUserId(), groupId, articleId, autoArticleId, title, description,
100             content, type, structureId, templateId, displayDateMonth,
101             displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
102             expirationDateMonth, expirationDateDay, expirationDateYear,
103             expirationDateHour, expirationDateMinute, neverExpire,
104             reviewDateMonth, reviewDateDay, reviewDateYear, reviewDateHour,
105             reviewDateMinute, neverReview, indexable, smallImage, smallImageURL,
106             smallFile, images, articleURL, preferences, tagsCategories,
107             tagsEntries, addCommunityPermissions, addGuestPermissions);
108     }
109 
110     public JournalArticle addArticle(
111             long groupId, String articleId, boolean autoArticleId, String title,
112             String description, String content, String type, String structureId,
113             String templateId, int displayDateMonth, int displayDateDay,
114             int displayDateYear, int displayDateHour, int displayDateMinute,
115             int expirationDateMonth, int expirationDateDay,
116             int expirationDateYear, int expirationDateHour,
117             int expirationDateMinute, boolean neverExpire, int reviewDateMonth,
118             int reviewDateDay, int reviewDateYear, int reviewDateHour,
119             int reviewDateMinute, boolean neverReview, boolean indexable,
120             String articleURL, String[] tagsCategories, String[] tagsEntries,
121             String[] communityPermissions, String[] guestPermissions)
122         throws PortalException, SystemException {
123 
124         JournalPermission.check(
125             getPermissionChecker(), groupId, ActionKeys.ADD_ARTICLE);
126 
127         return journalArticleLocalService.addArticle(
128             getUserId(), groupId, articleId, autoArticleId, title, description,
129             content, type, structureId, templateId, displayDateMonth,
130             displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
131             expirationDateMonth, expirationDateDay, expirationDateYear,
132             expirationDateHour, expirationDateMinute, neverExpire,
133             reviewDateMonth, reviewDateDay, reviewDateYear, reviewDateHour,
134             reviewDateMinute, neverReview, indexable, false, null, null, null,
135             articleURL, null, tagsCategories, tagsEntries, communityPermissions,
136             guestPermissions);
137     }
138 
139     public JournalArticle addArticle(
140             long groupId, String articleId, boolean autoArticleId, String title,
141             String description, String content, String type, String structureId,
142             String templateId, int displayDateMonth, int displayDateDay,
143             int displayDateYear, int displayDateHour, int displayDateMinute,
144             int expirationDateMonth, int expirationDateDay,
145             int expirationDateYear, int expirationDateHour,
146             int expirationDateMinute, boolean neverExpire, int reviewDateMonth,
147             int reviewDateDay, int reviewDateYear, int reviewDateHour,
148             int reviewDateMinute, boolean neverReview, boolean indexable,
149             boolean smallImage, String smallImageURL, File smallFile,
150             Map<String, byte[]> images, String articleURL,
151             PortletPreferences preferences, String[] tagsCategories,
152             String[] tagsEntries, String[] communityPermissions,
153             String[] guestPermissions)
154         throws PortalException, SystemException {
155 
156         JournalPermission.check(
157             getPermissionChecker(), groupId, ActionKeys.ADD_ARTICLE);
158 
159         return journalArticleLocalService.addArticle(
160             getUserId(), groupId, articleId, autoArticleId, title, description,
161             content, type, structureId, templateId, displayDateMonth,
162             displayDateDay, displayDateYear, displayDateHour, displayDateMinute,
163             expirationDateMonth, expirationDateDay, expirationDateYear,
164             expirationDateHour, expirationDateMinute, neverExpire,
165             reviewDateMonth, reviewDateDay, reviewDateYear, reviewDateHour,
166             reviewDateMinute, neverReview, indexable, smallImage, smallImageURL,
167             smallFile, images, articleURL, preferences, tagsCategories,
168             tagsEntries, communityPermissions, guestPermissions);
169     }
170 
171     public JournalArticle approveArticle(
172             long groupId, String articleId, double version, String articleURL,
173             PortletPreferences preferences)
174         throws PortalException, SystemException {
175 
176         User user = getUser();
177 
178         JournalPermission.check(
179             getPermissionChecker(), groupId, ActionKeys.APPROVE_ARTICLE);
180 
181         return journalArticleLocalService.approveArticle(
182             user.getUserId(), groupId, articleId, version, articleURL,
183             preferences);
184     }
185 
186     public JournalArticle copyArticle(
187             long groupId, String oldArticleId, String newArticleId,
188             boolean autoArticleId, double version)
189         throws PortalException, SystemException {
190 
191         JournalPermission.check(
192             getPermissionChecker(), groupId, ActionKeys.ADD_ARTICLE);
193 
194         return journalArticleLocalService.copyArticle(
195             getUserId(), groupId, oldArticleId, newArticleId, autoArticleId,
196             version);
197     }
198 
199     public JournalArticle getArticle(
200             long groupId, String articleId, double version)
201         throws PortalException, SystemException {
202 
203         JournalArticlePermission.check(
204             getPermissionChecker(), groupId, articleId, ActionKeys.VIEW);
205 
206         return journalArticleLocalService.getArticle(
207             groupId, articleId, version);
208     }
209 
210     public String getArticleContent(
211             long groupId, String articleId, String languageId,
212             ThemeDisplay themeDisplay)
213         throws PortalException, SystemException {
214 
215         JournalArticlePermission.check(
216             getPermissionChecker(), groupId, articleId, ActionKeys.VIEW);
217 
218         return journalArticleLocalService.getArticleContent(
219             groupId, articleId, null, languageId, themeDisplay);
220     }
221 
222     public String getArticleContent(
223             long groupId, String articleId, double version, String languageId,
224             ThemeDisplay themeDisplay)
225         throws PortalException, SystemException {
226 
227         JournalArticlePermission.check(
228             getPermissionChecker(), groupId, articleId, ActionKeys.VIEW);
229 
230         return journalArticleLocalService.getArticleContent(
231             groupId, articleId, version, null, languageId, themeDisplay);
232     }
233 
234     public void deleteArticle(
235             long groupId, String articleId, double version, String articleURL,
236             PortletPreferences preferences)
237         throws PortalException, SystemException {
238 
239         JournalArticlePermission.check(
240             getPermissionChecker(), groupId, articleId, ActionKeys.DELETE);
241 
242         journalArticleLocalService.deleteArticle(
243             groupId, articleId, version, articleURL, preferences);
244     }
245 
246     public void expireArticle(
247             long groupId, String articleId, double version, String articleURL,
248             PortletPreferences preferences)
249         throws PortalException, SystemException {
250 
251         JournalArticlePermission.check(
252             getPermissionChecker(), groupId, articleId, ActionKeys.EXPIRE);
253 
254         journalArticleLocalService.expireArticle(
255             groupId, articleId, version, articleURL, preferences);
256     }
257 
258     public void removeArticleLocale(long companyId, String languageId)
259         throws PortalException, SystemException {
260 
261         for (JournalArticle article :
262                 journalArticlePersistence.findByCompanyId(companyId)) {
263 
264             removeArticleLocale(
265                 article.getGroupId(), article.getArticleId(),
266                 article.getVersion(), languageId);
267         }
268     }
269 
270     public JournalArticle removeArticleLocale(
271             long groupId, String articleId, double version, String languageId)
272         throws PortalException, SystemException {
273 
274         JournalArticlePermission.check(
275             getPermissionChecker(), groupId, articleId, ActionKeys.UPDATE);
276 
277         return journalArticleLocalService.removeArticleLocale(
278             groupId, articleId, version, languageId);
279     }
280 
281     public JournalArticle updateArticle(
282             long groupId, String articleId, double version,
283             boolean incrementVersion, String title, String description,
284             String content, String type, String structureId, String templateId,
285             int displayDateMonth, int displayDateDay, int displayDateYear,
286             int displayDateHour, int displayDateMinute, int expirationDateMonth,
287             int expirationDateDay, int expirationDateYear,
288             int expirationDateHour, int expirationDateMinute,
289             boolean neverExpire, int reviewDateMonth, int reviewDateDay,
290             int reviewDateYear, int reviewDateHour, int reviewDateMinute,
291             boolean neverReview, boolean indexable, boolean smallImage,
292             String smallImageURL, File smallFile, Map<String, byte[]> images,
293             String articleURL, PortletPreferences preferences,
294             String[] tagsCategories, String[] tagsEntries)
295         throws PortalException, SystemException {
296 
297         JournalArticlePermission.check(
298             getPermissionChecker(), groupId, articleId, ActionKeys.UPDATE);
299 
300         return journalArticleLocalService.updateArticle(
301             getUserId(), groupId, articleId, version, incrementVersion, title,
302             description, content, type, structureId, templateId,
303             displayDateMonth, displayDateDay, displayDateYear, displayDateHour,
304             displayDateMinute, expirationDateMonth, expirationDateDay,
305             expirationDateYear, expirationDateHour, expirationDateMinute,
306             neverExpire, reviewDateMonth, reviewDateDay, reviewDateYear,
307             reviewDateHour, reviewDateMinute, neverReview, indexable,
308             smallImage, smallImageURL, smallFile, images, articleURL,
309             preferences, tagsCategories, tagsEntries);
310     }
311 
312     public JournalArticle updateContent(
313             long groupId, String articleId, double version, String content)
314         throws PortalException, SystemException {
315 
316         JournalArticlePermission.check(
317             getPermissionChecker(), groupId, articleId, ActionKeys.UPDATE);
318 
319         return journalArticleLocalService.updateContent(
320             groupId, articleId, version, content);
321     }
322 
323 }