1
0
قرینه از https://github.com/matomo-org/matomo.git synced 2025-08-22 15:07:44 +00:00
Files
matomo/tests/PHPUnit/Fixtures/ThreeSitesWithManyVisitsWithSiteSearch.php
Michal Kleiner 9a3ef94df6 [Coding Style] Enable rule PSR12.Files.FileHeader + unify file headers (#22132)
* [Coding Style] Enable rule PSR12.Files.FileHeader

* Apply CS

* Replace Piwik with Matomo in file headers

* Unify file headers (position, no. of lines, https links)

* Rebuild dist files

* Apply CS

* Fix system test that relies on line numbers in a file that had the file header updated

---------

Co-authored-by: Stefan Giehl <stefan@matomo.org>
2024-04-20 20:50:47 +02:00

213 خطوط
13 KiB
PHP

<?php
/**
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Tests\Fixtures;
use Piwik\Date;
use Piwik\Plugins\SitesManager\API;
use Piwik\Tests\Framework\Fixture;
/**
* Adds three websites with different site search configurations and adds
* several visits to each of them.
*/
class ThreeSitesWithManyVisitsWithSiteSearch extends Fixture
{
public $idSite1 = 1;
public $idSite2 = 2;
public $idSite3 = 3;
public $dateTime = '2010-01-03 11:22:33';
public function setUp(): void
{
self::setUpWebsites();
self::trackVisits();
}
public function tearDown(): void
{
// empty
}
/**
* One site with custom search parameters,
* One site using default search parameters,
* One site with disabled site search
*/
protected function setUpWebsites()
{
API::getInstance()->setGlobalSearchParameters($searchKeywordParameters = 'gkwd', $searchCategoryParameters = 'gcat');
if (!self::siteCreated($idSite = 1)) {
self::createWebsite(Date::factory($this->dateTime)->subHour(200)->getDatetime(), 0, "Site 1 - Site search", $siteurl = false, $search = 1, $searchKwd = 'q,mykwd,p', $searchCat = 'cats');
}
if (!self::siteCreated($idSite = 2)) {
self::createWebsite(Date::factory($this->dateTime)->subHour(400)->getDatetime(), 0, "Site 2 - Site search use default", $siteurl = false, $search = 1, $searchKwd = '', $searchCat = '');
}
if (!self::siteCreated($idSite = 3)) {
self::createWebsite(Date::factory($this->dateTime)->subHour(600)->getDatetime(), 0, "Site 3 - No site search", $siteurl = false, $search = 0);
}
}
protected function trackVisits()
{
$this->recordVisitorsSite1();
$this->recordVisitorSite2();
$this->recordVisitorSite3();
}
protected function recordVisitorsSite1()
{
// -
// Visitor site1
$visitor = self::getTracker($this->idSite1, $this->dateTime, $defaultInit = true);
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.2)->getDatetime());
$visitor->setUrl('http://example.org/index.htm?q=Search 1 ');
self::checkResponse($visitor->doTrackPageView('Site Search results'));
// Normal page view
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.22)->getDatetime());
$visitor->setUrl('http://example.org/index.htm');
self::checkResponse($visitor->doTrackPageView('Im just a page'));
// IS_FOLLOWING_SEARCH: Not this time
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.23)->getDatetime());
$visitor->setUrl('http://example.org/index.htm?random=PAGEVIEW, NOT SEARCH&mykwd=&IS_FOLLOWING_SEARCH ONCE');
self::checkResponse($visitor->doTrackPageView('This is a pageview, not a Search - IS_FOLLOWING_SEARCH ONCE'));
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.24)->getDatetime());
self::checkResponse($visitor->doTrackEvent("Event CAT", "Event ACTION", "Event NAME", $count = 3.33));
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.25)->getDatetime());
$visitor->setUrl('http://example.org/index.htm?standard=query&but=also#hash&q=' . urlencode('Search 1'));
self::checkResponse($visitor->doTrackPageView('Site Search results - URL Fragment'));
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.26)->getDatetime());
$visitor->setUrl('http://example.org/index.htm#q=Search 1&search_count=10');
self::checkResponse($visitor->doTrackPageView('Site Search results - URL Fragment'));
// &search_count=0 so it's a "No Result" keyword, but it will not appear in the report, because it also has other seraches with results
// and the archiving does a MAX()
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.27)->getDatetime());
$visitor->setUrl('http://example.org/index.htm?hello=world#q=Search 1&search_count=0');
self::checkResponse($visitor->doTrackPageView('Site Search results - URL Fragment'));
// Testing with non urlencoded values
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.3)->getDatetime());
// ALso testing that array[] notation is detected
$visitor->setUrl('http://example.org/index.htm?random=param&mykwd[]=Search 2&test&cats= Search Category &search_count=INCORRECT!');
self::checkResponse($visitor->doTrackPageView('Site Search results'));
// Testing with urlencoded values
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.32)->getDatetime());
// Also testing with random case 'myKwd'
$visitor->setUrl('http://example.org/index.htm?random=param&myKwd=Search 1&test&cats=' . urlencode(' Search Category ') . ' &search_count=0');
self::checkResponse($visitor->doTrackPageView('Site Search results'));
// IS_FOLLOWING_SEARCH: Yes
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.35)->getDatetime());
$visitor->setUrl('http://example.org/index.htm?random=PAGEVIEW, NOT SEARCH&mykwd=&IS_FOLLOWING_SEARCH ONCE');
self::checkResponse($visitor->doTrackPageView('This is a pageview, not a Search - IS_FOLLOWING_SEARCH ONCE'));
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.4)->getDatetime());
$visitor->setUrl('http://example.org/index.htm?gkwd=SHOULD be a PageView, NOT a search');
self::checkResponse($visitor->doTrackPageView('Pageview, not search'));
$visitor->setUrl('http://example.org/hello?THIS IS A SITE SEARCH TRACKING API, NOT PAGEVIEW!');
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(24.41)->getDatetime());
self::checkResponse($visitor->doTrackSiteSearch("Keyword - Tracking API"));
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(24.42)->getDatetime());
self::checkResponse($visitor->doTrackSiteSearch("Keyword - Tracking API", "Category", $count = 5));
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(24.425)->getDatetime());
self::checkResponse($visitor->doTrackEvent("Event CAT", "Event ACTION", "Event NAME", $count));
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(24.43)->getDatetime());
self::checkResponse($visitor->doTrackSiteSearch("No Result Keyword!", "Bad No Result Category :(", $count = 0));
// Keyword in iso-8859-15 charset with funny character
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(24.5)->getDatetime());
$visitor->setPageCharset('iso-8859-15');
$visitor->setUrl('http://example.org/index.htm?q=Final%20t%FCte%20Keyword%20Searched%20for%20now&search_count=10');
self::checkResponse($visitor->doTrackPageView(false));
// -
// Visitor BIS
$visitorB = self::getTracker($this->idSite1, $this->dateTime, $defaultInit = true);
$visitorB->setIp('156.66.6.66');
$visitorB->setResolution(1600, 1000);
$visitorB->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(2.26)->getDatetime());
$visitorB->setUrl('http://example.org/index.htm#q=' . urlencode('No Result Keyword!') . '&search_count=0');
self::checkResponse($visitorB->doTrackPageView('Site Search results - URL Fragment'));
$visitorB->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(2.27)->getDatetime());
$visitorB->setUrl('http://example.org/index.htm?hello=world#q=Search 1&search_count=10');
self::checkResponse($visitorB->doTrackPageView('Site Search results - URL Fragment'));
$visitorB->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(2.3)->getDatetime());
$visitorB->setUrl('http://example.org/index.htm?random=param&mykwd=Search 2&test&cats= Search Category &search_count=10');
self::checkResponse($visitorB->doTrackPageView('Site Search results'));
}
protected function recordVisitorSite2()
{
$visitor = self::getTracker($this->idSite2, $this->dateTime, $defaultInit = true);
$visitor->setResolution(801, 301);
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.2)->getDatetime());
$visitor->setUrl('http://example.org/index.htm?q=Search 1&IsPageView=1');
self::checkResponse($visitor->doTrackPageView('IsPageView'));
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.35)->getDatetime());
$visitor->setUrl('http://example.org/index.htm?random=PAGEVIEW, NOT SEARCH&gcat=Cat not but not keyword, so this is not search');
self::checkResponse($visitor->doTrackPageView('This is a pageview, not a Search'));
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.4)->getDatetime());
$visitor->setUrl('http://example.org/index.htm?gkwd=SHOULD be a Search with no result!&search_count=0');
self::checkResponse($visitor->doTrackPageView('This is a Search'));
// Testing UTF8 keywords
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.45)->getDatetime());
$crazySearchTerm = 'You%20can%20use%20Piwik%20in%3A%20%E1%8A%A0%E1%88%9B%E1%88%AD%E1%8A%9B%2C%20%D8%A7%D9%84%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9%2C%20%D0%91%D0%B5%D0%BB%D0%B0%D1%80%D1%83%D1%81%D0%BA%D0%B0%D1%8F%2C%20%D0%91%D1%8A%D0%BB%D0%B3%D0%B0%D1%80%D1%81%D0%BA%D0%B8%2C%20Catal%C3%A0%2C%20%C4%8Cesky%2C%20Dansk%2C%20Deutsch%2C%20%CE%95%CE%BB%CE%BB%CE%B7%CE%BD%CE%B9%CE%BA%CE%AC%2C%20English%2C%20Espa%C3%B1ol%2C%20Eesti%20keel%2C%20Euskara%2C%20%D9%81%D8%A7%D8%B1%D8%B3%DB%8C%2C%20Suomi%2C%20Fran%C3%A7ais%2C%20Galego%2C%20%D7%A2%D7%91%D7%A8%D7%99%D7%AA%2C%20Magyar%2C%20Bahasa%20Indonesia%2C%20%C3%8Dslenska%2C%20Italiano%2C%20%E6%97%A5%E6%9C%AC%E8%AA%9E%2C%20%E1%83%A5%E1%83%90%E1%83%A0%E1%83%97%E1%83%A3%E1%83%9A%E1%83%98%2C%20%ED%95%9C%EA%B5%AD%EC%96%B4%2C%20Lietuvi%C5%B3%2C%20Latvie%C5%A1u%2C%20Norsk%20(bokm%C3%A5l)%2C%20Nederlands%2C%20Norsk%20(nynorsk)%2C%20Polski%2C%20Portugu%C3%AAs%20brasileiro%2C%20Portugu%C3%AAs%2C%20Rom%C3%A2n%C4%83%2C%20%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%2C%20Slovensky%2C%20Sloven%C5%A1%C4%8Dina%2C%20Shqip%2C%20Srpski%2C%20Svenska%2C%20%E0%B0%A4%E0%B1%86%E0%B0%B2%E0%B1%81%E0%B0%97%E0%B1%81%2C%20%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0%B8%B2%E0%B9%84%E0%B8%97%E0%B8%A2%2C%20T%C3%BCrk%C3%A7e%2C%20%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D1%81%D1%8C%D0%BA%D0%B0%2C%20%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%2C%20%E7%B9%81%E9%AB%94%E4%B8%AD%E6%96%87.';
$visitor->setUrl('http://example.org/index.htm?gkwd=' . $crazySearchTerm . '&gcat=' . $crazySearchTerm . '&search_count=1');
self::checkResponse($visitor->doTrackPageView('Site Search with 1 result'));
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.5)->getDatetime());
self::checkResponse($visitor->doTrackSiteSearch("No Result Keyword!", "Bad No Result Category bis :(", $count = 0));
return array($defaultInit, $visitor);
}
protected function recordVisitorSite3()
{
// Third new visitor on Idsite 3
$visitor = self::getTracker($this->idSite3, $this->dateTime, $defaultInit = true);
$visitor->setResolution(1801, 1301);
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.2)->getDatetime());
$visitor->setUrl('http://example.org/index.htm?q=Search 1&IsPageView=1');
$visitor->setCustomVariable(1, 'test cvar name', 'test cvar value');
self::checkResponse($visitor->doTrackPageView('IsPageView'));
$visitor->setForceVisitDateTime(Date::factory($this->dateTime)->addHour(0.35)->getDatetime());
$visitor->setUrl('http://example.org/index.htm?gkwd=test not a keyword&gcat=Cat not but not keyword, so this is not search');
self::checkResponse($visitor->doTrackPageView('This is a pageview, not a Search'));
// Testing UTF8 Title & URL
$crazyTitle = '%2C%20%C3%8Dslenska%2C%20Italiano%2C%20%E6%97%A5%E6%9C%AC%E8%AA%9E%2C%20%E1%83%A5%E1%83%90%E1%83%A0%E1%83%97%E1%83%A3%E1%83%9A%E1%83%98%2C%20%ED%95%9C%EA%B5%AD%EC%96%B4%2C%20Lietuvi%C5%B3%2C%20Latvie%C5%A1u%2C%20Norsk%20(bokm%C3%A5l)%2C%20Nederlands%2C%20Norsk%20(nynorsk)%2C%20Polski%2C%20Portugu%C3%AAs%20brasileiro%2C%20Portugu%C3%AAs%2C%20Rom%C3%A2n%C4%83%2C%20%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9%2C%20Slovensky%2C%20Sloven%C5%A1%C4%8Dina%2C%20Shqip%2C%20Srpski%2C%20Svenska%2C%20%E0%B0%A4%E0%B1%86%E0%B0%B2%E0%B1%81%E0%B0%97%E0%B1%81%2C%20%E0%B8%A0%E0%B8%B2%E0%B8%A9%E0%B8%B2%E0%B9%84%E0%B8%97%E0%B8%A2%2C%20T%C3%BCrk%C3%A7e%2C%20%D0%A3%D0%BA%D1%80%D0%B0%D1%97%D0%BD%D1%81%D1%8C%D0%BA%D0%B0%2C%20%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%2C%20%E7%B9%81%E9%AB%94%E4%B8%AD%E6%96%87.';
$visitor->setUrl('http://example.org/index.htm?' . $crazyTitle);
self::checkResponse($visitor->doTrackPageView('Pageview: ' . $crazyTitle));
}
}