| <?php |
|
|
| |
| |
| |
| |
| |
| |
|
|
| namespace Piwik\Plugins\Annotations; |
|
|
| use Piwik\Date; |
| use Piwik\Period; |
| use Piwik\Piwik; |
| use Piwik\Plugins\CoreVisualizations\Visualizations\JqplotGraph\Evolution as EvolutionViz; |
|
|
| |
| |
| |
| |
| |
| class Annotations extends \Piwik\Plugin |
| { |
| |
| |
| |
| public function registerEvents() |
| { |
| return array( |
| 'AssetManager.getStylesheetFiles' => 'getStylesheetFiles', |
| 'AssetManager.getJavaScriptFiles' => 'getJsFiles', |
| 'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys', |
| ); |
| } |
|
|
| public function getClientSideTranslationKeys(&$translationKeys) |
| { |
| $translationKeys[] = 'Intl_Today'; |
| } |
|
|
| |
| |
| |
| public function getStylesheetFiles(&$stylesheets) |
| { |
| $stylesheets[] = "plugins/Annotations/stylesheets/annotations.less"; |
| } |
|
|
| |
| |
| |
| public function getJsFiles(&$jsFiles) |
| { |
| $jsFiles[] = "plugins/Annotations/javascripts/annotations.js"; |
| } |
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| public static function getDateRangeForPeriod($date, $period, $lastN = false, ?int $idSite = null): array |
| { |
| if ($date === false) { |
| return [false, false]; |
| } |
|
|
| $isMultiplePeriod = Period\Range::isMultiplePeriod($date, $period); |
|
|
| |
| if ($period == 'range') { |
| $oPeriod = new Period\Range('day', $date); |
| $startDate = $oPeriod->getDateStart()->getStartOfDay(); |
| $endDate = $oPeriod->getDateEnd()->getStartOfDay(); |
| } elseif ($lastN == false && !$isMultiplePeriod) { |
| $oPeriod = Period\Factory::build($period, Date::factory($date)); |
| $startDate = $oPeriod->getDateStart(); |
| $endDate = $oPeriod->getDateEnd(); |
| } else { |
| if (!$isMultiplePeriod) { |
| [$date, $lastN] = EvolutionViz::getDateRangeAndLastN($period, $date, $lastN, $idSite); |
| } |
| [$startDate, $endDate] = explode(',', $date); |
|
|
| $startDate = Date::factory($startDate); |
| $endDate = Date::factory($endDate); |
| } |
|
|
| |
| |
| |
| $maxAllowedEndDate = Date::factory(Period\Range::getMaxAllowedEndTimestamp()); |
| if ($endDate->isLater($maxAllowedEndDate)) { |
| $endDate = $maxAllowedEndDate; |
| } |
| if ($startDate->isLater($endDate)) { |
| $startDate = $endDate; |
| } |
|
|
| return [$startDate, $endDate]; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| public static function canUserModifyOrDelete(array $annotation): bool |
| { |
| |
| return Piwik::isUserHasWriteAccess($annotation['idsite']) |
| || (!Piwik::isUserIsAnonymous() |
| && Piwik::getCurrentUserLogin() === $annotation['user']); |
| } |
| } |
|
|