diff options
author | cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2010-10-14 10:52:56 +0000 |
---|---|---|
committer | cash <cash@36083f99-b078-4883-b0ff-0f9b5a30f544> | 2010-10-14 10:52:56 +0000 |
commit | 79527ef4c43e97060d2412037adcdcb03220a4fa (patch) | |
tree | 7a1223f36e3a294fc914d640677911619bdbb5b7 | |
parent | 873a388b27bdad5e281dca790a9990591c552c2d (diff) | |
download | elgg-79527ef4c43e97060d2412037adcdcb03220a4fa.tar.gz elgg-79527ef4c43e97060d2412037adcdcb03220a4fa.tar.bz2 |
Fixes #2403 - adds unregister_entity_type()
git-svn-id: http://code.elgg.org/elgg/trunk@7077 36083f99-b078-4883-b0ff-0f9b5a30f544
-rw-r--r-- | engine/lib/entities.php | 47 |
1 files changed, 44 insertions, 3 deletions
diff --git a/engine/lib/entities.php b/engine/lib/entities.php index 534b61e19..e788018e0 100644 --- a/engine/lib/entities.php +++ b/engine/lib/entities.php @@ -2114,8 +2114,8 @@ function register_entity_type($type, $subtype) { global $CONFIG; $type = strtolower($type); - if (!in_array($type, array('object','site','group','user'))) { - return false; + if (!in_array($type, array('object', 'site', 'group', 'user'))) { + return FALSE; } if (!isset($CONFIG->registered_entities)) { @@ -2130,7 +2130,48 @@ function register_entity_type($type, $subtype) { $CONFIG->registered_entities[$type][] = $subtype; } - return true; + return TRUE; +} + +/** + * Unregisters an entity type and subtype as a public-facing entity. + * + * @warning With a blank subtype, it unregisters that entity type including + * all subtypes. This must be called after all subtypes have been registered. + * + * @param string $type The type of entity (object, site, user, group) + * @param string $subtype The subtype to register (may be blank) + * @return true|false Depending on success + * @see register_entity_type() + */ +function unregister_entity_type($type, $subtype) { + global $CONFIG; + + $type = strtolower($type); + if (!in_array($type, array('object', 'site', 'group', 'user'))) { + return FALSE; + } + + if (!isset($CONFIG->registered_entities)) { + return FALSE; + } + + if (!isset($CONFIG->registered_entities[$type])) { + return FALSE; + } + + if ($subtype) { + if (in_array($subtype, $CONFIG->registered_entities[$type])) { + $key = array_search($subtype, $CONFIG->registered_entities[$type]); + unset($CONFIG->registered_entities[$type][$key]); + } else { + return FALSE; + } + } else { + unset($CONFIG->registered_entities[$type]); + } + + return TRUE; } /** |