*/
if (!class_exists('setting_autogroup')) {
/**
* Class setting_autogroup
*/
class setting_autogroup extends setting_string {
/**
* Create an array from a string
*
* @param string $string
* @return array
*/
protected function _from_string($string){
$array = explode("\n", $string);
$array = array_map('trim', $array);
$array = array_filter($array);
$array = array_unique($array);
return $array;
}
/**
* Create a string from an array
*
* @param array $array
* @return string
*/
protected function _from_array($array){
return join("\n", (array) $array);
}
/**
* update setting with user provided value $input
* if value fails error check, save it
*
* @param string $input
* @return bool true if changed, false otherwise (incl. on error)
*/
function update($input) {
if (is_null($input)) return false;
if ($this->is_protected()) return false;
dbglog(print_r(urlencode($input),true));
$lines = $this->_from_string($input);
dbglog(print_r($lines,true));
$everything = $this->_from_array($lines);
$value = is_null($this->_local) ? $this->_default : $this->_local;
if ($value == $everything) return false;
$plugin = plugin_load('action','autogroup');
foreach($lines as $line=>$item){
$parts = explode(',',$item,3);
if (count($parts) != 3) {
$this->_error = true;
$this->_input = $input;
msg(sprintf($plugin->getLang('not_3_parts'),$item,$line+1), -1);
return false;
}
if (!in_array($parts[1], array('mail','name','user'))) {
$this->_error = true;
$this->_input = $input;
msg(sprintf($plugin->getLang('bad_attribute'),$item, $line+1), -1);
return false;
}
if (preg_match ($parts[2], '') === false) {
$this->_error = true;
$this->_input = $input;
msg(sprintf($plugin->getLang('bad_regex'),$item,$line+1), -1);
return false;
}
}
$this->_local = $everything;
return true;
}
/**
* Build html for label and input of setting
*
* @param admin_plugin_config $plugin object of config plugin
* @param bool $echo true: show inputted value, when error occurred, otherwise the stored setting
* @return string[] with content array(string $label_html, string $input_html)
*/
function html(admin_plugin_config $plugin, $echo=false) {
$disable = '';
if ($this->is_protected()) {
$value = $this->_protected;
$disable = 'disabled="disabled"';
} else {
if ($echo && $this->_error) {
$value = $this->_input;
} else {
$value = is_null($this->_local) ? $this->_default : $this->_local;
}
}
$key = htmlspecialchars($this->_key);
$value = htmlspecialchars($value);
$label = '';
$input = '';
return array($label,$input);
}
}
}