function toFlatArray($array, &$result, $prefix='')
  {
    foreach($array as $key => $value)
    {
      $string_key = ($prefix) ? '[' . $key . ']' : $key;

      if(is_array($value))
        ComplexArray :: toFlatArray($value, $result, $prefix . $string_key);
      else
        $result[$prefix . $string_key] = $value;
    }
  }
示例#2
0
  /**
  * Returns flat query_string
  *
  */
  function getQueryString()
  {
    $query_string = '';
    $query_items = array();
    $flat_array = array();

    ComplexArray :: toFlatArray($this->_query_items, $flat_array);
    ksort($flat_array);
    foreach($flat_array as $key => $value)
    {
      if ($value != '' ||  is_null($value))
        $query_items[] = $key . '=' . $value;
      else
        $query_items[] = $key;
    }

    if($query_items)
      $query_string = implode('&', $query_items);

    return $query_string;
  }
  function getPageUri($page = null)
  {
    if ($page == null)
      $page = $this->page_counter;

    $toolkit =& Limb :: toolkit();
    $request =& $toolkit->getRequest();

    $params = $request->export();

    if ($page <= 1)
      unset($params[$this->getPagerId()]);
    else
      $params[$this->getPagerId()] = $page;

    ComplexArray :: toFlatArray($params, $flat_params = array());

    $query_items = array();
    foreach ($flat_params as $key => $value)
      $query_items[] = $key . '=' . urlencode($value);

    $query = implode('&', $query_items);

    if (empty($query))
      return $this->base_url;
    else
      return $this->base_url . '?' . $query;
  }
  /**
  * Return the URI to a specific page in the list.
  */
  public function getPageUri($page)
  {
    $params = ComplexArray :: array_merge($_GET, $_POST);
    if ($page <= 1)
    {
    unset($params[$this->pager_variable.'_'. $this->getServerId()]);
    }
    else
    {
      $params[$this->pager_variable .'_'. $this->getServerId()] = $page;
    }

    $sep = '';
    $query = '';

    $flat_params = array();
    ComplexArray :: toFlatArray($params, $flat_params);

    foreach ($flat_params as $key => $value)
    {
      $query .= $sep . $key . '=' . urlencode($value);
      $sep = '&';
    }
    if (empty($query))
    {
      return $this->base_url;
    }
    else
    {
      return $this->base_url . '?' . $query;
    }
  }