40 $idValidator = new \Zend_Validate();
44 $resourceValidator = new \Zend_Validate();
46 $resourceValidator->addValidator(
50 $attributeValidator = new \Zend_Validate();
54 $textValidator = new \Zend_Validate_StringLength([
'min' => 3,
'max' => 50]);
56 $titleValidator = $tooltipValidator = $textValidator;
57 $actionValidator = $moduleDepValidator = $configDepValidator = $attributeValidator;
59 $this->_validators[
'id'] = $idValidator;
60 $this->_validators[
'title'] = $titleValidator;
61 $this->_validators[
'action'] = $actionValidator;
62 $this->_validators[
'resource'] = $resourceValidator;
63 $this->_validators[
'dependsOnModule'] = $moduleDepValidator;
64 $this->_validators[
'dependsOnConfig'] = $configDepValidator;
65 $this->_validators[
'toolTip'] = $tooltipValidator;
78 if ($this->checkMenuItemIsRemoved(
$data)) {
82 $this->assertContainsRequiredParameters(
$data);
83 $this->assertIdentifierIsNotUsed(
$data[
'id']);
86 $this->validateMenuItemParameter($param,
$value);
88 $this->_ids[] =
$data[
'id'];
97 private function checkMenuItemIsRemoved(
$data)
99 return isset(
$data[
'id'],
$data[
'removed']) &&
$data[
'removed'] ===
true;
108 private function assertContainsRequiredParameters(
$data)
110 foreach ($this->_required as $param) {
111 if (!isset(
$data[$param])) {
112 throw new \BadMethodCallException(
'Missing required param ' . $param);
123 private function assertIdentifierIsNotUsed(
$id)
125 if (array_search(
$id, $this->_ids) !==
false) {
126 throw new \InvalidArgumentException(
'Item with id ' .
$id .
' already exists');
137 private function validateMenuItemParameter($param,
$value)
142 if (!isset($this->_validators[$param])) {
146 $validator = $this->_validators[$param];
147 if ($validator->isValid(
$value)) {
151 throw new \InvalidArgumentException(
152 "Param " . $param .
" doesn't pass validation: " . implode(
154 $validator->getMessages()
169 if (in_array($param, $this->_required) &&
$value ===
null) {
170 throw new \InvalidArgumentException(
'Param ' . $param .
' is required');
173 if (
$value !==
null && isset($this->_validators[$param]) && !$this->_validators[$param]->isValid(
$value)) {
174 throw new \InvalidArgumentException(
175 'Param ' . $param .
' doesn\'t pass validation: ' . implode(
177 $this->_validators[$param]->getMessages()