function ctools_context_required::select
Select one context from the list of contexts, accounting for changed IDs.
Fundamentally, this returns $contexts[$context] or FALSE if that does not exist. Additional logic accounts for changes in context names and dealing with a $contexts parameter that is not an array.
If we had requested a $context but that $context doesn't exist in our context list, there is a good chance that what happened is the context IDs changed. Look for another context that satisfies our requirements, unless $skip_name_check is set.
Parameters
ctools_context|array $contexts: A context, or an array of ctools_context.
string $context: A context ID.
Return value
bool|ctools_context The matching ctools_context, or False if no such context was found.
1 call to ctools_context_required::select()
- ctools_context_optional::select in includes/
context.inc - Select and return one context from the list of applicable contexts.
1 method overrides ctools_context_required::select()
- ctools_context_optional::select in includes/
context.inc - Select and return one context from the list of applicable contexts.
File
-
includes/
context.inc, line 363
Class
- ctools_context_required
- Used to create a method of comparing if a list of contexts match a required context type.
Code
public function select($contexts, $context) {
// Easier to deal with a standalone object as a 1-element array of objects.
if (!is_array($contexts)) {
if (is_object($contexts) && $contexts instanceof ctools_context) {
$contexts = array(
$contexts->id => $contexts,
);
}
else {
$contexts = array(
$contexts,
);
}
}
// If we had requested a $context but that $context doesn't exist in our
// context list, there is a good chance that what happened is the context
// IDs changed. Check for another context that satisfies our requirements.
if (!$this->skip_name_check && !empty($context) && !isset($contexts[$context])) {
$choices = $this->filter($contexts);
// If we got a hit, take the first one that matches.
if ($choices) {
$keys = array_keys($choices);
$context = reset($keys);
}
}
if (empty($context) || empty($contexts[$context])) {
return FALSE;
}
return $contexts[$context];
}