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