/** * @param int|string $uploadId * @param array $agentNames used to determine the ars tables * @param string $dbViewName * @param int value 0 means non-prepared query */ public function __construct($uploadId, $agentNames = array('nomos', 'monk'), $dbViewName = 'latest_scanner', $andEnabled = "AND agent_enabled") { if (empty($agentNames)) { throw new \Exception('empty set of scanners'); } $this->uploadId = $uploadId; $subqueries = array(); foreach ($agentNames as $name) { $subqueries[] = "SELECT * FROM (SELECT {$this->columns} FROM {$name}" . self::ARS_SUFFIX . ", agent\n WHERE agent_fk=agent_pk AND upload_fk={$uploadId} {$andEnabled} ORDER BY agent_fk DESC limit 1) latest_{$name}"; } $dbViewQuery = implode(' UNION ', $subqueries); parent::__construct($dbViewQuery, $dbViewName . "_" . implode("_", $agentNames)); }
/** * @param int $groupId * @param array $options * @param string $dbViewName */ public function __construct($groupId, $options = array(), $dbViewName = 'license_all') { $this->groupId = $groupId; if ($groupId == 0) { $dbViewQuery = $this->queryOnlyLicenseRef($options); parent::__construct($dbViewQuery, $dbViewName); return; } $dbViewQuery = $this->queryLicenseCandidate($options); if (!array_key_exists('diff', $options)) { $dbViewQuery .= " UNION " . $this->queryOnlyLicenseRef($options); } parent::__construct($dbViewQuery, $dbViewName); }