/**
  * Add user counts to an organization query.
  *
  * @param AIR2_Query $q
  * @param char    $alias
  * @param array   $fld_defs (optional, reference)
  */
 public static function add_counts(AIR2_Query $q, $alias = null, &$fld_defs = null)
 {
     $a = $alias ? "{$alias}." : '';
     $uost = UserOrg::$STATUS_ACTIVE;
     $ust1 = User::$STATUS_ACTIVE;
     $ust2 = User::$STATUS_PUBLISHABLE;
     $active_users = "select user_id from user where user_status " . "= '{$ust1}' or user_status = '{$ust2}'";
     $c = "select count(*) from user_org where uo_org_id = {$a}org_id " . "and uo_status = '{$uost}' and uo_user_id in ({$active_users})";
     $q->addSelect("({$c}) as active_users");
     if (is_array($fld_defs)) {
         $fld_defs[] = array('name' => 'active_users', 'type' => 'int');
     }
 }
Пример #2
0
 /**
  * Add conflict/error/done/etc counts to a tank.  Optionally pass in which
  * types to select, rather than them all.
  *
  * @param AIR2_Query $q
  * @param char    $alias
  * @param array   $fld_defs (optional, reference)
  * @param array   $types    (optional)
  */
 public static function add_counts($q, $alias, &$fld_defs = null, $types = null)
 {
     // code => subselect-alias
     $type_counts = array('*' => 'count_total', TankSource::$STATUS_NEW => 'count_new', TankSource::$STATUS_CONFLICT => 'count_conflict', TankSource::$STATUS_RESOLVED => 'count_resolved', TankSource::$STATUS_LOCKED => 'count_locked', TankSource::$STATUS_DONE => 'count_done', TankSource::$STATUS_ERROR => 'count_error');
     if ($types) {
         $less_types = array();
         foreach ($types as $t) {
             $less_types[$t] = $type_counts[$t];
         }
         $type_counts = $less_types;
     }
     // add subselects
     $sub = "select count(*) from tank_source where tsrc_tank_id = {$alias}.tank_id";
     foreach ($type_counts as $code => $name) {
         if ($code == '*') {
             $q->addSelect("({$sub}) as {$name}");
         } else {
             $q->addSelect("({$sub} and tsrc_status = '{$code}') as {$name}");
         }
         if (is_array($fld_defs)) {
             $fld_defs[] = array('name' => $name, 'type' => 'int');
         }
     }
 }
 /**
  * Add sent/recieved counts to an inquiry query.
  *
  * @param AIR2_Query $q
  * @param char    $alias
  * @param array   $fld_defs (optional, reference)
  */
 public static function add_counts(AIR2_Query $q, $alias = '', &$fld_defs = null)
 {
     if ($alias) {
         $alias = "{$alias}.";
     }
     $sent_count = "(select count(*) from src_inquiry where si_inq_id = {$alias}inq_id) as sent_count";
     $recv_count = "(select count(*) from src_response_set where srs_inq_id = {$alias}inq_id) as recv_count";
     $q->addSelect($sent_count);
     $q->addSelect($recv_count);
     if (is_array($fld_defs)) {
         $fld_defs[] = array('name' => 'sent_count', 'type' => 'int');
         $fld_defs[] = array('name' => 'recv_count', 'type' => 'int');
     }
 }