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