123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- <?php
- /**
- * Menu system callback for listing a users consumers.
- *
- * @param object $account
- */
- function oauth_common_page_user_consumers($account) {
- module_load_include('inc', 'oauth_common');
- $ci = oauth_common_user_consumers($account->uid);
- $header = array(
- array('data' => t('Name'), 'class' => array('oauth-common-consumer-name')),
- array('data' => t('Key'), 'class' => array('oauth-common-consumer-key')),
- array('data' => t('Created'), 'class' => array('oauth-common-consumer-created')),
- array('data' => t('Operations'), 'class' => array('oauth-common-consumer-operations')),
- );
- $rows = array();
- foreach ($ci as $consumer) {
- $data = array(
- 'name' => array(
- 'data' => $consumer->name,
- 'class' => array('oauth-common-consumer-name'),
- ),
- 'key' => array(
- 'data' => substr($consumer->key, 0, 6) . '...',
- 'class' => array('oauth-common-consumer-key'),
- ),
- 'created' => array(
- 'data' => format_date($consumer->created),
- 'class' => array('oauth-common-consumer-created'),
- ),
- );
- $operations = array();
- if (oauth_common_can_edit_consumer($consumer)) {
- $operations[] = array(
- 'title' => t('Edit'),
- 'href' => sprintf('user/%d/oauth/consumer/%s', $account->uid, $consumer->csid),
- );
- $operations[] = array(
- 'title' => t('Delete'),
- 'href' => sprintf('user/%d/oauth/consumer/%s', $account->uid, $consumer->csid) . '/delete',
- );
- }
- $rows[] = array(
- 'data' => $data + array(
- 'operations' => array(
- 'data' => theme('links', array('links' => $operations)),
- 'class' => array('oauth-common-consumer-operations'),
- ),
- ),
- 'class' => array('oauth-common-consumer'),
- );
- }
- $table = theme('table', array(
- 'header' => $header,
- 'rows' => $rows,
- 'attributes' => array('id' => 'oauth-common-list-consumers')
- ));
- return $table;
- }
- /**
- * Menu system callback for the add consumer page.
- */
- function oauth_common_add_consumer($account) {
- $consumer = new DrupalOAuthConsumer(user_password(32), user_password(32), array(
- 'callback_url' => '',
- 'uid' => $account->uid,
- 'provider_consumer' => TRUE,
- ));
- return drupal_get_form('oauth_common_form_consumer', $consumer);
- }
- /**
- * Menu system callback for the edit consumer page.
- */
- function oauth_common_edit_consumer($consumer) {
- return drupal_get_form('oauth_common_form_consumer', $consumer);
- }
- /**
- * The consumer form that is shared by the add and edit page.
- */
- function oauth_common_form_consumer($form, &$form_state, $consumer) {
- $form = array();
- $form['consumer_object'] = array(
- '#type' => 'value',
- '#value' => $consumer,
- );
- $form['name'] = array(
- '#type' => 'textfield',
- '#title' => t('Consumer name'),
- '#required' => TRUE,
- '#default_value' => $consumer->name,
- );
- $form['callback_url'] = array(
- '#type' => 'textfield',
- '#title' => t('Callback url'),
- '#required' => FALSE,
- '#default_value' => $consumer->callback_url,
- );
- if ($consumer->in_database) {
- $contexts = oauth_common_context_list();
- $form['context'] = array(
- '#type' => 'item',
- '#title' => t('Application context'),
- '#markup' => isset($contexts[$consumer->context]) ? $contexts[$consumer->context] : $consumer->context,
- );
- }
- else {
- $allowed_contexts = array();
- foreach (oauth_common_context_list() as $context => $title) {
- if (user_access(sprintf('oauth register consumers in %s', $context))) {
- $allowed_contexts[$context] = $title;
- }
- }
- $form['context'] = array(
- '#type' => 'select',
- '#title' => t('Application context'),
- '#options' => $allowed_contexts,
- '#default_value' => $consumer->context,
- );
- }
- if ($consumer->in_database) {
- $form['key'] = array(
- '#type' => 'item',
- '#title' => t('Key'),
- '#markup' => $consumer->key,
- );
- $form['secret'] = array(
- '#type' => 'item',
- '#prefix' => '<div id="consumer-secret-wrapper">',
- '#title' => t('Secret'),
- '#markup' => substr($consumer->secret, 0, 6) . '...',
- );
- $form['show_secret'] = array(
- '#type' => 'button',
- '#value' => t('Show secret'),
- '#ajax' => array(
- 'callback' => 'oauth_common_form_consumer_secret_ajax_callback',
- 'wrapper' => 'consumer-secret-wrapper',
- ),
- '#suffix' => '</div>',
- );
- }
- $form['actions'] = array('#type' => 'actions');
- $form['actions']['submit'] = array(
- '#type' => 'submit',
- '#value' => t('Save'),
- );
- return $form;
- }
- /**
- * AJAX callback for showing secrets
- *
- * @return void
- */
- function oauth_common_form_consumer_secret_ajax_callback($form, $form_state) {
- $form['secret']['#markup'] = $form_state['values']['consumer_object']->secret;
- $form['secret']['#prefix'] = '';
- return $form['secret'];
- }
- /**
- * Submit handler for oauth_common_form_consumer.
- */
- function oauth_common_form_consumer_submit($form, &$form_state) {
- $values = $form_state['values'];
- $consumer = $values['consumer_object'];
- // Translate empty callback url to oob (out of band).
- if (empty($values['callback_url'])) {
- $values['callback_url'] = 'oob';
- }
- // Add scheme if missing, and if the callback_url isn't out of band.
- else if ($values['callback_url'] != 'oob' && preg_match('/^http:\/\/|https:\/\//', $values['callback_url']) === 0) {
- //TODO: What about custom callback url:s used by eg iphone-apps? We should allow them - right?
- $values['callback_url'] = 'http://' . $values['callback_url'];
- }
- // Remove trailing slash
- $values['callback_url'] = rtrim($values['callback_url'], '/');
- // Transfer editable attributes to the consumer.
- $names = array('name', 'callback_url', 'context');
- foreach ($names as $name) {
- if (isset($values[$name])) {
- $consumer->$name = $values[$name];
- }
- }
- // Update or create the consumer.
- $update = $consumer->in_database;
- $consumer->write();
- if ($update) {
- drupal_set_message(t('Updated the consumer @name', array('@name' => $values['name'])));
- }
- else {
- drupal_set_message(t('Added the consumer @name', array('@name' => $values['name'])));
- }
- drupal_goto(sprintf('user/%d/oauth/consumers', $consumer->uid));
- }
- /**
- * Consumer deletion form.
- */
- function oauth_common_form_consumer_delete($form_state, $consumer) {
- $form = array(
- 'consumer_object' => array(
- '#type' => 'value',
- '#value' => $consumer,
- ),
- 'confirm' => array(
- '#type' => 'item',
- '#markup' => t('Are you sure you want to delete application <strong>@a</strong>?', array('@a' => $consumer->name)),
- ),
- 'actions' => array(
- '#type' => 'actions',
- 'delete' => array(
- '#type' => 'submit',
- '#title' => t('Delete'),
- '#default_value' => t('Delete'),
- )
- ),
- );
- return $form;
- }
- /**
- * Submit handler for oauth_common_form_consumer_delete.
- */
- function oauth_common_form_consumer_delete_submit($form, &$form_state) {
- $consumer = $form_state['values']['consumer_object'];
- $consumer->delete();
- drupal_set_message(t('Deleted the consumer @name', array('@name' => $consumer->name)));
- drupal_goto(sprintf('user/%d/oauth/consumers', $consumer->uid));
- }
|