/**
  * Inherit from Project
  *
  * @param AIR2_Query $q
  * @param User    $u
  * @param string  $alias (optional)
  */
 public static function query_may_read(AIR2_Query $q, User $u, $alias = null)
 {
     if ($u->is_system()) {
         return;
     }
     $a = $alias ? "{$alias}." : "";
     // readable projects
     $tmp = AIR2_Query::create();
     Project::query_may_read($tmp, $u);
     $tmp = array_pop($tmp->getDqlPart('where'));
     $prj_ids = "select prj_id from project where {$tmp}";
     // fetch actual id's, to prevent doctrine from adding its own alias to
     // our columns (porg fields will get re-aliased by doctrine).
     $conn = AIR2_DBManager::get_connection();
     $rs = $conn->fetchColumn($prj_ids, array(), 0);
     $prj_ids = count($rs) ? implode(',', $rs) : 'NULL';
     $q->addWhere("{$a}porg_prj_id in ({$prj_ids})");
 }
 /**
  * Apply authz rules for who may read.
  *
  * @param AIR2_Query $q
  * @param User    $u
  * @param string  $alias (optional)
  */
 public static function query_may_read(AIR2_Query $q, User $u, $alias = null)
 {
     if ($u->is_system()) {
         return;
     }
     $a = $alias ? "{$alias}." : "";
     $user_id = $u->user_id;
     $prjq = $q->createSubquery();
     $prjq->select('prj.prj_id');
     $prjq->from('Project prj');
     Project::query_may_read($prjq, $u);
     $q->addWhere("{$a}prjan_prj_id IN (" . $prjq->getDql() . ")");
 }