/** * @brief Generate URL parameters from @a AfsQuery. * * @param $query [in] * query to transform to URL parameters. * @return appropriate URL parameters representing input @a query. */ public function generate_parameters(AfsQuery $query) { $result = array(); foreach ($query->get_parameters(false) as $param => $values) { $result[] = $param . '=' . htmlspecialchars(urlencode($this->coder($param, $values, 'encode'))); } return implode('&', $result); }
public function testAddClientData() { $query = new AfsQuery(); $ids = array(1, 2, 3); $id = 4; $query->add_client_data($id); $query->add_client_data($ids); $parameters = $query->get_parameters(); $clientData = $parameters['clientData']; $this->assertEquals(4, count($clientData)); for ($i = 1; $i <= 4; $i++) { $this->assertTrue(in_array($i, $clientData)); } }
public function testIp() { global $_SERVER; $_SERVER = array('REMOTE_ADDR' => '127.0.0.1'); $connector = new SearchConnector('foo', new AfsService(42)); $query = new AfsQuery(); $url = $connector->build_url(null, $query->get_parameters()); $this->assertFalse(strpos($url, urlencode('afs:ip')) === False); }
/** @internal * @brief Convert @a AfsQuery to arrays of parameters * * Array of parameters can be used to query AFS search engine. Each * key/value corresponds to parameter name and parameter value or array of * parameter values respectively. * You can easily get appropriate string with following call: * @code * $params = qm->convert_to_param($afs_query); * $string_params = array(); * foreach ($params as $k => $vs) { * if (is_array($vs)) { * foreach ($vs as $v) { * $string_params[] = urlencode($k) . '=' . urlencode($v); * } * } else { * $string_params[] = urlencode($k) . '=' . urlencode($vs); * } * } * $url_params = implode('&', $string_params); * @endcode * * * @param $query [in] @a AfsQuery to transform. * * @return string usable as URL parameter. * * @exception Exception when filter on unconfigured facet is used. */ private function convert_to_param(AfsQuery $query) { $params = array(); foreach ($query->get_parameters() as $param => $values) { $param_array = explode('@', $param); if (count($param_array) === 2) { $feed = $param_array[1]; } else { $feed = null; } $param_name = $param_array[0]; if ($param_name == 'filter') { foreach ($values as $facet => $ids) { $this->fill_in_filter($params, $this->format_filter($query, $facet, $ids), $feed); } } elseif ($param_name == 'sort') { if (!empty($values)) { foreach ($values as $name => $order) { $this->fill_in_sort($params, $this->format_sort($name, $order), $feed); } } } elseif ($param_name == 'advancedFilter') { foreach ($values as $value) { $this->fill_in_filter($params, $value, $feed); } } elseif ($param_name == 'nativeFunctionFilter') { foreach ($values as $value) { $this->fill_in_filter($params, $value, $feed); } } elseif ($param_name == 'nativeFunctionSort') { foreach ($values as $value) { $params['afs:sort'][] = $value; } } else { $this->fill_in_param($params, $param_name, $values, $feed); } } $params = array_merge($params, $query->get_custom_parameters()); return $params; }