public static function fetch_group_profile($search)
 {
     if (Token::verify($search)) {
         $groupid = Token::decode($search);
         if ($groupid->getType() != TOKEN_GROUP) {
             throw new InvalidTokenException("Token provided is not a group id");
         }
         $query = Database::generate_query("group_lookup_id", [$groupid->toString()]);
         $result = $query->execute();
         if ($result->count() == 0) {
             throw new InvalidGroupException("Could not find a group with that id", ["group-id" => $groupid->toString()]);
         }
         $row = $result->fetch_data();
         $displayname = $row["group_display_name"];
         $name = $row["group_name"];
         $result->close();
     } else {
         $name = $search;
         $query = Database::generate_query("group_lookup_name", [$name]);
         $result = $query->execute();
         if ($result->count() == 0) {
             throw new InvalidGroupException("Could not find a group with that name", ["group-name" => $name]);
         }
         $row = $result->fetch_data();
         $groupid = Token::decode($row["group_id"]);
         $displayname = $row["group_display_name"];
         $result->close();
     }
     return new GroupProfile($groupid, $name, $displayname);
 }
 public static function fetch_user_profile($search)
 {
     if (Token::verify($search)) {
         $userid = Token::decode($search);
         if ($userid->getType() != TOKEN_USER) {
             throw new InvalidTokenException("Token provided is not a user id", ["user-id" => $userid->toString()]);
         }
         $query = Database::generate_query("user_lookup_id", [$userid->toString()]);
         $result = $query->execute();
         if ($result->count() == 0) {
             throw new InvalidUserException("Could not find a user with that id", ["user-id" => $userid->toString()]);
         }
         $row = $result->fetch_data();
         $username = $row["user_name"];
         $displayname = $row["user_display_name"];
         $result->close();
     } else {
         $username = $search;
         $query = Database::generate_query("user_lookup_name", [$username]);
         $result = $query->execute();
         if ($result->count() == 0) {
             throw new InvalidUserException("Could not find a user with that name", ["display-name" => $username]);
         }
         $row = $result->fetch_data();
         $userid = Token::decode($row["user_id"]);
         $displayname = $row["user_display_name"];
         $result->close();
     }
     return new UserProfile($userid, $username, $displayname);
 }