Skip to content

Commit

Permalink
fix(core): try to forward to entity collection after deletion
Browse files Browse the repository at this point in the history
fixes #12251
  • Loading branch information
jeabakker committed Jan 9, 2019
1 parent 88158fe commit df08d13
Showing 1 changed file with 29 additions and 3 deletions.
32 changes: 29 additions & 3 deletions actions/entity/delete.php
Expand Up @@ -33,17 +33,43 @@
$referrer_url = $_SERVER['HTTP_REFERER'] ?: '';
$site_url = elgg_get_site_url();

$find_forward_url = function (ElggEntity $container = null) use ($type, $subtype) {
$routes = _elgg_services()->routes;

// check if there is a collection route (eg. blog/owner/username)
$route_name = false;
if ($container instanceof ElggUser) {
$route_name = "collection:{$type}:{$subtype}:owner";
} elseif ($container instanceof ElggGroup) {
$route_name = "collection:{$type}:{$subtype}:group";
}

if ($route_name && $routes->get($route_name)) {
$params = $routes->resolveRouteParameters($route_name, $container);

return elgg_generate_url($route_name, $params);
}

// no route found, fallback to container url
if ($container instanceof ElggEntity) {
return $container->getURL();
}

// no container
return '';
};

if ($referrer_url && 0 == strpos($referrer_url, $site_url)) {
// referer is on current site

$referrer_path = substr($referrer_url, strlen($site_url));
$segments = explode('/', $referrer_path);

if (in_array($guid, $segments)) {
// referrer URL contains a reference to the entity that will be deleted
$forward_url = ($container) ? $container->getURL() : '';
$forward_url = $find_forward_url($container);
}
} elseif ($container) {
$forward_url = $container->getURL();
$forward_url = $find_forward_url($container);
}
}

Expand Down

0 comments on commit df08d13

Please sign in to comment.