1   /**
2    * Copyright (c) 2000-2008 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.util.bridges.php;
24  
25  import com.liferay.portal.kernel.util.GetterUtil;
26  import com.liferay.portal.kernel.util.JavaConstants;
27  import com.liferay.portal.kernel.util.StringPool;
28  
29  import java.util.Enumeration;
30  import java.util.Map;
31  
32  import javax.portlet.PortletConfig;
33  import javax.portlet.RenderRequest;
34  import javax.portlet.RenderResponse;
35  
36  import javax.servlet.ServletConfig;
37  import javax.servlet.http.HttpServletRequest;
38  import javax.servlet.http.HttpServletRequestWrapper;
39  
40  /**
41   * <a href="PHPServletRequest.java.html"><b><i>View Source</i></b></a>
42   *
43   * @author Jorge Ferrer
44   *
45   */
46  public class PHPServletRequest extends HttpServletRequestWrapper {
47  
48      public PHPServletRequest(
49          HttpServletRequest request, ServletConfig servletConfig,
50          RenderRequest renderRequest, RenderResponse renderResponse,
51          PortletConfig portletConfig, String phpURI) {
52  
53          super(request);
54  
55          _servletConfig = servletConfig;
56          _renderRequest = renderRequest;
57          _renderResponse = renderResponse;
58          _portletConfig = portletConfig;
59  
60          StringBuilder sb = new StringBuilder();
61  
62          int pos = phpURI.indexOf(StringPool.QUESTION);
63  
64          if (pos != -1) {
65              _path = phpURI.substring(0, pos);
66  
67              sb.append(phpURI.substring(pos + 1));
68          }
69          else {
70              _path = phpURI;
71          }
72  
73          if (GetterUtil.getBoolean(
74                  portletConfig.getInitParameter("add-portlet-params"), true)) {
75  
76              sb.append(StringPool.AMPERSAND);
77              sb.append("portlet_namespace");
78              sb.append(StringPool.EQUAL);
79              sb.append(_renderResponse.getNamespace());
80              sb.append(StringPool.AMPERSAND);
81              sb.append("portlet_name");
82              sb.append(StringPool.EQUAL);
83              sb.append(_portletConfig.getPortletName());
84          }
85  
86          _queryString = sb.toString();
87  
88          request.setAttribute(
89              JavaConstants.JAVAX_SERVLET_INCLUDE_QUERY_STRING, getQueryString());
90          request.setAttribute(
91              JavaConstants.JAVAX_SERVLET_INCLUDE_PATH_INFO, getPathInfo());
92          request.setAttribute(
93              JavaConstants.JAVAX_SERVLET_INCLUDE_REQUEST_URI, getRequestURI());
94          request.setAttribute(
95              JavaConstants.JAVAX_SERVLET_INCLUDE_SERVLET_PATH, _path);
96      }
97  
98      public String getContextPath() {
99          return StringPool.SLASH;
100     }
101 
102     public String getParameter(String name) {
103         return _renderRequest.getParameter(name);
104     }
105 
106     public Map<String, String[]> getParameterMap() {
107         return _renderRequest.getParameterMap();
108     }
109 
110     public Enumeration<String> getParameterNames() {
111         return _renderRequest.getParameterNames();
112     }
113 
114     public String[] getParameterValues(String name) {
115         return _renderRequest.getParameterValues(name);
116     }
117 
118     public String getPathInfo() {
119         return StringPool.BLANK;
120     }
121 
122     public String getPathTranslated() {
123         return StringPool.BLANK;
124     }
125 
126     public String getQueryString() {
127         return _queryString;
128     }
129 
130     public String getRealPath(String path) {
131         return _servletConfig.getServletContext().getRealPath(path);
132     }
133 
134     public String getRequestURI() {
135         return _path + StringPool.QUESTION + _queryString;
136     }
137 
138     public StringBuffer getRequestURL() {
139         StringBuffer sb = new StringBuffer();
140 
141         sb.append(getRequest().getProtocol());
142         sb.append("://");
143         sb.append(getRequest().getRemoteHost());
144         sb.append(StringPool.COLON);
145         sb.append(getRequest().getServerPort());
146         sb.append(StringPool.SLASH);
147         sb.append(getRequestURI());
148 
149         return sb;
150     }
151 
152     public String getServletPath() {
153         return _path;
154     }
155 
156     private ServletConfig _servletConfig;
157     private PortletConfig _portletConfig;
158     private RenderRequest _renderRequest;
159     private RenderResponse _renderResponse;
160     private String _queryString;
161     private String _path;
162 
163 }