12345678910111213141516171819202122232425262728293031323334 |
- <?php
- namespace dokuwiki\plugin\config\core\Setting;
- /**
- * Class setting_regex
- */
- class SettingRegex extends SettingString {
- protected $delimiter = '/'; // regex delimiter to be used in testing input
- protected $pregflags = 'ui'; // regex pattern modifiers to be used in testing input
- /** @inheritdoc */
- public function update($input) {
- // let parent do basic checks, value, not changed, etc.
- $local = $this->local;
- if(!parent::update($input)) return false;
- $this->local = $local;
- // see if the regex compiles and runs (we don't check for effectiveness)
- $regex = $this->delimiter . $input . $this->delimiter . $this->pregflags;
- $lastError = error_get_last();
- @preg_match($regex, 'testdata');
- if(preg_last_error() != PREG_NO_ERROR || error_get_last() != $lastError) {
- $this->input = $input;
- $this->error = true;
- return false;
- }
- $this->local = $input;
- return true;
- }
- }
|