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 req, ServletConfig config, RenderRequest renderReq,
50          RenderResponse renderRes, PortletConfig portletConfig, String phpURI) {
51  
52          super(req);
53  
54          _config = config;
55          _renderReq = renderReq;
56          _renderRes = renderRes;
57          _portletConfig = portletConfig;
58  
59          StringBuffer sb = new StringBuffer();
60  
61          int pos = phpURI.indexOf(StringPool.QUESTION);
62  
63          if (pos != -1) {
64              _path = phpURI.substring(0, pos);
65  
66              sb.append(phpURI.substring(pos + 1));
67          }
68          else {
69              _path = phpURI;
70          }
71  
72          if (GetterUtil.getBoolean(
73                  portletConfig.getInitParameter("add-portlet-params"), true)) {
74  
75              sb.append(StringPool.AMPERSAND);
76              sb.append("portlet_namespace");
77              sb.append(StringPool.EQUAL);
78              sb.append(_renderRes.getNamespace());
79              sb.append(StringPool.AMPERSAND);
80              sb.append("portlet_name");
81              sb.append(StringPool.EQUAL);
82              sb.append(_portletConfig.getPortletName());
83          }
84  
85          _queryString = sb.toString();
86  
87          req.setAttribute(
88              JavaConstants.JAVAX_SERVLET_INCLUDE_QUERY_STRING, getQueryString());
89          req.setAttribute(
90              JavaConstants.JAVAX_SERVLET_INCLUDE_PATH_INFO, getPathInfo());
91          req.setAttribute(
92              JavaConstants.JAVAX_SERVLET_INCLUDE_REQUEST_URI, getRequestURI());
93          req.setAttribute(
94              JavaConstants.JAVAX_SERVLET_INCLUDE_SERVLET_PATH, _path);
95      }
96  
97      public String getContextPath() {
98          return StringPool.SLASH;
99      }
100 
101     public String getParameter(String name) {
102         return _renderReq.getParameter(name);
103     }
104 
105     public Map<String, String[]> getParameterMap() {
106         return _renderReq.getParameterMap();
107     }
108 
109     public Enumeration<String> getParameterNames() {
110         return _renderReq.getParameterNames();
111     }
112 
113     public String[] getParameterValues(String name) {
114         return _renderReq.getParameterValues(name);
115     }
116 
117     public String getPathInfo() {
118         return StringPool.BLANK;
119     }
120 
121     public String getPathTranslated() {
122         return StringPool.BLANK;
123     }
124 
125     public String getQueryString() {
126         return _queryString;
127     }
128 
129     public String getRealPath(String path) {
130         return _config.getServletContext().getRealPath(path);
131     }
132 
133     public String getRequestURI() {
134         return _path + StringPool.QUESTION + _queryString;
135     }
136 
137     public StringBuffer getRequestURL() {
138         StringBuffer sb = new StringBuffer();
139 
140         sb.append(getRequest().getProtocol());
141         sb.append("://");
142         sb.append(getRequest().getRemoteHost());
143         sb.append(StringPool.COLON);
144         sb.append(getRequest().getServerPort());
145         sb.append(StringPool.SLASH);
146         sb.append(getRequestURI());
147 
148         return sb;
149     }
150 
151     public String getServletPath() {
152         return _path;
153     }
154 
155     private ServletConfig _config;
156     private PortletConfig _portletConfig;
157     private RenderRequest _renderReq;
158     private RenderResponse _renderRes;
159     private String _queryString;
160     private String _path;
161 
162 }