/** * Fetch values for all options (or selected options) from the given WebRequest, making them * available for accessing with getValue() or consumeValue() etc. * * @param WebRequest $r The request to fetch values from * @param array $optionKeys Which options to fetch the values for (default: * all of them). Note that passing an empty array will also result in * values for all keys being fetched. * @throws MWException If the type of any option is invalid */ public function fetchValuesFromRequest(WebRequest $r, $optionKeys = null) { if (!$optionKeys) { $optionKeys = array_keys($this->options); } foreach ($optionKeys as $name) { $default = $this->options[$name]['default']; $type = $this->options[$name]['type']; switch ($type) { case self::BOOL: $value = $r->getBool($name, $default); break; case self::INT: $value = $r->getInt($name, $default); break; case self::FLOAT: $value = $r->getFloat($name, $default); break; case self::STRING: $value = $r->getText($name, $default); break; case self::INTNULL: $value = $r->getIntOrNull($name); break; default: throw new MWException('Unsupported datatype'); } if ($value !== null) { $this->options[$name]['value'] = $value === $default ? null : $value; } } }