/** * Delete all thresholds for the given trend. * * @param Tracker_TrendDao $trendDao trend DAO */ public function deleteByTrend($trendDao) { $sql = $this->database->select()->setIntegrityCheck(false)->where('trend_id = ?', $trendDao->getKey()); $rows = $this->database->fetchAll($sql); /** @var Zend_Db_Table_Row_Abstract $row */ foreach ($rows as $row) { /** @var Tracker_ThresholdNotificationDao $thresholdNotificationDao */ $thresholdNotificationDao = $this->initDao('ThresholdNotification', $row, $this->moduleName); $this->delete($thresholdNotificationDao); } }
/** * Return a chronologically ordered list of scalars for the given trend. * * @param Tracker_TrendDao $trendDao trend DAO * @param null|string $startDate start date * @param null|string $endDate end date * @param null|int $userId user id * @param null|string|array $branch branch name * @return array scalar DAOs */ public function getScalars($trendDao, $startDate = null, $endDate = null, $userId = null, $branch = null) { $sql = $this->database->select()->setIntegrityCheck(false)->from('tracker_scalar')->where('trend_id = ?', $trendDao->getKey())->order(array('submit_time ASC')); if (!is_null($startDate)) { $sql->where('submit_time >= ?', $startDate); } if (!is_null($endDate)) { $sql->where('submit_time <= ?', $endDate); } if (!is_null($branch)) { if (is_array($branch)) { $sql->where('branch IN (?)', $branch); } else { $sql->where('branch = ?', $branch); } } $scalarDaos = array(); $rows = $this->database->fetchAll($sql); /** @var Zend_Db_Table_Row_Abstract $row */ foreach ($rows as $row) { $scalarDaos[] = $this->initDao('Scalar', $row, $this->moduleName); } return $scalarDaos; }
/** * Add a new scalar to the trend. If overwrite is true, and a scalar already exists on the trend with the same * submit time and user, then this will replace that scalar. * * @param Tracker_TrendDao $trendDao trend DAO * @param string $submitTime submit time * @param string $producerRevision producer revision * @param float $value scalar value * @param UserDao $userDao user DAO * @param bool $overwrite true if a scalar with the same trend, submit time, and user should be overwritten * @param bool $official true if the submission containing the scalar should be official * @param string $buildResultsUrl build results URL * @param null|string $branch branch name * @param null|string|array $params parameters * @param null|string|array $extraUrls extra URLs * @return Tracker_ScalarDao scalar DAO */ public function addToTrend($trendDao, $submitTime, $submissionId, $producerRevision, $value, $userDao, $overwrite = true, $official = true, $buildResultsUrl = '', $branch = '', $params = null, $extraUrls = null) { if ($overwrite === true) { $scalarDao = $this->getByTrendAndTimestamp($trendDao->getKey(), $submitTime, $userDao->getKey()); if ($scalarDao !== false) { $this->delete($scalarDao); } } if (empty($params)) { $params = null; } elseif (is_array($params)) { $params = json_encode($params); } if (empty($extraUrls)) { $extraUrls = null; } elseif (is_array($extraUrls)) { $extraUrls = json_encode($extraUrls); } $userId = is_null($userDao) || $userDao === false ? -1 : $userDao->getKey(); /** @var Tracker_ScalarDao $scalarDao */ $scalarDao = MidasLoader::newDao('ScalarDao', $this->moduleName); $scalarDao->setSubmissionId($submissionId); $scalarDao->setTrendId($trendDao->getKey()); $scalarDao->setSubmitTime($submitTime); $scalarDao->setProducerRevision($producerRevision); $scalarDao->setValue($value); $scalarDao->setUserId($userId); $scalarDao->setOfficial((int) $official); $scalarDao->setBuildResultsUrl($buildResultsUrl); $scalarDao->setBranch(trim($branch)); $scalarDao->setParams($params); $scalarDao->setExtraUrls($extraUrls); $this->save($scalarDao); return $scalarDao; }
/** * Convert the given trend DAO to an array and prepend metadata. * * @param Tracker_TrendDao $trendDao trend DAO * @return array associative array representation of the trend DAO with metadata prepended */ protected function _toArray($trendDao) { $trendArray = array('_id' => $trendDao->getKey(), '_type' => 'Tracker_Trend'); return array_merge($trendArray, $trendDao->toArray()); }