diff options
Diffstat (limited to 'plugins/Annotations/Controller.php')
-rwxr-xr-x | plugins/Annotations/Controller.php | 406 |
1 files changed, 198 insertions, 208 deletions
diff --git a/plugins/Annotations/Controller.php b/plugins/Annotations/Controller.php index 0a235a2200..9b9f9e352c 100755 --- a/plugins/Annotations/Controller.php +++ b/plugins/Annotations/Controller.php @@ -11,216 +11,206 @@ /** * Controller for the Annotations plugin. - * + * * @package Piwik_Annotations */ class Piwik_Annotations_Controller extends Piwik_Controller { - /** - * Controller action that returns HTML displaying annotations for a site and - * specific date range. - * - * Query Param Input: - * - idSite: The ID of the site to get annotations for. Only one allowed. - * - date: The date to get annotations for. If lastN is not supplied, this is the start date, - * otherwise the start date in the last period. - * - period: The period type. - * - lastN: If supplied, the last N # of periods will be included w/ the range specified - * by date + period. - * - * Output: - * - HTML displaying annotations for a specific range. - * - * @param bool $fetch True if the annotation manager should be returned as a string, - * false if it should be echo-ed. - * @param string $date Override for 'date' query parameter. - * @param string $period Override for 'period' query parameter. - * @param string $lastN Override for 'lastN' query parameter. - * @return string|void - */ - public function getAnnotationManager( $fetch = false, $date = false, $period = false, $lastN = false ) - { - $idSite = Piwik_Common::getRequestVar('idSite'); - - if ($date === false) - { - $date = Piwik_Common::getRequestVar('date', false); - } - - if ($period === false) - { - $period = Piwik_Common::getRequestVar('period', 'day'); - } - - if ($lastN === false) - { - $lastN = Piwik_Common::getRequestVar('lastN', false); - } - - // create & render the view - $view = Piwik_View::factory('annotationManager'); - - $allAnnotations = Piwik_API_Request::processRequest( - 'Annotations.getAll', array('date' => $date, 'period' => $period, 'lastN' => $lastN)); - $view->annotations = empty($allAnnotations[$idSite]) ? array() : $allAnnotations[$idSite]; - - $view->period = $period; - $view->lastN = $lastN; - - list($startDate, $endDate) = Piwik_Annotations_API::getDateRangeForPeriod($date, $period, $lastN); - $view->startDate = $startDate->toString(); - $view->endDate = $endDate->toString(); - - $dateFormat = Piwik_Translate('CoreHome_ShortDateFormatWithYear'); - $view->startDatePretty = $startDate->getLocalized($dateFormat); - $view->endDatePretty = $endDate->getLocalized($dateFormat); - - $view->canUserAddNotes = Piwik_Annotations_AnnotationList::canUserAddNotesFor($idSite); - - if ($fetch) - { - return $view->render(); - } - else - { - echo $view->render(); - } - } - - /** - * Controller action that modifies an annotation and returns HTML displaying - * the modified annotation. - * - * Query Param Input: - * - idSite: The ID of the site the annotation belongs to. Only one ID is allowed. - * - idNote: The ID of the annotation. - * - date: The new date value for the annotation. (optional) - * - note: The new text for the annotation. (optional) - * - starred: Either 1 or 0. Whether the note should be starred or not. (optional) - * - * Output: - * - HTML displaying modified annotation. - * - * If an optional query param is not supplied, that part of the annotation is - * not modified. - */ - public function saveAnnotation() - { - if ($_SERVER["REQUEST_METHOD"] == "POST") - { - $this->checkTokenInUrl(); - - $view = Piwik_View::factory('annotation'); - - // NOTE: permissions checked in API method - // save the annotation - $view->annotation = Piwik_API_Request::processRequest("Annotations.save"); - - echo $view->render(); - } - } - - /** - * Controller action that adds a new annotation for a site and returns new - * annotation manager HTML for the site and date range. - * - * Query Param Input: - * - idSite: The ID of the site to add an annotation to. - * - date: The date for the new annotation. - * - note: The text of the annotation. - * - starred: Either 1 or 0, whether the annotation should be starred or not. - * Defaults to 0. - * - managerDate: The date for the annotation manager. If a range is given, the start - * date is used for the new annotation. - * - managerPeriod: For rendering the annotation manager. @see self::getAnnotationManager - * for more info. - * - lastN: For rendering the annotation manager. @see self::getAnnotationManager - * for more info. - * Output: - * - @see self::getAnnotationManager - */ - public function addAnnotation() - { - if ($_SERVER["REQUEST_METHOD"] == "POST") - { - $this->checkTokenInUrl(); - - // the date used is for the annotation manager HTML that gets echo'd. we - // use this date for the new annotation, unless it is a date range, in - // which case we use the first date of the range. - $date = Piwik_Common::getRequestVar('date'); - if (strpos($date, ',') !== false) - { - $date = reset(explode(',', $date)); - } - - // add the annotation. NOTE: permissions checked in API method - Piwik_API_Request::processRequest("Annotations.add", array('date' => $date)); - - $managerDate = Piwik_Common::getRequestVar('managerDate', false); - $managerPeriod = Piwik_Common::getRequestVar('managerPeriod', false); - echo $this->getAnnotationManager($fetch = true, $managerDate, $managerPeriod); - } - } - - /** - * Controller action that deletes an annotation and returns new annotation - * manager HTML for the site & date range. - * - * Query Param Input: - * - idSite: The ID of the site this annotation belongs to. - * - idNote: The ID of the annotation to delete. - * - date: For rendering the annotation manager. @see self::getAnnotationManager - * for more info. - * - period: For rendering the annotation manager. @see self::getAnnotationManager - * for more info. - * - lastN: For rendering the annotation manager. @see self::getAnnotationManager - * for more info. - * - * Output: - * - @see self::getAnnotationManager - */ - public function deleteAnnotation() - { - if ($_SERVER["REQUEST_METHOD"] == "POST") - { - $this->checkTokenInUrl(); - - // delete annotation. NOTE: permissions checked in API method - Piwik_API_Request::processRequest("Annotations.delete"); - - echo $this->getAnnotationManager($fetch = true); - } - } - - /** - * Controller action that echo's HTML that displays marker icons for an - * evolution graph's x-axis. The marker icons still need to be positioned - * by the JavaScript. - * - * Query Param Input: - * - idSite: The ID of the site this annotation belongs to. Only one is allowed. - * - date: The date to check for annotations. If lastN is not supplied, this is - * the start of the date range used to check for annotations. If supplied, - * this is the start of the last period in the date range. - * - period: The period type. - * - lastN: If supplied, the last N # of periods are included in the date range - * used to check for annotations. - * - * Output: - * - HTML that displays marker icons for an evolution graph based on the - * number of annotations & starred annotations in the graph's date range. - */ - public function getEvolutionIcons() - { - // get annotation the count - $annotationCounts = Piwik_API_Request::processRequest( - "Annotations.getAnnotationCountForDates", array('getAnnotationText' => 1)); - - // create & render the view - $view = Piwik_View::factory('evolutionAnnotations'); - $view->annotationCounts = reset($annotationCounts); // only one idSite allowed for this action - - echo $view->render(); - } + /** + * Controller action that returns HTML displaying annotations for a site and + * specific date range. + * + * Query Param Input: + * - idSite: The ID of the site to get annotations for. Only one allowed. + * - date: The date to get annotations for. If lastN is not supplied, this is the start date, + * otherwise the start date in the last period. + * - period: The period type. + * - lastN: If supplied, the last N # of periods will be included w/ the range specified + * by date + period. + * + * Output: + * - HTML displaying annotations for a specific range. + * + * @param bool $fetch True if the annotation manager should be returned as a string, + * false if it should be echo-ed. + * @param string $date Override for 'date' query parameter. + * @param string $period Override for 'period' query parameter. + * @param string $lastN Override for 'lastN' query parameter. + * @return string|void + */ + public function getAnnotationManager($fetch = false, $date = false, $period = false, $lastN = false) + { + $idSite = Piwik_Common::getRequestVar('idSite'); + + if ($date === false) { + $date = Piwik_Common::getRequestVar('date', false); + } + + if ($period === false) { + $period = Piwik_Common::getRequestVar('period', 'day'); + } + + if ($lastN === false) { + $lastN = Piwik_Common::getRequestVar('lastN', false); + } + + // create & render the view + $view = Piwik_View::factory('annotationManager'); + + $allAnnotations = Piwik_API_Request::processRequest( + 'Annotations.getAll', array('date' => $date, 'period' => $period, 'lastN' => $lastN)); + $view->annotations = empty($allAnnotations[$idSite]) ? array() : $allAnnotations[$idSite]; + + $view->period = $period; + $view->lastN = $lastN; + + list($startDate, $endDate) = Piwik_Annotations_API::getDateRangeForPeriod($date, $period, $lastN); + $view->startDate = $startDate->toString(); + $view->endDate = $endDate->toString(); + + $dateFormat = Piwik_Translate('CoreHome_ShortDateFormatWithYear'); + $view->startDatePretty = $startDate->getLocalized($dateFormat); + $view->endDatePretty = $endDate->getLocalized($dateFormat); + + $view->canUserAddNotes = Piwik_Annotations_AnnotationList::canUserAddNotesFor($idSite); + + if ($fetch) { + return $view->render(); + } else { + echo $view->render(); + } + } + + /** + * Controller action that modifies an annotation and returns HTML displaying + * the modified annotation. + * + * Query Param Input: + * - idSite: The ID of the site the annotation belongs to. Only one ID is allowed. + * - idNote: The ID of the annotation. + * - date: The new date value for the annotation. (optional) + * - note: The new text for the annotation. (optional) + * - starred: Either 1 or 0. Whether the note should be starred or not. (optional) + * + * Output: + * - HTML displaying modified annotation. + * + * If an optional query param is not supplied, that part of the annotation is + * not modified. + */ + public function saveAnnotation() + { + if ($_SERVER["REQUEST_METHOD"] == "POST") { + $this->checkTokenInUrl(); + + $view = Piwik_View::factory('annotation'); + + // NOTE: permissions checked in API method + // save the annotation + $view->annotation = Piwik_API_Request::processRequest("Annotations.save"); + + echo $view->render(); + } + } + + /** + * Controller action that adds a new annotation for a site and returns new + * annotation manager HTML for the site and date range. + * + * Query Param Input: + * - idSite: The ID of the site to add an annotation to. + * - date: The date for the new annotation. + * - note: The text of the annotation. + * - starred: Either 1 or 0, whether the annotation should be starred or not. + * Defaults to 0. + * - managerDate: The date for the annotation manager. If a range is given, the start + * date is used for the new annotation. + * - managerPeriod: For rendering the annotation manager. @see self::getAnnotationManager + * for more info. + * - lastN: For rendering the annotation manager. @see self::getAnnotationManager + * for more info. + * Output: + * - @see self::getAnnotationManager + */ + public function addAnnotation() + { + if ($_SERVER["REQUEST_METHOD"] == "POST") { + $this->checkTokenInUrl(); + + // the date used is for the annotation manager HTML that gets echo'd. we + // use this date for the new annotation, unless it is a date range, in + // which case we use the first date of the range. + $date = Piwik_Common::getRequestVar('date'); + if (strpos($date, ',') !== false) { + $date = reset(explode(',', $date)); + } + + // add the annotation. NOTE: permissions checked in API method + Piwik_API_Request::processRequest("Annotations.add", array('date' => $date)); + + $managerDate = Piwik_Common::getRequestVar('managerDate', false); + $managerPeriod = Piwik_Common::getRequestVar('managerPeriod', false); + echo $this->getAnnotationManager($fetch = true, $managerDate, $managerPeriod); + } + } + + /** + * Controller action that deletes an annotation and returns new annotation + * manager HTML for the site & date range. + * + * Query Param Input: + * - idSite: The ID of the site this annotation belongs to. + * - idNote: The ID of the annotation to delete. + * - date: For rendering the annotation manager. @see self::getAnnotationManager + * for more info. + * - period: For rendering the annotation manager. @see self::getAnnotationManager + * for more info. + * - lastN: For rendering the annotation manager. @see self::getAnnotationManager + * for more info. + * + * Output: + * - @see self::getAnnotationManager + */ + public function deleteAnnotation() + { + if ($_SERVER["REQUEST_METHOD"] == "POST") { + $this->checkTokenInUrl(); + + // delete annotation. NOTE: permissions checked in API method + Piwik_API_Request::processRequest("Annotations.delete"); + + echo $this->getAnnotationManager($fetch = true); + } + } + + /** + * Controller action that echo's HTML that displays marker icons for an + * evolution graph's x-axis. The marker icons still need to be positioned + * by the JavaScript. + * + * Query Param Input: + * - idSite: The ID of the site this annotation belongs to. Only one is allowed. + * - date: The date to check for annotations. If lastN is not supplied, this is + * the start of the date range used to check for annotations. If supplied, + * this is the start of the last period in the date range. + * - period: The period type. + * - lastN: If supplied, the last N # of periods are included in the date range + * used to check for annotations. + * + * Output: + * - HTML that displays marker icons for an evolution graph based on the + * number of annotations & starred annotations in the graph's date range. + */ + public function getEvolutionIcons() + { + // get annotation the count + $annotationCounts = Piwik_API_Request::processRequest( + "Annotations.getAnnotationCountForDates", array('getAnnotationText' => 1)); + + // create & render the view + $view = Piwik_View::factory('evolutionAnnotations'); + $view->annotationCounts = reset($annotationCounts); // only one idSite allowed for this action + + echo $view->render(); + } } |