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:
authorJulien Moumné <julien@piwik.org>2013-05-19 12:18:32 +0400
committerJulien Moumné <julien@piwik.org>2013-05-19 12:18:32 +0400
commit8a8ce3eccb13c11037b79112513bcbe6ef7e2ccf (patch)
tree83792550c0d26696acd9a48a2780fc435b822842 /plugins
parent1ec86574db8537a1290043820455205e9863ad64 (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.tpl6
-rw-r--r--plugins/ImageGraph/API.php7
-rw-r--r--plugins/MobileMessaging/ReportRenderer/Exception.php2
-rw-r--r--plugins/MobileMessaging/ReportRenderer/Sms.php10
-rw-r--r--plugins/MobileMessaging/templates/SMSReport.tpl14
-rw-r--r--plugins/PDFReports/API.php73
-rw-r--r--plugins/PDFReports/Controller.php11
-rw-r--r--plugins/PDFReports/PDFReports.php74
-rw-r--r--plugins/PDFReports/templates/add.tpl19
-rw-r--r--plugins/PDFReports/templates/list.tpl12
-rw-r--r--plugins/PDFReports/templates/pdf.js2
-rw-r--r--plugins/SegmentEditor/API.php6
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);