You are here

function ctools_context_replace_placeholders in Chaos Tool Suite (ctools) 6

Same name and namespace in other branches
  1. 7 includes/context.inc \ctools_context_replace_placeholders()

Replace placeholders with real contexts using data extracted from a form for the purposes of previews.

Parameters

$contexts: All of the contexts, including the placeholders.

$arguments: The arguments. These will be acquired from $form_state['values'] and the keys must match the context IDs.

Return value

A new $contexts array containing the replaced contexts. Not all contexts may be replaced if, for example, an argument was unable to be converted into a context.

File

includes/context.inc, line 1206
Contains code related to the ctools system of 'context'.

Code

function ctools_context_replace_placeholders($contexts, $arguments) {
  foreach ($contexts as $cid => $context) {
    if (empty($context->empty)) {
      continue;
    }
    $new_context = NULL;
    switch ($context->placeholder['type']) {
      case 'relationship':
        $relationship = $context->placeholder['conf'];
        if (isset($contexts[$relationship['context']])) {
          $new_context = ctools_context_get_context_from_relationship($relationship, $contexts[$relationship['context']]);
        }
        break;
      case 'argument':
        if (isset($arguments[$cid]) && $arguments[$cid] !== '') {
          $argument = $context->placeholder['conf'];
          $new_context = ctools_context_get_context_from_argument($argument, $arguments[$cid]);
        }
        break;
      case 'context':
        if (!empty($arguments[$cid])) {
          $context_info = $context->placeholder['conf'];
          $new_context = ctools_context_get_context_from_context($context_info, 'context', $arguments[$cid]);
        }
        break;
    }
    if ($new_context && empty($new_context->empty)) {
      $contexts[$cid] = $new_context;
    }
  }
  return $contexts;
}