Joostina CMS / CMF v2.* API
  • Docs
  • Package
  • Class
  • Tree
  • Todo
Overview

Packages

  • Components
    • Acls
      • Models
        • Admin
        • Site
    • BlogCategory
      • Models
        • Admin
        • Site
    • Blogs
      • Controllers
        • Admin
        • Site
      • Helpers
      • Models
        • Admin
        • Site
    • Coder
      • Controllers
        • Admin
      • Models
        • Admin
    • Comments
      • Controllers
        • Admin
        • Site
      • Helpers
      • Models
        • Admin
        • Site
    • CommentsCounter
      • Models
        • Admin
        • Site
    • Mainpage
      • Controllers
        • Site
    • News
      • Controllers
        • Admin
        • Site
      • Helpers
      • Models
        • Admin
        • Site
    • Pages
      • Controllers
        • Admin
        • Site
      • Models
        • Site
    • Search
      • Controllers
        • Site
    • Site
      • Controllers
        • Admin
        • Site
    • Sitemap
      • Controllers
        • Admin
        • Site
      • Models
        • Admin
        • Site
    • Test
      • Controllers
        • Site
    • Torrents
      • Controllers
        • Site
    • Users
      • Controllers
        • Admin
        • Site
      • Models
        • Admin
        • Site
  • Compression
  • Core
    • Libraries
      • Arhive
      • Array
      • Attached
      • Autoadmin
      • Autoloader
      • Benchmark
      • Breadcrumbs
      • Cache
      • Config
      • Cookie
      • Csrf
      • Database
        • Drivers
          • Interfaces
      • Datetime
      • Debug
      • Editor
      • Events
      • File
      • Filter
      • Flashmessage
      • Folder
      • Hit
      • Html
      • Image
      • Inflector
      • Inputfilter
      • Libraries
      • Mail
      • Module
      • Nestedset
      • Pager
      • Pages
      • Params
      • Randomizer
      • Request
      • RobotLoader
      • Route
      • Security
      • Session
      • Static
      • String
      • Text
      • Trash
      • Validate
  • Email
  • Extra
    • Libraries
      • Basket
  • Joostina
    • Controller
    • Core
    • Document
  • JSMin
  • Libraries
    • Extra
      • Basket
        • Models
          • Site
  • None
  • Plugins
    • Autoadmin
    • Editor
    • Sitemap
  • SimpleMail
  • Vendors
    • Libraries
      • Email

Classes

  • helperAcl
  • joosAdminToolbarButtons
  • joosAdminView
  • joosAdminViewToolbarEdit
  • joosAdminViewToolbarListing
  • joosAutoadminHTML
  • joosTemplater
  • joosValidateHelper
  • modelAdminCoder_Faker
  • moduleActions
  • moduleActionsLogin
  • moduleActionsMenu
  • moduleActionsNews
  • moduleActionsTest
  • Route
  • rulesValidation
  • TreeBuilder

Interfaces

  • joosAutoadminPluginsEdit
  • joosAutoadminPluginsTable

Exceptions

  • joosAutoadminClassPlugionNotFoundException
  • joosAutoadminFilePluginNotFoundException
  • joosAutoloaderClassNotFoundException
  • joosAutoloaderFileNotFoundException
  • joosAutoloaderOnStartFileNotFoundException
  • joosCacheException
  • joosCoreException
  • joosDatabaseException
  • joosException
  • joosFileLibrariesException
  • joosFolderLibrariesException
  • joosImageLibrariesException
  • joosModulesException
  • joosSimpleMailException
  • joosUploadLibrariesException
  • joosUserException
  • JSMinException

Functions

  • navigation_ul_li_recurse
  • quoted_printable_encode
  1: <?php defined('_JOOS_CORE') or exit();
  2: 
  3: /**
  4:  * Библиотека валидациии данных
  5:  *
  6:  * @version    1.0
  7:  * @package    Core\Libraries
  8:  * @subpackage Validate
  9:  * @category   Libraries
 10:  * @author     Joostina Team <info@joostina.ru>
 11:  * @copyright  (C) 2007-2012 Joostina Team
 12:  * @license    MIT License http://www.opensource.org/licenses/mit-license.php
 13:  * Информация об авторах и лицензиях стороннего кода в составе Joostina CMS: docs/copyrights
 14:  *
 15:  * */
 16: class joosValidate
 17: {
 18:     /**
 19:      * Проверка строка на соответствие email - формату
 20:      *
 21:      * @tutorial joosValidate::is_email('admin@joostina.ru')
 22:      * @tutorial joosValidate::is_email('noooo@mail.ru')
 23:      *
 24:      * @param  string $value email адрес для проверки
 25:      * @return bool   результат проверки соответсвия
 26:      */
 27:     public static function is_email($value)
 28:     {
 29:         return is_string($value) && filter_var($value, FILTER_VALIDATE_EMAIL);
 30:     }
 31: 
 32:     /**
 33:      * Проверка строки на наличие в ней только цифр, либо сама строка - число
 34:      *
 35:      * @param string|int $value значение для проверки
 36:      *
 37:      * @return bool результат проверки соответсвия
 38:      */
 39:     public static function is_digital($value)
 40:     {
 41:         return filter_var($value, FILTER_VALIDATE_INT) !== false;
 42:     }
 43: 
 44:     /**
 45:      * Проверяет, что значение переменной больше чем указанное число min
 46:      *
 47:      * @param  type $value значение для проверки
 48:      * @param  type $min
 49:      * @return bool результат проверки соответсвия
 50:      */
 51:     public static function is_digital_value_min($value, $min)
 52:     {
 53:         return (static::is_digital($value) && (int) $value > $min);
 54:     }
 55: 
 56:     /**
 57:      * Проверяет, что значение переменной меньше чем указанное число max
 58:      *
 59:      * @param  string|int $value значение для проверки
 60:      * @param  int        $max
 61:      * @return bool       результат проверки соответсвия
 62:      */
 63:     public static function is_digital_value_max($value, $max)
 64:     {
 65:         return (static::is_digital($value) && (int) $value < $max);
 66:     }
 67: 
 68:     /**
 69:      * Проверка вхождения цифрового значения переменной в указанный диапазон min и max
 70:      *
 71:      * @param  string|int $value значение для проверки
 72:      * @param  string|int $min
 73:      * @param  string|int $max
 74:      * @return bool       результат проверки соответсвия
 75:      */
 76:     public static function is_digital_value_between($value, $min, $max)
 77:     {
 78:         $int_options = array("options" => array("min_range" => $min, "max_range" => $max));
 79: 
 80:         return (static::is_digital($value) && filter_var($value, FILTER_VALIDATE_INT, $int_options));
 81:     }
 82: 
 83:     /**
 84:      * Проверка строка на наличие в ней только цифр алфавита, русского и английского а-я a-z
 85:      *
 86:      * @param string $value
 87:      *
 88:      * @return bool результат проверки соответсвия
 89:      */
 90:     public static function is_alfa($value)
 91:     {
 92:         return (bool) preg_match('/^[a-zа-яё]+$/iu', (string) $value);
 93:     }
 94: 
 95:     /**
 96:      * Проверка строка на соответствие url - формату
 97:      *
 98:      * @param string $value
 99:      *
100:      * @return bool результат проверки соответсвия
101:      */
102:     public static function is_url($value)
103:     {
104:         return (filter_var($value, FILTER_VALIDATE_URL) === false) ? false : true;
105:     }
106: 
107:     /**
108:      * Проверка переменной на то что она является массивом
109:      *
110:      * @param  array $value
111:      * @return bool  результат проверки соответсвия
112:      */
113:     public static function is_array($value)
114:     {
115:         return is_array($value) || ($value instanceof ArrayAccess && $value instanceof Traversable && $value instanceof Countable);
116:     }
117: 
118:     /**
119:      * Проверка на булевый тип
120:      *
121:      * @param  string|int|bool $value
122:      * @return bool            результат проверки соответсвия
123:      */
124:     public static function is_bool($value)
125:     {
126:         return filter_var($value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
127:     }
128: 
129:     /**
130:      * Проверка на тип float
131:      *
132:      * @param  string|int|float $value
133:      * @return bool             результат проверки соответсвия
134:      */
135:     public static function is_float($value)
136:     {
137:         return filter_var($value, FILTER_VALIDATE_FLOAT) !== false;
138:     }
139: 
140:     /**
141:      * Проверка что переменная является валидным IP адресом
142:      *
143:      * @param string $value
144:      * @param  $flags
145:      * @return bool результат проверки соответсвия
146:      */
147:     public static function is_ip($value, $flags = null)
148:     {
149:         return (boolean) filter_var($value, FILTER_VALIDATE_IP, array('flags' => $flags));
150:     }
151: 
152:     /**
153:      * Проверяет, что длина строки переменной меньше чем указанное число max
154:      *
155:      * @param  string $value
156:      * @return bool   результат проверки соответсвия
157:      */
158:     public static function is_json($value)
159:     {
160:         return (bool) (json_decode($value));
161:     }
162: 
163:     /**
164:      * Проверяет, что длина строки переменной меньше чем указанное число max в символах
165:      *
166:      * @param  string $value
167:      * @param  int    $min
168:      * @param  bool   $inclusive проверять учитывая равенство величине
169:      * @return bool   результат проверки соответсвия
170:      */
171:     public static function is_length_min($value, $min, $inclusive = true)
172:     {
173:         $length = joosString::strlen($value);
174: 
175:         return $inclusive ? ($length >= $min) : ($length > $min);
176:     }
177: 
178:     /**
179:      * Проверяет, что длина строки переменной больше чем указанное число max в символах
180:      *
181:      * @param  string $value
182:      * @param  int    $max
183:      * @param  bool   $inclusive проверять учитывая равенство величине
184:      * @return bool   результат проверки соответсвия
185:      */
186:     public static function is_length_max($value, $max, $inclusive = true)
187:     {
188:         $length = joosString::strlen($value);
189: 
190:         return $inclusive ? ($length <= $max) : ($length < $max);
191:     }
192: 
193:     /**
194:      * Проверяет что длина строки переменной входит в указанный диапазон min и max
195:      *
196:      * @param  string $value
197:      * @param  int    $min
198:      * @param  int    $max
199:      * @param  bool   $inclusive проверять учитывая равенство величине
200:      * @return bool   результат проверки соответсвия
201:      */
202:     public static function is_length_between($value, $min, $max, $inclusive = true)
203:     {
204:         $length = joosString::strlen($value);
205: 
206:         return $inclusive ? ($length >= $min && $length <= $max) : ($length > $min && $length < $max);
207:     }
208: 
209:     /**
210:      * Проверяет что все символы строки в нижнем регистре
211:      *
212:      * @param  string $value
213:      * @return bool   результат проверки соответсвия
214:      */
215:     public static function is_lower($value)
216:     {
217:         return $value === joosString::strtolower($value);
218:     }
219: 
220:     /**
221:      * Проверяет что все символы строки в верхнем регистре
222:      *
223:      * @param  string $value
224:      * @return bool   результат проверки соответсвия
225:      */
226:     public static function is_upper($value)
227:     {
228:         return $value === joosString::strtoupper($value);
229:     }
230: 
231:     /**
232:      * Проверка строки на соответсвие любому регулярному выражению
233:      *
234:      * @param  string $value
235:      * @param  string $regex
236:      * @return bool   результат проверки соответсвия
237:      */
238:     public static function is_regex_check($value, $regex)
239:     {
240:         return (bool) preg_match($regex, $value);
241:     }
242: 
243:     /**
244:      * Проверяет что строка является пустотой или состояит из непечатаемых символов
245:      *
246:      * @param  string $value
247:      * @return bool   результат проверки соответсвия
248:      */
249:     public static function is_blank($value)
250:     {
251:         return !static::is_regex_check($value, '/[^\\s]/');
252:     }
253: 
254:     /**
255:      * Проверяет что строка имеет хоть один видимый сивол
256:      *
257:      * @param  string $value
258:      * @return bool   результат проверки соответсвия
259:      */
260:     public static function is_not_blank($value)
261:     {
262:         return !static::is_blank($value);
263:     }
264: 
265:     /**
266:      * Проверяет что строка не null
267:      *
268:      * @param  string $value
269:      * @return bool   результат проверки соответсвия
270:      */
271:     public static function is_not_null($value)
272:     {
273:         return $value !== null;
274:     }
275: 
276: }
277: 
278: /**
279:  * Помошник валидации, позволяет писать в правила проверки в упрощенном стиле
280:  *
281:  * @tutorial joosValidateHelper::valid(11, 'int:0..10', 'Нет, в диапазон не попадает');
282:  * @tutorial joosValidateHelper::valid('Hell', 'string:5..15', 'Не попадает в диапазон от :min до :max');
283:  * @tutorial joosValidateHelper::valid('Привет, человеки!', 'string:8..', 'В строке должно быть не меньше :min символов');
284:  * @tutorial joosValidateHelper::valid('Не..', 'string:8..');
285:  * @tutorial joosValidateHelper::valid('Убить всех человеков', 'string:..32');
286:  * @tutorial joosValidateHelper::valid('Быть или не быть?', 'string:8..32');
287:  * @tutorial joosValidateHelper::valid(23, 'int:0..10', 'Число не подходит, оно должно быть больше :min и меньше :max');
288:  * @tutorial joosValidateHelper::valid(1, 'int|float');
289:  * @tutorial joosValidateHelper::valid('sdfds@asds.ru', 'email');
290:  * @tutorial joosValidateHelper::valid('192.168.0.256', 'ip', 'Это не Ip!!!');
291:  * @tutorial joosValidateHelper::valid('А это уже на регистр', 'lower', 'Надо всё маленькими');
292:  * @tutorial joosValidateHelper::valid('234', 'int');
293:  * @tutorial joosValidateHelper::valid("    \n \r \t", 'required', 'Поле не должно быть пустым!!!');
294:  *
295:  * @copyright на основе оригинальной разработки Nette Framework (http://nette.org)
296:  */
297: class joosValidateHelper
298: {
299:     /**
300:      * Правила валидации через системный класс
301:      * @var array
302:      */
303:     protected static $validators = array(// pattern
304:         'required' => 'joosValidate::is_not_blank', 'email' => 'joosValidate::is_email', 'digital' => 'joosValidate::is_digital', 'int' => 'joosValidate::is_digital', 'alpha' => 'joosValidate::is_alfa', 'url' => 'joosValidate::is_url', 'array' => 'joosValidate::is_array', 'list' => 'joosValidate::is_array', 'bool' => 'joosValidate::is_bool', 'boolean' => 'joosValidate::is_bool', 'float' => 'joosValidate::is_float', 'ip' => 'joosValidate::is_ip', 'json' => 'joosValidate::is_json', 'lower' => 'joosValidate::is_lower', 'upper' => 'joosValidate::is_upper', 'blank' => 'joosValidate::is_blank', 'space' => 'joosValidate::is_blank', 'not_blank' => 'joosValidate::is_not_blank', 'not_space' => 'joosValidate::is_not_blank', 'not_null' => 'joosValidate::is_not_null', // внутренние обработчики текущего класса
305:         'string' => 'is_string', 'object' => 'is_object', 'resource' => 'is_resource', 'scalar' => 'is_scalar', 'null' => 'is_null',);
306: 
307:     /**
308:      * Правила рассчета длины переменной
309:      * @var array
310:      */
311:     protected static $counters = array('string' => 'joosString::strlen', 'array' => 'count', 'list' => 'count', 'alnum' => 'joosString::strlen', 'alpha' => 'joosString::strlen', 'digit' => 'joosString::strlen', 'lower' => 'joosString::strlen', 'space' => 'joosString::strlen', 'upper' => 'joosString::strlen',);
312: 
313:     public static function valid($value, $expected, $message = false)
314:     {
315:         foreach (explode('|', $expected) as $item) {
316:             list($type) = $item = explode(':', $item, 2);
317:             // проверяем тип переменной
318:             if (isset(static::$validators[$type])) {
319:                 if (!call_user_func(static::$validators[$type], $value)) {
320:                     continue;
321:                 }
322:             } elseif ($type === 'number') {
323:                 if (!is_int($value) && !is_float($value)) {
324:                     continue;
325:                 }
326:                 // проверка через произвольные регулярки
327:             } elseif ($type === 'pattern') {
328:                 if (preg_match('|^' . (isset($item[1]) ? $item[1] : '') . '$|', $value)) {
329:                     return TRUE;
330:                 }
331:                 continue;
332:             } elseif (!$value instanceof $type) {
333:                 continue;
334:             }
335: 
336:             // проверяем вхождение в разрешённый диапазон
337:             if (isset($item[1])) {
338:                 if (isset(static::$counters[$type])) {
339:                     $value = call_user_func(static::$counters[$type], $value);
340:                 }
341:                 $range = explode('..', $item[1]);
342:                 if (!isset($range[1])) {
343:                     $range[1] = $range[0];
344:                 }
345:                 if (($range[0] !== '' && $value < $range[0]) || ($range[1] !== '' && $value > $range[1])) {
346:                     //если передана строка для форматирования предупреждения - сформируем её
347:                     $message = $message == false ? false : strtr($message, array(':min' => $range[0], ':max' => $range[1]));
348:                     continue;
349:                 }
350:             }
351: 
352:             return TRUE;
353:         }
354: 
355:         return $message;
356:     }
357: }
358: 
Joostina CMS / CMF v2.* API API documentation generated by ApiGen 2.6.1 – Template adapted by @olvlv and Joostina Team