@@ 228-268 (lines=41) @@ | ||
225 | * @param int $levels The depth levels |
|
226 | * @return array The list of ID |
|
227 | */ |
|
228 | public static function getGroupsByDepthLevel($groupId, $levels = 10) |
|
229 | { |
|
230 | $groups = array(); |
|
231 | $groupId = intval($groupId); |
|
232 | ||
233 | $groupTable = Database::get_main_table(TABLE_MAIN_GROUP); |
|
234 | $groupRelGroupTable = Database :: get_main_table(TABLE_MAIN_GROUP_REL_GROUP); |
|
235 | ||
236 | $select = "SELECT "; |
|
237 | $from = "FROM $groupTable g1 "; |
|
238 | ||
239 | for ($i = 1; $i <= $levels; $i++) { |
|
240 | $tableIndexNumber = $i; |
|
241 | $tableIndexJoinNumber = $i - 1; |
|
242 | ||
243 | $select .= "g$i.id as id_$i "; |
|
244 | ||
245 | $select .= ($i != $levels ? ", " : null); |
|
246 | ||
247 | if ($i == 1) { |
|
248 | $from .= "INNER JOIN $groupRelGroupTable gg0 ON g1.id = gg0.subgroup_id and gg0.group_id = $groupId "; |
|
249 | } else { |
|
250 | $from .= "LEFT JOIN $groupRelGroupTable gg$tableIndexJoinNumber "; |
|
251 | $from .= " ON g$tableIndexJoinNumber.id = gg$tableIndexJoinNumber.group_id "; |
|
252 | $from .= "LEFT JOIN $groupTable g$tableIndexNumber "; |
|
253 | $from .= " ON gg$tableIndexJoinNumber.subgroup_id = g$tableIndexNumber.id "; |
|
254 | } |
|
255 | } |
|
256 | ||
257 | $result = Database::query("$select $from"); |
|
258 | ||
259 | while ($item = Database::fetch_assoc($result)) { |
|
260 | foreach ($item as $groupId) { |
|
261 | if (!empty($groupId)) { |
|
262 | $groups[] = $groupId; |
|
263 | } |
|
264 | } |
|
265 | } |
|
266 | ||
267 | return array_map('intval', $groups); |
|
268 | } |
|
269 | ||
270 | /** |
|
271 | * @param int $root |
@@ 2285-2325 (lines=41) @@ | ||
2282 | * @param int $levels The depth levels |
|
2283 | * @return array The list of ID |
|
2284 | */ |
|
2285 | public static function getGroupsByDepthLevel($groupId, $levels = 10) |
|
2286 | { |
|
2287 | $groups = array(); |
|
2288 | $groupId = intval($groupId); |
|
2289 | ||
2290 | $groupTable = Database::get_main_table(TABLE_USERGROUP); |
|
2291 | $groupRelGroupTable = Database :: get_main_table(TABLE_USERGROUP_REL_USERGROUP); |
|
2292 | ||
2293 | $select = "SELECT "; |
|
2294 | $from = "FROM $groupTable g1 "; |
|
2295 | ||
2296 | for ($i = 1; $i <= $levels; $i++) { |
|
2297 | $tableIndexNumber = $i; |
|
2298 | $tableIndexJoinNumber = $i - 1; |
|
2299 | ||
2300 | $select .= "g$i.id as id_$i "; |
|
2301 | ||
2302 | $select .= ($i != $levels ? ", " : null); |
|
2303 | ||
2304 | if ($i == 1) { |
|
2305 | $from .= "INNER JOIN $groupRelGroupTable gg0 ON g1.id = gg0.subgroup_id and gg0.group_id = $groupId "; |
|
2306 | } else { |
|
2307 | $from .= "LEFT JOIN $groupRelGroupTable gg$tableIndexJoinNumber "; |
|
2308 | $from .= " ON g$tableIndexJoinNumber.id = gg$tableIndexJoinNumber.group_id "; |
|
2309 | $from .= "LEFT JOIN $groupTable g$tableIndexNumber "; |
|
2310 | $from .= " ON gg$tableIndexJoinNumber.subgroup_id = g$tableIndexNumber.id "; |
|
2311 | } |
|
2312 | } |
|
2313 | ||
2314 | $result = Database::query("$select $from"); |
|
2315 | ||
2316 | while ($item = Database::fetch_assoc($result)) { |
|
2317 | foreach ($item as $groupId) { |
|
2318 | if (!empty($groupId)) { |
|
2319 | $groups[] = $groupId; |
|
2320 | } |
|
2321 | } |
|
2322 | } |
|
2323 | ||
2324 | return array_map('intval', $groups); |
|
2325 | } |
|
2326 | ||
2327 | /** |
|
2328 | * Set a parent group |