function view::get_url
Get the URL for the current view.
This URL will be adjusted for arguments.
1 call to view::get_url()
- view::_build_arguments in includes/
view.inc - Build all the arguments.
File
-
includes/
view.inc, line 1650
Class
- view
- An object to contain all of the data to generate a view.
Code
public function get_url($args = NULL, $path = NULL) {
if (!empty($this->override_url)) {
return $this->override_url;
}
if (!isset($path)) {
$path = $this->get_path();
}
if (!isset($args)) {
$args = $this->args;
// Exclude arguments that were computed, not passed on the URL.
$position = 0;
if (!empty($this->argument)) {
foreach ($this->argument as $argument) {
if (!empty($argument->options['default_argument_skip_url'])) {
unset($args[$position]);
}
$position++;
}
}
}
// Don't bother working if there's nothing to do.
if (empty($path) || empty($args) && strpos($path, '%') === FALSE) {
return $path;
}
$pieces = array();
$argument_keys = isset($this->argument) ? array_keys($this->argument) : array();
$id = current($argument_keys);
foreach (explode('/', $path) as $piece) {
if ($piece != '%') {
$pieces[] = $piece;
}
else {
if (empty($args)) {
// Try to never put % in a url; use the wildcard instead.
if ($id && !empty($this->argument[$id]->options['exception']['value'])) {
$pieces[] = $this->argument[$id]->options['exception']['value'];
}
else {
$pieces[] = '*';
// @todo Gotta put something if there just isn't one.
}
}
else {
$pieces[] = array_shift($args);
}
if ($id) {
$id = next($argument_keys);
}
}
}
if (!empty($args)) {
$pieces = array_merge($pieces, $args);
}
return implode('/', $pieces);
}