While CCK can create select boxes, it doesn't let you define precisely what should go in that select box based on the result of an abstract database query - i.e., you can't tell it to list all users with role "student".

Yes you can. You can use any View to build the Select options, and that includes a View of Users filtered by role.

While the FriendList module allows users to create relationships between themselves, it doesn't allow for user A to create a relationship between users B and C - either user B or user C would have to create the relationship. In other words, a school administrator could not create a relationship between a teacher and his student.

I cannot speak to FriendList, but using Content Profile with CCK's Node Reference and CCK's Content Permissions should let you replicate most of what you are talking about.

Comments

jim0203’s picture

Thanks for these points. With regards to the first one, I've now dug around some more with CCK and found that you can use the User Reference field type - is this what you were thinking of, or is there a way that any View can be used? I was going to write this functionality and integrate it with what I've got here, so it's good to know I don't have to =).

As for the second point, it is possible to get pretty close to the functionality I wanted with Content Profile, Node Reference, etc, but I was never quite satisfied with it - content profile seemed to overcomplicate the user registration process a little, when I just wanted to add one field to the user registration form.

As I develop the module I'll try and integrate it more with existing modules - I realise I've duplicated functionality at various points. I think it will end up splintering into a few different modules, perhaps the main one of which being a user relationship API. Comments like this are really useful as I work on this, so thanks once again.

Grayside’s picture

The problem with User Reference is you cannot attach that to Users (as far as I know), meaning you are limited to Node ⇒ User relationships. That's why I went on to describe Node Reference & Content Profile some.

If that kind of structure is sufficient, so much the better.

Compatibility with CCK will save you a lot of time on module integrations, and make the upgrade to D7 easier.