private function addReport($options, $connection) { $report = new Report(); $report->setDescription(self::generateDescription()); $report->setTitle(implode(', ', array_keys($options['queries']))); $report->save(); foreach ($options['queries'] as $key => $value) { $query = new Query(); $query->setQuery($key); $query->save(); $report_query = new ReportQuery(); $report_query->setQuery($query); $report_query->setTitle($key); $report_query->setReport($report); $report_query->save(); $date_start = strtotime($options['start_date']); $date_end = strtotime($options['end_date']); $start = $value['rand_start']; while ($date_start < $date_end) { if (rand(0, 100) > $value['rand']) { $query_result = new QueryResultBulk(); $query_result->setQuery($query); $start += rand($value['rand_min'], $value['rand_max']) * $value['rand_diff']; $query_result->setResultSize($start); $query_result->setCreatedAt($date_start); $query_result->save(); } $date_start = strtotime(date('Y-m-d', $date_start) . ' +1 days'); } $sql = "DELETE FROM %s where date(%s) = '%s' and %s = %s"; $sql = sprintf($sql, QueryResultPeer::TABLE_NAME, QueryResultPeer::RESULT_DATE, date('Y-m-d'), QueryResultPeer::QUERY_ID, $query->getId()); $statement = $connection->prepareStatement($sql); $statement->executeQuery(); } $tags = self::generateTags(); foreach ($tags as $tag) { $tag->setReport($report); $tag->save(); } }
protected function updateObjectFromForm() { if ($this->object->getId()) { foreach ($this->object->getReportQuerys() as $report_query) { $report_query->delete(); } foreach ($this->object->getReportTags() as $tag) { $tag->delete(); } } $this->object->setTitle($this->getValue('title')); $this->object->setDescription($this->getValue('description')); $this->object->setMailFrequency($this->getValue('frequency')); if ($this->getValue('private') == 'on') { $this->object->setPublicRecord(false); } else { $this->object->setPublicRecord(true); } $tag_names = explode(',', $this->getValue('tags')); foreach ($tag_names as $tag_name) { if (!($tag_name = strtolower(trim($tag_name)))) { continue; } $tag = new ReportTag(); $tag->setName($tag_name); $this->object->addReportTag($tag); } $query_texts = explode("\n", str_replace("\r", "", $this->getValue('query_texts'))); $query_titles = explode("\n", str_replace("\r", "", $this->getValue('query_titles'))); for ($i = 0; $i < sizeof($query_texts); $i++) { $query_text = $query_texts[$i]; $query_title = $query_titles[$i]; if ($query_text) { $query = QueryPeer::retrieveByQUERY($query_text); if (!$query) { $query = new Query(); $query->setQuery($query_text); } $report_query = new ReportQuery(); $report_query->setQuery($query); $report_query->setTitle($query_title); $this->object->addReportQuery($report_query); } } if ($this->getValue('user_id')) { $this->object->setUserId($this->getValue('user_id')); } }