1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.util.bridges.php;
16  
17  import com.liferay.portal.kernel.util.JavaConstants;
18  import com.liferay.portal.kernel.util.StringBundler;
19  import com.liferay.portal.kernel.util.StringPool;
20  
21  import java.util.Enumeration;
22  import java.util.Map;
23  
24  import javax.portlet.PortletConfig;
25  import javax.portlet.RenderRequest;
26  import javax.portlet.RenderResponse;
27  
28  import javax.servlet.ServletConfig;
29  import javax.servlet.http.HttpServletRequest;
30  import javax.servlet.http.HttpServletRequestWrapper;
31  
32  /**
33   * <a href="PHPServletRequest.java.html"><b><i>View Source</i></b></a>
34   *
35   * @author Jorge Ferrer
36   */
37  public class PHPServletRequest extends HttpServletRequestWrapper {
38  
39      public PHPServletRequest(
40          HttpServletRequest request, ServletConfig servletConfig,
41          RenderRequest renderRequest, RenderResponse renderResponse,
42          PortletConfig portletConfig, String phpURI, boolean addPortletParams) {
43  
44          super(request);
45  
46          _servletConfig = servletConfig;
47          _renderRequest = renderRequest;
48          _renderResponse = renderResponse;
49          _portletConfig = portletConfig;
50  
51          StringBundler sb = new StringBundler();
52  
53          int pos = phpURI.indexOf(StringPool.QUESTION);
54  
55          if (pos != -1) {
56              _path = phpURI.substring(0, pos);
57  
58              sb.append(phpURI.substring(pos + 1));
59          }
60          else {
61              _path = phpURI;
62          }
63  
64          if (addPortletParams) {
65              sb.append(StringPool.AMPERSAND);
66              sb.append("portlet_namespace");
67              sb.append(StringPool.EQUAL);
68              sb.append(_renderResponse.getNamespace());
69              sb.append(StringPool.AMPERSAND);
70              sb.append("portlet_name");
71              sb.append(StringPool.EQUAL);
72              sb.append(_portletConfig.getPortletName());
73          }
74  
75          _queryString = sb.toString();
76  
77          request.setAttribute(
78              JavaConstants.JAVAX_SERVLET_INCLUDE_QUERY_STRING, getQueryString());
79          request.setAttribute(
80              JavaConstants.JAVAX_SERVLET_INCLUDE_PATH_INFO, getPathInfo());
81          request.setAttribute(
82              JavaConstants.JAVAX_SERVLET_INCLUDE_REQUEST_URI, getRequestURI());
83          request.setAttribute(
84              JavaConstants.JAVAX_SERVLET_INCLUDE_SERVLET_PATH, _path);
85      }
86  
87      public String getContextPath() {
88          return StringPool.SLASH;
89      }
90  
91      public String getParameter(String name) {
92          return _renderRequest.getParameter(name);
93      }
94  
95      public Map<String, String[]> getParameterMap() {
96          return _renderRequest.getParameterMap();
97      }
98  
99      public Enumeration<String> getParameterNames() {
100         return _renderRequest.getParameterNames();
101     }
102 
103     public String[] getParameterValues(String name) {
104         return _renderRequest.getParameterValues(name);
105     }
106 
107     public String getPathInfo() {
108         return StringPool.BLANK;
109     }
110 
111     public String getPathTranslated() {
112         return StringPool.BLANK;
113     }
114 
115     public String getQueryString() {
116         return _queryString;
117     }
118 
119     public String getRealPath(String path) {
120         return _servletConfig.getServletContext().getRealPath(path);
121     }
122 
123     public String getRequestURI() {
124         return _path + StringPool.QUESTION + _queryString;
125     }
126 
127     public StringBuffer getRequestURL() {
128         StringBuffer sb = new StringBuffer();
129 
130         sb.append(getRequest().getProtocol());
131         sb.append("://");
132         sb.append(getRequest().getRemoteHost());
133         sb.append(StringPool.COLON);
134         sb.append(getRequest().getServerPort());
135         sb.append(StringPool.SLASH);
136         sb.append(getRequestURI());
137 
138         return sb;
139     }
140 
141     public String getServletPath() {
142         return _path;
143     }
144 
145     private ServletConfig _servletConfig;
146     private PortletConfig _portletConfig;
147     private RenderRequest _renderRequest;
148     private RenderResponse _renderResponse;
149     private String _queryString;
150     private String _path;
151 
152 }