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:
authormatt <matt@59fd770c-687e-43c8-a1e3-f5a4ff64c105>2010-08-27 00:06:22 +0400
committermatt <matt@59fd770c-687e-43c8-a1e3-f5a4ff64c105>2010-08-27 00:06:22 +0400
commitc7a3cc929c1e5c8d7a38b6686e5c577b6253ccc4 (patch)
tree9ba300a73aac022cdc4be1ba6448cdde52412052
parentdd363fe6ee8772d1cc9097e1375e4963dbde16ee (diff)
Refs #1538 Merging r2989 from trunk
-rw-r--r--lang/en.php4
-rw-r--r--plugins/PDFReports/API.php110
-rw-r--r--plugins/PDFReports/Controller.php2
-rw-r--r--plugins/PDFReports/PDFReports.php89
-rw-r--r--plugins/PDFReports/templates/list.tpl4
-rw-r--r--plugins/PDFReports/templates/pdf.js10
-rw-r--r--plugins/SitesManager/templates/SitesManager.tpl2
-rw-r--r--themes/default/images/email.pngbin0 -> 754 bytes
8 files changed, 130 insertions, 91 deletions
diff --git a/lang/en.php b/lang/en.php
index eaeb45a4b1..3f385e94f2 100644
--- a/lang/en.php
+++ b/lang/en.php
@@ -18,6 +18,7 @@ $translations = array(
'General_Unknown' => 'Unknown',
'General_Required' => '%s required',
'General_NotValid' => '%s is not valid',
+ 'General_Id' => 'Id',
'General_Error' => 'Error',
'General_Warning' => 'Warning',
'General_BackToHomepage' => 'Back to Piwik homepage',
@@ -690,7 +691,6 @@ $translations = array(
'SitesManager_AddSite' => 'Add a new website',
'SitesManager_NotFound' => 'No websites found for',
'SitesManager_AliasUrlHelp' => "It is recommended, but not required, to specify the various URLs, one per line, that your visitors use to access this website.\nAlias URLs for a website will not appear in the Referrers > Websites report.\nNote that it is not necessary to specify the URLs with and without 'www' as Piwik automatically considers both.",
- 'SitesManager_Id' => 'Id',
'SitesManager_Urls' => 'URLs',
'SitesManager_MenuSites' => 'Websites',
'SitesManager_DeleteConfirm_js' => 'Are you sure you want to delete the website %s?',
@@ -1169,7 +1169,9 @@ $translations = array(
'Widgetize_PluginDescription' => 'The plugin makes it very easy to export any Piwik Widget in your Blog, Website or on Igoogle and Netvibes!',
'PDFReports_PluginDescription' => 'Create and download your custom PDF reports, and have them emailed daily, weekly or monthly.',
'PDFReports_ManagePdfReports' => 'Manage PDF Reports',
+ 'PDFReports_EmailReports' => 'Email Reports',
'PDFReports_PDF' => 'PDF',
+ 'PDFReports_SendReportNow' => 'Send Report now',
'PDFReports_EmailSchedule' => 'Email Schedule',
'PDFReports_SendReportTo' => 'Send report to',
'PDFReports_SentToMe' => 'Send to me',
diff --git a/plugins/PDFReports/API.php b/plugins/PDFReports/API.php
index fb9ee78b7d..d4343efe05 100644
--- a/plugins/PDFReports/API.php
+++ b/plugins/PDFReports/API.php
@@ -103,6 +103,7 @@ class Piwik_PDFReports_API
),
"idreport = '$idReport'"
);
+ self::$cache = array();
}
/**
@@ -122,8 +123,12 @@ class Piwik_PDFReports_API
),
"idreport = '$idReport'"
);
+ self::$cache = array();
}
+ // static cache storing reports
+ public static $cache = array();
+
/**
* Returns the list of PDF reports matching the passed parameters
*
@@ -135,6 +140,12 @@ class Piwik_PDFReports_API
*/
public function getReports($idSite = false, $period = false, $idReport = false, $ifSuperUserReturnOnlySuperUserReports = false)
{
+ $cacheKey = (int)$idSite .'.'. (string)$period .'.'. (int)$idReport .'.'. (int)$ifSuperUserReturnOnlySuperUserReports;
+ if(isset(self::$cache[$cacheKey]))
+ {
+ return self::$cache[$cacheKey];
+ }
+
$sqlWhere = '';
$bind = array();
@@ -175,6 +186,9 @@ class Piwik_PDFReports_API
{
throw new Exception("Requested PDF report couldn't be found.");
}
+ // static cache
+ self::$cache[$cacheKey] = $reports;
+
return $reports;
}
@@ -287,6 +301,78 @@ class Piwik_PDFReports_API
);
}
}
+
+ public function sendEmailReport($idReport, $idSite)
+ {
+ $reports = $this->getReports($idSite, $period = false, $idReport);
+ $report = reset($reports);
+ list($outputFilename, $prettyDate, $websiteName) =
+ Piwik_PDFReports_API::getInstance()->generateReport(
+ $idReport,
+ Piwik_Date::now()->subPeriod(1, $report['period']),
+ $idSite,
+ $outputType = Piwik_PDFReports_API::OUTPUT_PDF_SAVE_ON_DISK
+ );
+
+
+ $emails = self::getEmailsFromString($report['additional_emails']);
+ if($report['email_me'] == 1)
+ {
+ $emails[] = Piwik::getCurrentUserEmail();
+ }
+ $this->sendReportEmailPdfAttached($emails, $outputFilename, $prettyDate, $websiteName, $report);
+ }
+
+ protected function sendReportEmailPdfAttached($emails, $outputFilename, $prettyDate, $websiteName, $report)
+ {
+ $periods = self::getPeriodToFrequency();
+ $message = Piwik_Translate('PDFReports_EmailHello');
+ $message .= "\n" . Piwik_Translate('PDFReports_PleaseFindAttachedFile', array($periods[$report['period']], $websiteName));
+ $subject = "Reports " . $websiteName . " - ".$prettyDate;
+
+ if(!file_exists($outputFilename))
+ {
+ throw new Exception("The PDF file wasn't found in $outputFilename");
+ }
+ $filename = basename($outputFilename);
+ $handle = fopen($outputFilename, "r");
+ $contents = fread($handle, filesize($outputFilename));
+ fclose($handle);
+
+ $mail = new Piwik_Mail();
+ $mail->setSubject($subject);
+ $mail->setBodyText($message);
+ $fromEmailName = Piwik_Translate('PDFReports_PiwikReports');
+ $fromEmailAddress = Zend_Registry::get('config')->General->noreply_email_address;
+ $mail->setFrom($fromEmailAddress, $fromEmailName);
+ $mail->createAttachment( $contents,
+ 'application/pdf',
+ Zend_Mime::DISPOSITION_INLINE,
+ Zend_Mime::ENCODING_BASE64,
+ $filename
+ );
+
+ foreach ($emails as $email)
+ {
+ $mail->addTo($email);
+
+ try {
+ $mail->send();
+ } catch(Exception $e) {
+ throw new Exception("An error occured while sending the PDF Report ".
+ " to ". implode(', ',$mail->getRecipients()). ". Error was '". $e->getMessage()."'");
+ }
+ $mail->clearRecipients();
+ }
+ // Update flag in DB
+ Zend_Registry::get('db')->update( Piwik_Common::prefixTable('pdf'),
+ array( 'ts_last_sent' => Piwik_Date::now()->getDatetime() ),
+ "idreport = " . $report['idreport']
+ );
+
+ // Remove PDF file
+ unlink($outputFilename);
+ }
private function checkAdditionalEmails($additionalEmails)
{
@@ -294,7 +380,7 @@ class Piwik_PDFReports_API
{
return '';
}
- $additionalEmails = Piwik_PDFReports::getEmailsFromString($additionalEmails);
+ $additionalEmails = self::getEmailsFromString($additionalEmails);
foreach($additionalEmails as &$email)
{
$email = trim($email);
@@ -306,6 +392,17 @@ class Piwik_PDFReports_API
$additionalEmails = implode(',',$additionalEmails);
return $additionalEmails;
}
+
+ static protected function getEmailsFromString($additionalEmails)
+ {
+ if(empty($additionalEmails))
+ {
+ return array();
+ }
+ $additionalEmails = explode(',', trim($additionalEmails));
+ $additionalEmails = array_filter($additionalEmails, 'strlen');
+ return $additionalEmails;
+ }
private function checkDescription($description)
{
@@ -341,5 +438,14 @@ class Piwik_PDFReports_API
throw new Exception(Piwik_Translate("Period schedule must be one of the following: " . implode(', ', $availablePeriods)));
}
}
-
+
+ static public function getPeriodToFrequency()
+ {
+ $periods = array(
+ 'day' => Piwik_Translate('General_Daily'),
+ 'week' => Piwik_Translate('General_Weekly'),
+ 'month' => Piwik_Translate('General_Monthly'),
+ );
+ return $periods;
+ }
}
diff --git a/plugins/PDFReports/Controller.php b/plugins/PDFReports/Controller.php
index d96092a374..e662214f58 100644
--- a/plugins/PDFReports/Controller.php
+++ b/plugins/PDFReports/Controller.php
@@ -39,7 +39,7 @@ class Piwik_PDFReports_Controller extends Piwik_Controller
$view->newColumnAfter = round(count($availableReports) / $columnsCount);
$view->reportsByCategory = $reportsByCategory;
$view->reportsJSON = json_encode($reportsById);
- $view->periods = Piwik_PDFReports::getPeriodToFrequency();
+ $view->periods = Piwik_PDFReports_API::getPeriodToFrequency();
$view->reports = $reports;
echo $view->render();
}
diff --git a/plugins/PDFReports/PDFReports.php b/plugins/PDFReports/PDFReports.php
index ccad1722a4..9d7b5c5a2e 100644
--- a/plugins/PDFReports/PDFReports.php
+++ b/plugins/PDFReports/PDFReports.php
@@ -68,77 +68,15 @@ class Piwik_PDFReports extends Piwik_Plugin
// For each, generate the file and send the message with the attached report
foreach($reportsToGenerate as $report)
{
- list($outputFilename, $prettyDate, $websiteName) =
- Piwik_PDFReports_API::getInstance()->generateReport(
- $report['idreport'],
- Piwik_Date::now()->subPeriod(1, $period),
- $report['idsite'],
- $outputType = Piwik_PDFReports_API::OUTPUT_PDF_SAVE_ON_DISK
- );
-
- $emails = self::getEmailsFromString($report['additional_emails']);
- if($report['email_me'] == 1)
- {
- $emails[] = Piwik::getCurrentUserEmail();
- }
- $this->sendReportEmail($emails, $outputFilename, $prettyDate, $websiteName, $report);
+ Piwik_PDFReports_API::sendEmailReport( $report['idreport'],
+ $report['idsite'],
+ $period);
}
}
-
- function sendReportEmail($emails, $outputFilename, $prettyDate, $websiteName, $report)
- {
- $periods = self::getPeriodToFrequency();
- $message = Piwik_Translate('PDFReports_EmailHello');
- $message .= "\n" . Piwik_Translate('PDFReports_PleaseFindAttachedFile', array($periods[$report['period']], $websiteName));
- $subject = "Reports " . $websiteName . " - ".$prettyDate;
-
- if(!file_exists($outputFilename))
- {
- throw new Exception("The PDF file wasn't found in $outputFilename");
- }
- $filename = basename($outputFilename);
- $handle = fopen($outputFilename, "r");
- $contents = fread($handle, filesize($outputFilename));
- fclose($handle);
-
- $mail = new Piwik_Mail();
- $mail->setSubject($subject);
- $mail->setBodyText($message);
- $fromEmailName = Piwik_Translate('PDFReports_PiwikReports');
- $fromEmailAddress = Zend_Registry::get('config')->General->noreply_email_address;
- $mail->setFrom($fromEmailAddress, $fromEmailName);
- $mail->createAttachment( $contents,
- 'application/pdf',
- Zend_Mime::DISPOSITION_INLINE,
- Zend_Mime::ENCODING_BASE64,
- $filename
- );
-
- foreach ($emails as $email)
- {
- $mail->addTo($email);
-
- try {
- $mail->send();
- } catch(Exception $e) {
- throw new Exception("An error occured while sending the PDF Report ".
- " to ". implode(', ',$mail->getRecipients()). ". Error was '". $e->getMessage()."'");
- }
- $mail->clearRecipients();
- }
- // Update flag in DB
- Zend_Registry::get('db')->update( Piwik_Common::prefixTable('pdf'),
- array( 'ts_last_sent' => Piwik_Date::now()->getDatetime() ),
- "idreport = " . $report['idreport']
- );
-
- // Remove PDF file
- unlink($outputFilename);
- }
function addTopMenu()
{
- Piwik_AddTopMenu( 'PDFReports_PDF', array('module' => 'PDFReports', 'action' => 'index'), true, 13);
+ Piwik_AddTopMenu( 'PDFReports_EmailReports', array('module' => 'PDFReports', 'action' => 'index'), true, 13);
}
function install()
@@ -172,24 +110,5 @@ class Piwik_PDFReports extends Piwik_Plugin
}
}
- static public function getPeriodToFrequency()
- {
- $periods = array(
- 'day' => Piwik_Translate('General_Daily'),
- 'week' => Piwik_Translate('General_Weekly'),
- 'month' => Piwik_Translate('General_Monthly'),
- );
- return $periods;
- }
- static public function getEmailsFromString($additionalEmails)
- {
- if(empty($additionalEmails))
- {
- return array();
- }
- $additionalEmails = explode(',', trim($additionalEmails));
- $additionalEmails = array_filter($additionalEmails, 'strlen');
- return $additionalEmails;
- }
} \ No newline at end of file
diff --git a/plugins/PDFReports/templates/list.tpl b/plugins/PDFReports/templates/list.tpl
index c7c5c4c3fd..3d00193d02 100644
--- a/plugins/PDFReports/templates/list.tpl
+++ b/plugins/PDFReports/templates/list.tpl
@@ -36,7 +36,9 @@
<!-- Last sent on {$report.ts_last_sent} -->
</td>
<td>{if $report.email_me == 1}{$currentUserEmail}{/if}
- {$report.additional_emails|replace:",":" "}</td>
+ {$report.additional_emails|replace:",":" "}
+ <br/><a href='#' idreport='{$report.idreport}' name='linkEmailNow' class="link_but" style='margin-top:3px'><img border=0 src='themes/default/images/email.png'> {'PDFReports_SendReportNow'|translate}</a>
+ </td>
<td><a href="{url module=API token_auth=$token_auth method='PDFReports.generateReport' idSite=$idSite date=$date idReport=$report.idreport outputType=$pdfDownloadOutputType}" target="_blank" name="linkDownloadReport" id="{$report.idreport}" class="link_but"><img src='plugins/UserSettings/images/plugins/pdf.gif' border="0" /> {'General_Download'|translate}</a></td>
<td><a href='#' name="linkEditReport" id="{$report.idreport}" class="link_but"><img src='themes/default/images/ico_edit.png' border="0" /> {'General_Edit'|translate}</a></td>
<td><a href='#' name="linkDeleteReport" id="{$report.idreport}" class="link_but"><img src='themes/default/images/ico_delete.png' border="0" /> {'General_Delete'|translate}</a></td>
diff --git a/plugins/PDFReports/templates/pdf.js b/plugins/PDFReports/templates/pdf.js
index 9d7f5ae907..19a0afa5f6 100644
--- a/plugins/PDFReports/templates/pdf.js
+++ b/plugins/PDFReports/templates/pdf.js
@@ -76,6 +76,16 @@ function initManagePdf()
return false;
});
+ // Email now
+ $('a[name=linkEmailNow]').click(function(){
+ var idReport = $(this).attr('idreport');
+ var ajaxRequest = piwikHelper.getStandardAjaxConf();
+ parameters = getPDFAjaxRequest(idReport, 'PDFReports.sendEmailReport');
+ parameters.idReport = idReport;
+ ajaxRequest.data = parameters;
+ $.ajax( ajaxRequest );
+ });
+
// Delete PDF
$('a[name=linkDeleteReport]').click(function(){
var idReport = $(this).attr('id');
diff --git a/plugins/SitesManager/templates/SitesManager.tpl b/plugins/SitesManager/templates/SitesManager.tpl
index 801841fb48..5ab46099b6 100644
--- a/plugins/SitesManager/templates/SitesManager.tpl
+++ b/plugins/SitesManager/templates/SitesManager.tpl
@@ -88,7 +88,7 @@ vertical-align:middle;
<table class="admin" id="editSites" border=1 cellpadding="10">
<thead>
<tr>
- <th>{'SitesManager_Id'|translate}</th>
+ <th>{'General_Id'|translate}</th>
<th>{'General_Name'|translate}</th>
<th>{'SitesManager_Urls'|translate}</th>
<th>{'SitesManager_ExcludedIps'|translate}</th>
diff --git a/themes/default/images/email.png b/themes/default/images/email.png
new file mode 100644
index 0000000000..4a6c5d396a
--- /dev/null
+++ b/themes/default/images/email.png
Binary files differ