public function addSite($siteName, $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::checkUserHasSuperUserAccess();
$this->checkName($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);
}
$timezone = trim($timezone);
if (empty($timezone)) {
$timezone = $this->getDefaultTimezone();
}
$this->checkValidTimezone($timezone);
if (empty($currency)) {
$currency = $this->getDefaultCurrency();
}
$this->checkValidCurrency($currency);
$bind = array('name' => $siteName);
$bind['timezone'] = $timezone;
$bind['currency'] = $currency;
$bind['main_url'] = '';
if (is_null($startDate)) {
$bind['ts_created'] = Date::now()->getDatetime();
} else {
$bind['ts_created'] = Date::factory($startDate)->getDatetime();
}
$bind['type'] = $this->checkAndReturnType($type);
if (!empty($group) && Piwik::hasUserSuperUserAccess()) {
$bind['group'] = trim($group);
} else {
$bind['group'] = "";
}
$allSettings = $this->setAndValidateMeasurableSettings(0, $bind['type'], $settingValues);
foreach ($allSettings as $settings) {
foreach ($settings->getSettingsWritableByCurrentUser() as $setting) {
$name = $setting->getName();
if ($setting instanceof MeasurableProperty && $name !== 'urls') {
$default = $setting->getDefaultValue();
if (is_bool($default)) {
$default = (int) $default;
} elseif (is_array($default)) {
$default = implode(',', $default);
}
$bind[$name] = $default;
}
}
}
$idSite = $this->getModel()->createSite($bind);
$this->saveMeasurableSettings($idSite, $bind['type'], $settingValues);
// we reload the access list which doesn't yet take in consideration this new website
Access::getInstance()->reloadAccess();
$this->postUpdateWebsite($idSite);
/**
* Triggered after a site has been added.
*
* @param int $idSite The ID of the site that was added.
*/
Piwik::postEvent('SitesManager.addSite.end', array($idSite));
return (int) $idSite;
}