コード例 #1
0
ファイル: Common.test.php プロジェクト: nnnnathann/piwik
 function test_getParameterFromQueryString()
 {
     $tests = array('x' => false, 'x=1' => '1', '?x=1' => '1', '?x=y==1' => 'y==1', 'x[]=' => array(''), 'x[]=1' => array('1'), 'x[]=y==1' => array('y==1'), '?x[]=1&x[]=2' => array('1', '2'), '?x%5b%5d=3&x[]=4' => array('3', '4'), '?x%5B]=5&x[%5D=6' => array('5', '6'), '?x%5B%5D=A%26y%3D1' => array('A%26y%3D1'), '?z=y%26x%5b%5d%3d1' => null);
     // use $i as the test index because simpletest uses sprintf() internally and the percent encoding causes an error
     $i = 0;
     foreach ($tests as $test => $expected) {
         $i++;
         $this->assertTrue(Piwik_Common::getParameterFromQueryString($test, 'y') === null, $i);
         $this->assertTrue(Piwik_Common::getParameterFromQueryString($test, 'x') === $expected, $i);
     }
 }
コード例 #2
0
ファイル: Common.test.php プロジェクト: klando/pgpiwik
 /**
  * normal use case with a string with many strange characters
  */
 function test_getParameterFromQueryString_strangeChars()
 {
     $urlQuery = 'toto=mama&mama=&tuytyt=Поиск в Интернете  Поиск страниц на русском _*()!$!£$^!£$%&toto=mama second value';
     $parameter = "tuytyt";
     $result = Piwik_Common::getParameterFromQueryString($urlQuery, $parameter);
     $expectedResult = 'Поиск в Интернете  Поиск страниц на русском _*()!$!£$^!£$%';
     $this->assertEqual($result, $expectedResult);
 }
コード例 #3
0
ファイル: Visit.php プロジェクト: BackupTheBerlios/oos-svn
 protected function detectRefererCampaign()
 {
     if (isset($this->currentUrlParse['query'])) {
         $campaignVariableName = Piwik_Tracker_Config::getInstance()->Tracker['campaign_var_name'];
         $campaignName = Piwik_Common::getParameterFromQueryString($this->currentUrlParse['query'], $campaignVariableName);
         if (!empty($campaignName)) {
             $campaignKeywordVariableName = Piwik_Tracker_Config::getInstance()->Tracker['campaign_keyword_var_name'];
             $campaignKeyword = Piwik_Common::getParameterFromQueryString($this->currentUrlParse['query'], $campaignKeywordVariableName);
             $this->typeRefererAnalyzed = Piwik_Common::REFERER_TYPE_CAMPAIGN;
             $this->nameRefererAnalyzed = $campaignName;
             if (!empty($campaignKeyword)) {
                 $this->keywordRefererAnalyzed = $campaignKeyword;
             }
             return true;
         }
     }
     return false;
 }
コード例 #4
0
ファイル: Visitor.php プロジェクト: Gninety/Microweber
 function getKeywordPosition()
 {
     if ($this->getRefererType() == 'search' && strpos($this->getRefererName(), 'Google') !== false) {
         $url = $this->getRefererUrl();
         $url = @parse_url($url);
         if (empty($url['query'])) {
             return null;
         }
         $position = Piwik_Common::getParameterFromQueryString($url['query'], 'cd');
         if (!empty($position)) {
             return $position;
         }
     }
     return null;
 }
コード例 #5
0
ファイル: Common.php プロジェクト: BackupTheBerlios/oos-svn
 /**
  * Extracts a keyword from a raw not encoded URL. 
  * Will only extract keyword if a known search engine has been detected.
  * Returns the keyword: 
  * - in UTF8: automatically converted from other charsets when applicable 
  * - strtolowered: "QUErY test!" will return "query test!"
  * - trimmed: extra spaces before and after are removed
  * 
  * Lists of supported search engines can be found in /core/DataFiles/SearchEngines.php
  * The function returns false when a keyword couldn't be found.
  * 	 eg. if the url is "http://www.google.com/partners.html" this will return false, 
  *       as the google keyword parameter couldn't be found. 
  * 
  * @see unit tests in /tests/core/Common.test.php
  * @param string URL referer URL, eg. $_SERVER['HTTP_REFERER']
  * @return array|false false if a keyword couldn't be extracted,
  * 						or array(
  * 							'name' => 'Google', 
  * 							'keywords' => 'my searched keywords') 
  */
 public static function extractSearchEngineInformationFromUrl($refererUrl)
 {
     $refererParsed = @parse_url($refererUrl);
     $refererHost = '';
     if (isset($refererParsed['host'])) {
         $refererHost = $refererParsed['host'];
     }
     if (empty($refererHost)) {
         return false;
     }
     if (!isset($refererParsed['query'])) {
         return false;
     }
     require_once PIWIK_INCLUDE_PATH . '/core/DataFiles/SearchEngines.php';
     if (!array_key_exists($refererHost, $GLOBALS['Piwik_SearchEngines'])) {
         return false;
     }
     $searchEngineName = $GLOBALS['Piwik_SearchEngines'][$refererHost][0];
     $variableNames = $GLOBALS['Piwik_SearchEngines'][$refererHost][1];
     if (!is_array($variableNames)) {
         $variableNames = array($variableNames);
     }
     $query = $refererParsed['query'];
     if ($searchEngineName == 'Google Images') {
         $query = urldecode(trim(strtolower(Piwik_Common::getParameterFromQueryString($query, 'prev'))));
         $query = str_replace('&', '&', strstr($query, '?'));
     }
     foreach ($variableNames as $variableName) {
         // search for keywords now &vname=keyword
         $key = strtolower(Piwik_Common::getParameterFromQueryString($query, $variableName));
         $key = trim(urldecode($key));
         if (!empty($key)) {
             break;
         }
     }
     if (empty($key)) {
         return false;
     }
     if (function_exists('iconv') && isset($GLOBALS['Piwik_SearchEngines'][$refererHost][3])) {
         $charset = trim($GLOBALS['Piwik_SearchEngines'][$refererHost][3]);
         if (!empty($charset)) {
             $key = @iconv($charset, 'utf-8//IGNORE', $key);
         }
     }
     return array('name' => $searchEngineName, 'keywords' => $key);
 }
コード例 #6
0
ファイル: Visit.php プロジェクト: nnnnathann/piwik
 /**
  * @param string $string
  * @return bool
  */
 protected function detectCampaignFromString($string)
 {
     foreach ($this->campaignNames as $campaignNameParameter) {
         $campaignName = trim(urldecode(Piwik_Common::getParameterFromQueryString($string, $campaignNameParameter)));
         if (!empty($campaignName)) {
             break;
         }
     }
     if (!empty($campaignName)) {
         $this->typeRefererAnalyzed = Piwik_Common::REFERER_TYPE_CAMPAIGN;
         $this->nameRefererAnalyzed = $campaignName;
         foreach ($this->campaignKeywords as $campaignKeywordParameter) {
             $campaignKeyword = Piwik_Common::getParameterFromQueryString($string, $campaignKeywordParameter);
             if (!empty($campaignKeyword)) {
                 $this->keywordRefererAnalyzed = trim(urldecode($campaignKeyword));
                 break;
             }
         }
         return true;
     }
     return false;
 }
コード例 #7
0
ファイル: Visit.php プロジェクト: Gninety/Microweber
 protected function detectRefererCampaign()
 {
     if (isset($this->currentUrlParse['query'])) {
         $campaignParameters = Piwik_Common::getCampaignParameters();
         $campaignNames = $campaignParameters[0];
         foreach ($campaignNames as $campaignNameParameter) {
             $campaignName = Piwik_Common::getParameterFromQueryString($this->currentUrlParse['query'], $campaignNameParameter);
             if (!empty($campaignName)) {
                 break;
             }
         }
         if (!empty($campaignName)) {
             $this->typeRefererAnalyzed = Piwik_Common::REFERER_TYPE_CAMPAIGN;
             $this->nameRefererAnalyzed = $campaignName;
             $campaignKeywords = $campaignParameters[1];
             foreach ($campaignKeywords as $campaignKeywordParameter) {
                 $campaignKeyword = Piwik_Common::getParameterFromQueryString($this->currentUrlParse['query'], $campaignKeywordParameter);
                 if (!empty($campaignKeyword)) {
                     $this->keywordRefererAnalyzed = $campaignKeyword;
                     break;
                 }
             }
             return true;
         }
     }
     return false;
 }
コード例 #8
0
ファイル: CommonTest.php プロジェクト: nnnnathann/piwik
 /**
  * @dataProvider getQueryStrings
  * @group Core
  * @group Common
  * @group getParameterFromQueryString
  */
 public function testGetParameterFromQueryString($queryString, $parameter, $expected)
 {
     $this->assertSame($expected, Piwik_Common::getParameterFromQueryString($queryString, $parameter));
 }