I will shortly be creating a 'handshake' module. The idea is that all user data (except username and possibly one or two other items as determined by the site admin) is hidden from all other users. Only the user whose data it is and the site's authorized user administrators can view it. Users will be able to initiate a 'handshake' where the first user indicates (probably via checkbox) which data fields s/he is willing to expose. The second user gets a list of data field titles that are checked (only those checked by user one show up). S/he then decides to either leave them checked or to uncheck those fields s/he isn't willing to share. User two then accepts, or rejects the handshake. If rejected, user one is notified. A reason may or may not be given by user two. If accepted, the agreed-to data field list items are then exposed to both users and each user is added to the other's contacts list - a separate module similar to buddylists. I will have to keep track of profile fields for each user and who is authorized to see each one. I will then have to make sure that whenever the data is requested, and on any page or view, that only authorized fields are shown to the user requesting them.
So what I need to decide before I can get started on this is what to use for profiles. Do I want to use nodeprofiles? Bio? Regular profiles? My own from scratch? With the overhead that will likely be required to have such granular access control over the fields, do I want to deal with the overhead from nodes as well? Do I need the search capability of nodes? If so, any search results have to be filtered. How hard will that be using existing search functions? I certainly don't need comments. It would be nice to use CCK. Could I roll my own CCK-enabled profile module without the overhead of the other features that nodes have? Is anyone working on that already? What else am I not considering? Is there anything out there that can already do all of this?
I guess in addition to the 'handshake' module, I'm also implying the need for an access module. If I use nodes as profiles, then it would be per-user-node-field-access, or something. If I roll my own profile or extend the existing profile module, then it would be per-user-profile-field-access. I wonder if one would be easier than the other and should be a factor in my decision of which route to take. I know that node-access modules are common. Are sub-node (in my case fields) access modules something that is common as well?
So I'm just interested in what all of your opinions are on this matter. At this point in time, I'm leaning toward investigating the idea of a custom cck-enabled profile module.
BTW, I heard some time back that there was talk about super-nodes; making a generic container for regular nodes, profiles, comments and whatever else that would share a certain amount of minimal features but not be as heavy as regular nodes. This would make profiles searchable, but without the overhead of nodes, for example. It could also cck-enable anything under the sun like comments of profiles. Has anyone heard if this will ever be a reality, like maybe in Drupal 6?
Comments
would b nice
This would be nice to have for CCK Date fields when used for Private/Public views of Events. Also if it integrated with the buddylist module.
I did end up using
I did end up using nodeprofiles for my handshake module. The module is released here on Drupal.org. As I haven't even gotten any comments on the other module announcements in the groups, I'm not bothering to link to the project page this time. :-(
Gotcha!
Not necessary, we'll find it anyway! :-D
The project description is quite interesting, do you already have a demonstration site where it can be tested?
Either way, I'll definitely have a shot at it.
btw: "User Handshake" is an awesome name!
greetings,
Daniel F. Kudwien
unleashed mind
Daniel F. Kudwien
netzstrategen
sounds really interesting!!!
sounds really interesting!!! your work is really appreciated!
perhaps it could be integrated with buddylist 2 - as an extension to it? Then I think, this would be really interesting to a lot of people.
Right now, I've just got
Right now, I've just got basic (about 4000 lines of code) handshake ability. Tracking the permissions and allowing people to upgrade and downgrade handshakes takes a lot. Theming needs work. It's kind of ugly so far as the UI goes. I will shortly update how the CCK fields are displayed as it looks like I'm not doing that correctly.
The plan is to extend it to be more like a regular contact/address book so that you can not only shake hands with others on the site, but enter in whatever else you want to from the real world. That will be done in the second phase. Third phase will start to introduce sync-ability to the popular contact progs like Outlook, Palm, Yahoo, Gmail, etc wherever possible.
I will definitely look into the buddylist 2 (didn't know a second one was out there) to see whether I could link with it somehow, or at least duplicate some of its more important functionality.
Due to a list of modules I have to get done by the end of the year, phases two and three of the handshake module probably won't begin until late Q1 next year. Unlike most Drupalers that work as web designers and so can only work on modules when they get paid for it or time allows, I'm actually running a business that uses a Drupal application I've put together to offer a service. So the application and its parts are basically 'mine' and every bit I put into them helps sell the service.
I like the nodeprofile module and have integrated it with a few of my modules. I have not kept up on talks regarding extending CCK to other kinds of Drupal content/pseudo content. I recall at one point a discussion that profiles as nodes was bad due to overhead. A suggestion was made that a Super Node be created that would encompass nodes, profiles, comments, and more so that CCK could work with all of them without the overhead needed by full nodes. Do you know whatever happened to that idea? Did it get scrapped, or is it planned for a future release of Drupal (7 or 8)? I figure you might know since that might affect how you handle your modules in the future.
By the way fago, did you have a chance to look at my updated argument in the issue queue at nodefamily (or was it nodeprofile?) regarding allowing the site admin to be exempt from the node limit? I present a use case which I didn't include in my initial post that may convince you.
Thanks for your work.
puh, 4000loc is already a
puh, 4000loc is already a lot, so watch out to separate your code good.. :)
at least the buddy api might be useful for you - as it provides views and workflow-ng integration for free. -> discussion about buddylist2: http://groups.drupal.org/node/5233
-> you can find it in buddylist's cvs.
So I think it would make sense to build your module up on the same API - you could write your own UI for it and write the extensions as genereal as possible - so they might be useful with buddylist too and buddylist extensions might work with handshake.
@supernode: d6 changes nothing related to this, hopefully in d7 things will improve.
@nodefamily: I've done so. Sry for the delay, I was on holidays.. ;)
Did this project die - I hope not
This looked be a very cool module. Sharing profile data really needs some attention and this (I think) gives the user ultimate control.
Personally, I think the sharing of the BuddyList Invite link (and some other very basic data) should be it, then once on your BuddyList then let the Handshaking begin!