Esempio n. 1
0
 /**
  * @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);
 }
Esempio n. 2
0
 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));
     }
 }
Esempio n. 3
0
 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;
 }