Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordiosmosis <benaka@piwik.pro>2015-08-21 03:31:05 +0300
committerdiosmosis <benaka@piwik.pro>2015-08-21 03:31:05 +0300
commit7dc49ccb9767b601f01c1fe0d1a5fdb3476c3d69 (patch)
treecbebcb251df05fb4d534074e7426e75c91f33a0e /core/CronArchive
parent32542af56d59abdefe008bafc6561f357a9ccfb0 (diff)
Add new option for [General] process_new_segments_from option, 'segment_last_edit_time'. New option sets beginning of segments archiving from last edit time (or created time if it is found). Includes tests.
Diffstat (limited to 'core/CronArchive')
-rw-r--r--core/CronArchive/SegmentArchivingRequestUrlProvider.php39
1 files changed, 34 insertions, 5 deletions
diff --git a/core/CronArchive/SegmentArchivingRequestUrlProvider.php b/core/CronArchive/SegmentArchivingRequestUrlProvider.php
index f60b7e073a..65abe86c32 100644
--- a/core/CronArchive/SegmentArchivingRequestUrlProvider.php
+++ b/core/CronArchive/SegmentArchivingRequestUrlProvider.php
@@ -25,6 +25,7 @@ class SegmentArchivingRequestUrlProvider
{
const BEGINNING_OF_TIME = 'beginning_of_time';
const CREATION_TIME = 'segment_creation_time';
+ const LAST_EDIT_TIME = 'segment_last_edit_time';
/**
* @var Model
@@ -60,9 +61,7 @@ class SegmentArchivingRequestUrlProvider
public function getUrlParameterDateString($idSite, $period, $date, $segment)
{
- $segmentCreatedTime = $this->getCreatedTimeOfSegment($idSite, $segment);
-
- $oldestDateToProcessForNewSegment = $this->getOldestDateToProcessForNewSegment($segmentCreatedTime);
+ $oldestDateToProcessForNewSegment = $this->getOldestDateToProcessForNewSegment($idSite, $segment);
if (empty($oldestDateToProcessForNewSegment)) {
return $date;
}
@@ -96,12 +95,31 @@ class SegmentArchivingRequestUrlProvider
return $date;
}
- private function getOldestDateToProcessForNewSegment(Date $segmentCreatedTime)
+ private function getOldestDateToProcessForNewSegment($idSite, $segment)
{
+ /**
+ * @var Date $segmentCreatedTime
+ * @var Date $segmentLastEditedTime
+ */
+ list($segmentCreatedTime, $segmentLastEditedTime) = $this->getCreatedTimeOfSegment($idSite, $segment);
+
if ($this->processNewSegmentsFrom == self::CREATION_TIME) {
$this->logger->debug("process_new_segments_from set to segment_creation_time, oldest date to process is {time}", array('time' => $segmentCreatedTime));
return $segmentCreatedTime;
+ } elseif ($this->processNewSegmentsFrom == self::LAST_EDIT_TIME) {
+ $this->logger->debug("process_new_segments_from set to segment_last_edit_time, segment last edit time is {time}",
+ array('time' => $segmentLastEditedTime));
+
+ if ($segmentLastEditedTime === null
+ || $segmentLastEditedTime->getTimestamp() < $segmentCreatedTime->getTimestamp()
+ ) {
+ $this->logger->debug("segment last edit time is older than created time, using created time instead");
+
+ $segmentLastEditedTime = $segmentCreatedTime;
+ }
+
+ return $segmentLastEditedTime;
} elseif (preg_match("/^last([0-9]+)$/", $this->processNewSegmentsFrom, $matches)) {
$lastN = $matches[1];
@@ -122,6 +140,8 @@ class SegmentArchivingRequestUrlProvider
{
$segments = $this->getAllSegments();
+ /** @var Date $latestEditTime */
+ $latestEditTime = null;
$earliestCreatedTime = $this->now;
foreach ($segments as $segment) {
if (empty($segment['ts_created'])
@@ -138,6 +158,15 @@ class SegmentArchivingRequestUrlProvider
if ($createdTime->getTimestamp() < $earliestCreatedTime->getTimestamp()) {
$earliestCreatedTime = $createdTime;
}
+
+ if (!empty($segment['ts_last_edit'])) {
+ $lastEditTime = Date::factory($segment['ts_last_edit']);
+ if ($latestEditTime === null
+ || $latestEditTime->getTimestamp() < $lastEditTime->getTimestamp()
+ ) {
+ $latestEditTime = $lastEditTime;
+ }
+ }
}
}
@@ -147,7 +176,7 @@ class SegmentArchivingRequestUrlProvider
'time' => $earliestCreatedTime
));
- return $earliestCreatedTime;
+ return array($earliestCreatedTime, $latestEditTime);
}
private function getAllSegments()