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; } }
/** * 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; } }