protected function getMatchingIdsInDb(DataAccessObject $dao, PermissionsManager $permissionManager, Tracker $tracker, PFUser $user, array $criteria) { $dump_criteria = array(); foreach ($criteria as $c) { $dump_criteria[$c->field->getName()] = $c->field->getCriteriaValue($c); } $dao->logStart(__METHOD__, json_encode(array('user' => $user->getUserName(), 'project' => $tracker->getGroupId(), 'query' => $dump_criteria, 'trackers' => array($tracker->getId())))); $matching_ids = array(); $group_id = $tracker->getGroupId(); $permissions = $permissionManager->getPermissionsAndUgroupsByObjectid($tracker->getId()); $contributor_field = $tracker->getContributorField(); $contributor_field_id = $contributor_field ? $contributor_field->getId() : null; $additional_from = array(); $additional_where = array(); foreach ($criteria as $c) { if ($f = $c->getFrom()) { $additional_from[] = $f; } if ($w = $c->getWhere()) { $additional_where[] = $w; } } $matching_ids['id'] = ''; $matching_ids['last_changeset_id'] = ''; $matching_ids_result = $dao->searchMatchingIds($group_id, $tracker->getId(), $additional_from, $additional_where, $user, $permissions, $contributor_field_id); if ($matching_ids_result) { $matching_ids = $matching_ids_result->getRow(); if ($matching_ids) { if (substr($matching_ids['id'], -1) === ',') { $matching_ids['id'] = substr($matching_ids['id'], 0, -1); } if (substr($matching_ids['last_changeset_id'], -1) === ',') { $matching_ids['last_changeset_id'] = substr($matching_ids['last_changeset_id'], 0, -1); } } } $nb_matching = $matching_ids['id'] ? substr_count($matching_ids['id'], ',') + 1 : 0; $dao->logEnd(__METHOD__, $nb_matching); return $matching_ids; }