Idea synopsis: Use a module that synchronizes a "profile node" with a user's profile. Modify the profile, and the associated profile node is automatically updated. This approach allows all existing Druapl modules that use both regular profiles AND nodes to be leveraged for a given site.
Details: The advantage of Drupal user profiles is that modules already exist to make use of them. Similarly, the advange of node profile (replacing the user's profile with a node) is that many other modules exist that can act upon nodes. So in my opinion, picking one over the other leaves a hole in what can be done with a given Drupal site (in terms of using existing modules). So I have been brainstorming the issue for Drupal 5.x
What I'm contemplating is a new module that stands on its own (not requiring any other module except CCK), and implements nodes that are automatically synchronized with profiles. Here's what I'm envisioning:
1. A content type of the admin's choosing is created, and CCK is used to create fields. These fields mimic the fields already existing in Drupal user profiles.
2. The new module (guided by the admin) creates a mapping, such that each profile field is mapped to a field in that content type.
3. Now, the admin can instruct the module to create a single "profile node" for each existing user profile, with the individual profile fields for each user copied into each new node. For safety (to make sure we don't duplicate nodes), the existence of a profile node is checked before creating a new one for each user. This administrative action is presumed to happen only once by the admin after installation of this module.
4. For every time afterwards that a user edits their profile, the corresponding profile node is automatically updated with that same information. For every new user, a new profile node is created with their profile.
5. Any time a user is deleted, the corresponding node is also deleted. This is exactly like the usernode module. In fact, it may make sense to also use usernode as the node for which the profile fields are created & filled.
Now, there are some options here. One the one hand, we might decide to make each profile node uneditable, uncreatable, and undeletable by the associated user. This means that user profiles are the only means to update the information, and that the user cannot create new nodes of this "profile" content type. This is probably the easiest route.
Alternately, we might want to allow the profile nodes to be editable because we want to allow more info to be captured (beyond what can be captured in regular profiles) -- in other words, we want to allow additional CCK fields. The problem is that we don't want any profile information editable in the node, unless the module handles synchronizing any modified node information back to the profile. This may be easily do-able.
Has anyone consider this solution (or does this already exist)? Granted, it means we have more data stored in the DB (profiles + profile nodes), but I think a module that handles the mapping + synchronization is the easiest to integrate with all existing modules created for Drupal.
Requesting comments. Thanks for reading.