1<?php
2/**
3 * Elgg metadata
4 * Functions to manage entity metadata.
5 */
6
7/**
8 * Get a specific metadata object by its id.
9 * If you want multiple metadata objects, use
10 * {@link elgg_get_metadata()}.
11 *
12 * @param int $id The id of the metadata object being retrieved.
13 *
14 * @return \ElggMetadata|false  false if not found
15 */
16function elgg_get_metadata_from_id($id) {
17	return _elgg_services()->metadataTable->get($id);
18}
19
20/**
21 * Deletes metadata using its ID.
22 *
23 * @param int $id The metadata ID to delete.
24 * @return bool
25 */
26function elgg_delete_metadata_by_id($id) {
27	$metadata = elgg_get_metadata_from_id($id);
28	if (!$metadata) {
29		return false;
30	}
31	return $metadata->delete();
32}
33
34/**
35 * Fetch metadata or perform a calculation on them
36 *
37 * Accepts all options supported by {@link elgg_get_entities()}
38 *
39 * @see   elgg_get_entities()
40 *
41 * @param array $options Options
42 *
43 * @return \ElggMetadata[]|mixed
44 * @since 1.8.0
45 */
46function elgg_get_metadata(array $options = []) {
47	return _elgg_services()->metadataTable->getAll($options);
48}
49
50/**
51 * Deletes metadata based on $options.
52 *
53 * @warning Unlike elgg_get_metadata() this will not accept an empty options array!
54 *          This requires at least one constraint:
55 *          metadata_name(s), metadata_value(s), or guid(s) must be set.
56 *
57 * @param array $options An options array. {@link elgg_get_metadata()}
58 * @return bool|null true on success, false on failure, null if no metadata to delete.
59 * @since 1.8.0
60 */
61function elgg_delete_metadata(array $options) {
62	return _elgg_services()->metadataTable->deleteAll($options);
63}
64