1 | <?php |
||
2 | /** |
||
3 | * Elgg relationships. |
||
4 | * |
||
5 | * @package Elgg.Core |
||
6 | * @subpackage DataModel.Relationship |
||
7 | */ |
||
8 | |||
9 | /** |
||
10 | * Get a relationship by its ID |
||
11 | * |
||
12 | * @param int $id The relationship ID |
||
13 | * |
||
14 | * @return \ElggRelationship|false False if not found |
||
15 | */ |
||
16 | function get_relationship($id) { |
||
17 | 7 | return _elgg_services()->relationshipsTable->get($id); |
|
18 | } |
||
19 | |||
20 | /** |
||
21 | * Delete a relationship by its ID |
||
22 | * |
||
23 | * @param int $id The relationship ID |
||
24 | * |
||
25 | * @return bool |
||
26 | */ |
||
27 | function delete_relationship($id) { |
||
28 | 3 | return _elgg_services()->relationshipsTable->delete($id); |
|
29 | |||
30 | } |
||
31 | |||
32 | /** |
||
33 | * Create a relationship between two entities. E.g. friendship, group membership, site membership. |
||
34 | * |
||
35 | * This function lets you make the statement "$guid_one is a $relationship of $guid_two". In the statement, |
||
36 | * $guid_one is the subject of the relationship, $guid_two is the target, and $relationship is the type. |
||
37 | * |
||
38 | * @param int $guid_one GUID of the subject entity of the relationship |
||
39 | * @param string $relationship Type of the relationship |
||
40 | * @param int $guid_two GUID of the target entity of the relationship |
||
41 | * |
||
42 | * @return bool |
||
43 | * @throws InvalidArgumentException |
||
44 | */ |
||
45 | function add_entity_relationship($guid_one, $relationship, $guid_two) { |
||
46 | 115 | return _elgg_services()->relationshipsTable->add($guid_one, $relationship, $guid_two); |
|
47 | } |
||
48 | |||
49 | /** |
||
50 | * Check if a relationship exists between two entities. If so, the relationship object is returned. |
||
51 | * |
||
52 | * This function lets you ask "Is $guid_one a $relationship of $guid_two?" |
||
53 | * |
||
54 | * @param int $guid_one GUID of the subject entity of the relationship |
||
55 | * @param string $relationship Type of the relationship |
||
56 | * @param int $guid_two GUID of the target entity of the relationship |
||
57 | * |
||
58 | * @return \ElggRelationship|false Depending on success |
||
59 | */ |
||
60 | function check_entity_relationship($guid_one, $relationship, $guid_two) { |
||
61 | 107 | return _elgg_services()->relationshipsTable->check($guid_one, $relationship, $guid_two); |
|
62 | } |
||
63 | |||
64 | /** |
||
65 | * Delete a relationship between two entities. |
||
66 | * |
||
67 | * This function lets you say "$guid_one is no longer a $relationship of $guid_two." |
||
68 | * |
||
69 | * @param int $guid_one GUID of the subject entity of the relationship |
||
70 | * @param string $relationship Type of the relationship |
||
71 | * @param int $guid_two GUID of the target entity of the relationship |
||
72 | * |
||
73 | * @return bool |
||
74 | */ |
||
75 | function remove_entity_relationship($guid_one, $relationship, $guid_two) { |
||
76 | 14 | return _elgg_services()->relationshipsTable->remove($guid_one, $relationship, $guid_two); |
|
77 | } |
||
78 | |||
79 | /** |
||
80 | * Removes all relationships originating from a particular entity |
||
81 | * |
||
82 | * @param int $guid GUID of the subject or target entity (see $inverse) |
||
83 | * @param string $relationship Type of the relationship (optional, default is all relationships) |
||
84 | * @param bool $inverse_relationship Is $guid the target of the deleted relationships? By default, $guid is the |
||
85 | * subject of the relationships. |
||
86 | * @param string $type The type of entity related to $guid (defaults to all) |
||
87 | * |
||
88 | * @return true |
||
89 | */ |
||
90 | function remove_entity_relationships($guid, $relationship = "", $inverse_relationship = false, $type = '') { |
||
91 | 214 | return _elgg_services()->relationshipsTable->removeAll($guid, $relationship, $inverse_relationship, $type); |
|
92 | } |
||
93 | |||
94 | /** |
||
95 | * Get all the relationships for a given GUID. |
||
96 | * |
||
97 | * @param int $guid GUID of the subject or target entity (see $inverse) |
||
98 | * @param bool $inverse_relationship Is $guid the target of the relationships? By default $guid is |
||
99 | * the subject of the relationships. |
||
100 | * |
||
101 | * @return \ElggRelationship[] |
||
102 | */ |
||
103 | function get_entity_relationships($guid, $inverse_relationship = false) { |
||
104 | return _elgg_services()->relationshipsTable->getAll($guid, $inverse_relationship); |
||
105 | } |
||
106 | |||
107 | /** |
||
108 | * Gets the number of entities by a the number of entities related to them in a particular way. |
||
109 | * This is a good way to get out the users with the most friends, or the groups with the |
||
110 | * most members. |
||
111 | * |
||
112 | * @param array $options An options array compatible with elgg_get_entities_from_relationship() |
||
113 | * |
||
114 | * @return \ElggEntity[]|int|boolean If count, int. If not count, array. false on errors. |
||
115 | * @since 1.8.0 |
||
116 | */ |
||
117 | function elgg_get_entities_from_relationship_count(array $options = []) { |
||
118 | 1 | return _elgg_services()->relationshipsTable->getEntitiesFromCount($options); |
|
119 | } |
||
120 | |||
121 | /** |
||
122 | * Returns a list of entities by relationship count |
||
123 | * |
||
124 | * @see elgg_get_entities_from_relationship_count() |
||
125 | * |
||
126 | * @param array $options Options array |
||
127 | * |
||
128 | * @return string |
||
129 | * @since 1.8.0 |
||
130 | */ |
||
131 | function elgg_list_entities_from_relationship_count($options) { |
||
132 | return elgg_list_entities($options, 'elgg_get_entities_from_relationship_count'); |
||
133 | } |
||
134 | |||
135 | /** |
||
136 | * Register relationship unit tests |
||
137 | * |
||
138 | * @param string $hook 'unit_test' |
||
139 | * @param string $type 'system' |
||
140 | * @param array $tests current return value |
||
141 | * |
||
142 | * @return array |
||
143 | * |
||
144 | * @access private |
||
145 | * @codeCoverageIgnore |
||
146 | */ |
||
147 | function _elgg_relationships_test($hook, $type, $tests) { |
||
148 | $tests[] = ElggRelationshipUnitTest::class; |
||
149 | return $tests; |
||
150 | } |
||
151 | |||
152 | |||
153 | /** |
||
154 | * Initialize the relationship library |
||
155 | * |
||
156 | * @return void |
||
157 | * |
||
158 | * @access private |
||
159 | */ |
||
160 | function _elgg_relationship_init() { |
||
161 | 31 | elgg_register_plugin_hook_handler('unit_test', 'system', '_elgg_relationships_test'); |
|
162 | 31 | } |
|
163 | |||
164 | /** |
||
165 | * @see \Elgg\Application::loadCore Do not do work here. Just register for events. |
||
166 | */ |
||
167 | return function(\Elgg\EventsService $events, \Elgg\HooksRegistrationService $hooks) { |
||
1 ignored issue
–
show
|
|||
168 | 18 | $events->registerHandler('init', 'system', '_elgg_relationship_init'); |
|
169 | }; |
||
170 |
This check looks for parameters that have been defined for a function or method, but which are not used in the method body.