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) { |
||||
2 ignored issues
–
show
The parameter
$type is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body.
Loading history...
|
|||||
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
The parameter
$hooks is not used and could be removed.
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
This check looks for parameters that have been defined for a function or method, but which are not used in the method body.
Loading history...
|
|||||
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.