mirror of
https://github.com/moodle/moodle.git
synced 2025-05-31 05:02:06 +02:00
Prior to this change, all the line endings in the imported HTMLPurifier library were using CRLF (\r\n aka Windows style), but the HTMLPurifier source and also the downloadable artefacts use LF (\n aka Linux style) as line endings. This has been the case since 510d190382003985eafd6f4407190d43509016a5 when with the commit "MDL-38672 import HTML Purifier 4.5.0" all line endings were changed from LF to CRLF. There was no comment in the commit on why this change was done. As the original source uses LF, this commit partly reverts 510d190382003985eafd6f4407190d43509016a5 and goes back to LF as line endings. Signed-off-by: Daniel Ziegenberg <daniel@ziegenberg.at>
131 lines
2.8 KiB
PHP
131 lines
2.8 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Fluent interface for validating the contents of member variables.
|
|
* This should be immutable. See HTMLPurifier_ConfigSchema_Validator for
|
|
* use-cases. We name this an 'atom' because it's ONLY for validations that
|
|
* are independent and usually scalar.
|
|
*/
|
|
class HTMLPurifier_ConfigSchema_ValidatorAtom
|
|
{
|
|
/**
|
|
* @type string
|
|
*/
|
|
protected $context;
|
|
|
|
/**
|
|
* @type object
|
|
*/
|
|
protected $obj;
|
|
|
|
/**
|
|
* @type string
|
|
*/
|
|
protected $member;
|
|
|
|
/**
|
|
* @type mixed
|
|
*/
|
|
protected $contents;
|
|
|
|
public function __construct($context, $obj, $member)
|
|
{
|
|
$this->context = $context;
|
|
$this->obj = $obj;
|
|
$this->member = $member;
|
|
$this->contents =& $obj->$member;
|
|
}
|
|
|
|
/**
|
|
* @return HTMLPurifier_ConfigSchema_ValidatorAtom
|
|
*/
|
|
public function assertIsString()
|
|
{
|
|
if (!is_string($this->contents)) {
|
|
$this->error('must be a string');
|
|
}
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return HTMLPurifier_ConfigSchema_ValidatorAtom
|
|
*/
|
|
public function assertIsBool()
|
|
{
|
|
if (!is_bool($this->contents)) {
|
|
$this->error('must be a boolean');
|
|
}
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return HTMLPurifier_ConfigSchema_ValidatorAtom
|
|
*/
|
|
public function assertIsArray()
|
|
{
|
|
if (!is_array($this->contents)) {
|
|
$this->error('must be an array');
|
|
}
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return HTMLPurifier_ConfigSchema_ValidatorAtom
|
|
*/
|
|
public function assertNotNull()
|
|
{
|
|
if ($this->contents === null) {
|
|
$this->error('must not be null');
|
|
}
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return HTMLPurifier_ConfigSchema_ValidatorAtom
|
|
*/
|
|
public function assertAlnum()
|
|
{
|
|
$this->assertIsString();
|
|
if (!ctype_alnum($this->contents)) {
|
|
$this->error('must be alphanumeric');
|
|
}
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return HTMLPurifier_ConfigSchema_ValidatorAtom
|
|
*/
|
|
public function assertNotEmpty()
|
|
{
|
|
if (empty($this->contents)) {
|
|
$this->error('must not be empty');
|
|
}
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return HTMLPurifier_ConfigSchema_ValidatorAtom
|
|
*/
|
|
public function assertIsLookup()
|
|
{
|
|
$this->assertIsArray();
|
|
foreach ($this->contents as $v) {
|
|
if ($v !== true) {
|
|
$this->error('must be a lookup array');
|
|
}
|
|
}
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @param string $msg
|
|
* @throws HTMLPurifier_ConfigSchema_Exception
|
|
*/
|
|
protected function error($msg)
|
|
{
|
|
throw new HTMLPurifier_ConfigSchema_Exception(ucfirst($this->member) . ' in ' . $this->context . ' ' . $msg);
|
|
}
|
|
}
|
|
|
|
// vim: et sw=4 sts=4
|