2023-01-23 11:03:31 +01:00

152 lines
5.8 KiB
PHP

<?php
/**
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
namespace Piwik\Plugins\SitesManager;
use Exception;
use Piwik\API\ResponseBuilder;
use Piwik\Common;
use Piwik\Exception\UnexpectedWebsiteFoundException;
use Piwik\Piwik;
use Piwik\Session;
use Piwik\Settings\Measurable\MeasurableSettings;
use Piwik\SettingsPiwik;
use Piwik\Site;
use Piwik\Tracker\TrackerCodeGenerator;
use Piwik\Url;
use Piwik\View;
/**
*
*/
class Controller extends \Piwik\Plugin\ControllerAdmin
{
/**
* Main view showing listing of websites and settings
*/
public function index()
{
Piwik::checkUserHasSomeAdminAccess();
return $this->renderTemplate('index');
}
public function globalSettings()
{
Piwik::checkUserHasSuperUserAccess();
return $this->renderTemplate('globalSettings');
}
public function getGlobalSettings()
{
Piwik::checkUserHasSomeViewAccess();
$response = new ResponseBuilder(Common::getRequestVar('format'));
$globalSettings = array();
$globalSettings['keepURLFragmentsGlobal'] = API::getInstance()->getKeepURLFragmentsGlobal();
$globalSettings['siteSpecificUserAgentExcludeEnabled'] = API::getInstance()->isSiteSpecificUserAgentExcludeEnabled();
$globalSettings['defaultCurrency'] = API::getInstance()->getDefaultCurrency();
$globalSettings['searchKeywordParametersGlobal'] = API::getInstance()->getSearchKeywordParametersGlobal();
$globalSettings['searchCategoryParametersGlobal'] = API::getInstance()->getSearchCategoryParametersGlobal();
$globalSettings['defaultTimezone'] = API::getInstance()->getDefaultTimezone();
$globalSettings['excludedIpsGlobal'] = API::getInstance()->getExcludedIpsGlobal();
$globalSettings['excludedQueryParametersGlobal'] = API::getInstance()->getExcludedQueryParametersGlobal();
$globalSettings['excludedUserAgentsGlobal'] = API::getInstance()->getExcludedUserAgentsGlobal();
return $response->getResponse($globalSettings);
}
/**
* Records Global settings when user submit changes
*/
public function setGlobalSettings()
{
$response = new ResponseBuilder(Common::getRequestVar('format'));
try {
$this->checkTokenInUrl();
$timezone = Common::getRequestVar('timezone', false);
$excludedIps = Common::getRequestVar('excludedIps', false);
$excludedQueryParameters = Common::getRequestVar('excludedQueryParameters', false);
$excludedUserAgents = Common::getRequestVar('excludedUserAgents', false);
$currency = Common::getRequestVar('currency', false);
$searchKeywordParameters = Common::getRequestVar('searchKeywordParameters', $default = "");
$searchCategoryParameters = Common::getRequestVar('searchCategoryParameters', $default = "");
$enableSiteUserAgentExclude = Common::getRequestVar('enableSiteUserAgentExclude', $default = 0);
$keepURLFragments = Common::getRequestVar('keepURLFragments', $default = 0);
$api = API::getInstance();
$api->setDefaultTimezone($timezone);
$api->setDefaultCurrency($currency);
$api->setGlobalExcludedQueryParameters($excludedQueryParameters);
$api->setGlobalExcludedIps($excludedIps);
$api->setGlobalExcludedUserAgents($excludedUserAgents);
$api->setGlobalSearchParameters($searchKeywordParameters, $searchCategoryParameters);
$api->setSiteSpecificUserAgentExcludeEnabled($enableSiteUserAgentExclude == 1);
$api->setKeepURLFragmentsGlobal($keepURLFragments);
$toReturn = $response->getResponse();
} catch (Exception $e) {
$toReturn = $response->getResponseException($e);
}
return $toReturn;
}
/**
* User will download a file called PiwikTracker.php that is the content of the actual script
*/
function downloadPiwikTracker()
{
$path = PIWIK_INCLUDE_PATH . '/libs/PiwikTracker/';
$filename = 'PiwikTracker.php';
Common::sendHeader('Content-type: text/php');
Common::sendHeader('Content-Disposition: attachment; filename="' . $filename . '"');
return file_get_contents($path . $filename);
}
public function ignoreNoDataMessage()
{
Piwik::checkUserHasSomeViewAccess();
$session = new Session\SessionNamespace('siteWithoutData');
$session->ignoreMessage = true;
$session->setExpirationSeconds($oneHour = 60 * 60);
$url = Url::getCurrentUrlWithoutQueryString() . Url::getCurrentQueryStringWithParametersModified(array('module' => 'CoreHome', 'action' => 'index'));
Url::redirectToUrl($url);
}
public function siteWithoutData()
{
$javascriptGenerator = new TrackerCodeGenerator();
$javascriptGenerator->forceMatomoEndpoint();
$piwikUrl = Url::getCurrentUrlWithoutFileName();
if (!$this->site && Piwik::hasUserSuperUserAccess()) {
throw new UnexpectedWebsiteFoundException('Invalid site ' . $this->idSite);
} elseif (!$this->site) {
// redirect to login form
Piwik::checkUserHasViewAccess($this->idSite);
}
return $this->renderTemplate('siteWithoutData', array(
'siteName' => $this->site->getName(),
'idSite' => $this->idSite,
'trackingHelp' => $this->renderTemplate('_displayJavascriptCode', array(
'displaySiteName' => Common::unsanitizeInputValue($this->site->getName()),
'jsTag' => $javascriptGenerator->generate($this->idSite, $piwikUrl),
'idSite' => $this->idSite,
'piwikUrl' => $piwikUrl,
)),
));
}
}