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:
Diffstat (limited to 'plugins/ExampleFeedburner/ExampleFeedburner.php')
-rw-r--r--plugins/ExampleFeedburner/ExampleFeedburner.php76
1 files changed, 68 insertions, 8 deletions
diff --git a/plugins/ExampleFeedburner/ExampleFeedburner.php b/plugins/ExampleFeedburner/ExampleFeedburner.php
index 5a1458e13f..ca7b582ce1 100644
--- a/plugins/ExampleFeedburner/ExampleFeedburner.php
+++ b/plugins/ExampleFeedburner/ExampleFeedburner.php
@@ -16,13 +16,19 @@
*/
class Piwik_ExampleFeedburner extends Piwik_Plugin
{
+ /**
+ * Return information about this plugin.
+ *
+ * @see Piwik_Plugin
+ *
+ * @return array
+ */
public function getInformation()
{
return array(
- 'name' => 'Example Feedburner',
- 'description' => 'Example Plugin: How to display your Feedburner subscriber in a Widget in the Dashboard?',
+ 'description' => Piwik_Translate('ExampleFeedburner_PluginDescription'),
'author' => 'Piwik',
- 'homepage' => 'http://piwik.org/',
+ 'author_homepage' => 'http://piwik.org/',
'version' => '0.1',
);
}
@@ -30,8 +36,8 @@ class Piwik_ExampleFeedburner extends Piwik_Plugin
function install()
{
try{
- Piwik_Exec('ALTER TABLE '.Piwik::prefixTable('site'). " ADD `feedburnerName` VARCHAR( 100 ) DEFAULT NULL");
- } catch(Zend_Db_Statement_Exception $e){
+ Piwik_Exec('ALTER TABLE '.Piwik_Common::prefixTable('site'). " ADD `feedburnerName` VARCHAR( 100 ) DEFAULT NULL");
+ } catch(Exception $e){
// mysql code error 1060: column already exists
// if there is another error we throw the exception, otherwise it is OK as we are simply reinstalling the plugin
if(!Zend_Registry::get('db')->isErrNo($e, '1060'))
@@ -43,7 +49,7 @@ class Piwik_ExampleFeedburner extends Piwik_Plugin
function uninstall()
{
- Piwik_Query('ALTER TABLE '.Piwik::prefixTable('site'). " DROP `feedburnerName`");
+ Piwik_Query('ALTER TABLE '.Piwik_Common::prefixTable('site'). " DROP `feedburnerName`");
}
}
@@ -64,7 +70,7 @@ class Piwik_ExampleFeedburner_Controller extends Piwik_Controller
{
$view = Piwik_View::factory('feedburner');
$idSite = Piwik_Common::getRequestVar('idSite',1,'int');
- $feedburnerFeedName = Piwik_FetchOne('SELECT feedburnerName FROM '.Piwik::prefixTable('site').
+ $feedburnerFeedName = Piwik_FetchOne('SELECT feedburnerName FROM '.Piwik_Common::prefixTable('site').
' WHERE idsite = ?', $idSite );
if(empty($feedburnerFeedName))
{
@@ -72,9 +78,63 @@ class Piwik_ExampleFeedburner_Controller extends Piwik_Controller
}
$view->feedburnerFeedName = $feedburnerFeedName;
$view->idSite = $idSite;
+ $view->fbStats = $this->getFeedData($feedburnerFeedName);
echo $view->render();
}
+
+ /**
+ * Returns array of counts and images based on Feedburner URI
+ *
+ * @param string $uri
+ * @return array()
+ */
+ protected function getFeedData($uri)
+ {
+ // Awareness API only supports yesterday and back;
+ // we get stats for previous two days;
+ // @see http://code.google.com/apis/feedburner/awareness_api.html#dates
+ $yesterday = Piwik_Date::factory('-1 day', 'America/Los_Angeles');
+ $beforeYesterday = Piwik_Date::factory('-2 day', 'America/Los_Angeles');
+
+ //create url to gather XML feed from
+ $url = 'https://feedburner.google.com/api/awareness/1.0/GetFeedData?uri='.$uri.'&dates='.$beforeYesterday->toString().','.$yesterday->toString();
+ $data = '';
+ try {
+ $data = Piwik_Http::sendHttpRequest($url, 5);
+ $xml = new SimpleXMLElement($data);
+ } catch(Exception $e) {
+ return "Error parsing the data for feed $uri. Fetched data was: \n'". $data."'";
+ }
+
+ if(count($xml->feed->entry) != 2) {
+ return "Error fetching the Feedburner stats. Expected XML, Got: \n" . strip_tags($data);
+ }
+ $data = array();
+ $i = 0;
+ foreach($xml->feed->entry as $feedDay){
+ $data[0][$i] = (int)$feedDay['circulation'];
+ $data[1][$i] = (int)$feedDay['hits'];
+ $data[2][$i] = (int)$feedDay['reach'];
+ $i++;
+ }
+
+ foreach($data as $key => $value) {
+ if( $value[0] == $value[1]) {
+ $img = 'stop.png';
+ } else if($value[0] < $value[1]) {
+ $img = 'arrow_up.png';
+ } else {
+ $img = 'arrow_down.png';
+ }
+
+ $prefixImage = '<img alt="" src="./plugins/MultiSites/images/';
+ $suffixImage = '" />';
+ $data[$key][2] = $prefixImage . $img . $suffixImage;
+ }
+ return $data;
+ }
+
/**
* Function called to save the Feedburner ID entered in the form
*
@@ -84,7 +144,7 @@ class Piwik_ExampleFeedburner_Controller extends Piwik_Controller
// we save the value in the DB for an authenticated user
if(Piwik::getCurrentUserLogin() != 'anonymous')
{
- Piwik_Query('UPDATE '.Piwik::prefixTable('site').'
+ Piwik_Query('UPDATE '.Piwik_Common::prefixTable('site').'
SET feedburnerName = ? WHERE idsite = ?',
array(Piwik_Common::getRequestVar('name','','string'), Piwik_Common::getRequestVar('idSite',1,'int'))
);