Ejemplo n.º 1
0
 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'));
     }
 }