Completed
Push — master ( caf222...deba87 )
by Jeroen
72:32 queued 44:47
created

actions/entity/delete.php (1 issue)

1
<?php
2
/**
3
 * Default entity delete action
4
 */
5
$guid = get_input('guid');
6
$entity = get_entity($guid);
0 ignored issues
show
It seems like $guid can also be of type string; however, parameter $guid of get_entity() does only seem to accept integer, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

6
$entity = get_entity(/** @scrutinizer ignore-type */ $guid);
Loading history...
7
8
if (!$entity instanceof ElggEntity) {
9
	return elgg_error_response(elgg_echo('entity:delete:item_not_found'));
10
}
11
12
if (!$entity->canDelete() || $entity instanceof ElggPlugin || $entity instanceof ElggSite) {
13
	return elgg_error_response(elgg_echo('entity:delete:permission_denied'));
14
}
15
16
set_time_limit(0);
17
18
// determine what name to show on success
19
$display_name = $entity->getDisplayName() ?: elgg_echo('entity:delete:item');
20
21
$type = $entity->getType();
22
$subtype = $entity->getSubtype();
23
$container = $entity->getContainerEntity();
24
25
if (!$entity->delete()) {
26
	return elgg_error_response(elgg_echo('entity:delete:fail', [$display_name]));
27
}
28
29
// determine forward URL
30
$forward_url = get_input('forward_url');
31
if (!$forward_url) {
32
	
33
	$forward_url = REFERER;
34
	$referrer_url = $_SERVER['HTTP_REFERER'] ?: '';
35
	$site_url = elgg_get_site_url();
36
	
37
	if ($referrer_url && 0 == strpos($referrer_url, $site_url)) {
38
		// referer is on current site
39
		
40
		$referrer_path = substr($referrer_url, strlen($site_url));
41
		$segments = explode('/', $referrer_path);
42
		if (in_array($guid, $segments)) {
43
			// referrer URL contains a reference to the entity that will be deleted
44
			$forward_url = ($container) ? $container->getURL() : '';
45
		}
46
	} elseif ($container) {
47
		$forward_url = $container->getURL();
48
	}
49
}
50
51
$success_keys = [
52
	"entity:delete:$type:$subtype:success",
53
	"entity:delete:$type:success",
54
	"entity:delete:success",
55
];
56
57
$message = '';
58
foreach ($success_keys as $success_key) {
59
	if (elgg_language_key_exists($success_key)) {
60
		$message = elgg_echo($success_key, [$display_name]);
61
		break;
62
	}
63
}
64
65
return elgg_ok_response('', $message, $forward_url);
66