isProtected()) return false;
        $input = $this->fromString($input);
        $value = is_null($this->local) ? $this->default : $this->local;
        if($value == $input) return false;
        foreach($input as $item) {
            if($this->pattern && !preg_match($this->pattern, $item)) {
                $this->error = true;
                $this->input = $input;
                return false;
            }
        }
        $this->local = $input;
        return true;
    }
    /**
     * Escaping
     *
     * @param string $string
     * @return string
     */
    protected function escape($string) {
        $tr = array("\\" => '\\\\', "'" => '\\\'');
        return "'" . strtr(cleanText($string), $tr) . "'";
    }
    /** @inheritdoc */
    public function out($var, $fmt = 'php') {
        if($fmt != 'php') return '';
        $vals = array_map(array($this, 'escape'), $this->local);
        $out = '$' . $var . "['" . $this->getArrayKey() . "'] = array(" . join(', ', $vals) . ");\n";
        return $out;
    }
    /** @inheritdoc */
    public function html(\admin_plugin_config $plugin, $echo = false) {
        $disable = '';
        if($this->isProtected()) {
            $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($this->fromArray($value));
        $label = '';
        $input = '';
        return array($label, $input);
    }
}