private function makeExcludeIps()
{
return $this->makeProperty('excluded_ips', $default = array(), FieldConfig::TYPE_ARRAY, function (FieldConfig $field) {
$ip = IP::getIpFromHeader();
$field->title = Piwik::translate('SitesManager_ExcludedIps');
$field->inlineHelp = Piwik::translate('SitesManager_HelpExcludedIps', array('1.2.3.*', '1.2.*.*')) . '<br /><br />' . Piwik::translate('SitesManager_YourCurrentIpAddressIs', array('<i>' . $ip . '</i>'));
$field->uiControl = FieldConfig::UI_CONTROL_TEXTAREA;
$field->uiControlAttributes = array('cols' => '20', 'rows' => '4');
$field->validate = function ($value) {
if (!empty($value)) {
$ips = array_map('trim', $value);
$ips = array_filter($ips, 'strlen');
foreach ($ips as $ip) {
if (IPUtils::getIPRangeBounds($ip) === null) {
throw new Exception(Piwik::translate('SitesManager_ExceptionInvalidIPFormat', array($ip, "1.2.3.4, 1.2.3.*, or 1.2.3.4/5")));
}
}
}
};
$field->transform = function ($value) {
if (empty($value)) {
return array();
}
$ips = array_map('trim', $value);
$ips = array_filter($ips, 'strlen');
return $ips;
};
});
}