function ctools_node_content_type_edit_form_validate

Validate the node selection.

File

plugins/content_types/node/node.inc, line 181

Code

function ctools_node_content_type_edit_form_validate(&$form, &$form_state) {
  if ($form_state['op'] != 'add') {
    return;
  }
  $nid = $form_state['values']['nid'];
  $preg_matches = array();
  $match = preg_match('/\\[id: (\\d+)\\]/', $nid, $preg_matches);
  if (!$match) {
    $match = preg_match('/^id: (\\d+)/', $nid, $preg_matches);
  }
  if ($match) {
    $nid = $preg_matches[1];
  }
  if (is_numeric($nid)) {
    $node = db_query('SELECT nid, status FROM {node} WHERE nid = :nid', array(
      ':nid' => $nid,
    ))->fetchObject();
  }
  else {
    $node = db_query('SELECT nid, status FROM {node} WHERE LOWER(title) = LOWER(:title)', array(
      ':title' => $nid,
    ))->fetchObject();
  }
  if ($node) {
    $form_state['values']['nid'] = $node->nid;
  }
  if (!($node || preg_match('/^[@%]\\d+$/', $nid)) || empty($node->status) && !user_access('administer nodes')) {
    form_error($form['nid'], t('Invalid node'));
  }
}