Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/SitesManager/API.php')
-rw-r--r--plugins/SitesManager/API.php156
1 files changed, 76 insertions, 80 deletions
diff --git a/plugins/SitesManager/API.php b/plugins/SitesManager/API.php
index 736cf1fc9c..49bda812f0 100644
--- a/plugins/SitesManager/API.php
+++ b/plugins/SitesManager/API.php
@@ -13,8 +13,6 @@ use Piwik\Access;
use Piwik\Common;
use Piwik\Container\StaticContainer;
use Piwik\Date;
-use Piwik\Db;
-use Piwik\Metrics\Formatter;
use Piwik\Network\IPUtils;
use Piwik\Option;
use Piwik\Piwik;
@@ -74,10 +72,16 @@ class API extends \Piwik\Plugin\API
*/
private $settingsMetadata;
- public function __construct(SettingsProvider $provider, SettingsMetadata $settingsMetadata)
+ /**
+ * @var Type\TypeManager
+ */
+ private $typeManager;
+
+ public function __construct(SettingsProvider $provider, SettingsMetadata $settingsMetadata, Type\TypeManager $typeManager)
{
$this->settingsProvider = $provider;
$this->settingsMetadata = $settingsMetadata;
+ $this->typeManager = $typeManager;
}
/**
@@ -555,40 +559,22 @@ class API extends \Piwik\Plugin\API
$this->checkName($siteName);
- if (empty($settingValues)) {
+ if (!isset($settingValues)) {
$settingValues = array();
}
- if (isset($urls)) {
- $settingValues = $this->setSettingValue('urls', $urls, $settingValues);
- }
- if (isset($ecommerce)) {
- $settingValues = $this->setSettingValue('ecommerce', $ecommerce, $settingValues);
- }
- if (isset($siteSearch)) {
- $settingValues = $this->setSettingValue('sitesearch', $siteSearch, $settingValues);
- }
- if (isset($searchKeywordParameters)) {
- $settingValues = $this->setSettingValue('sitesearch_keyword_parameters', explode(',', $searchKeywordParameters), $settingValues);
- }
- if (isset($searchCategoryParameters)) {
- $settingValues = $this->setSettingValue('sitesearch_category_parameters', explode(',', $searchCategoryParameters), $settingValues);
- }
- if (isset($keepURLFragments)) {
- $settingValues = $this->setSettingValue('keep_url_fragment', $keepURLFragments, $settingValues);
- }
- if (isset($excludeUnknownUrls)) {
- $settingValues = $this->setSettingValue('exclude_unknown_urls', $excludeUnknownUrls, $settingValues);
- }
- if (isset($excludedIps)) {
- $settingValues = $this->setSettingValue('excluded_ips', explode(',', $excludedIps), $settingValues);
- }
- if (isset($excludedQueryParameters)) {
- $settingValues = $this->setSettingValue('excluded_parameters', explode(',', $excludedQueryParameters), $settingValues);
- }
- if (isset($excludedUserAgents)) {
- $settingValues = $this->setSettingValue('excluded_user_agents', explode(',', $excludedUserAgents), $settingValues);
- }
+ $coreProperties = array();
+ $coreProperties = $this->setSettingValue('urls', $urls, $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('ecommerce', $ecommerce, $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('group', $group, $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('sitesearch', $siteSearch, $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('sitesearch_keyword_parameters', explode(',', $searchKeywordParameters), $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('sitesearch_category_parameters', explode(',', $searchCategoryParameters), $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('keep_url_fragment', $keepURLFragments, $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('exclude_unknown_urls', $excludeUnknownUrls, $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('excluded_ips', explode(',', $excludedIps), $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('excluded_parameters', explode(',', $excludedQueryParameters), $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('excluded_user_agents', explode(',', $excludedUserAgents), $coreProperties, $settingValues);
$timezone = trim($timezone);
if (empty($timezone)) {
@@ -620,7 +606,12 @@ class API extends \Piwik\Plugin\API
$bind['group'] = "";
}
- $allSettings = $this->setAndValidateMeasurableSettings(0, $bind['type'], $settingValues);
+ $allSettings = $this->setAndValidateMeasurableSettings(0, 'website', $coreProperties);
+
+ // any setting specified in setting values will overwrite other setting
+ if (!empty($settingValues)) {
+ $this->setAndValidateMeasurableSettings(0, $bind['type'], $settingValues);
+ }
foreach ($allSettings as $settings) {
foreach ($settings->getSettingsWritableByCurrentUser() as $setting) {
@@ -640,7 +631,12 @@ class API extends \Piwik\Plugin\API
$idSite = $this->getModel()->createSite($bind);
- $this->saveMeasurableSettings($idSite, $bind['type'], $settingValues);
+ if (!empty($coreProperties)) {
+ $this->saveMeasurableSettings($idSite, 'website', $coreProperties);
+ }
+ if (!empty($settingValues)) {
+ $this->saveMeasurableSettings($idSite, $bind['type'], $settingValues);
+ }
// we reload the access list which doesn't yet take in consideration this new website
Access::getInstance()->reloadAccess();
@@ -657,27 +653,34 @@ class API extends \Piwik\Plugin\API
return (int) $idSite;
}
- private function setSettingValue($fieldName, $value, $settingValues)
+ private function setSettingValue($fieldName, $value, $coreProperties, $settingValues)
{
$pluginName = 'WebsiteMeasurable';
- if (empty($settingValues[$pluginName])) {
- $settingValues[$pluginName] = array();
- }
- $found = false;
- foreach ($settingValues[$pluginName] as $key => $setting) {
- if ($setting['name'] === $fieldName) {
- $setting['value'] = $value;
- $found = true;
- break;
+ if (isset($value)) {
+
+ if (empty($coreProperties[$pluginName])) {
+ $coreProperties[$pluginName] = array();
}
- }
- if (!$found) {
- $settingValues[$pluginName][] = array('name' => $fieldName, 'value' => $value);
+ $coreProperties[$pluginName][] = array('name' => $fieldName, 'value' => $value);
+
+ } elseif (!empty($settingValues[$pluginName])) {
+ // we check if the value is defined in the setting values instead
+ foreach ($settingValues[$pluginName] as $key => $setting) {
+ if ($setting['name'] === $fieldName) {
+
+ if (empty($coreProperties[$pluginName])) {
+ $coreProperties[$pluginName] = array();
+ }
+
+ $coreProperties[$pluginName][] = array('name' => $fieldName, 'value' => $setting['value']);
+ return $coreProperties;
+ }
+ }
}
- return $settingValues;
+ return $coreProperties;
}
public function getSiteSettings($idSite)
@@ -1206,41 +1209,26 @@ class API extends \Piwik\Plugin\API
$bind['name'] = $siteName;
}
- if (empty($settingValues)) {
+ if (!isset($settingValues)) {
$settingValues = array();
}
- if (isset($urls)) {
- $settingValues = $this->setSettingValue('urls', $urls, $settingValues);
- }
- if (isset($ecommerce)) {
- $settingValues = $this->setSettingValue('ecommerce', $ecommerce, $settingValues);
- }
- if (isset($siteSearch)) {
- $settingValues = $this->setSettingValue('sitesearch', $siteSearch, $settingValues);
- }
- if (isset($searchKeywordParameters)) {
- $settingValues = $this->setSettingValue('sitesearch_keyword_parameters', explode(',', $searchKeywordParameters), $settingValues);
- }
- if (isset($searchCategoryParameters)) {
- $settingValues = $this->setSettingValue('sitesearch_category_parameters', explode(',', $searchCategoryParameters), $settingValues);
- }
- if (isset($keepURLFragments)) {
- $settingValues = $this->setSettingValue('keep_url_fragment', $keepURLFragments, $settingValues);
- }
- if (isset($excludeUnknownUrls)) {
- $settingValues = $this->setSettingValue('exclude_unknown_urls', $excludeUnknownUrls, $settingValues);
- }
- if (isset($excludedIps)) {
- $settingValues = $this->setSettingValue('excluded_ips', explode(',', $excludedIps), $settingValues);
- }
- if (isset($excludedQueryParameters)) {
- $settingValues = $this->setSettingValue('excluded_parameters', explode(',', $excludedQueryParameters), $settingValues);
- }
- if (isset($excludedUserAgents)) {
- $settingValues = $this->setSettingValue('excluded_user_agents', explode(',', $excludedUserAgents), $settingValues);
+ if (empty($coreProperties)) {
+ $coreProperties = array();
}
+ $coreProperties = $this->setSettingValue('urls', $urls, $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('group', $group, $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('ecommerce', $ecommerce, $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('sitesearch', $siteSearch, $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('sitesearch_keyword_parameters', explode(',', $searchKeywordParameters), $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('sitesearch_category_parameters', explode(',', $searchCategoryParameters), $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('keep_url_fragment', $keepURLFragments, $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('exclude_unknown_urls', $excludeUnknownUrls, $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('excluded_ips', explode(',', $excludedIps), $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('excluded_parameters', explode(',', $excludedQueryParameters), $coreProperties, $settingValues);
+ $coreProperties = $this->setSettingValue('excluded_user_agents', explode(',', $excludedUserAgents), $coreProperties, $settingValues);
+
if (isset($currency)) {
$currency = trim($currency);
$this->checkValidCurrency($currency);
@@ -1264,6 +1252,10 @@ class API extends \Piwik\Plugin\API
$bind['type'] = $this->checkAndReturnType($type);
}
+ if (!empty($coreProperties)) {
+ $this->setAndValidateMeasurableSettings($idSite, $idType = 'website', $coreProperties);
+ }
+
if (!empty($settingValues)) {
$this->setAndValidateMeasurableSettings($idSite, $idType = null, $settingValues);
}
@@ -1272,6 +1264,10 @@ class API extends \Piwik\Plugin\API
$this->getModel()->updateSite($bind, $idSite);
}
+ if (!empty($coreProperties)) {
+ $this->saveMeasurableSettings($idSite, $idType = 'website', $coreProperties);
+ }
+
if (!empty($settingValues)) {
$this->saveMeasurableSettings($idSite, $idType = null, $settingValues);
}