Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »

There is one main profile type in EthosCE, used to store learner information, such as first name, last name, location, and any custom fields. Instructions on creating a user with the default profile are found at Creating a user via web service.

Customers using the Faculty Management Add-on feature have access to two additional profile types, Faculty Bio and Disclosure. The PHP script below details the calls required to populate the more complex fields found in these types. It will check a user exists in the system, and create a new account if not found. It then creates a main profile, faculty bio with biography text, and disclosure with two financial relationships.

<?php
// #1 Verify the user does not exist by sending a GET request to the system, searching by user 'mail' attribute
$curl = curl_init("http://your-domain.com/user.json?mail=newuser@dlc-solutions.com");
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, 'restws_webservice:restws_password'); //Your credentials goes here
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);

$json = curl_exec($curl);
$response = json_decode($json);

// A list of users matching criteria will be returned. If this list is empty, a user does not exist in EthosCE with the given e-mail address.
$list = $response->list;

// #2 Send the user creation request, via POST
if (empty($list)) {
  $user = array(
    'name' => 'newuser_username', // Username
    'mail' => 'newuser@ethosce.com',
    'status' => 1, // Enabled. A value of 0 sets the account as 'Blocked'
  );
  $curl = curl_init("http://your-domain.com/user");
  curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
  curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
  curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  curl_setopt($curl, CURLOPT_USERPWD, 'restws_webservice:restws_password'); //Your credentials goes here
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
  curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($user));
  $json = curl_exec($curl);

  // An array detailing the new user entity is returned if successful
  $userInfo = json_decode($json);

  // Prepare the profile creation calls
  $curl = curl_init("http://your-domain.com/profile2");
  curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
  curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-Type: application/json"));
  curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
  curl_setopt($curl, CURLOPT_USERPWD, 'restws_webservice:restws_password'); //Your credentials goes here
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);

  // User profile data
  $profile = array(
    'user' => $userInfo->id, // The value sent back is a user entity, which identifies itself by entity id, which is also the Drupal uid
    'label' => 'Profile',
    'type' => 'profile',
    'field_first_name' => 'John',
    'field_middle_name' => 'Middle',
    'field_last_name' => 'Smith',
    'field_profile_location' => array(
      'street' => '1520 Locust Street',
      'additional' => 'Suite 1000',
      'city' => 'Philadelphia',
      'province' => 'PA',
      'postal_code' => '19102',
      'country' => 'us', // A two character country code
    ),
  );

  // Create the main profile
  curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($profile));
  $json = curl_exec($curl);
  print_r("$json \n");
  $response = json_decode($json);

// User Bio data
  $bio = array(
    'user' => $userInfo->id,
    'label' => 'Bio',
    'type' => 'bio',
    'field_fm_biography' => array(
      'value' => 'This is the learner <b>bio</b>",',
      'format' => 'filtered_html', // Text format is required. Filtered HTML is availabe to all learners
    ),
    'field_credentials' => 'PhD, MD',
  );

  // Create the bio
  curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($bio));
  $json = curl_exec($curl);
  $response = json_decode($json);

  // User disclosure data
  $disclosure = array(
    'user' => $userInfo->id,
    'label' => 'Disclosure',
    'type' => 'disclosure',
    'field_fm_disclose' => 1,
  );

  // Create the disclosure
  curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($disclosure));
  $json = curl_exec($curl);
  $disclosure_new = json_decode($json);

  // Add financial relationships field collections to the disclosure
  $financial_info = array(
    // Field 1
    array(
      'field_fm_attribution' => 'Other',
      'field_fm_commercial_interest' => 'Pharma Clinic',
      'field_fm_dates' =>
      array(
        'value' => "2014-08-20T00:00:00Z",// Dates must be sent in this ISO format, Y-m-d\TH:i:sZ, to be properly read from the database
        'value2' => "2014-08-28T00:00:00Z",
      ),
      'field_fm_relationship_type' => 'Other',
      'field_fm_relationship_type_other' => 'I bought supplies which were reimbursed.',
      'field_name' => 'field_fm_financial_relationships',
      'host_entity' => array(
        'id' => $disclosure_new->id,
        'resource' => "profile2",
      ),
    ),
    // Field 2
    array(
      'field_fm_attribution' => 'Self',
      'field_fm_commercial_interest' => 'Pharma Clinic',
      'field_fm_dates' =>
      array(
        'value' => "2015-08-20T00:00:00Z", // Dates must be sent in this ISO format, Y-m-d\TH:i:sZ, to be properly read from the database
        'value2' => "2015-08-28T00:00:00Z",
      ),
      'field_fm_relationship_type' => 'Employment',
      'field_fm_relationship_type_other' => 'Paid sponsorship',
      'field_name' => 'field_fm_financial_relationships',
      'host_entity' => array(
        'id' => $disclosure_new->id,
        'resource' => "profile2",
      ),
    ),
  );

  curl_setopt($curl, CURLOPT_URL, "http://your-domain.com/field_collection_item.json");
  foreach ($financial_info as $item) {
    curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($item));
    $json = curl_exec($curl);
    $response = json_decode($json);
    print "\nCreated financial relationship " . $json;
  }

 }
  • No labels