You are here

node_from_user.inc in Content Profile 6

Provides a CTools (Panels) relationship that gets a node context from the user context based on nodes marked as content profiles.

File

panels/relationships/node_from_user.inc
View source
<?php

/**
 * @file
 * Provides a CTools (Panels) relationship that gets a node context from the
 * user context based on nodes marked as content profiles.
 */

/**
 * Implementation of specially named hook_ctools_relationships().
 */
function content_profile_node_from_user_ctools_relationships() {
  $args['node_from_user'] = array(
    'title' => t("Profile Node"),
    'keyword' => 'content_profile',
    'description' => t('Adds a Content Profile from user context'),
    'required context' => new ctools_context_required(t('User'), 'user'),
    'context' => 'content_profile_node_from_user_ctools_context',
    'settings form' => 'content_profile_node_from_user_ctools_settings_form',
    'settings form validate' => 'content_profile_node_from_user_ctools_settings_form_validate',
  );
  return $args;
}

/**
 * Return a new context based on an existing context.
 */
function content_profile_node_from_user_ctools_context($context, $conf) {

  // If unset it wants a generic, unfilled context, which is just NULL.
  if (empty($context->data) || !isset($context->data->uid)) {
    $new_context = ctools_context_create_empty('node', NULL);
  }
  else {

    // Load the node for the requested type
    $uid = $context->data->uid;
    $content_profile_node = content_profile_load($conf['type'], $uid);

    // Send it to ctools.
    $new_context = ctools_context_create('node', $content_profile_node);
  }

  // Have content profile relationships limit CCK field availability.
  if (isset($new_context->restrictions['type'])) {
    $new_context->restrictions['type'][] = $conf['type'];
  }
  else {
    $new_context->restrictions['type'] = array(
      $conf['type'],
    );
  }
  return $new_context;
}

/**
 * Settings form for the relationship
 */
function content_profile_node_from_user_ctools_settings_form($conf) {
  $options = content_profile_get_types('names');
  $form['type'] = array(
    '#type' => 'select',
    '#title' => t('Relationship type'),
    '#options' => $options,
    '#default_value' => $conf['type'],
  );
  return $form;
}

Functions

Namesort descending Description
content_profile_node_from_user_ctools_context Return a new context based on an existing context.
content_profile_node_from_user_ctools_relationships Implementation of specially named hook_ctools_relationships().
content_profile_node_from_user_ctools_settings_form Settings form for the relationship