function ctools_context_entity_settings_form_validate

Validate a node.

File

plugins/contexts/entity.inc, line 162

Code

function ctools_context_entity_settings_form_validate($form, &$form_state) {
    // Validate the autocomplete.
    if (empty($form_state['values']['entity_id']) && empty($form_state['values']['entity'])) {
        form_error($form['entity'], t('You must select an entity.'));
        return;
    }
    if (empty($form_state['values']['entity'])) {
        return;
    }
    $id = $form_state['values']['entity'];
    $preg_matches = array();
    $match = preg_match('/\\[id: (\\d+)\\]/', $id, $preg_matches);
    if (!$match) {
        $match = preg_match('/^id: (\\d+)/', $id, $preg_matches);
    }
    if ($match) {
        $id = $preg_matches[1];
    }
    if (is_numeric($id)) {
        $entity = entity_load($form_state['values']['entity_type'], array(
            $id,
        ));
        $entity = $entity[$id];
    }
    else {
        $entity_info = entity_get_info($form_state['values']['entity_type']);
        $field = $entity_info['entity keys']['label'];
        $entity = entity_load($form_state['values']['entity_type'], FALSE, array(
            $field => $id,
        ));
    }
    // Do not allow unpublished nodes to be selected by unprivileged users
    // || (empty($node->status) && !(user_access('administer nodes'))) need a new sanity check at some point.
    if (!$entity) {
        form_error($form['entity'], t('Invalid entity selected.'));
    }
    else {
        $entity_id = entity_extract_ids($form_state['values']['entity_type'], $entity);
        form_set_value($form['entity_id'], $entity_id[0], $form_state);
    }
}