diff options
author | Julien Moumné <julien@piwik.org> | 2013-05-19 12:18:32 +0400 |
---|---|---|
committer | Julien Moumné <julien@piwik.org> | 2013-05-19 12:18:32 +0400 |
commit | 8a8ce3eccb13c11037b79112513bcbe6ef7e2ccf (patch) | |
tree | 83792550c0d26696acd9a48a2780fc435b822842 /plugins | |
parent | 1ec86574db8537a1290043820455205e9863ad64 (diff) |
ref #71, #3934 - segment selection for scheduled html, pdf & sms reports
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/CoreHome/templates/html_report_header.tpl | 6 | ||||
-rw-r--r-- | plugins/ImageGraph/API.php | 7 | ||||
-rw-r--r-- | plugins/MobileMessaging/ReportRenderer/Exception.php | 2 | ||||
-rw-r--r-- | plugins/MobileMessaging/ReportRenderer/Sms.php | 10 | ||||
-rw-r--r-- | plugins/MobileMessaging/templates/SMSReport.tpl | 14 | ||||
-rw-r--r-- | plugins/PDFReports/API.php | 73 | ||||
-rw-r--r-- | plugins/PDFReports/Controller.php | 11 | ||||
-rw-r--r-- | plugins/PDFReports/PDFReports.php | 74 | ||||
-rw-r--r-- | plugins/PDFReports/templates/add.tpl | 19 | ||||
-rw-r--r-- | plugins/PDFReports/templates/list.tpl | 12 | ||||
-rw-r--r-- | plugins/PDFReports/templates/pdf.js | 2 | ||||
-rw-r--r-- | plugins/SegmentEditor/API.php | 6 |
12 files changed, 199 insertions, 37 deletions
diff --git a/plugins/CoreHome/templates/html_report_header.tpl b/plugins/CoreHome/templates/html_report_header.tpl index a8c289a060..ecca962ee1 100644 --- a/plugins/CoreHome/templates/html_report_header.tpl +++ b/plugins/CoreHome/templates/html_report_header.tpl @@ -15,6 +15,12 @@ {$description} - {'General_DateRange'|translate} {$prettyDate} </p> +{if $displaySegment} + <p style="color: rgb({$reportTitleTextColor});"> + {'PDFReports_CustomVisitorSegment'|translate:"Piwik"} {$segmentName} + </p> +{/if} + {if sizeof($reportMetadata) > 1} <h2 style="color: rgb({$reportTitleTextColor}); font-size: {$reportTitleTextSize}pt;"> {'PDFReports_TableOfContent'|translate} diff --git a/plugins/ImageGraph/API.php b/plugins/ImageGraph/API.php index 916589e683..d80572bec0 100644 --- a/plugins/ImageGraph/API.php +++ b/plugins/ImageGraph/API.php @@ -129,7 +129,8 @@ class Piwik_ImageGraph_API $backgroundColor = Piwik_ImageGraph_API::DEFAULT_BACKGROUND_COLOR, $gridColor = Piwik_ImageGraph_API::DEFAULT_GRID_COLOR, $idSubtable = false, - $legendAppendMetric = true + $legendAppendMetric = true, + $segment = false ) { Piwik::checkUserHasViewAccess($idSite); @@ -296,7 +297,7 @@ class Piwik_ImageGraph_API $apiModule, $apiAction, $labels, - $segment = false, + $segment, $plottedMetric, $languageLoaded, $idGoal, @@ -352,7 +353,7 @@ class Piwik_ImageGraph_API $date, $apiModule, $apiAction, - $segment = false, + $segment, $apiParameters = false, $idGoal, $languageLoaded, diff --git a/plugins/MobileMessaging/ReportRenderer/Exception.php b/plugins/MobileMessaging/ReportRenderer/Exception.php index 5fa5796895..c6cdacf36b 100644 --- a/plugins/MobileMessaging/ReportRenderer/Exception.php +++ b/plugins/MobileMessaging/ReportRenderer/Exception.php @@ -59,7 +59,7 @@ class Piwik_MobileMessaging_ReportRenderer_Exception extends Piwik_ReportRendere return $this->rendering; } - public function renderFrontPage($reportTitle, $prettyDate, $description, $reportMetadata) + public function renderFrontPage($reportTitle, $prettyDate, $description, $reportMetadata, $segment) { // nothing to do } diff --git a/plugins/MobileMessaging/ReportRenderer/Sms.php b/plugins/MobileMessaging/ReportRenderer/Sms.php index d492dc1281..734484f3bf 100644 --- a/plugins/MobileMessaging/ReportRenderer/Sms.php +++ b/plugins/MobileMessaging/ReportRenderer/Sms.php @@ -47,7 +47,7 @@ class Piwik_MobileMessaging_ReportRenderer_Sms extends Piwik_ReportRenderer return $this->rendering; } - public function renderFrontPage($reportTitle, $prettyDate, $description, $reportMetadata) + public function renderFrontPage($reportTitle, $prettyDate, $description, $reportMetadata, $segment) { // nothing to do } @@ -121,6 +121,14 @@ class Piwik_MobileMessaging_ReportRenderer_Sms extends Piwik_ReportRenderer $smarty->assign("siteHasECommerce", $siteHasECommerce); $smarty->assign("displaySiteName", $processedReport['metadata']['action'] == 'getAll'); + // segment + $segment = $processedReport['segment']; + $displaySegment = ($segment != null); + $smarty->assign("displaySegment", $displaySegment); + if ($displaySegment) { + $smarty->assign("segmentName", $segment['name']); + } + $this->rendering .= $smarty->fetch(PIWIK_USER_PATH . '/plugins/MobileMessaging/templates/SMSReport.tpl'); } } diff --git a/plugins/MobileMessaging/templates/SMSReport.tpl b/plugins/MobileMessaging/templates/SMSReport.tpl index c74ea165c4..99ea815508 100644 --- a/plugins/MobileMessaging/templates/SMSReport.tpl +++ b/plugins/MobileMessaging/templates/SMSReport.tpl @@ -1,5 +1,9 @@ {strip} - {$prettyDate}.{literal} {/literal} + {$prettyDate} + {if $displaySegment} + ,{literal} {/literal}{$segmentName} + {/if} + .{literal} {/literal} {if empty($reportRows)} {'CoreHome_ThereIsNoDataForThisReport'|translate} @@ -14,7 +18,7 @@ {$rowMetrics.label}:{literal} {/literal} {/if} - {*visits*} + {*visits*} {$rowMetrics.nb_visits} {'General_ColumnNbVisits'|translate} {if $rowMetrics.visits_evolution != 0} {literal} {/literal}({$rowMetrics.visits_evolution}%) @@ -22,7 +26,7 @@ {if $rowMetrics.nb_visits != 0} - {*actions*} + {*actions*} ,{literal} {/literal} {$rowMetrics.nb_actions} {'General_ColumnNbActions'|translate} {if $rowMetrics.actions_evolution != 0} @@ -31,7 +35,7 @@ {if $isGoalPluginEnabled} - {*goal metrics*} + {*goal metrics*} {if $rowMetrics.nb_conversions != 0} ,{literal} {/literal} @@ -47,7 +51,7 @@ {/if} {/if} - {*eCommerce metrics*} + {*eCommerce metrics*} {if $siteHasECommerce[$rowMetadata.idsite]} ,{literal} {/literal} diff --git a/plugins/PDFReports/API.php b/plugins/PDFReports/API.php index aacba73e00..e65d6bbe36 100644 --- a/plugins/PDFReports/API.php +++ b/plugins/PDFReports/API.php @@ -76,10 +76,11 @@ class Piwik_PDFReports_API * @param string $reportFormat 'pdf', 'html' or any other format provided via the PDFReports.getReportFormats hook * @param array $reports array of reports * @param array $parameters array of parameters + * @param int $idSegment Segment Identifier * * @return int idReport generated */ - public function addReport($idSite, $description, $period, $hour, $reportType, $reportFormat, $reports, $parameters) + public function addReport($idSite, $description, $period, $hour, $reportType, $reportFormat, $reports, $parameters, $idSegment = false) { Piwik::checkUserIsNotAnonymous(); Piwik::checkUserHasViewAccess($idSite); @@ -87,7 +88,7 @@ class Piwik_PDFReports_API $currentUser = Piwik::getCurrentUserLogin(); self::ensureLanguageSetForUser($currentUser); - self::validateCommonReportAttributes($period, $hour, $description, $reportType, $reportFormat); + self::validateCommonReportAttributes($period, $hour, $description, $idSegment, $reportType, $reportFormat); // report parameters validations $parameters = self::validateReportParameters($reportType, $parameters); @@ -108,6 +109,7 @@ class Piwik_PDFReports_API 'idsite' => $idSite, 'login' => $currentUser, 'description' => $description, + 'idsegment' => $idSegment, 'period' => $period, 'hour' => $hour, 'type' => $reportType, @@ -134,7 +136,7 @@ class Piwik_PDFReports_API * * @see addReport() */ - public function updateReport($idReport, $idSite, $description, $period, $hour, $reportType, $reportFormat, $reports, $parameters) + public function updateReport($idReport, $idSite, $description, $period, $hour, $reportType, $reportFormat, $reports, $parameters, $idSegment = false) { Piwik::checkUserIsNotAnonymous(); Piwik::checkUserHasViewAccess($idSite); @@ -146,7 +148,7 @@ class Piwik_PDFReports_API $currentUser = Piwik::getCurrentUserLogin(); self::ensureLanguageSetForUser($currentUser); - self::validateCommonReportAttributes($period, $hour, $description, $reportType, $reportFormat); + self::validateCommonReportAttributes($period, $hour, $description, $idSegment, $reportType, $reportFormat); // report parameters validations $parameters = self::validateReportParameters($reportType, $parameters); @@ -157,6 +159,7 @@ class Piwik_PDFReports_API Zend_Registry::get('db')->update(Piwik_Common::prefixTable('report'), array( 'description' => $description, + 'idsegment' => $idSegment, 'period' => $period, 'hour' => $hour, 'type' => $reportType, @@ -199,10 +202,11 @@ class Piwik_PDFReports_API * @param int $idSite If specified, will filter reports that belong to a specific idsite * @param string $period If specified, will filter reports that are scheduled for this period (day,week,month) * @param int $idReport If specified, will filter the report that has the given idReport + * @param int $idSegment If specified, will filter the report that has the given idSegment * @return array * @throws Exception if $idReport was specified but the report wasn't found */ - public function getReports($idSite = false, $period = false, $idReport = false, $ifSuperUserReturnOnlySuperUserReports = false) + public function getReports($idSite = false, $period = false, $idReport = false, $ifSuperUserReturnOnlySuperUserReports = false, $idSegment = false) { Piwik::checkUserHasSomeViewAccess(); $cacheKey = (int)$idSite . '.' . (string)$period . '.' . (int)$idReport . '.' . (int)$ifSuperUserReturnOnlySuperUserReports; @@ -235,6 +239,10 @@ class Piwik_PDFReports_API $sqlWhere .= " AND idreport = ?"; $bind[] = $idReport; } + if (!empty($idSegment)) { + $sqlWhere .= " AND idsegment = ?"; + $bind[] = $idSegment; + } // Joining with the site table to work around pre-1.3 where reports could still be linked to a deleted site $reports = Piwik_FetchAll("SELECT * @@ -330,6 +338,7 @@ class Piwik_PDFReports_API $prettyDate = null; $processedReports = array(); + $segment = self::getSegment($report['idsegment']); foreach ($reportMetadata as $action) { $apiModule = $action['module']; $apiAction = $action['action']; @@ -361,9 +370,12 @@ class Piwik_PDFReports_API $processedReport = Piwik_API_API::getInstance()->getProcessedReport( $idSite, $period, $date, $apiModule, $apiAction, - $segment = false, $apiParameters, $idGoal = false, $language + $segment != null ? $segment['definition'] : false, + $apiParameters, $idGoal = false, $language ); + $processedReport['segment'] = $segment; + // TODO add static method getPrettyDate($period, $date) in Piwik_Period $prettyDate = $processedReport['prettyDate']; @@ -409,7 +421,7 @@ class Piwik_PDFReports_API list($reportSubject, $reportTitle) = self::getReportSubjectAndReportTitle(Piwik_Site::getNameFor($idSite), $report['reports']); $filename = "$reportTitle - $prettyDate - $description"; - $reportRenderer->renderFrontPage($reportTitle, $prettyDate, $description, $reportMetadata); + $reportRenderer->renderFrontPage($reportTitle, $prettyDate, $description, $reportMetadata, $segment); array_walk($processedReports, array($reportRenderer, 'renderReport')); switch ($outputType) { @@ -429,7 +441,8 @@ class Piwik_PDFReports_API $report['metadata'], Piwik_ReportRenderer_Html::IMAGE_GRAPH_WIDTH, Piwik_ReportRenderer_Html::IMAGE_GRAPH_HEIGHT, - $report['evolutionGraph'] + $report['evolutionGraph'], + $segment ); $additionalFile['mimeType'] = 'image/png'; $additionalFile['encoding'] = Zend_Mime::ENCODING_BASE64; @@ -609,11 +622,12 @@ class Piwik_PDFReports_API return Piwik_Common::json_encode($requestedReports); } - private static function validateCommonReportAttributes($period, $hour, &$description, $reportType, $reportFormat) + private static function validateCommonReportAttributes($period, $hour, &$description, &$idSegment, $reportType, $reportFormat) { self::validateReportPeriod($period); self::validateReportHour($hour); self::validateAndTruncateDescription($description); + self::validateIdSegment($idSegment); self::validateReportType($reportType); self::validateReportFormat($reportType, $reportFormat); } @@ -633,6 +647,22 @@ class Piwik_PDFReports_API } } + private static function validateIdSegment(&$idSegment) + { + if (empty($idSegment) || (is_numeric($idSegment) && $idSegment == 0)) { + + $idSegment = null; + + } elseif (!is_numeric($idSegment)) { + + throw new Exception('Invalid segment identifier. Should be an integer.'); + + } elseif (self::getSegment($idSegment) == null) { + + throw new Exception('Segment with id ' . $idSegment . ' does not exist or SegmentEditor is not activated.'); + } + } + private static function validateReportType($reportType) { $reportTypes = array_keys(self::getReportTypes()); @@ -740,4 +770,29 @@ class Piwik_PDFReports_API return $recipients; } + + /** + * @ignore + */ + static public function getSegment($idSegment) + { + if (self::isSegmentEditorActivated() && !empty($idSegment)) { + + $segment = Piwik_SegmentEditor_API::getInstance()->get($idSegment); + + if ($segment) { + return $segment; + } + } + + return null; + } + + /** + * @ignore + */ + public static function isSegmentEditorActivated() + { + return Piwik_PluginsManager::getInstance()->isPluginActivated('SegmentEditor'); + } } diff --git a/plugins/PDFReports/Controller.php b/plugins/PDFReports/Controller.php index 32e879c66d..c91a527789 100644 --- a/plugins/PDFReports/Controller.php +++ b/plugins/PDFReports/Controller.php @@ -70,6 +70,17 @@ class Piwik_PDFReports_Controller extends Piwik_Controller $view->language = Piwik_LanguagesManager::getLanguageCodeForCurrentUser(); + $view->segmentEditorActivated = false; + if (Piwik_PDFReports_API::isSegmentEditorActivated()) { + + $savedSegmentsById = array(); + foreach (Piwik_SegmentEditor_API::getInstance()->getAll($this->idSite) as $savedSegment) { + $savedSegmentsById[$savedSegment['idsegment']] = $savedSegment['name']; + } + $view->savedSegmentsById = $savedSegmentsById; + $view->segmentEditorActivated = true; + } + echo $view->render(); } } diff --git a/plugins/PDFReports/PDFReports.php b/plugins/PDFReports/PDFReports.php index 7c8075c172..fc718235f4 100644 --- a/plugins/PDFReports/PDFReports.php +++ b/plugins/PDFReports/PDFReports.php @@ -67,22 +67,23 @@ class Piwik_PDFReports extends Piwik_Plugin public function getListHooksRegistered() { return array( - 'TopMenu.add' => 'addTopMenu', - 'TaskScheduler.getScheduledTasks' => 'getScheduledTasks', - 'AssetManager.getJsFiles' => 'getJsFiles', - 'PDFReports.getReportParameters' => 'getReportParameters', - 'PDFReports.validateReportParameters' => 'validateReportParameters', - 'PDFReports.getReportMetadata' => 'getReportMetadata', - 'PDFReports.getReportTypes' => 'getReportTypes', - 'PDFReports.getReportFormats' => 'getReportFormats', - 'PDFReports.getRendererInstance' => 'getRendererInstance', - 'PDFReports.getReportRecipients' => 'getReportRecipients', - 'PDFReports.processReports' => 'processReports', - 'PDFReports.allowMultipleReports' => 'allowMultipleReports', - 'PDFReports.sendReport' => 'sendReport', - 'template_reportParametersPDFReports' => 'template_reportParametersPDFReports', - 'UsersManager.deleteUser' => 'deleteUserReport', - 'SitesManager.deleteSite' => 'deleteSiteReport', + 'TopMenu.add' => 'addTopMenu', + 'TaskScheduler.getScheduledTasks' => 'getScheduledTasks', + 'AssetManager.getJsFiles' => 'getJsFiles', + 'PDFReports.getReportParameters' => 'getReportParameters', + 'PDFReports.validateReportParameters' => 'validateReportParameters', + 'PDFReports.getReportMetadata' => 'getReportMetadata', + 'PDFReports.getReportTypes' => 'getReportTypes', + 'PDFReports.getReportFormats' => 'getReportFormats', + 'PDFReports.getRendererInstance' => 'getRendererInstance', + 'PDFReports.getReportRecipients' => 'getReportRecipients', + 'PDFReports.processReports' => 'processReports', + 'PDFReports.allowMultipleReports' => 'allowMultipleReports', + 'PDFReports.sendReport' => 'sendReport', + 'template_reportParametersPDFReports' => 'template_reportParametersPDFReports', + 'UsersManager.deleteUser' => 'deleteUserReport', + 'SitesManager.deleteSite' => 'deleteSiteReport', + Piwik_SegmentEditor_API::DELETE_SEGMENT_EVENT => 'segmentDeletion', ); } @@ -323,18 +324,36 @@ class Piwik_PDFReports extends Piwik_Plugin $attachmentName = $subject; $mail->setFrom($fromEmailAddress, $fromEmailName); + $displaySegmentInfo = false; + $segmentInfo = null; + $segment = Piwik_PDFReports_API::getSegment($report['idsegment']); + if($segment != null) { + $displaySegmentInfo = true; + $segmentInfo = Piwik_Translate('PDFReports_SegmentAppliedToReports', $segment['name']); + } + switch ($report['format']) { case 'html': // Needed when using images as attachment with cid $mail->setType(Zend_Mime::MULTIPART_RELATED); $message .= "<br/>" . Piwik_Translate('PDFReports_PleaseFindBelow', array($periods[$report['period']], $reportTitle)); + + if($displaySegmentInfo) { + $message .= " " . $segmentInfo; + } + $mail->setBodyHtml($message . "<br/><br/>" . $contents); break; default: case 'pdf': $message .= "\n" . Piwik_Translate('PDFReports_PleaseFindAttachedFile', array($periods[$report['period']], $reportTitle)); + + if($displaySegmentInfo) { + $message .= " " . $segmentInfo; + } + $mail->setBodyText($message); $mail->createAttachment( $contents, @@ -487,6 +506,28 @@ class Piwik_PDFReports extends Piwik_Plugin } } + /** + * @param Piwik_Event_Notification $notification notification object + */ + function segmentDeletion($notification) + { + $idSegment = & $notification->getNotificationObject(); + $reportsUsingSegment = Piwik_PDFReports_API::getInstance()->getReports(false, false, false, true, $idSegment); + + if (count($reportsUsingSegment) > 0) { + + $reportList = ''; + $reportNameJoinText = ' ' . Piwik_Translate('General_And') . ' '; + foreach ($reportsUsingSegment as $report) { + $reportList .= '\'' . $report['description'] . '\'' . $reportNameJoinText; + } + $reportList = rtrim($reportList, $reportNameJoinText); + + $errorMessage = Piwik_Translate('PDFReports_Segment_Deletion_Error', $reportList); + throw new Exception($errorMessage); + } + } + function addTopMenu() { Piwik_AddTopMenu( @@ -555,6 +596,7 @@ class Piwik_PDFReports extends Piwik_Plugin `idsite` INTEGER(11) NOT NULL, `login` VARCHAR(100) NOT NULL, `description` VARCHAR(255) NOT NULL, + `idsegment` INT(11), `period` VARCHAR(10) NOT NULL, `hour` tinyint NOT NULL default 0, `type` VARCHAR(10) NOT NULL, diff --git a/plugins/PDFReports/templates/add.tpl b/plugins/PDFReports/templates/add.tpl index 2149863a57..d9c07cfb87 100644 --- a/plugins/PDFReports/templates/add.tpl +++ b/plugins/PDFReports/templates/add.tpl @@ -27,6 +27,25 @@ </div> </td> </tr> + {if $segmentEditorActivated} + <tr> + <td class="first">{'SegmentEditor_ChooseASegment'|translate} </td> + <td> + <select id='report_segment'> + <option value="">{'SegmentEditor_DefaultAllVisits'|translate}</option> + {foreach from=$savedSegmentsById key=savedSegmentId item=savedSegmentName} + <option value="{$savedSegmentId}">{$savedSegmentName}</option> + {/foreach} + </select> + + <div class="entityInlineHelp"> + {capture assign='SegmentEditor_DefaultAllVisits'}{'SegmentEditor_DefaultAllVisits'|translate}{/capture} + {capture assign='SegmentEditor_AddNewSegment'}{'SegmentEditor_AddNewSegment'|translate}{/capture} + {'PDFReports_Segment_Help'|translate:'<a href="./" target="_blank">':'</a>':$SegmentEditor_DefaultAllVisits:$SegmentEditor_AddNewSegment} + </div> + </td> + </tr> + {/if} <tr> <td class="first">{'PDFReports_EmailSchedule'|translate}</td> <td> diff --git a/plugins/PDFReports/templates/list.tpl b/plugins/PDFReports/templates/list.tpl index a8368d9ba6..fc7a2ad173 100644 --- a/plugins/PDFReports/templates/list.tpl +++ b/plugins/PDFReports/templates/list.tpl @@ -36,7 +36,15 @@ {else} {foreach from=$reports item=report} <tr> - <td class="first">{$report.description}</td> + <td class="first"> + {$report.description} + + {if $segmentEditorActivated and isset($report.idsegment)} + <div class="entityInlineHelp" style="font-size: 9pt;"> + {$savedSegmentsById[$report.idsegment]} + </div> + {/if} + </td> <td>{$periods[$report.period]} <!-- Last sent on {$report.ts_last_sent} --> </td> @@ -63,7 +71,7 @@ </td> <td> {*download link*} - <a href="{url module=API period=$report.period token_auth=$token_auth method='PDFReports.generateReport' date=$rawDate idReport=$report.idreport outputType=$downloadOutputType language=$language}" + <a href="{url module=API period=$report.period segment=null token_auth=$token_auth method='PDFReports.generateReport' idReport=$report.idreport outputType=$downloadOutputType language=$language}" target="_blank" name="linkDownloadReport" id="{$report.idreport}" class="link_but"> <img src='{$reportFormatsByReportType[$report.type][$report.format]}' border="0"/> {'General_Download'|translate} diff --git a/plugins/PDFReports/templates/pdf.js b/plugins/PDFReports/templates/pdf.js index 266c403adf..f6f3398a1e 100644 --- a/plugins/PDFReports/templates/pdf.js +++ b/plugins/PDFReports/templates/pdf.js @@ -30,6 +30,7 @@ function formSetEditReport(idReport) { toggleReportType(report.type); $('#report_description').html(report.description); + $('#report_segment').find('option[value=' + report.idsegment + ']').prop('selected', 'selected'); $('#report_type').find('option[value=' + report.type + ']').prop('selected', 'selected'); $('#report_period').find('option[value=' + report.period + ']').prop('selected', 'selected'); $('#report_hour').val(report.hour); @@ -74,6 +75,7 @@ function initManagePdf() { var apiParameters = getReportAjaxRequest(idReport, 'PDFReports.updateReport'); apiParameters.idReport = idReport; apiParameters.description = $('#report_description').val(); + apiParameters.idSegment = $('#report_segment').find('option:selected').val(); apiParameters.reportType = $('#report_type').find('option:selected').val(); apiParameters.reportFormat = $('[name=report_format].' + apiParameters.reportType + ' option:selected').val(); diff --git a/plugins/SegmentEditor/API.php b/plugins/SegmentEditor/API.php index cacd742ae6..15915e1e72 100644 --- a/plugins/SegmentEditor/API.php +++ b/plugins/SegmentEditor/API.php @@ -16,6 +16,8 @@ */ class Piwik_SegmentEditor_API { + const DELETE_SEGMENT_EVENT = 'SegmentEditor.delete'; + static private $instance = null; /** @@ -127,6 +129,10 @@ class Piwik_SegmentEditor_API public function delete($idSegment) { $this->checkUserIsNotAnonymous(); + + // allow plugins using the segment to throw an exception or propagate the deletion + Piwik_PostEvent(self::DELETE_SEGMENT_EVENT, $idSegment); + $segment = $this->getSegmentOrFail($idSegment); $db = Zend_Registry::get('db'); $db->delete(Piwik_Common::prefixTable('segment'), 'idsegment = ' . $idSegment); |