I have a content type called Project. I am linking users to this content type through several user reference fields.
I am also creating related Events (another content type) related to the Project content type pages through the Node Reference URL Widget.
So far so good, but...
In the Event content type I would like to add Attendees, through another user reference field, and limit the list of users to only those referenced in the original Project page. First I tried using a view, but I couldn't find the proper arguments / filters / relationships. Now I am trying through a custom module with hook_form_alter.
Could I get some advice on an efficient way to do this? Any ideas would be greatly appreciated.
EDIT: I have been working on this, and it seems I am almost there, but not quite. Bare with me as this is my first custom module and my php skills are quite basic. My structure (content type > fields) is as follows:
Project:
- field_users (entity reference)
Event
- field_project (entity reference, prepopulated from Project on event creation)
- field_attendees (entity reference)
Then, in a custom module, I added the following code to modify the Event content type form:
<?php
function mymodule_form_alter(&$form, $form_state, $form_id) {
if ($form_id == 'project_event_node_form') {
$id_project=var_export( $form['field_project']['und']['#default_value'][0], TRUE );
$project = node_load($id_project);
$user_ref = array();
foreach($project->field_users as $u){
$user_ref[] = $u;
}
$form['field_attendees']['#options'] = $user_ref;
}
}
But I still see all users, not just those referenced in the Project. Strangely enough, if I do: dpm($user_ref); I get this array, which contains the ids of the users I want to be able to choose from:
array (
0 =>
array (
0 =>
array (
'target_id' => '7',
),
1 =>
array (
'target_id' => '8',
),
2 =>
array (
'target_id' => '9',
),
3 =>
array (
'target_id' => '10',
),
),
)
But somehow I fail to pass that as the options for field_attendees. Any ideas?