You are here

function _wfso_options in Webform Select options 7.3

Helper get options

1 call to _wfso_options()
_webform_render_wfso_field in ./webform_select_opts.module

File

./webform_select_opts.module, line 573
Change textfield webform component to select options from nodetype fields.

Code

function _wfso_options($nid, $cid, $default = 0) {
  global $language;
  $n_type = db_select('webform_select_opts_component', 's')
    ->fields('s', array(
    'data',
  ))
    ->condition('nid', $nid, '=')
    ->condition('cid', $cid, '=')
    ->execute()
    ->fetchField();
  if ($n_type) {
    $var = variable_get('webform_select_options_fields_' . $n_type, '');
    $field_val = unserialize($var);
    if ($var) {
      if ($field_val[0] == 'node_title') {
        $query = db_select('node', 'n');
        $query
          ->fields('n', array(
          'nid',
          'title',
        ));
        $query
          ->condition('n.type', $n_type, '=');
        $query
          ->condition('n.status', 1, '=');
        $query
          ->condition('n.language', $language->language, '=');
        $query
          ->orderBy('title');
        $records = $query
          ->execute();
        foreach ($records as $record) {
          $options[$record->title] = $record->title;
        }
      }
      else {
        if ($field_val[0] == 'node_id') {
          $options = array();
          $query = db_select('node', 'n');
          $query
            ->fields('n', array(
            'nid',
            'title',
          ));
          $query
            ->condition('n.type', $n_type, '=');
          $query
            ->condition('n.status', 1, '=');
          $query
            ->condition('n.language', $language->language, '=');
          $query
            ->orderBy('title');
          $records = $query
            ->execute();
          foreach ($records as $record) {
            $options[$record->nid] = $record->title;
          }
        }
        else {
          $query = db_select('node', 'n');
          $query
            ->join('field_data_' . $field_val[0], 'm', 'n.nid = m.entity_id');
          $query
            ->fields('n', array(
            'nid',
            'title',
          ));
          $query
            ->fields('m', array(
            $field_val[0] . '_value',
          ));
          $query
            ->condition('n.type', $n_type, '=');
          $query
            ->condition('n.status', 1, '=');
          $query
            ->condition('n.language', $language->language, '=');
          $query
            ->orderBy('title');
          $records = $query
            ->execute();
          $options = array();
          foreach ($records as $record) {
            $record_arr = (array) $record;
            if ($record_arr[$field_val[0] . '_value'] != FALSE) {

              //if field VALUE is email
              if ($field_val[2]) {
                $options[$record_arr['nid']] = $record_arr['title'];
              }
              else {
                $options[$record_arr[$field_val[0] . '_value']] = $record_arr['title'];
              }
            }
          }
        }
      }
    }
  }
  return $options;
}