72 lines
2.4 KiB
PHP
72 lines
2.4 KiB
PHP
<?php
|
|
/* Icinga Web 2 | (c) 2015 Icinga Development Team | GPLv2+ */
|
|
|
|
namespace Icinga\Web\Form;
|
|
|
|
use BadMethodCallException;
|
|
use Zend_Translate_Adapter;
|
|
use Zend_Validate_NotEmpty;
|
|
use Zend_Validate_File_MimeType;
|
|
use Icinga\Web\Form\Validator\DateTimeValidator;
|
|
use Icinga\Web\Form\Validator\ReadablePathValidator;
|
|
use Icinga\Web\Form\Validator\WritablePathValidator;
|
|
|
|
class ErrorLabeller extends Zend_Translate_Adapter
|
|
{
|
|
protected $messages;
|
|
|
|
public function __construct($options = array())
|
|
{
|
|
if (! isset($options['element'])) {
|
|
throw new BadMethodCallException('Option "element" is missing');
|
|
}
|
|
|
|
$this->messages = $this->createMessages($options['element']);
|
|
}
|
|
|
|
public function isTranslated($messageId, $original = false, $locale = null)
|
|
{
|
|
return array_key_exists($messageId, $this->messages);
|
|
}
|
|
|
|
public function translate($messageId, $locale = null)
|
|
{
|
|
if (array_key_exists($messageId, $this->messages)) {
|
|
return $this->messages[$messageId];
|
|
}
|
|
|
|
return $messageId;
|
|
}
|
|
|
|
protected function createMessages($element)
|
|
{
|
|
$label = $element->getLabel() ?: $element->getName();
|
|
|
|
return array(
|
|
Zend_Validate_NotEmpty::IS_EMPTY => sprintf(t('%s is required and must not be empty'), $label),
|
|
Zend_Validate_File_MimeType::FALSE_TYPE => sprintf(
|
|
t('%s (%%value%%) has a false MIME type of "%%type%%"'),
|
|
$label
|
|
),
|
|
Zend_Validate_File_MimeType::NOT_DETECTED => sprintf(t('%s (%%value%%) has no MIME type'), $label),
|
|
WritablePathValidator::NOT_WRITABLE => sprintf(t('%s is not writable', 'config.path'), $label),
|
|
WritablePathValidator::DOES_NOT_EXIST => sprintf(t('%s does not exist', 'config.path'), $label),
|
|
ReadablePathValidator::NOT_READABLE => sprintf(t('%s is not readable', 'config.path'), $label),
|
|
DateTimeValidator::INVALID_DATETIME_FORMAT => sprintf(
|
|
t('%s not in the expected format: %%value%%'),
|
|
$label
|
|
)
|
|
);
|
|
}
|
|
|
|
protected function _loadTranslationData($data, $locale, array $options = array())
|
|
{
|
|
// nonsense, required as being abstract otherwise...
|
|
}
|
|
|
|
public function toString()
|
|
{
|
|
return 'ErrorLabeller'; // nonsense, required as being abstract otherwise...
|
|
}
|
|
}
|