/**
  * Return all commits associated to a given project
  *
  * @param $id ID number of project
  * @param $limit Maximum age of commits to show, use strtotime format (default is 2 weeks ago)
  *
  * @return false if no commits, otherwise array
  */
 public function getCommitsByProject($id, $limit = '-2 weeks')
 {
     $crit = new B2DBCriteria();
     $issues = TBGIssuesTable::getTable()->getIssuesByProjectId($id);
     $crit->addWhere(self::ISSUE_NO, $issues[0]->getID());
     for ($i = 1; $i != count($issues); $i++) {
         $crit->addOr(self::ISSUE_NO, $issues[$i]->getID());
     }
     $crit->addWhere(self::DATE, strtotime($limit), $crit::DB_GREATER_THAN_EQUAL);
     $crit->addOrderBy(self::DATE, B2DBCriteria::SORT_DESC);
     $results = $this->doSelect($crit);
     if (!is_object($results) || $results->getNumberOfRows() == 0) {
         return false;
     }
     $data = array();
     /* Build revision details */
     while ($results->next()) {
         $file = array($results->get(TBGVCSIntegrationTable::FILE_NAME), $results->get(TBGVCSIntegrationTable::ACTION), $results->get(TBGVCSIntegrationTable::NEW_REV), $results->get(TBGVCSIntegrationTable::OLD_REV));
         if (array_key_exists($results->get(TBGVCSIntegrationTable::NEW_REV), $data)) {
             $data[$results->get(TBGVCSIntegrationTable::NEW_REV)][1][] = $file;
         } else {
             // one array for revision details, other for files
             $data[$results->get(TBGVCSIntegrationTable::NEW_REV)] = array(array(), array());
             $data[$results->get(TBGVCSIntegrationTable::NEW_REV)][0] = array($results->get(TBGVCSIntegrationTable::ID), $results->get(TBGVCSIntegrationTable::AUTHOR), $results->get(TBGVCSIntegrationTable::DATE), $results->get(TBGVCSIntegrationTable::LOG), $results->get(TBGVCSIntegrationTable::ISSUE_NO));
             $data[$results->get(TBGVCSIntegrationTable::NEW_REV)][1][] = $file;
         }
     }
     return $data;
 }