/**
  * 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);
     }
 }
Пример #2
0
 /**
  * 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;
 }
Пример #3
0
 /**
  * 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;
 }
Пример #4
0
 /**
  * Delete the given trend and all associated scalars.
  *
  * @param Tracker_TrendDao $trendDao trend DAO
  * @param null|ProgressDao $progressDao progress DAO
  */
 public function delete($trendDao, $progressDao = null)
 {
     /** @var Tracker_ScalarModel $scalarModel */
     $scalarModel = MidasLoader::loadModel('Scalar', $this->moduleName);
     /** @var Tracker_ThresholdNotificationModel $notificationModel */
     $notificationModel = MidasLoader::loadModel('ThresholdNotification', $this->moduleName);
     if (!is_null($progressDao)) {
         /** @var ProgressModel $progressModel */
         $progressModel = MidasLoader::loadModel('Progress');
         $progressDao->setMessage('Counting scalar points...');
         $progressModel->save($progressDao);
     }
     $scalarDaos = $trendDao->getScalars();
     $scalarIndex = 0;
     if (!is_null($progressDao)) {
         $progressDao->setMaximum(count($scalarDaos));
         /** @noinspection PhpUndefinedVariableInspection */
         $progressModel->save($progressDao);
     }
     /** @var Tracker_ScalarDao $scalarDao */
     foreach ($scalarDaos as $scalarDao) {
         if (!is_null($progressDao)) {
             ++$scalarIndex;
             $message = 'Deleting scalars: ' . $scalarIndex . ' of ' . $progressDao->getMaximum();
             /** @noinspection PhpUndefinedVariableInspection */
             $progressModel->updateProgress($progressDao, $scalarIndex, $message);
         }
         $scalarModel->delete($scalarDao);
     }
     $notificationModel->deleteByTrend($trendDao);
     parent::delete($trendDao);
 }
Пример #5
0
 /**
  * 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());
 }