167 lines
6.2 KiB
PHP
167 lines
6.2 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\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 getMeasurableTypeSettings()
|
|
{
|
|
$idSite = Common::getRequestVar('idSite', 0, 'int');
|
|
$idType = Common::getRequestVar('idType', '', 'string');
|
|
|
|
if ($idSite >= 1) {
|
|
Piwik::checkUserHasAdminAccess($idSite);
|
|
} else if ($idSite === 0) {
|
|
Piwik::checkUserHasSomeAdminAccess();
|
|
} else {
|
|
throw new Exception('Invalid idSite parameter. IdSite has to be zero or higher');
|
|
}
|
|
|
|
$view = new View('@SitesManager/measurable_type_settings');
|
|
|
|
$propSettings = new MeasurableSettings($idSite, $idType);
|
|
$view->settings = $propSettings->getSettingsForCurrentUser();
|
|
|
|
return $view->render();
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
/**
|
|
* Displays the admin UI page showing all tracking tags
|
|
* @return string
|
|
*/
|
|
function displayJavascriptCode()
|
|
{
|
|
$idSite = Common::getRequestVar('idSite');
|
|
Piwik::checkUserHasViewAccess($idSite);
|
|
$javascriptGenerator = new TrackerCodeGenerator();
|
|
$jsTag = $javascriptGenerator->generate($idSite, SettingsPiwik::getPiwikUrl());
|
|
$site = new Site($idSite);
|
|
|
|
return $this->renderTemplate('displayJavascriptCode', array(
|
|
'idSite' => $idSite,
|
|
'displaySiteName' => $site->getName(),
|
|
'jsTag' => $jsTag
|
|
));
|
|
}
|
|
|
|
/**
|
|
* 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';
|
|
header('Content-type: text/php');
|
|
header('Content-Disposition: attachment; filename="' . $filename . '"');
|
|
return file_get_contents($path . $filename);
|
|
}
|
|
|
|
public function siteWithoutData()
|
|
{
|
|
$javascriptGenerator = new TrackerCodeGenerator();
|
|
$piwikUrl = Url::getCurrentUrlWithoutFileName();
|
|
|
|
if (!$this->site) {
|
|
throw new UnexpectedWebsiteFoundException('Invalid site ' . $this->idSite);
|
|
}
|
|
|
|
return $this->renderTemplate('siteWithoutData', array(
|
|
'siteName' => $this->site->getName(),
|
|
'trackingHelp' => $this->renderTemplate('_displayJavascriptCode', array(
|
|
'displaySiteName' => Common::unsanitizeInputValue($this->site->getName()),
|
|
'jsTag' => $javascriptGenerator->generate($this->idSite, $piwikUrl),
|
|
'idSite' => $this->idSite,
|
|
'piwikUrl' => $piwikUrl,
|
|
)),
|
|
));
|
|
}
|
|
}
|