1
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 import com.liferay.portal.kernel.util.Validator;
29
30 import java.util.Enumeration;
31 import java.util.HashMap;
32 import java.util.Map;
33
34 import javax.portlet.PortletConfig;
35 import javax.portlet.RenderRequest;
36 import javax.portlet.RenderResponse;
37
38 import javax.servlet.ServletConfig;
39 import javax.servlet.http.HttpServletRequest;
40 import javax.servlet.http.HttpServletRequestWrapper;
41
42
47 public class PHPServletRequest extends HttpServletRequestWrapper {
48
49 public PHPServletRequest(HttpServletRequest req, ServletConfig config,
50 RenderRequest renderReq, RenderResponse renderRes,
51 PortletConfig portletConfig, String phpURI) {
52
53 super(req);
54
55 _config = config;
56 _renderReq = renderReq;
57 _renderRes = renderRes;
58 _portletConfig = portletConfig;
59
60 StringBuffer sb = new StringBuffer();
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(_renderRes.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 req.setAttribute(
89 JavaConstants.JAVAX_SERVLET_INCLUDE_QUERY_STRING, getQueryString());
90 req.setAttribute(
91 JavaConstants.JAVAX_SERVLET_INCLUDE_PATH_INFO, getPathInfo());
92 req.setAttribute(
93 JavaConstants.JAVAX_SERVLET_INCLUDE_REQUEST_URI, getRequestURI());
94 req.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 _renderReq.getParameter(name);
104 }
105
106 public Map getParameterMap() {
107 return _renderReq.getParameterMap();
108 }
109
110 public Enumeration getParameterNames() {
111 return _renderReq.getParameterNames();
112 }
113
114 public String[] getParameterValues(String name) {
115 return _renderReq.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 _config.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 protected Map parseQueryString(String queryString) {
157 Map params = new HashMap();
158
159 if (Validator.isNull(queryString)) {
160 return params;
161 }
162
163 int ampersandIndex;
164
165 do {
166 ampersandIndex = queryString.indexOf(StringPool.AMPERSAND);
167
168 String nameValuePair;
169
170 if (ampersandIndex == -1) {
171 nameValuePair = queryString;
172 }
173 else {
174 nameValuePair = queryString.substring(0, ampersandIndex);
175 queryString = queryString.substring(ampersandIndex + 1);
176 }
177
178 int equalIndex = nameValuePair.indexOf(StringPool.EQUAL);
179
180 String key = nameValuePair;
181 String value = StringPool.BLANK;
182
183 if (equalIndex != -1) {
184 key = nameValuePair.substring(0, equalIndex);
185 value = nameValuePair.substring(equalIndex + 1);
186 }
187
188 params.put(key, value);
189
190 }
191 while (ampersandIndex != -1);
192
193 return params;
194 }
195
196 private ServletConfig _config;
197 private PortletConfig _portletConfig;
198 private RenderRequest _renderReq;
199 private RenderResponse _renderRes;
200 private String _queryString;
201 private String _path;
202
203 }