| 
									
										
										
										
											2009-03-13 08:52:01 -04:00
										 |  |  | <?php | 
					
						
							|  |  |  | /** | 
					
						
							| 
									
										
										
										
											2009-08-25 18:29:56 -04:00
										 |  |  |  * StatusNet, the distributed open-source microblogging tool | 
					
						
							| 
									
										
										
										
											2009-03-13 08:52:01 -04:00
										 |  |  |  * | 
					
						
							|  |  |  |  * Plugin to use Piwik Analytics | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * PHP version 5 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * LICENCE: This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as published by | 
					
						
							|  |  |  |  * the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  |  * (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU Affero General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * @category  Plugin | 
					
						
							| 
									
										
										
										
											2009-08-25 18:29:56 -04:00
										 |  |  |  * @package   StatusNet | 
					
						
							|  |  |  |  * @author    Evan Prodromou <evan@status.net> | 
					
						
							| 
									
										
										
										
											2009-03-13 08:52:01 -04:00
										 |  |  |  * @author    Tobias Diekershoff <tobias.diekershoff@gmx.net> | 
					
						
							| 
									
										
										
										
											2009-08-25 18:29:56 -04:00
										 |  |  |  * @copyright 2008 StatusNet, Inc. | 
					
						
							| 
									
										
										
										
											2009-03-13 08:52:01 -04:00
										 |  |  |  * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 | 
					
						
							| 
									
										
										
										
											2009-08-25 18:29:56 -04:00
										 |  |  |  * @link      http://status.net/ | 
					
						
							| 
									
										
										
										
											2009-03-13 08:52:01 -04:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-08-25 18:42:34 -04:00
										 |  |  | if (!defined('STATUSNET')) { | 
					
						
							| 
									
										
										
										
											2009-03-13 08:52:01 -04:00
										 |  |  |     exit(1); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Plugin to use Piwik Analytics (based on the Google Analytics plugin by Evan) | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This plugin will spoot out the correct JavaScript spell to invoke | 
					
						
							|  |  |  |  * Piwik Analytics on a page. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * To use this plugin please add the following three lines to your config.php | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *     require_once('plugins/PiwikAnalyticsPlugin.php'); | 
					
						
							|  |  |  |  *     $pa = new PiwikAnalyticsPlugin("example.com/piwik/","id"); | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * exchange example.com/piwik/ with the url to your piwik installation and | 
					
						
							|  |  |  |  * make sure you don't forget the final / | 
					
						
							| 
									
										
										
										
											2009-08-25 18:53:24 -04:00
										 |  |  |  * exchange id with the ID your statusnet installation has in your Piwik analytics | 
					
						
							| 
									
										
										
										
											2009-03-13 08:52:01 -04:00
										 |  |  |  * | 
					
						
							|  |  |  |  * @category Plugin | 
					
						
							| 
									
										
										
										
											2009-08-25 18:29:56 -04:00
										 |  |  |  * @package  StatusNet | 
					
						
							| 
									
										
										
										
											2009-03-13 08:52:01 -04:00
										 |  |  |  * @author   Tobias Diekershoff <tobias.diekershoff@gmx.net> | 
					
						
							|  |  |  |  * @license  http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 | 
					
						
							| 
									
										
										
										
											2009-08-25 18:29:56 -04:00
										 |  |  |  * @link     http://status.net/ | 
					
						
							| 
									
										
										
										
											2009-03-13 08:52:01 -04:00
										 |  |  |  * | 
					
						
							|  |  |  |  * @see      Event | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class PiwikAnalyticsPlugin extends Plugin | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     /** the base of your Piwik installation */ | 
					
						
							| 
									
										
										
										
											2009-09-16 11:57:07 -04:00
										 |  |  |     public $piwikroot = null; | 
					
						
							| 
									
										
										
										
											2009-08-25 18:53:24 -04:00
										 |  |  |     /** the Piwik Id of your statusnet installation */ | 
					
						
							| 
									
										
										
										
											2009-09-16 11:57:07 -04:00
										 |  |  |     public $piwikId   = null; | 
					
						
							| 
									
										
										
										
											2009-03-13 08:52:01 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * constructor | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param string $root Piwik root URL | 
					
						
							|  |  |  |      * @param string $id   Piwik ID of this app | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function __construct($root=null, $id=null) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $this->piwikroot = $root; | 
					
						
							| 
									
										
										
										
											2009-09-24 11:01:18 +01:00
										 |  |  |         $this->piwikId   = $id; | 
					
						
							| 
									
										
										
										
											2009-03-13 08:52:01 -04:00
										 |  |  |         parent::__construct(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Called when all scripts have been shown | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @param Action $action Current action | 
					
						
							|  |  |  |      * | 
					
						
							|  |  |  |      * @return boolean ignored | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     function onEndShowScripts($action) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2009-07-16 10:56:46 -04:00
										 |  |  |         $piwikCode = <<<ENDOFPIWIK | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <!-- Piwik --> | 
					
						
							|  |  |  | <script type="text/javascript"> | 
					
						
							|  |  |  | var pkBaseURL = (("https:" == document.location.protocol) ? "https://{$this->piwikroot}" : "http://{$this->piwikroot}"); | 
					
						
							|  |  |  | document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E")); | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | <script type="text/javascript"> | 
					
						
							|  |  |  | try { | 
					
						
							| 
									
										
										
										
											2009-09-16 11:57:07 -04:00
										 |  |  |     var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", {$this->piwikId}); | 
					
						
							| 
									
										
										
										
											2009-07-16 10:56:46 -04:00
										 |  |  |     piwikTracker.trackPageView(); | 
					
						
							|  |  |  |     piwikTracker.enableLinkTracking(); | 
					
						
							|  |  |  | } catch( err ) {} | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  | <!-- End Piwik Tag --> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ENDOFPIWIK; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $action->raw($piwikCode); | 
					
						
							| 
									
										
										
										
											2009-03-13 08:52:01 -04:00
										 |  |  |         return true; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-09-11 20:40:51 -04:00
										 |  |  | } |