diff options
Diffstat (limited to 'plugins/ExampleFeedburner/ExampleFeedburner.php')
-rw-r--r-- | plugins/ExampleFeedburner/ExampleFeedburner.php | 76 |
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')) ); |