public function updateSite($idSite, $siteName = null, $urls = null, $ecommerce = null, $siteSearch = null, $searchKeywordParameters = null, $searchCategoryParameters = null, $excludedIps = null, $excludedQueryParameters = null, $timezone = null, $currency = null, $group = null, $startDate = null, $excludedUserAgents = null, $keepURLFragments = null, $type = null, $settingValues = null, $excludeUnknownUrls = null)
{
Piwik::checkUserHasAdminAccess($idSite);
$idSites = $this->getSitesId();
if (!in_array($idSite, $idSites)) {
throw new Exception("website id = {$idSite} not found");
}
// Build the SQL UPDATE based on specified updates to perform
$bind = array();
if (!is_null($siteName)) {
$this->checkName($siteName);
$bind['name'] = $siteName;
}
if (empty($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 (isset($currency)) {
$currency = trim($currency);
$this->checkValidCurrency($currency);
$bind['currency'] = $currency;
}
if (isset($timezone)) {
$timezone = trim($timezone);
$this->checkValidTimezone($timezone);
$bind['timezone'] = $timezone;
}
if (isset($group) && Piwik::hasUserSuperUserAccess()) {
$bind['group'] = trim($group);
}
if (isset($startDate)) {
$bind['ts_created'] = Date::factory($startDate)->getDatetime();
}
if (isset($type)) {
$bind['type'] = $this->checkAndReturnType($type);
}
if (!empty($settingValues)) {
$this->setAndValidateMeasurableSettings($idSite, $idType = null, $settingValues);
}
if (!empty($bind)) {
$this->getModel()->updateSite($bind, $idSite);
}
if (!empty($settingValues)) {
$this->saveMeasurableSettings($idSite, $idType = null, $settingValues);
}
$this->postUpdateWebsite($idSite);
}