/** * Returns all statusgruppen for the given range. * * If there is no statusgruppe for the given range, it returns FALSE. * * @access public * @param string $range_id * @param string $user_id * @return array (structure statusgruppe_id => name) */ function GetAllStatusgruppen($parent, $check_user = null, $exclude = false) { $query = "SELECT * FROM statusgruppen WHERE range_id = ? ORDER BY position"; $statement = DBManager::get()->prepare($query); $statement->execute(array($parent)); $groups = $statement->fetchAll(PDO::FETCH_ASSOC); if (empty($groups)) { return false; } $query = "SELECT visible FROM statusgruppe_user WHERE user_id = ? AND statusgruppe_id = ?"; $presence = DBManager::get()->prepare($query); $childs = array(); foreach ($groups as $group) { $user_there = $visible = $user_in_child = false; $kids = getAllStatusgruppen($group['statusgruppe_id'], $check_user, $exclude); if ($check_user) { $presence->execute(array($check_user, $group['statusgruppe_id'])); $present = $presence->fetchColumn(); $presence->closeCursor(); if ($user_there = ($present !== false)) { $visible = $present; } if (is_array($kids)) { foreach ($kids as $kid) { if ($kid['user_there'] || $kid['user_in_child']) { $user_in_child = true; } } } } if (!$check_user || !$exclude || $user_in_child || $user_there) { $childs[$group['statusgruppe_id']] = array( 'role' => Statusgruppe::getFromArray($group), 'visible' => $visible, 'user_there' => $user_there, 'user_in_child' => $user_in_child, 'child' => $kids ); } } return is_array($childs) ? $childs : false; }