You are here

function lingotek_bulk_grid_filter_popup_options in Lingotek Translation 7.6

Same name and namespace in other branches
  1. 7.7 lingotek.bulk_grid.inc \lingotek_bulk_grid_filter_popup_options()
1 call to lingotek_bulk_grid_filter_popup_options()
lingotek_bulk_grid_filter_query in ./lingotek.bulk_grid.inc

File

./lingotek.bulk_grid.inc, line 1494

Code

function lingotek_bulk_grid_filter_popup_options($query, $filters, $eid, $info, $entity_type) {

  //  Entity ID
  if (isset($filters['nid']) && $filters['nid'] != '') {
    $query
      ->condition('' . $eid . '', $filters['nid']);
  }
  lingotek_filter_by_document_id($query, $filters);
  $array_fix = array(
    'upload_status',
    'content_type',
    'auto_upload',
    'auto_download',
    'crowdsourcing',
    'url_alias',
    'translation_status',
    'locale_progress_percent',
  );
  foreach ($array_fix as $value) {
    if (isset($filters[$value]) && !is_array($filters[$value])) {
      $filters[$value] = array(
        $filters[$value],
      );
    }
  }

  // Source Language
  if (isset($filters['source_language']) && $filters['source_language'] != 'all') {
    $query
      ->condition('n.' . $info['entity keys']['language'], $filters['source_language']);
  }

  // Upload Status
  if (isset($filters['upload_status']) && !in_array('all', $filters['upload_status'])) {
    $query
      ->condition('lingo_upload_status.value', $filters['upload_status'], 'IN');
  }

  //  Content Type
  if (isset($filters['content_type']) && !in_array('all', $filters['content_type'])) {

    // Special-case handling of taxonomy_term pseudo-entities
    if ($entity_type == 'taxonomy_term') {
      $query
        ->condition('tv.machine_name', $filters['content_type'], 'IN');
    }
    elseif ($entity_type == 'comment') {
      $or = db_or();
      foreach ($filters['content_type'] as $type_alias) {
        $content_type = substr($type_alias, strlen('comment_node_'));
        $or
          ->condition('nn.type', $content_type);
      }
      $query
        ->condition($or);
    }
    else {
      $query
        ->condition('n.' . $info['entity keys']['bundle'], $filters['content_type'], 'IN');
    }
  }
  if (isset($filters['profile']) && !in_array('all', $filters['profile'])) {
    $profiled_entities = lingotek_get_entities_by_profile_and_entity_type($filters['profile'], $entity_type);
    $profiled_entity_ids = array(
      -1,
    );
    foreach ($profiled_entities as $p) {
      $profiled_entity_ids[] = $p['id'];
    }
    $query
      ->condition('n.' . $info['entity keys']['id'], $profiled_entity_ids, 'IN');

    //$or = lingotek_profile_condition($base_table, 'n', 'lingo_profile', $filters['profile']);

    //$query->condition($or);
  }
}