function ctools_argument_entity_id_context

Discover if this argument gives us the entity we crave.

1 string reference to 'ctools_argument_entity_id_context'
entity_id.inc in plugins/arguments/entity_id.inc
Plugin to provide an argument handler for all entity ids.

File

plugins/arguments/entity_id.inc, line 50

Code

function ctools_argument_entity_id_context($arg = NULL, $conf = NULL, $empty = FALSE) {
    $entity_type = explode(':', $conf['name']);
    $entity_type = $entity_type[1];
    // If unset it wants a generic, unfilled context.
    if ($empty) {
        return ctools_context_create_empty('entity:' . $entity_type);
    }
    // We can accept either an entity object or a pure id.
    if (is_object($arg)) {
        return ctools_context_create('entity:' . $entity_type, $arg);
    }
    // Trim spaces and other garbage.
    $arg = trim($arg);
    if (!is_numeric($arg)) {
        $preg_matches = array();
        $match = preg_match('/\\[id: (\\d+)\\]/', $arg, $preg_matches);
        if (!$match) {
            $match = preg_match('/^id: (\\d+)/', $arg, $preg_matches);
        }
        if ($match) {
            $id = $preg_matches[1];
        }
        if (isset($id) && is_numeric($id)) {
            return ctools_context_create('entity:' . $entity_type, $id);
        }
        return FALSE;
    }
    $entities = entity_load($entity_type, array(
        $arg,
    ));
    if (empty($entities)) {
        return FALSE;
    }
    return ctools_context_create('entity:' . $entity_type, reset($entities));
}