Converts the supplied request string into an array of query paramater name/value
mappings. The current query parameters (everything in $_GET and $_POST) are
forwarded to request array before it is returned.
public static getRequestArrayFromString ( string | array | null $request, array $defaultRequest = null ) : array | ||
$request | string | array | null | The base request string or array, eg, `'module=UserLanguage&action=getLanguage'`. |
$defaultRequest | array | Default query parameters. If a query parameter is absent in `$request`, it will be loaded from this. Defaults to `$_GET + $_POST`. |
return | array |
/** * Redirects the user to a paypal so they can donate to Piwik. */ public function redirectToPaypal() { $parameters = Request::getRequestArrayFromString($request = null); foreach ($parameters as $name => $param) { if ($name == 'idSite' || $name == 'module' || $name == 'action') { unset($parameters[$name]); } } $url = "https://www.paypal.com/cgi-bin/webscr?" . Url::getQueryStringFromParameters($parameters); Url::redirectToUrl($url); exit; }
/** * Second, generic filters (Sort, Limit, Replace Column Names, etc.) */ private function applyGenericFilters() { $requestArray = $this->request->getRequestArray(); $request = \Piwik\API\Request::getRequestArrayFromString($requestArray); if (false === $this->config->enable_sort) { $request['filter_sort_column'] = ''; $request['filter_sort_order'] = ''; } $genericFilter = new \Piwik\API\DataTableGenericFilter($request); $genericFilter->filter($this->dataTable); }
/** * Performs multiple API requests at once and returns every result. * * @param array $urls The array of API requests. * @return array */ public function getBulkRequest($urls) { if (empty($urls)) { return array(); } $urls = array_map('urldecode', $urls); $urls = array_map(array('Piwik\\Common', 'unsanitizeInputValue'), $urls); $result = array(); foreach ($urls as $url) { $params = Request::getRequestArrayFromString($url . '&format=php&serialize=0'); if (isset($params['urls']) && $params['urls'] == $urls) { // by default 'urls' is added to $params as Request::getRequestArrayFromString adds all $_GET/$_POST // default parameters unset($params['urls']); } if (!empty($params['segment']) && strpos($url, 'segment=') > -1) { // only unsanitize input when segment is actually present in URL, not when it was used from // $defaultRequest in Request::getRequestArrayFromString from $_GET/$_POST $params['segment'] = urlencode(Common::unsanitizeInputValue($params['segment'])); } $req = new Request($params); $result[] = $req->process(); } return $result; }