'http://trac.habariproject.org/habari-extras/browser/plugins/piwik', 'name' => 'Piwik', 'description' => 'Automatically adds Piwik tracking code to the theme footer.', 'license' => 'Apache License 2.0', 'author' => 'Andy C', 'authorurl' => 'http://nbrightside.com/habari/', 'version' => '0.1' ); } /** * Display help text * @return string The help text */ public function help() { return '

Piwik is an Open Source Web analytics package. Piwik is self-hosted software. You need to install and configure Piwik separately. Piwik needs PHP and a MySQL database to store data on site visits.

For more details, see http://piwik.org/

This plugin embeds the Piwik (Javascript) tracking code in the theme footer. To install the plugin, unpack under the \'/user/plugins\' directory in your Habari installation. Then activate and configure the plugin from the dashboard (Admin-Plugins).

The configuration options are:

'; } public function filter_plugin_config($actions, $plugin_id) { if ( $this->plugin_id() == $plugin_id ) { $actions[]= _t('Configure'); } return $actions; } public function action_plugin_ui($plugin_id, $action) { if ( $this->plugin_id() == $plugin_id && $action == _t('Configure')){ $form = new FormUI(strtolower(get_class($this))); $form->append('text', 'siteurl', 'option:piwik__siteurl', _t('Piwik site URL')); $form->append('text', 'sitenum', 'option:piwik__sitenum', _t('Piwik site number')); $form->append('checkbox', 'trackloggedin', 'option:piwik__trackloggedin', _t( 'Track logged-in users', 'piwik' )); $form->append('text', 'auth_token', 'option:piwik__auth_token', _t('Piwik Auth Token')); $form->append('text', 'outlink', 'option:piwik__outlink_name', _t('Piwik Outlink Var Name')); $form->append('submit', 'save', 'Save'); $form->on_success( array( $this, 'save_config' ) ); $form->out(); } } /** * Invoked when the before the plugin configurations are saved * * @param FormUI $form The configuration form being saved * @return true */ public function save_config( $form ) { $form->save(); Session::notice('Piwik plugin configuration saved'); return false; } public function action_plugin_deactivation( $file ) { if ( realpath( $file ) == __FILE__ ) { Options::delete('piwik__siteurl'); Options::delete('piwik__sitenum'); Options::delete('piwik__trackloggedin'); Options::delete('piwik__auth_token'); Options::delete('piwik__outlink_name'); } } /** * Add update beacon support **/ public function action_update_check() { Update::add( 'Piwik', 'xxx', $this->info->version ); } public function action_plugin_activation($file) { if (Plugins::id_from_file($file) != Plugins::id_from_file(__FILE__)) return; Options::set('piwik__trackloggedin', false); Options::set('piwik__outlink_name', 'link'); } public function filter_post_content_out( $content, $post ) { $outlink_url = sprintf( "%s/piwik.php?%s='.urlencode('$2').'&idsite=%d", rtrim(Options::get('piwik__siteurl'), '/'), Options::get('piwik__outlink_name'), Options::get('piwik__sitenum') ); $content = preg_replace( '/href=([\'"])(http:\/\/(?:[^\'"]+))([\'"])/e', "stripslashes('href=$1$outlink_url$3')", $content ); return $content; } public function theme_footer($theme) { $class= strtolower( get_class( $this ) ); $siteurl = Options::get( $class . '__siteurl'); $ssl_siteurl = str_replace("http://", "https://", $siteurl); $sitenum = Options::get( $class . '__sitenum'); $trackloggedin = Options::get( $class . '__trackloggedin'); if ( URL::get_matched_rule()->entire_match == 'user/login') { // Login page; don't dipslay return; } if ( User::identify()->loggedin ) { // Only track the logged in user if we were told to if ( !($trackloggedin) ) { return; } } echo << EOD; } public function filter_dash_modules( $modules ) { array_push( $modules, 'Piwik Last Visitors', 'Piwik Visit Times' ); Stack::add('admin_stylesheet', array($this->get_url() . '/piwikdash.css', 'screen'), 'piwikdash'); return $modules; } public function filter_dash_module_piwik_last_visitors( $module, $module_id, $theme ) { if ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] && $_SERVER['HTTPS'] != 'off' ) { $siteurl = rtrim( str_replace( "http://", "https://", Options::get('piwik__siteurl') ), '/' ); } else { $siteurl = rtrim( Options::get('piwik__siteurl'), '/' ); } $sitenum = Options::get('piwik__sitenum'); $auth_token = Options::get('piwik__auth_token'); $api_query = http_build_query(array( 'module' => 'VisitsSummary', 'action' => 'getLastVisitsGraph', 'idSite' => $sitenum, 'period' => 'day', 'date' => 'last30', 'viewDataTable' => 'generateDataChartEvolution', 'token_auth' => $auth_token, ), null, '&'); $api_url = urlencode("$siteurl/index.php?" . $api_query); $module['title']= _t('Piwik Last Visitors', 'piwik'); $module['content']= << VISITORS; return $module; } public function filter_dash_module_piwik_visit_times( $module, $module_id, $theme ) { if ( isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] && $_SERVER['HTTPS'] != 'off' ) { $siteurl = rtrim( str_replace( "http://", "https://", Options::get('piwik__siteurl') ), '/' ); } else { $siteurl = rtrim( Options::get('piwik__siteurl'), '/' ); } $sitenum = Options::get('piwik__sitenum'); $auth_token = Options::get('piwik__auth_token'); $api_query = http_build_query(array( 'module' => 'VisitTime', 'action' => 'getVisitInformationPerServerTime', 'idSite' => $sitenum, 'period' => 'day', 'date' => 'today', 'viewDataTable' => 'generateDataChartVerticalBar', 'token_auth' => $auth_token, ), null, '&'); $api_url = urlencode("$siteurl/index.php?" . $api_query); $module['title']= _t('Piwik Visit Times', 'piwik'); $module['content']= << TIMES; return $module; } } ?>