1<?php 2/* 3** Zabbix 4** Copyright (C) 2001-2021 Zabbix SIA 5** 6** This program is free software; you can redistribute it and/or modify 7** it under the terms of the GNU General Public License as published by 8** the Free Software Foundation; either version 2 of the License, or 9** (at your option) any later version. 10** 11** This program is distributed in the hope that it will be useful, 12** but WITHOUT ANY WARRANTY; without even the implied warranty of 13** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14** GNU General Public License for more details. 15** 16** You should have received a copy of the GNU General Public License 17** along with this program; if not, write to the Free Software 18** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 19**/ 20 21 22class CLimitedSetValidator extends CValidator { 23 24 /** 25 * Allowed values. 26 * 27 * @var array 28 */ 29 public $values = []; 30 31 /** 32 * Error message if the value is invalid or is not of an acceptable type. 33 * 34 * @var string 35 */ 36 public $messageInvalid; 37 38 /** 39 * Checks if the given value belongs to some set. 40 * 41 * @param $value 42 * 43 * @return bool 44 */ 45 public function validate($value) { 46 if (!is_string($value) && !is_int($value)) { 47 $this->error($this->messageInvalid, $this->stringify($value)); 48 49 return false; 50 } 51 52 $values = array_flip($this->values); 53 54 if (!isset($values[$value])) { 55 $this->error($this->messageInvalid, $value); 56 57 return false; 58 } 59 60 return true; 61 } 62 63} 64