/** * Run the filters before each save. * * @param \Titon\Event\Event $event * @param \Titon\Db\Query $query * @param int|int[] $id * @param array $data * @return bool */ public function preSave(Event $event, Query $query, $id, array &$data) { $filters = $this->getFilters(); foreach ($data as $key => $value) { if (empty($filters[$key])) { continue; } $filter = $filters[$key]; // HTML escape if (isset($filter['html'])) { $value = Sanitize::html($value, $filter['html']); } // Newlines if (isset($filter['newlines'])) { $value = Sanitize::newlines($value, $filter['newlines']); } // Whitespace if (isset($filter['whitespace'])) { $value = Sanitize::whitespace($value, $filter['whitespace']); } // XSS if (isset($filter['xss'])) { $value = Sanitize::xss($value, $filter['xss']); } $data[$key] = $value; } return true; }
function nl($value, array $options = array()) { return Sanitize::newlines($value, $options); }
/** * Test that newlines() removes extraneous CRLF. */ public function testNewlines() { $this->assertEquals("Testing\rCarriage\rReturns", Sanitize::newlines("Testing\rCarriage\r\rReturns")); $this->assertEquals("Testing\r\rCarriage\rReturns", Sanitize::newlines("Testing\r\rCarriage\r\r\rReturns", array('limit' => 3))); $this->assertEquals("TestingCarriageReturns", Sanitize::newlines("Testing\r\rCarriage\r\r\rReturns", array('limit' => 0))); $this->assertEquals("Testing\nLine\nFeeds", Sanitize::newlines("Testing\nLine\n\nFeeds")); $this->assertEquals("Testing\nLine\n\nFeeds", Sanitize::newlines("Testing\n\n\nLine\n\nFeeds", array('limit' => 3))); $this->assertEquals("TestingLineFeeds", Sanitize::newlines("Testing\n\nLine\n\nFeeds", array('limit' => 0))); $this->assertEquals("Testing\r\nBoth\r\nLineFeeds\r\n\r\nAnd\r\nCarriageReturns", Sanitize::newlines("Testing\r\nBoth\r\r\n\nLineFeeds\r\n\r\r\n\nAnd\r\nCarriageReturns")); $this->assertEquals("Testing\r\nBoth\r\nLineFeeds\r\nAnd\r\nCarriageReturns", Sanitize::newlines("Testing\r\nBoth\r\n\r\nLineFeeds\r\n\r\n\r\nAnd\r\nCarriageReturns")); $this->assertEquals("Testing\r\nBoth\r\n\r\nLineFeeds\r\n\r\n\r\nAnd\r\nCarriageReturns", Sanitize::newlines("Testing\r\nBoth\r\n\r\nLineFeeds\r\n\r\n\r\nAnd\r\nCarriageReturns", array('crlf' => false))); }