001    /**
002     * Copyright (c) 2000-2013 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.util;
016    
017    import com.liferay.portal.kernel.exception.PortalException;
018    import com.liferay.portal.kernel.exception.SystemException;
019    import com.liferay.portal.kernel.portlet.LiferayPortletRequest;
020    import com.liferay.portal.kernel.portlet.LiferayPortletResponse;
021    import com.liferay.portal.kernel.servlet.taglib.ui.BreadcrumbEntry;
022    import com.liferay.portal.kernel.upload.UploadPortletRequest;
023    import com.liferay.portal.kernel.upload.UploadServletRequest;
024    import com.liferay.portal.model.BaseModel;
025    import com.liferay.portal.model.Company;
026    import com.liferay.portal.model.Group;
027    import com.liferay.portal.model.Layout;
028    import com.liferay.portal.model.LayoutFriendlyURLComposite;
029    import com.liferay.portal.model.LayoutQueryStringComposite;
030    import com.liferay.portal.model.LayoutSet;
031    import com.liferay.portal.model.Portlet;
032    import com.liferay.portal.model.ResourcePermission;
033    import com.liferay.portal.model.User;
034    import com.liferay.portal.theme.ThemeDisplay;
035    import com.liferay.portlet.expando.model.ExpandoBridge;
036    
037    import java.io.IOException;
038    import java.io.Serializable;
039    
040    import java.util.Date;
041    import java.util.List;
042    import java.util.Locale;
043    import java.util.Map;
044    import java.util.Properties;
045    import java.util.Set;
046    import java.util.TimeZone;
047    
048    import javax.portlet.ActionRequest;
049    import javax.portlet.ActionResponse;
050    import javax.portlet.PortletConfig;
051    import javax.portlet.PortletException;
052    import javax.portlet.PortletMode;
053    import javax.portlet.PortletPreferences;
054    import javax.portlet.PortletRequest;
055    import javax.portlet.PortletResponse;
056    import javax.portlet.PortletURL;
057    import javax.portlet.PreferencesValidator;
058    import javax.portlet.RenderRequest;
059    import javax.portlet.RenderResponse;
060    import javax.portlet.ValidatorException;
061    import javax.portlet.WindowState;
062    
063    import javax.servlet.ServletContext;
064    import javax.servlet.ServletException;
065    import javax.servlet.http.HttpServletRequest;
066    import javax.servlet.http.HttpServletResponse;
067    import javax.servlet.http.HttpSession;
068    import javax.servlet.jsp.PageContext;
069    
070    /**
071     * @author Brian Wing Shun Chan
072     * @author Eduardo Lundgren
073     */
074    public interface Portal {
075    
076            public static final String FRIENDLY_URL_SEPARATOR = "/-/";
077    
078            public static final String PATH_IMAGE = "/image";
079    
080            public static final String PATH_MAIN = "/c";
081    
082            public static final String PATH_MODULE = "/o";
083    
084            public static final String PATH_PORTAL_LAYOUT = "/portal/layout";
085    
086            public static final String PORTAL_REALM = "PortalRealm";
087    
088            public static final String PORTLET_XML_FILE_NAME_CUSTOM =
089                    "portlet-custom.xml";
090    
091            public static final String PORTLET_XML_FILE_NAME_STANDARD = "portlet.xml";
092    
093            public static final String TEMP_OBFUSCATION_VALUE =
094                    "TEMP_OBFUSCATION_VALUE";
095    
096            /**
097             * Appends the description to the current meta description of the page.
098             *
099             * @param description the description to append to the current meta
100             *        description
101             * @param request the servlet request for the page
102             */
103            public void addPageDescription(
104                    String description, HttpServletRequest request);
105    
106            /**
107             * Appends the keywords to the current meta keywords of the page.
108             *
109             * @param keywords the keywords to add to the current meta keywords
110             *        (comma-separated)
111             * @param request the servlet request for the page
112             */
113            public void addPageKeywords(String keywords, HttpServletRequest request);
114    
115            /**
116             * Appends the subtitle to the current subtitle of the page.
117             *
118             * @param subtitle the subtitle to append to the current subtitle
119             * @param request the servlet request for the page
120             */
121            public void addPageSubtitle(String subtitle, HttpServletRequest request);
122    
123            /**
124             * Appends the title to the current title of the page.
125             *
126             * @param title the title to append to the current title
127             * @param request the servlet request for the page
128             */
129            public void addPageTitle(String title, HttpServletRequest request);
130    
131            /**
132             * Adds the portal port event listener to the portal. The listener will be
133             * notified whenever the portal port is set.
134             *
135             * @param portalPortEventListener the portal port event listener to add
136             */
137            public void addPortalPortEventListener(
138                    PortalPortEventListener portalPortEventListener);
139    
140            /**
141             * Adds an entry to the portlet breadcrumbs for the page.
142             *
143             * @param request the servlet request for the page
144             * @param title the title of the new breakcrumb entry
145             * @param url the URL of the new breadcrumb entry
146             */
147            public void addPortletBreadcrumbEntry(
148                    HttpServletRequest request, String title, String url);
149    
150            /**
151             * Adds an entry to the portlet breadcrumbs for the page.
152             *
153             * @param request the servlet request for the page
154             * @param title the title of the new breakcrumb entry
155             * @param url the URL of the new breadcrumb entry
156             * @param data the HTML5 data parameters of the new breadcrumb entry
157             */
158            public void addPortletBreadcrumbEntry(
159                    HttpServletRequest request, String title, String url,
160                    Map<String, Object> data);
161    
162            /**
163             * Adds the default resource permissions for the portlet to the page.
164             *
165             * @param  request the servlet request for the page
166             * @param  portlet the portlet
167             * @throws PortalException if adding the default resource permissions failed
168             * @throws SystemException if a system exception occurred
169             */
170            public void addPortletDefaultResource(
171                            HttpServletRequest request, Portlet portlet)
172                    throws PortalException, SystemException;
173    
174            public void addPortletDefaultResource(
175                            long companyId, Layout layout, Portlet portlet)
176                    throws PortalException, SystemException;
177    
178            /**
179             * Adds the preserved parameters doAsGroupId and refererPlid to the URL,
180             * optionally adding doAsUserId and doAsUserLanguageId as well.
181             *
182             * <p>
183             * Preserved parameters are parameters that should be sent with every
184             * request as the user navigates the portal.
185             * </p>
186             *
187             * @param  themeDisplay the current theme display
188             * @param  layout the current layout
189             * @param  url the URL
190             * @param  doAsUser whether to include doAsUserId and doAsLanguageId in the
191             *         URL if they are available. If <code>false</code>, doAsUserId and
192             *         doAsUserLanguageId will never be added.
193             * @return the URL with the preserved parameters added
194             */
195            public String addPreservedParameters(
196                    ThemeDisplay themeDisplay, Layout layout, String url, boolean doAsUser);
197    
198            /**
199             * Adds the preserved parameters doAsUserId, doAsUserLanguageId,
200             * doAsGroupId, refererPlid, and controlPanelCategory to the URL.
201             *
202             * @param  themeDisplay the current theme display
203             * @param  url the URL
204             * @return the URL with the preserved parameters added
205             */
206            public String addPreservedParameters(ThemeDisplay themeDisplay, String url);
207    
208            public void addUserLocaleOptionsMessage(HttpServletRequest request);
209    
210            /**
211             * Clears the render parameters in the request if the portlet is in the
212             * action phase.
213             *
214             * @param renderRequest the render request
215             */
216            public void clearRequestParameters(RenderRequest renderRequest);
217    
218            /**
219             * Copies the request parameters to the render parameters, unless a
220             * parameter with that name already exists in the render parameters.
221             *
222             * @param actionRequest the request from which to get the request parameters
223             * @param actionResponse the response to receive the render parameters
224             */
225            public void copyRequestParameters(
226                    ActionRequest actionRequest, ActionResponse actionResponse);
227    
228            /**
229             * Escapes the URL for use in a redirect and checks that security settings
230             * allow the URL is allowed for redirects.
231             *
232             * @param  url the URL to escape
233             * @return the escaped URL, or <code>null</code> if the URL is not an
234             *         allowed for redirects
235             */
236            public String escapeRedirect(String url);
237    
238            /**
239             * Generates a random key to identify the request based on the input string.
240             *
241             * @param  request the servlet request for the page
242             * @param  input the input string
243             * @return the generated key
244             */
245            public String generateRandomKey(HttpServletRequest request, String input);
246    
247            public String getAbsoluteURL(HttpServletRequest request, String url);
248    
249            public LayoutQueryStringComposite getActualLayoutQueryStringComposite(
250                            long groupId, boolean privateLayout, String friendlyURL,
251                            Map<String, String[]> params, Map<String, Object> requestContext)
252                    throws PortalException, SystemException;
253    
254            public String getActualURL(
255                            long groupId, boolean privateLayout, String mainPath,
256                            String friendlyURL, Map<String, String[]> params,
257                            Map<String, Object> requestContext)
258                    throws PortalException, SystemException;
259    
260            /**
261             * Returns an array with the alternate locales, considering if the page is
262             * showing just a content and the translations of this content.
263             *
264             * @param      request the servlet request for the page
265             * @return     the array of alternate locales
266             * @throws     PortalException if a portal exception occurred
267             * @throws     SystemException if a system exception occurred
268             * @deprecated As of 6.2.0, replaced by {@link
269             *             com.liferay.portal.kernel.language.LanguageUtil#getAvailableLocales}
270             */
271            public Locale[] getAlternateLocales(HttpServletRequest request)
272                    throws PortalException, SystemException;
273    
274            /**
275             * Returns the alternate URL of the page, to distinguish it from its
276             * canonical URL.
277             *
278             * @param  canonicalURL the canonical URL previously obtained
279             * @param  themeDisplay the theme display
280             * @param  locale the locale of the translated page
281             * @param  layout the layout
282             * @return the alternate URL
283             * @throws PortalException if a portal exception occurred
284             * @throws SystemException if a system exception occurred
285             */
286            public String getAlternateURL(
287                            String canonicalURL, ThemeDisplay themeDisplay, Locale locale,
288                            Layout layout)
289                    throws PortalException, SystemException;
290    
291            /**
292             * Returns the set of struts actions that should not be checked for an
293             * authentication token.
294             *
295             * @return     the set of struts actions that should not be checked for an
296             *             authentication token
297             * @deprecated As of 6.2.0, replaced by {@link
298             *             com.liferay.portal.security.auth.AuthTokenWhitelistUtil#getPortletCSRFWhitelistActions}
299             */
300            public Set<String> getAuthTokenIgnoreActions();
301    
302            /**
303             * Returns the set of IDs of portlets that should not be checked for an
304             * authentication token.
305             *
306             * @return     the set of IDs of portlets that should not be checked for an
307             *             authentication token
308             * @deprecated As of 6.2.0, replaced by {@link
309             *             com.liferay.portal.security.auth.AuthTokenWhitelistUtil#getPortletCSRFWhitelist}
310             */
311            public Set<String> getAuthTokenIgnorePortlets();
312    
313            /**
314             * Returns the base model instance for the resource permission.
315             *
316             * @param  resourcePermission the resource permission
317             * @return the base model instance, or <code>null</code> if the resource
318             *         permission does not have a base model instance (such as if its a
319             *         portlet)
320             * @throws PortalException if a base model instance for the resource
321             *         permission could not be found
322             * @throws SystemException if a system exception occurred
323             */
324            public BaseModel<?> getBaseModel(ResourcePermission resourcePermission)
325                    throws PortalException, SystemException;
326    
327            /**
328             * Returns the base model instance for the model name and primary key.
329             *
330             * @param  modelName the fully qualified class name of the model
331             * @param  primKey the primary key of the model instance to get
332             * @return the base model instance, or <code>null</code> if the model does
333             *         not have a base model instance (such as if its a portlet)
334             * @throws PortalException if a base model instance with the primary key
335             *         could not be found
336             * @throws SystemException if a system exception occurred
337             */
338            public BaseModel<?> getBaseModel(String modelName, String primKey)
339                    throws PortalException, SystemException;
340    
341            /**
342             * Returns the user's ID from the HTTP authentication headers after
343             * validating their credentials.
344             *
345             * @param  request the servlet request from which to retrieve the HTTP
346             *         authentication headers
347             * @return the user's ID if HTTP authentication headers are present and
348             *         their credentials are valid; 0 otherwise
349             * @throws PortalException if an authentication exception occurred
350             * @throws SystemException if a system exception occurred
351             */
352            public long getBasicAuthUserId(HttpServletRequest request)
353                    throws PortalException, SystemException;
354    
355            /**
356             * Returns the user's ID from the HTTP authentication headers after
357             * validation their credentials.
358             *
359             * @param  request the servlet request to retrieve the HTTP authentication
360             *         headers from
361             * @param  companyId unused
362             * @return the user's ID if HTTP authentication headers are present and
363             *         their credentials are valid; 0 otherwise
364             * @throws PortalException if an authentication exception occurred
365             * @throws SystemException if a system exception occurred
366             */
367            public long getBasicAuthUserId(HttpServletRequest request, long companyId)
368                    throws PortalException, SystemException;
369    
370            /**
371             * Returns the canonical URL of the page, to distinguish it among its
372             * translations.
373             *
374             * @param  completeURL the complete URL of the page
375             * @param  themeDisplay the current theme display
376             * @param  layout the layout. If it is <code>null</code>, then it is
377             *         generated for the current layout
378             * @return the canonical URL
379             * @throws PortalException if a friendly URL or the group could not be
380             *         retrieved
381             * @throws SystemException if a system exception occurred
382             */
383            public String getCanonicalURL(
384                            String completeURL, ThemeDisplay themeDisplay, Layout layout)
385                    throws PortalException, SystemException;
386    
387            /**
388             * Returns the canonical URL of the page, to distinguish it among its
389             * translations.
390             *
391             * @param  completeURL the complete URL of the page
392             * @param  themeDisplay the current theme display
393             * @param  layout the layout. If it is <code>null</code>, then it is
394             *         generated for the current layout
395             * @param  forceLayoutFriendlyURL adds the page friendly URL to the
396             *         canonical URL even if it is not needed
397             * @return the canonical URL
398             * @throws PortalException if a friendly URL or the group could not be
399             *         retrieved
400             * @throws SystemException if a system exception occurred
401             */
402            public String getCanonicalURL(
403                            String completeURL, ThemeDisplay themeDisplay, Layout layout,
404                            boolean forceLayoutFriendlyURL)
405                    throws PortalException, SystemException;
406    
407            /**
408             * @deprecated As of 6.2.0, replaced by the more general {@link
409             *             #getCDNHost(boolean)}
410             */
411            public String getCDNHost();
412    
413            /**
414             * Returns the secure (HTTPS) or insecure (HTTP) content distribution
415             * network (CDN) host address for this portal.
416             *
417             * @param  secure whether to get the secure or insecure CDN host address
418             * @return the CDN host address
419             */
420            public String getCDNHost(boolean secure);
421    
422            public String getCDNHost(HttpServletRequest request)
423                    throws PortalException, SystemException;
424    
425            /**
426             * Returns the insecure (HTTP) content distribution network (CDN) host
427             * address
428             *
429             * @param  companyId the company ID of a site
430             * @return the CDN host address
431             */
432            public String getCDNHostHttp(long companyId);
433    
434            /**
435             * Returns the secure (HTTPS) content distribution network (CDN) host
436             * address
437             *
438             * @param  companyId the company ID of a site
439             * @return the CDN host address
440             */
441            public String getCDNHostHttps(long companyId);
442    
443            /**
444             * Returns the fully qualified name of the class from its ID.
445             *
446             * @param  classNameId the ID of the class
447             * @return the fully qualified name of the class
448             */
449            public String getClassName(long classNameId);
450    
451            /**
452             * Returns the ID of the class from its class object.
453             *
454             * @param  clazz the class object
455             * @return the ID of the class
456             */
457            public long getClassNameId(Class<?> clazz);
458    
459            /**
460             * Returns the ID of the class from its fully qualified name.
461             *
462             * @param  value the fully qualified name of the class
463             * @return the ID of the class
464             */
465            public long getClassNameId(String value);
466    
467            /**
468             * Returns the ID of certain portlets from the fully qualified name of one
469             * of their classes. The portlets this method supports are: blogs,
470             * bookmarks, calendar, document library, image gallery, journal, message
471             * boards, and wiki.
472             *
473             * @param  className the fully qualified name of a class in a portlet
474             * @return the ID of the portlet the class is a part of, or an empty string
475             *         if the class is not supported
476             */
477            public String getClassNamePortletId(String className);
478    
479            public Company getCompany(HttpServletRequest request)
480                    throws PortalException, SystemException;
481    
482            public Company getCompany(PortletRequest portletRequest)
483                    throws PortalException, SystemException;
484    
485            public long getCompanyId(HttpServletRequest requestuest);
486    
487            public long getCompanyId(PortletRequest portletRequest);
488    
489            public long[] getCompanyIds();
490    
491            public String getComputerAddress();
492    
493            public String getComputerName();
494    
495            public Map<String, List<Portlet>> getControlPanelCategoriesMap(
496                            HttpServletRequest request)
497                    throws SystemException;
498    
499            public String getControlPanelCategory(
500                            String portletId, ThemeDisplay themeDisplay)
501                    throws SystemException;
502    
503            public String getControlPanelFullURL(
504                            long scopeGroupId, String ppid, Map<String, String[]> params)
505                    throws PortalException, SystemException;
506    
507            public long getControlPanelPlid(long companyId)
508                    throws PortalException, SystemException;
509    
510            public long getControlPanelPlid(PortletRequest portletRequest)
511                    throws PortalException, SystemException;
512    
513            public Set<Portlet> getControlPanelPortlets(long companyId, String category)
514                    throws SystemException;
515    
516            public List<Portlet> getControlPanelPortlets(
517                            String category, ThemeDisplay themeDisplay)
518                    throws SystemException;
519    
520            public PortletURL getControlPanelPortletURL(
521                    HttpServletRequest request, String portletId, long referrerPlid,
522                    String lifecycle);
523    
524            public PortletURL getControlPanelPortletURL(
525                    PortletRequest portletRequest, String portletId, long referrerPlid,
526                    String lifecycle);
527    
528            public String getCreateAccountURL(
529                            HttpServletRequest request, ThemeDisplay themeDisplay)
530                    throws Exception;
531    
532            public String getCurrentCompleteURL(HttpServletRequest request);
533    
534            public String getCurrentURL(HttpServletRequest request);
535    
536            public String getCurrentURL(PortletRequest portletRequest);
537    
538            public String getCustomSQLFunctionIsNotNull();
539    
540            public String getCustomSQLFunctionIsNull();
541    
542            /**
543             * Returns the date object for the specified month, day, and year.
544             *
545             * @param  month the month (0-based, meaning 0 for January)
546             * @param  day the day of the month
547             * @param  year the year
548             * @return the date object
549             */
550            public Date getDate(int month, int day, int year);
551    
552            /**
553             * Returns the date object for the specified month, day, and year,
554             * optionally throwing an exception if the date is invalid.
555             *
556             * @param  month the month (0-based, meaning 0 for January)
557             * @param  day the day of the month
558             * @param  year the year
559             * @param  clazz the exception class to throw if the date is invalid. If
560             *         <code>null</code>, no exception will be thrown for an invalid
561             *         date.
562             * @return the date object, or <code>null</code> if the date is invalid and
563             *         no exception to throw was provided
564             * @throws PortalException if the date was invalid and <code>pe</code> was
565             *         not <code>null</code>
566             */
567            public Date getDate(
568                            int month, int day, int year,
569                            Class<? extends PortalException> clazz)
570                    throws PortalException;
571    
572            /**
573             * Returns the date object for the specified month, day, year, hour, and
574             * minute, optionally throwing an exception if the date is invalid.
575             *
576             * @param  month the month (0-based, meaning 0 for January)
577             * @param  day the day of the month
578             * @param  year the year
579             * @param  hour the hour (0-24)
580             * @param  min the minute of the hour
581             * @param  clazz the exception class to throw if the date is invalid. If
582             *         <code>null</code>, no exception will be thrown for an invalid
583             *         date.
584             * @return the date object, or <code>null</code> if the date is invalid and
585             *         no exception to throw was provided
586             * @throws PortalException if the date was invalid and <code>pe</code> was
587             *         not <code>null</code>
588             */
589            public Date getDate(
590                            int month, int day, int year, int hour, int min,
591                            Class<? extends PortalException> clazz)
592                    throws PortalException;
593    
594            /**
595             * Returns the date object for the specified month, day, year, hour, minute,
596             * and time zone, optionally throwing an exception if the date is invalid.
597             *
598             * @param  month the month (0-based, meaning 0 for January)
599             * @param  day the day of the month
600             * @param  year the year
601             * @param  hour the hour (0-24)
602             * @param  min the minute of the hour
603             * @param  timeZone the time zone of the date
604             * @param  clazz the exception class to throw if the date is invalid. If
605             *         <code>null</code>, no exception will be thrown for an invalid
606             *         date.
607             * @return the date object, or <code>null</code> if the date is invalid and
608             *         no exception to throw was provided
609             * @throws PortalException if the date was invalid and <code>pe</code> was
610             *         not <code>null</code>
611             */
612            public Date getDate(
613                            int month, int day, int year, int hour, int min, TimeZone timeZone,
614                            Class<? extends PortalException> clazz)
615                    throws PortalException;
616    
617            /**
618             * Returns the date object for the specified month, day, year, and time
619             * zone, optionally throwing an exception if the date is invalid.
620             *
621             * @param  month the month (0-based, meaning 0 for January)
622             * @param  day the day of the month
623             * @param  year the year
624             * @param  timeZone the time zone of the date
625             * @param  clazz the exception class to throw if the date is invalid. If
626             *         <code>null</code>, no exception will be thrown for an invalid
627             *         date.
628             * @return the date object, or <code>null</code> if the date is invalid and
629             *         no exception to throw was provided
630             * @throws PortalException if the date was invalid and <code>pe</code> was
631             *         not <code>null</code>
632             */
633            public Date getDate(
634                            int month, int day, int year, TimeZone timeZone,
635                            Class<? extends PortalException> clazz)
636                    throws PortalException;
637    
638            public long getDefaultCompanyId();
639    
640            public long getDigestAuthUserId(HttpServletRequest request)
641                    throws PortalException, SystemException;
642    
643            public String getEmailFromAddress(
644                            PortletPreferences preferences, long companyId, String defaultValue)
645                    throws SystemException;
646    
647            public String getEmailFromName(
648                            PortletPreferences preferences, long companyId, String defaultValue)
649                    throws SystemException;
650    
651            public Map<String, Serializable> getExpandoBridgeAttributes(
652                            ExpandoBridge expandoBridge, PortletRequest portletRequest)
653                    throws PortalException, SystemException;
654    
655            public Map<String, Serializable> getExpandoBridgeAttributes(
656                            ExpandoBridge expandoBridge,
657                            UploadPortletRequest uploadPortletRequest)
658                    throws PortalException, SystemException;
659    
660            public Serializable getExpandoValue(
661                            PortletRequest portletRequest, String name, int type,
662                            String displayType)
663                    throws PortalException, SystemException;
664    
665            public Serializable getExpandoValue(
666                            UploadPortletRequest uploadPortletRequest, String name, int type,
667                            String displayType)
668                    throws PortalException, SystemException;
669    
670            public String getFacebookURL(
671                            Portlet portlet, String facebookCanvasPageURL,
672                            ThemeDisplay themeDisplay)
673                    throws PortalException, SystemException;
674    
675            public Portlet getFirstMyAccountPortlet(ThemeDisplay themeDisplay)
676                    throws SystemException;
677    
678            public String getFirstPageLayoutTypes(PageContext pageContext);
679    
680            public Portlet getFirstSiteAdministrationPortlet(ThemeDisplay themeDisplay)
681                    throws SystemException;
682    
683            public String getFullName(
684                    String firstName, String middleName, String lastName);
685    
686            public String getGlobalLibDir();
687    
688            public String getGoogleGadgetURL(Portlet portlet, ThemeDisplay themeDisplay)
689                    throws PortalException, SystemException;
690    
691            public String getGroupFriendlyURL(
692                            Group group, boolean privateLayoutSet, ThemeDisplay themeDisplay)
693                    throws PortalException, SystemException;
694    
695            public String getGroupFriendlyURL(
696                            Group group, boolean privateLayoutSet, ThemeDisplay themeDisplay,
697                            Locale locale)
698                    throws PortalException, SystemException;
699    
700            public int[] getGroupFriendlyURLIndex(String requestURI);
701    
702            public String[] getGroupPermissions(HttpServletRequest request);
703    
704            public String[] getGroupPermissions(
705                    HttpServletRequest request, String className);
706    
707            public String[] getGroupPermissions(PortletRequest portletRequest);
708    
709            public String[] getGroupPermissions(
710                    PortletRequest portletRequest, String className);
711    
712            public String[] getGuestPermissions(HttpServletRequest request);
713    
714            public String[] getGuestPermissions(
715                    HttpServletRequest request, String className);
716    
717            public String[] getGuestPermissions(PortletRequest portletRequest);
718    
719            public String[] getGuestPermissions(
720                    PortletRequest portletRequest, String className);
721    
722            public String getHomeURL(HttpServletRequest request)
723                    throws PortalException, SystemException;
724    
725            public String getHost(HttpServletRequest request);
726    
727            public String getHost(PortletRequest portletRequest);
728    
729            public HttpServletRequest getHttpServletRequest(
730                    PortletRequest portletRequest);
731    
732            public HttpServletResponse getHttpServletResponse(
733                    PortletResponse portletResponse);
734    
735            public String getI18nPathLanguageId(
736                    Locale locale, String defaultI18nPathLanguageId);
737    
738            public String getJournalArticleActualURL(
739                            long groupId, boolean privateLayout, String mainPath,
740                            String friendlyURL, Map<String, String[]> params,
741                            Map<String, Object> requestContext)
742                    throws PortalException, SystemException;
743    
744            public Layout getJournalArticleLayout(
745                            long groupId, boolean privateLayout, String friendlyURL)
746                    throws PortalException, SystemException;
747    
748            public String getJsSafePortletId(String portletId);
749    
750            public String getLayoutActualURL(Layout layout);
751    
752            public String getLayoutActualURL(Layout layout, String mainPath);
753    
754            public String getLayoutActualURL(
755                            long groupId, boolean privateLayout, String mainPath,
756                            String friendlyURL)
757                    throws PortalException, SystemException;
758    
759            public String getLayoutActualURL(
760                            long groupId, boolean privateLayout, String mainPath,
761                            String friendlyURL, Map<String, String[]> params,
762                            Map<String, Object> requestContext)
763                    throws PortalException, SystemException;
764    
765            public String getLayoutEditPage(Layout layout);
766    
767            public String getLayoutEditPage(String type);
768    
769            public String getLayoutFriendlyURL(Layout layout, ThemeDisplay themeDisplay)
770                    throws PortalException, SystemException;
771    
772            public String getLayoutFriendlyURL(
773                            Layout layout, ThemeDisplay themeDisplay, Locale locale)
774                    throws PortalException, SystemException;
775    
776            public LayoutFriendlyURLComposite getLayoutFriendlyURLComposite(
777                            long groupId, boolean privateLayout, String friendlyURL,
778                            Map<String, String[]> params, Map<String, Object> requestContext)
779                    throws PortalException, SystemException;
780    
781            public String getLayoutFullURL(Layout layout, ThemeDisplay themeDisplay)
782                    throws PortalException, SystemException;
783    
784            public String getLayoutFullURL(
785                            Layout layout, ThemeDisplay themeDisplay, boolean doAsUser)
786                    throws PortalException, SystemException;
787    
788            public String getLayoutFullURL(long groupId, String portletId)
789                    throws PortalException, SystemException;
790    
791            public String getLayoutFullURL(
792                            long groupId, String portletId, boolean secure)
793                    throws PortalException, SystemException;
794    
795            public String getLayoutFullURL(ThemeDisplay themeDisplay)
796                    throws PortalException, SystemException;
797    
798            public String getLayoutSetFriendlyURL(
799                            LayoutSet layoutSet, ThemeDisplay themeDisplay)
800                    throws PortalException, SystemException;
801    
802            public String getLayoutTarget(Layout layout);
803    
804            public String getLayoutURL(Layout layout, ThemeDisplay themeDisplay)
805                    throws PortalException, SystemException;
806    
807            public String getLayoutURL(
808                            Layout layout, ThemeDisplay themeDisplay, boolean doAsUser)
809                    throws PortalException, SystemException;
810    
811            public String getLayoutURL(ThemeDisplay themeDisplay)
812                    throws PortalException, SystemException;
813    
814            public String getLayoutViewPage(Layout layout);
815    
816            public String getLayoutViewPage(String type);
817    
818            public LiferayPortletRequest getLiferayPortletRequest(
819                    PortletRequest portletRequest);
820    
821            public LiferayPortletResponse getLiferayPortletResponse(
822                    PortletResponse portletResponse);
823    
824            public Locale getLocale(HttpServletRequest request);
825    
826            public Locale getLocale(
827                    HttpServletRequest request, HttpServletResponse response,
828                    boolean initialize);
829    
830            public Locale getLocale(PortletRequest portletRequest);
831    
832            public String getLocalizedFriendlyURL(
833                            HttpServletRequest request, Layout layout, Locale locale)
834                    throws Exception;
835    
836            public String getMailId(String mx, String popPortletPrefix, Object... ids);
837    
838            public String getNetvibesURL(Portlet portlet, ThemeDisplay themeDisplay)
839                    throws PortalException, SystemException;
840    
841            public String getNewPortletTitle(
842                    String portletTitle, String oldScopeName, String newScopeName);
843    
844            public HttpServletRequest getOriginalServletRequest(
845                    HttpServletRequest request);
846    
847            /**
848             * @deprecated As of 6.2.0 renamed to {@link #getSiteGroupId(long)}
849             */
850            public long getParentGroupId(long scopeGroupId)
851                    throws PortalException, SystemException;
852    
853            public String getPathContext();
854    
855            public String getPathFriendlyURLPrivateGroup();
856    
857            public String getPathFriendlyURLPrivateUser();
858    
859            public String getPathFriendlyURLPublic();
860    
861            public String getPathImage();
862    
863            public String getPathMain();
864    
865            public String getPathModule();
866    
867            public String getPathProxy();
868    
869            public long getPlidFromFriendlyURL(long companyId, String friendlyURL);
870    
871            public long getPlidFromPortletId(
872                            long groupId, boolean privateLayout, String portletId)
873                    throws PortalException, SystemException;
874    
875            public long getPlidFromPortletId(long groupId, String portletId)
876                    throws PortalException, SystemException;
877    
878            public String getPortalLibDir();
879    
880            /**
881             * @deprecated As of 6.2.0, replaced by the more general {@link
882             *             #getPortalPort(boolean)}
883             */
884            public int getPortalPort();
885    
886            public int getPortalPort(boolean secure);
887    
888            public Properties getPortalProperties();
889    
890            public String getPortalURL(HttpServletRequest request);
891    
892            public String getPortalURL(HttpServletRequest request, boolean secure);
893    
894            public String getPortalURL(Layout layout, ThemeDisplay themeDisplay)
895                    throws PortalException, SystemException;
896    
897            public String getPortalURL(PortletRequest portletRequest);
898    
899            public String getPortalURL(PortletRequest portletRequest, boolean secure);
900    
901            public String getPortalURL(
902                    String serverName, int serverPort, boolean secure);
903    
904            public String getPortalURL(ThemeDisplay themeDisplay)
905                    throws PortalException, SystemException;
906    
907            public String getPortalWebDir();
908    
909            /**
910             * @deprecated As of 6.2.0, replaced by {@link
911             *             com.liferay.portal.security.auth.AuthTokenWhitelistUtil#getPortletInvocationWhitelist}
912             */
913            public Set<String> getPortletAddDefaultResourceCheckWhitelist();
914    
915            /**
916             * @deprecated As of 6.2.0, replaced by {@link
917             *             com.liferay.portal.security.auth.AuthTokenWhitelistUtil#getPortletInvocationWhitelistActions}
918             */
919            public Set<String> getPortletAddDefaultResourceCheckWhitelistActions();
920    
921            /**
922             * @deprecated As of 6.2.0, replaced by {@link
923             *             #getPortletBreadcrumbs(HttpServletRequest)}
924             */
925            public List<BreadcrumbEntry> getPortletBreadcrumbList(
926                    HttpServletRequest request);
927    
928            public List<BreadcrumbEntry> getPortletBreadcrumbs(
929                    HttpServletRequest request);
930    
931            public PortletConfig getPortletConfig(
932                            long companyId, String portletId, ServletContext servletContext)
933                    throws PortletException, SystemException;
934    
935            public String getPortletDescription(
936                    Portlet portlet, ServletContext servletContext, Locale locale);
937    
938            public String getPortletDescription(Portlet portlet, User user);
939    
940            public String getPortletDescription(String portletId, Locale locale);
941    
942            public String getPortletDescription(String portletId, String languageId);
943    
944            public String getPortletDescription(String portletId, User user);
945    
946            public String getPortletId(HttpServletRequest request);
947    
948            public String getPortletId(PortletRequest portletRequest);
949    
950            public String getPortletLongTitle(Portlet portlet, Locale locale);
951    
952            public String getPortletLongTitle(
953                    Portlet portlet, ServletContext servletContext, Locale locale);
954    
955            public String getPortletLongTitle(Portlet portlet, String languageId);
956    
957            public String getPortletLongTitle(Portlet portlet, User user);
958    
959            public String getPortletLongTitle(String portletId, Locale locale);
960    
961            public String getPortletLongTitle(String portletId, String languageId);
962    
963            public String getPortletLongTitle(String portletId, User user);
964    
965            public String getPortletNamespace(String portletId);
966    
967            public String getPortletTitle(Portlet portlet, Locale locale);
968    
969            public String getPortletTitle(
970                    Portlet portlet, ServletContext servletContext, Locale locale);
971    
972            public String getPortletTitle(Portlet portlet, String languageId);
973    
974            public String getPortletTitle(Portlet portlet, User user);
975    
976            public String getPortletTitle(RenderRequest renderRequest);
977    
978            public String getPortletTitle(RenderResponse renderResponse);
979    
980            public String getPortletTitle(String portletId, Locale locale);
981    
982            public String getPortletTitle(String portletId, String languageId);
983    
984            public String getPortletTitle(String portletId, User user);
985    
986            public String getPortletXmlFileName() throws SystemException;
987    
988            public PortletPreferences getPreferences(HttpServletRequest request);
989    
990            public PreferencesValidator getPreferencesValidator(Portlet portlet);
991    
992            public String getRelativeHomeURL(HttpServletRequest request)
993                    throws PortalException, SystemException;
994    
995            public long getScopeGroupId(HttpServletRequest request)
996                    throws PortalException, SystemException;
997    
998            public long getScopeGroupId(HttpServletRequest request, String portletId)
999                    throws PortalException, SystemException;
1000    
1001            public long getScopeGroupId(
1002                            HttpServletRequest request, String portletId,
1003                            boolean checkStagingGroup)
1004                    throws PortalException, SystemException;
1005    
1006            public long getScopeGroupId(Layout layout);
1007    
1008            public long getScopeGroupId(Layout layout, String portletId);
1009    
1010            public long getScopeGroupId(long plid);
1011    
1012            public long getScopeGroupId(PortletRequest portletRequest)
1013                    throws PortalException, SystemException;
1014    
1015            public User getSelectedUser(HttpServletRequest request)
1016                    throws PortalException, SystemException;
1017    
1018            public User getSelectedUser(
1019                            HttpServletRequest request, boolean checkPermission)
1020                    throws PortalException, SystemException;
1021    
1022            public User getSelectedUser(PortletRequest portletRequest)
1023                    throws PortalException, SystemException;
1024    
1025            public User getSelectedUser(
1026                            PortletRequest portletRequest, boolean checkPermission)
1027                    throws PortalException, SystemException;
1028    
1029            public String getServletContextName();
1030    
1031            public Map<String, List<Portlet>> getSiteAdministrationCategoriesMap(
1032                            HttpServletRequest request)
1033                    throws SystemException;
1034    
1035            public PortletURL getSiteAdministrationURL(
1036                            HttpServletRequest request, ThemeDisplay themeDisplay)
1037                    throws SystemException;
1038    
1039            public PortletURL getSiteAdministrationURL(
1040                    HttpServletRequest request, ThemeDisplay themeDisplay,
1041                    String portletName);
1042    
1043            public PortletURL getSiteAdministrationURL(
1044                            PortletResponse portletResponse, ThemeDisplay themeDisplay)
1045                    throws SystemException;
1046    
1047            public PortletURL getSiteAdministrationURL(
1048                    PortletResponse portletResponse, ThemeDisplay themeDisplay,
1049                    String portletName);
1050    
1051            public long[] getSiteAndCompanyGroupIds(long groupId)
1052                    throws PortalException, SystemException;
1053    
1054            public long[] getSiteAndCompanyGroupIds(ThemeDisplay themeDisplay)
1055                    throws PortalException, SystemException;
1056    
1057            public Locale getSiteDefaultLocale(long groupId)
1058                    throws PortalException, SystemException;
1059    
1060            public long getSiteGroupId(long groupId)
1061                    throws PortalException, SystemException;
1062    
1063            /**
1064             * Returns the URL of the login page for the current site if one is
1065             * available.
1066             *
1067             * @param  themeDisplay the theme display for the current page
1068             * @return the URL of the login page for the current site, or
1069             *         <code>null</code> if one is not available
1070             * @throws PortalException if a portal exception occurred
1071             * @throws SystemException if a system exception occurred
1072             */
1073            public String getSiteLoginURL(ThemeDisplay themeDisplay)
1074                    throws PortalException, SystemException;
1075    
1076            public String getStaticResourceURL(HttpServletRequest request, String uri);
1077    
1078            public String getStaticResourceURL(
1079                    HttpServletRequest request, String uri, long timestamp);
1080    
1081            public String getStaticResourceURL(
1082                    HttpServletRequest request, String uri, String queryString);
1083    
1084            public String getStaticResourceURL(
1085                    HttpServletRequest request, String uri, String queryString,
1086                    long timestamp);
1087    
1088            public String getStrutsAction(HttpServletRequest request);
1089    
1090            public String[] getSystemGroups();
1091    
1092            public String[] getSystemOrganizationRoles();
1093    
1094            public String[] getSystemRoles();
1095    
1096            public String[] getSystemSiteRoles();
1097    
1098            public String getUniqueElementId(
1099                    HttpServletRequest request, String namespace, String id);
1100    
1101            public String getUniqueElementId(
1102                    PortletRequest request, String namespace, String id);
1103    
1104            public UploadPortletRequest getUploadPortletRequest(
1105                    PortletRequest portletRequest);
1106    
1107            public UploadServletRequest getUploadServletRequest(
1108                    HttpServletRequest request);
1109    
1110            public Date getUptime();
1111    
1112            public String getURLWithSessionId(String url, String sessionId);
1113    
1114            public User getUser(HttpServletRequest request)
1115                    throws PortalException, SystemException;
1116    
1117            public User getUser(PortletRequest portletRequest)
1118                    throws PortalException, SystemException;
1119    
1120            public String getUserEmailAddress(long userId) throws SystemException;
1121    
1122            public long getUserId(HttpServletRequest request);
1123    
1124            public long getUserId(PortletRequest portletRequest);
1125    
1126            public String getUserName(BaseModel<?> baseModel);
1127    
1128            public String getUserName(long userId, String defaultUserName);
1129    
1130            public String getUserName(
1131                    long userId, String defaultUserName, HttpServletRequest request);
1132    
1133            public String getUserName(
1134                    long userId, String defaultUserName, String userAttribute);
1135    
1136            public String getUserName(
1137                    long userId, String defaultUserName, String userAttribute,
1138                    HttpServletRequest request);
1139    
1140            public String getUserPassword(HttpServletRequest request);
1141    
1142            public String getUserPassword(HttpSession session);
1143    
1144            public String getUserPassword(PortletRequest portletRequest);
1145    
1146            public String getUserValue(long userId, String param, String defaultValue)
1147                    throws SystemException;
1148    
1149            public long getValidUserId(long companyId, long userId)
1150                    throws PortalException, SystemException;
1151    
1152            public String getVirtualLayoutActualURL(
1153                            long groupId, boolean privateLayout, String mainPath,
1154                            String friendlyURL, Map<String, String[]> params,
1155                            Map<String, Object> requestContext)
1156                    throws PortalException, SystemException;
1157    
1158            public LayoutFriendlyURLComposite getVirtualLayoutFriendlyURLComposite(
1159                            boolean privateLayout, String friendlyURL,
1160                            Map<String, String[]> params, Map<String, Object> requestContext)
1161                    throws PortalException, SystemException;
1162    
1163            public String getWidgetURL(Portlet portlet, ThemeDisplay themeDisplay)
1164                    throws PortalException, SystemException;
1165    
1166            public void initCustomSQL();
1167    
1168            public User initUser(HttpServletRequest request) throws Exception;
1169    
1170            public void invokeTaglibDiscussion(
1171                            PortletConfig portletConfig, ActionRequest actionRequest,
1172                            ActionResponse actionResponse)
1173                    throws Exception;
1174    
1175            /**
1176             * @deprecated As of 6.2.0 with no direct replacement
1177             */
1178            public boolean isAllowAddPortletDefaultResource(
1179                            HttpServletRequest request, Portlet portlet)
1180                    throws PortalException, SystemException;
1181    
1182            public boolean isCDNDynamicResourcesEnabled(HttpServletRequest request)
1183                    throws PortalException, SystemException;
1184    
1185            public boolean isCDNDynamicResourcesEnabled(long companyId);
1186    
1187            /**
1188             * @deprecated As of 6.1.0, renamed to {@link #isGroupAdmin(User, long)}
1189             */
1190            public boolean isCommunityAdmin(User user, long groupId) throws Exception;
1191    
1192            /**
1193             * @deprecated As of 6.1.0, renamed to {@link #isGroupOwner(User, long)}
1194             */
1195            public boolean isCommunityOwner(User user, long groupId) throws Exception;
1196    
1197            public boolean isCompanyAdmin(User user) throws Exception;
1198    
1199            public boolean isCompanyControlPanelPortlet(
1200                            String portletId, String category, ThemeDisplay themeDisplay)
1201                    throws PortalException, SystemException;
1202    
1203            public boolean isCompanyControlPanelPortlet(
1204                            String portletId, ThemeDisplay themeDisplay)
1205                    throws PortalException, SystemException;
1206    
1207            public boolean isCompanyControlPanelVisible(ThemeDisplay themeDisplay)
1208                    throws PortalException, SystemException;
1209    
1210            public boolean isControlPanelPortlet(
1211                            String portletId, String category, ThemeDisplay themeDisplay)
1212                    throws SystemException;
1213    
1214            public boolean isControlPanelPortlet(
1215                            String portletId, ThemeDisplay themeDisplay)
1216                    throws SystemException;
1217    
1218            public boolean isGroupAdmin(User user, long groupId) throws Exception;
1219    
1220            public boolean isGroupFriendlyURL(
1221                    String fullURL, String groupFriendlyURL, String layoutFriendlyURL);
1222    
1223            public boolean isGroupOwner(User user, long groupId) throws Exception;
1224    
1225            public boolean isLayoutDescendant(Layout layout, long layoutId)
1226                    throws PortalException, SystemException;
1227    
1228            public boolean isLayoutFirstPageable(Layout layout);
1229    
1230            public boolean isLayoutFirstPageable(String type);
1231    
1232            public boolean isLayoutFriendliable(Layout layout);
1233    
1234            public boolean isLayoutFriendliable(String type);
1235    
1236            public boolean isLayoutParentable(Layout layout);
1237    
1238            public boolean isLayoutParentable(String type);
1239    
1240            public boolean isLayoutSitemapable(Layout layout);
1241    
1242            public boolean isMethodGet(PortletRequest portletRequest);
1243    
1244            public boolean isMethodPost(PortletRequest portletRequest);
1245    
1246            public boolean isMultipartRequest(HttpServletRequest request);
1247    
1248            public boolean isOmniadmin(long userId);
1249    
1250            public boolean isReservedParameter(String name);
1251    
1252            public boolean isRSSFeedsEnabled();
1253    
1254            public boolean isSecure(HttpServletRequest request);
1255    
1256            public boolean isSystemGroup(String groupName);
1257    
1258            public boolean isSystemRole(String roleName);
1259    
1260            public boolean isUpdateAvailable() throws SystemException;
1261    
1262            public boolean isValidResourceId(String resourceId);
1263    
1264            public void removePortalPortEventListener(
1265                    PortalPortEventListener portalPortEventListener);
1266    
1267            public void resetCDNHosts();
1268    
1269            /**
1270             * @deprecated As of 6.2.0, replaced by {@link
1271             *             com.liferay.portal.security.auth.AuthTokenWhitelistUtil#resetPortletInvocationWhitelist}
1272             */
1273            public Set<String> resetPortletAddDefaultResourceCheckWhitelist();
1274    
1275            /**
1276             * @deprecated As of 6.2.0, replaced by {@link
1277             *             com.liferay.portal.security.auth.AuthTokenWhitelistUtil#resetPortletInvocationWhitelistActions}
1278             */
1279            public Set<String> resetPortletAddDefaultResourceCheckWhitelistActions();
1280    
1281            public void sendError(
1282                            Exception e, ActionRequest actionRequest,
1283                            ActionResponse actionResponse)
1284                    throws IOException;
1285    
1286            public void sendError(
1287                            Exception e, HttpServletRequest request,
1288                            HttpServletResponse response)
1289                    throws IOException, ServletException;
1290    
1291            public void sendError(
1292                            int status, Exception e, ActionRequest actionRequest,
1293                            ActionResponse actionResponse)
1294                    throws IOException;
1295    
1296            public void sendError(
1297                            int status, Exception e, HttpServletRequest request,
1298                            HttpServletResponse response)
1299                    throws IOException, ServletException;
1300    
1301            public void sendRSSFeedsDisabledError(
1302                            HttpServletRequest request, HttpServletResponse response)
1303                    throws IOException, ServletException;
1304    
1305            public void sendRSSFeedsDisabledError(
1306                            PortletRequest portletRequest, PortletResponse portletResponse)
1307                    throws IOException, ServletException;
1308    
1309            /**
1310             * Sets the description for the page, overriding the existing page
1311             * description.
1312             */
1313            public void setPageDescription(
1314                    String description, HttpServletRequest request);
1315    
1316            /**
1317             * Sets the keywords for the page, overriding the existing page keywords.
1318             */
1319            public void setPageKeywords(String keywords, HttpServletRequest request);
1320    
1321            /**
1322             * Sets the subtitle for the page, overriding the existing page subtitle.
1323             */
1324            public void setPageSubtitle(String subtitle, HttpServletRequest request);
1325    
1326            /**
1327             * Sets the whole title for the page, overriding the existing page whole
1328             * title.
1329             */
1330            public void setPageTitle(String title, HttpServletRequest request);
1331    
1332            /**
1333             * Sets the port obtained on the first request to the portal.
1334             */
1335            public void setPortalPort(HttpServletRequest request);
1336    
1337            public void storePreferences(PortletPreferences portletPreferences)
1338                    throws IOException, ValidatorException;
1339    
1340            public String[] stripURLAnchor(String url, String separator);
1341    
1342            public String transformCustomSQL(String sql);
1343    
1344            public String transformSQL(String sql);
1345    
1346            public PortletMode updatePortletMode(
1347                    String portletId, User user, Layout layout, PortletMode portletMode,
1348                    HttpServletRequest request);
1349    
1350            public String updateRedirect(
1351                    String redirect, String oldPath, String newPath);
1352    
1353            public WindowState updateWindowState(
1354                    String portletId, User user, Layout layout, WindowState windowState,
1355                    HttpServletRequest request);
1356    
1357    }