You are here

function domain_taxonomy_query_term_access_alter in Domain Taxonomy 7

Same name and namespace in other branches
  1. 7.3 domain_taxonomy.module \domain_taxonomy_query_term_access_alter()

File

./domain_taxonomy.module, line 561

Code

function domain_taxonomy_query_term_access_alter($query) {
  if (path_is_admin(current_path()) && arg(0) != 'node') {
    return;
  }
  $tables = $query
    ->getTables();
  $query
    ->getMetaData('vid');
  foreach ($tables as $alias => $tableinfo) {
    $table = $tableinfo['table'];
    if ($table == 'taxonomy_term_data') {
      $query
        ->join('domain_taxonomy_access', 'dta', $alias . '.tid = dta.tid');
      global $user, $_domain;
      static $_modules;
      $grants = array();
      $grants_list = array();
      $account = $user;
      if ($_domain['site_grant']) {
        $grants['domain_site'][] = 0;
      }
      $grants['domain_id'][] = $_domain['domain_id'];
      $or = db_or();
      foreach ($grants as $realm => $gids) {
        foreach ($gids as $gkey => $gid) {
          $or
            ->condition(db_and()
            ->condition('dta.gid', $gid)
            ->condition('dta.realm', $realm));
        }
      }
      $condition = db_and()
        ->condition('dta.grant_view', 1)
        ->condition($or);
      $disabled_vocs = _domain_taxonomy_get_disabled_vocabulares();
      if (count($disabled_vocs)) {
        $condition = db_or()
          ->condition($alias . '.vid', $disabled_vocs, 'IN')
          ->condition($condition);
      }
      $query
        ->condition($condition);
    }
  }
  $query
    ->distinct();
}