1

I'm having problem while adding users in organic group. Here I'm trying to add user in organic group called "Supervisor", I'm using following json and Rest api :

Json :
{ "title":"Supervisor",
  "type":"group",
  "og_group_ref": { "und": [{ "target_id": "1921" }]},
  "field_records": { "und": [{ "value": "5" }]}
}

Rest api : http://localhost/dev/test/node/1921

but, above json and api is not working, am I using correct json and rest api ?

1
  • The rest api which you are using will display only the node properties. It will not add the users to the group. Instead of this, you need to create your custom rest service callback and link the og group to the user, since og not providing any rest calls.
    – user15837
    Commented Oct 21, 2016 at 11:14

2 Answers 2

1
  1. Install this module: https://www.drupal.org/project/og_services
  2. Go to admin/structure/services/list/[MY-ENDPOINT]/resources
  3. Enable at minimum the join resource
  4. Flush all of Drupal's caches
  5. Make a POST call to [MY-ENDPOINT]/og/join/[GROUP-NID]/[USER-UID]
1
  • Thank you, "og_services" module is working, now I am able add multiple users in any group.
    – user66981
    Commented Oct 26, 2016 at 5:51
0

I think this what you need

/*
 * Implements hook_services_resources
 */
function your_module_name_services_resources() {
  return array(
    'add_user' => array(
      'create' => array(
        'help' => 'Add users to group',
        'callback' => 'your_module_add_user_to_group',
        'access callback' => TRUE,
        'access arguments append' => TRUE,
        'args' => array(
          array(
            'name' => 'uid',
            'type' => 'id',
            'description' => 'The uid of the user to add in group',
            'source' => array('data' => 'uid'),
            'optional' => FALSE,
          ),
        ),
      ),
    ),
  );
}

/*
 * Call back to add the user
 */
function your_module_add_user_to_group($uid) {
  $user_account = user_load($uid);
  $og_values = array(
     'entity_type' => 'user',
     'entity' => $user_account,
     'state' => OG_STATE_ACTIVE,
   );
   //This is will add the group to the user.
  og_group('node', $your_group_nid, $og_values);
  user_save($user_account);
  return success;
}

Put this code in your custom module file. And go to "Structure->service->your_end_point->enable 'add_user' resources"

Then call url : http://localhost.com/endpoint/add_user

method: POST

In data field data: uid=595 (pass the user id for whom you need to add the group);

I think this will do the trick.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.