1   /**
2    * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3    *
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   *
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.util.bridges.php;
24  
25  import com.liferay.portal.kernel.util.JavaConstants;
26  import com.liferay.portal.kernel.util.StringPool;
27  
28  import java.util.Enumeration;
29  import java.util.Map;
30  
31  import javax.portlet.PortletConfig;
32  import javax.portlet.RenderRequest;
33  import javax.portlet.RenderResponse;
34  
35  import javax.servlet.ServletConfig;
36  import javax.servlet.http.HttpServletRequest;
37  import javax.servlet.http.HttpServletRequestWrapper;
38  
39  /**
40   * <a href="PHPServletRequest.java.html"><b><i>View Source</i></b></a>
41   *
42   * @author Jorge Ferrer
43   *
44   */
45  public class PHPServletRequest extends HttpServletRequestWrapper {
46  
47      public PHPServletRequest(
48          HttpServletRequest request, ServletConfig servletConfig,
49          RenderRequest renderRequest, RenderResponse renderResponse,
50          PortletConfig portletConfig, String phpURI, boolean addPortletParams) {
51  
52          super(request);
53  
54          _servletConfig = servletConfig;
55          _renderRequest = renderRequest;
56          _renderResponse = renderResponse;
57          _portletConfig = portletConfig;
58  
59          StringBuilder sb = new StringBuilder();
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 (addPortletParams) {
73              sb.append(StringPool.AMPERSAND);
74              sb.append("portlet_namespace");
75              sb.append(StringPool.EQUAL);
76              sb.append(_renderResponse.getNamespace());
77              sb.append(StringPool.AMPERSAND);
78              sb.append("portlet_name");
79              sb.append(StringPool.EQUAL);
80              sb.append(_portletConfig.getPortletName());
81          }
82  
83          _queryString = sb.toString();
84  
85          request.setAttribute(
86              JavaConstants.JAVAX_SERVLET_INCLUDE_QUERY_STRING, getQueryString());
87          request.setAttribute(
88              JavaConstants.JAVAX_SERVLET_INCLUDE_PATH_INFO, getPathInfo());
89          request.setAttribute(
90              JavaConstants.JAVAX_SERVLET_INCLUDE_REQUEST_URI, getRequestURI());
91          request.setAttribute(
92              JavaConstants.JAVAX_SERVLET_INCLUDE_SERVLET_PATH, _path);
93      }
94  
95      public String getContextPath() {
96          return StringPool.SLASH;
97      }
98  
99      public String getParameter(String name) {
100         return _renderRequest.getParameter(name);
101     }
102 
103     public Map<String, String[]> getParameterMap() {
104         return _renderRequest.getParameterMap();
105     }
106 
107     public Enumeration<String> getParameterNames() {
108         return _renderRequest.getParameterNames();
109     }
110 
111     public String[] getParameterValues(String name) {
112         return _renderRequest.getParameterValues(name);
113     }
114 
115     public String getPathInfo() {
116         return StringPool.BLANK;
117     }
118 
119     public String getPathTranslated() {
120         return StringPool.BLANK;
121     }
122 
123     public String getQueryString() {
124         return _queryString;
125     }
126 
127     public String getRealPath(String path) {
128         return _servletConfig.getServletContext().getRealPath(path);
129     }
130 
131     public String getRequestURI() {
132         return _path + StringPool.QUESTION + _queryString;
133     }
134 
135     public StringBuffer getRequestURL() {
136         StringBuffer sb = new StringBuffer();
137 
138         sb.append(getRequest().getProtocol());
139         sb.append("://");
140         sb.append(getRequest().getRemoteHost());
141         sb.append(StringPool.COLON);
142         sb.append(getRequest().getServerPort());
143         sb.append(StringPool.SLASH);
144         sb.append(getRequestURI());
145 
146         return sb;
147     }
148 
149     public String getServletPath() {
150         return _path;
151     }
152 
153     private ServletConfig _servletConfig;
154     private PortletConfig _portletConfig;
155     private RenderRequest _renderRequest;
156     private RenderResponse _renderResponse;
157     private String _queryString;
158     private String _path;
159 
160 }