You are here

function oauthconnector_provider_save in OAuth Connector 7

Same name and namespace in other branches
  1. 6 oauthconnector.module \oauthconnector_provider_save()

Saves a provider in the database.

Return value

void

1 call to oauthconnector_provider_save()
oauthconnector_edit_form_provider_submit in ./oauthconnector.admin.inc
Process submission of the provider edit form.

File

./oauthconnector.module, line 458
OAuth Connector module

Code

function oauthconnector_provider_save($provider) {
  $update = isset($provider->pid) ? array(
    'pid',
  ) : array();
  if (isset($provider->csid) || !empty($provider->consumer_key) && !empty($provider->consumer_secret)) {
    $consumer = isset($provider->csid) ? DrupalOAuthConsumer::loadById($provider->csid, FALSE) : FALSE;
    $configuration = array(
      'provider_url' => $provider->url,
    );
    foreach ($provider->consumer_advanced as $key => $value) {
      $configuration[$key] = $value;
    }

    // fix broken/missing setting for DrupalOAuthClient
    if (isset($configuration['access token endpoint'])) {
      $configuration['access_endpoint'] = $configuration['access token endpoint'];
    }
    if ($consumer) {
      $consumer->key = $provider->consumer_key;
      $consumer->secret = $provider->consumer_secret;
      $consumer->configuration = $configuration;
      $consumer
        ->write(TRUE);
    }
    else {
      $consumer = new DrupalOAuthConsumer($provider->consumer_key, $provider->consumer_secret, array(
        'configuration' => $configuration,
      ));
      $consumer
        ->write();
      $provider->csid = $consumer->csid;
    }
  }
  drupal_write_record('oauthconnector_provider', $provider, $update);
}