| <?php |
|
|
| |
| |
| |
| |
| |
| |
|
|
| namespace Piwik\Archiver; |
|
|
| class Request |
| { |
| |
| |
| |
| |
| public const ABORT = 'abort'; |
|
|
| |
| |
| |
| private $url; |
|
|
| |
| |
| |
| private $before; |
|
|
| |
| |
| |
| public function __construct($url) |
| { |
| $this->setUrl($url); |
| } |
|
|
| public function before($callable) |
| { |
| $this->before = $callable; |
| } |
|
|
| public function start() |
| { |
| if ($this->before) { |
| return call_user_func($this->before); |
| } |
| } |
|
|
| public function __toString() |
| { |
| return $this->url; |
| } |
|
|
| |
| |
| |
| public function getUrl() |
| { |
| return $this->url; |
| } |
|
|
| |
| |
| |
| public function setUrl($url) |
| { |
| $this->url = $url; |
| } |
|
|
| public function changeDate($newDate) |
| { |
| $this->changeParam('date', $newDate); |
| } |
|
|
| public function makeSureDateIsNotSingleDayRange() |
| { |
| |
| |
| if (preg_match('/[&?]period=range/', $this->url)) { |
| if (preg_match('/[&?]date=last1/', $this->url)) { |
| $this->changeParam('period', 'day'); |
| $this->changeParam('date', 'today'); |
| } elseif (preg_match('/[&?]date=previous1/', $this->url)) { |
| $this->changeParam('period', 'day'); |
| $this->changeParam('date', 'yesterday'); |
| } elseif ( |
| preg_match('/[&?]date=([^,]+),([^,&]+)/', $this->url, $matches) |
| && $matches[1] == $matches[2] |
| ) { |
| $this->changeParam('period', 'day'); |
| $this->changeParam('date', $matches[1]); |
| } |
| } |
| } |
|
|
| public function changeParam($name, $newValue) |
| { |
| $url = $this->getUrl(); |
| $url = preg_replace('/([&?])' . preg_quote($name) . '=[^&]*/', '$1' . $name . '=' . $newValue, $url); |
| $this->setUrl($url); |
| } |
| } |
|
|