Dotclear

Changeset 203


Ignore:
Timestamp:
06/18/08 11:21:38 (15 years ago)
Author:
olivier
Message:

Piwik plugin.

  • IP exclusion list
  • New Piwik site creation from plugin
  • Translation
Location:
plugins/piwik
Files:
5 added
3 edited

Legend:

Unmodified
Added
Removed
  • plugins/piwik/_public.php

    r202 r203  
    3636          } 
    3737           
     38          $piwik_ips = array_flip(preg_split('/(\s*[;,]\s*|\s+)/',trim($piwik_ips),-1,PREG_SPLIT_NO_EMPTY)); 
     39           
     40          if (isset($piwik_ips[http::realIP()])) { 
     41               return; 
     42          } 
     43           
    3844          $action = $_SERVER['URL_REQUEST_PART']; 
    3945          if ($core->blog->settings->piwik_fancy) { 
    40                $action = str_replace('/',' : ',$action); 
     46               $action = $action == '' ? 'home' : str_replace('/',' : ',$action); 
    4147          } 
    4248          echo dcPiwik::getScriptCode($piwik_service_uri,$piwik_site,$action); 
  • plugins/piwik/class.dc.piwik.php

    r201 r203  
    2525     public function __construct($uri) 
    2626     { 
    27           if (!self::readURL($uri,$ssl,$host,$port,$path,$user,$pass)) { 
    28                throw new Exception(__('Unable to read Piwik URI')); 
     27          self::parseServiceURI($uri,$base,$token); 
     28           
     29          if (!self::readURL($base,$ssl,$host,$port,$path,$user,$pass)) { 
     30               throw new Exception(__('Unable to read Piwik URI.')); 
    2931          } 
    3032           
     
    3234          $this->useSSL($ssl); 
    3335          $this->setAuthorization($user,$pass); 
    34           $this->api_path = $path.'&module=API'; 
     36          $this->api_path = $path; 
     37          $this->api_token = $token; 
    3538     } 
    3639      
    3740     public function siteExists($id) 
    3841     { 
    39           $sites = $this->getSitesWithAdminAccess(); 
    40           foreach ($sites as $v) { 
    41                if ($v['idsite'] == $id) { 
    42                     return true; 
     42          try 
     43          { 
     44               $sites = $this->getSitesWithAdminAccess(); 
     45               foreach ($sites as $v) { 
     46                    if ($v['idsite'] == $id) { 
     47                         return true; 
     48                    } 
    4349               } 
    4450          } 
     51          catch (Exception $e) {} 
    4552          return false; 
    4653     } 
     
    4855     public function getSitesWithAdminAccess() 
    4956     { 
    50           $path = $this->methodCall('SitesManager.getSitesWithAdminAccess'); 
    51           $this->get($path); 
     57          $get = $this->methodCall('SitesManager.getSitesWithAdminAccess'); 
     58          $this->get($get['path'],$get['data']); 
    5259          return $this->readResponse(); 
    5360     } 
    5461      
    55      protected function methodCall($method) 
     62     public function addSite($name,$url) 
    5663     { 
    57           return $this->api_path.'&module=API&format=php&method='.$method; 
     64          $data = array( 
     65               'siteName' => $name, 
     66               'urls' => $url 
     67          ); 
     68          $get = $this->methodCall('SitesManager.addSite',$data); 
     69          $this->get($get['path'],$get['data']); 
     70          return $this->readResponse(); 
     71     } 
     72      
     73     protected function methodCall($method,$data=array()) 
     74     { 
     75          $data['token_auth'] = $this->api_token; 
     76          $data['module'] = 'API'; 
     77          $data['format'] = 'php'; 
     78          $data['method'] = $method; 
     79           
     80          return array('path' => $this->api_path, 'data' => $data); 
    5881     } 
    5982      
     
    6386          $res = @unserialize($res); 
    6487           
    65           if (!is_array($res)) { 
    66                throw new Exception(__('Invalid Piwik Response')); 
     88          if ($res === false) { 
     89               throw new Exception(__('Invalid Piwik Response.')); 
    6790          } 
    6891           
    69           if (!empty($res['result']) && $res['result'] == 'error') { 
     92          if (is_array($res) && !empty($res['result']) && $res['result'] == 'error') { 
    7093               $this->piwikError($res['message']); 
    7194          } 
     
    7598     protected function piwikError($msg) 
    7699     { 
    77           throw new Exception(sprintf(__('Piwik returns an error: %s'),strip_tags($msg))); 
     100          throw new Exception(sprintf(__('Piwik returned an error: %s'),strip_tags($msg))); 
    78101     } 
    79102      
     
    81104     { 
    82105          if (!preg_match('/^[a-f0-9]{32}$/i',$token)) { 
    83                throw new Exception('Invalid Piwik Token'); 
     106               throw new Exception('Invalid Piwik Token.'); 
    84107          } 
    85108           
     
    97120     public static function parseServiceURI(&$uri,&$base,&$token) 
    98121     { 
    99           $err = new Exception(__('Invalid Service URI')); 
     122          $err = new Exception(__('Invalid Service URI.')); 
    100123           
    101124          $p = parse_url($uri); 
  • plugins/piwik/index.php

    r201 r203  
    2626$piwik_ips = $core->blog->settings->piwik_ips; 
    2727$piwik_fancy = $core->blog->settings->piwik_fancy; 
     28 
     29$site_url = preg_replace('/\?$/','',$core->blog->url); 
     30$site_name = $core->blog->name; 
    2831 
    2932try { 
     
    6366               } 
    6467               $core->blog->settings->put('piwik_site',$piwik_site); 
    65                //$core->blog->settings->put('piwik_ips',$piwik_ips); 
     68               $core->blog->settings->put('piwik_ips',$piwik_ips); 
    6669               $core->blog->settings->put('piwik_fancy',$piwik_fancy,'boolean'); 
    6770               $core->blog->triggerBlog(); 
     
    7982{ 
    8083     $sites_combo = array(__('Disable Piwik') => ''); 
    81       
    8284     try 
    8385     { 
    8486          $o = new dcPiwik($piwik_service_uri); 
     87           
     88          # Create a new site 
     89          if (!empty($_POST['site_name']) && !empty($_POST['site_url'])) 
     90          { 
     91               $o->addSite($_POST['site_name'],$_POST['site_url']); 
     92               http::redirect($p_url.'&created=1'); 
     93          } 
     94           
     95          # Get sites list 
    8596          $sites = $o->getSitesWithAdminAccess(); 
    8697           
    8798          if (count($sites) < 1) { 
    88                throw new Exception(__('No Piwik sites configures')); 
     99               throw new Exception(__('No Piwik sites configured.')); 
    89100          } 
    90101           
    91102          foreach ($sites as $v) { 
    92                $sites_combo[$v['name']] = $v['idsite']; 
     103               $sites_combo[$v['idsite'].' - '.$v['name']] = $v['idsite']; 
    93104          } 
    94105     } 
     
    98109     } 
    99110} 
    100  
    101111?> 
    102112<html> 
     
    122132if (!$piwik_uri) 
    123133{ 
    124      echo '<p class="msg">Your Piwik installation is not configured yet.</p>'; 
     134     echo '<p class="msg">'.__('Your Piwik installation is not configured yet.').'</p>'; 
    125135} 
    126136else 
     
    130140     form::combo('piwik_site',$sites_combo,$piwik_site).'</label></p>'. 
    131141     '<p class="field"><label for="piwik_ips">'.__('Do not track following IP addresses:').'</label> '. 
    132      /*form::field('piwik_ips',50,600,$piwik_ips).'</p>'. 
    133      '<p class="field"><label>'.__('Use fancy page names').' '.*/ 
     142     form::field('piwik_ips',50,600,$piwik_ips).'</p>'. 
     143     '<p class="field"><label>'.__('Use fancy page names:').' '. 
    134144     form::checkbox('piwik_fancy',1,$piwik_fancy).'</label></p>'; 
    135145} 
     
    140150'</form>'; 
    141151 
    142 echo '<h3>'.__('Help').'</h3>'; 
     152echo 
     153'<h3>'.__('Create a new Piwik site for this blog').'</h3>'. 
     154'<form action="'.$p_url.'" method="post">'. 
     155'<p class="field"><label>'.__('Site name:').' '. 
     156form::field('site_name',40,255,$site_name).'</label></p>'. 
     157'<p class="field"><label>'.__('Site URL:').' '. 
     158form::field('site_url',40,255,$site_url).'</label></p>'. 
     159'<p><input type="submit" value="'.__('create site').'" />'. 
     160$core->formNonce().'</p>'. 
     161'</form>'; 
     162 
     163 
    143164 
    144165?> 
Note: See TracChangeset for help on using the changeset viewer.

Sites map