. */ declare(strict_types=1); namespace FireflyIII\Http\Requests; use Carbon\Carbon; use Illuminate\Foundation\Http\FormRequest; /** * Class Request. * * @SuppressWarnings(PHPMD.NumberOfChildren) */ class Request extends FormRequest { /** * Return a boolean value. * * @param string $field * * @return bool */ public function boolean(string $field): bool { if ('true' === (string)$this->input($field)) { return true; } if ('false' === (string)$this->input($field)) { return false; } return 1 === (int)$this->input($field); } /** * Return floating value. * * @param string $field * * @return float|null */ public function float(string $field): ?float { $res = $this->get($field); if (null === $res) { return null; } return (float)$res; } /** * Return integer value. * * @param string $field * * @return int */ public function integer(string $field): int { return (int)$this->get($field); } /** * Return string value. * * @param string $field * * @return string * * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function string(string $field): string { $string = $this->get($field) ?? ''; $search = [ "\u{0001}", // start of heading "\u{0002}", // start of text "\u{0003}", // end of text "\u{0004}", // end of transmission "\u{0005}", // enquiry "\u{0006}", // ACK "\u{0007}", // BEL "\u{0008}", // backspace "\u{000E}", // shift out "\u{000F}", // shift in "\u{0010}", // data link escape "\u{0011}", // DC1 "\u{0012}", // DC2 "\u{0013}", // DC3 "\u{0014}", // DC4 "\u{0015}", // NAK "\u{0016}", // SYN "\u{0017}", // ETB "\u{0018}", // CAN "\u{0019}", // EM "\u{001A}", // SUB "\u{001B}", // escape "\u{001C}", // file separator "\u{001D}", // group separator "\u{001E}", // record separator "\u{001F}", // unit separator "\u{007F}", // DEL "\u{00A0}", // non-breaking space "\u{1680}", // ogham space mark "\u{180E}", // mongolian vowel separator "\u{2000}", // en quad "\u{2001}", // em quad "\u{2002}", // en space "\u{2003}", // em space "\u{2004}", // three-per-em space "\u{2005}", // four-per-em space "\u{2006}", // six-per-em space "\u{2007}", // figure space "\u{2008}", // punctuation space "\u{2009}", // thin space "\u{200A}", // hair space "\u{200B}", // zero width space "\u{202F}", // narrow no-break space "\u{3000}", // ideographic space "\u{FEFF}", // zero width no -break space ]; $replace = "\x20"; // plain old normal space $string = str_replace($search, $replace, $string); return trim($string); } /** * Return date or NULL. * * @param string $field * * @return Carbon|null */ protected function date(string $field): ?Carbon { return $this->get($field) ? new Carbon($this->get($field)) : null; } }