2012-03-03 10:54:39 +02:00
|
|
|
|
<?php
|
|
|
|
|
/*-------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* LiveStreet Engine Social Networking
|
|
|
|
|
* Copyright © 2008 Mzhelskiy Maxim
|
|
|
|
|
*
|
|
|
|
|
*--------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* Official site: www.livestreet.ru
|
|
|
|
|
* Contact e-mail: rus.engine@gmail.com
|
|
|
|
|
*
|
|
|
|
|
* GNU General Public License, version 2:
|
|
|
|
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
|
|
|
*
|
|
|
|
|
---------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
/**
|
|
|
|
|
* CUrlValidator class file.
|
|
|
|
|
*
|
|
|
|
|
* @author Qiang Xue <qiang.xue@gmail.com>
|
|
|
|
|
* @link http://www.yiiframework.com/
|
|
|
|
|
* @copyright Copyright © 2008-2011 Yii Software LLC
|
|
|
|
|
* @license http://www.yiiframework.com/license/
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Валидатор URL адресов
|
2012-04-27 18:03:08 +03:00
|
|
|
|
*
|
|
|
|
|
* @package engine.modules.validate
|
|
|
|
|
* @since 1.0
|
2012-03-03 10:54:39 +02:00
|
|
|
|
*/
|
|
|
|
|
class ModuleValidate_EntityValidatorUrl extends ModuleValidate_EntityValidator {
|
|
|
|
|
/**
|
|
|
|
|
* Патерн проверки URL с учетом схемы
|
|
|
|
|
*
|
|
|
|
|
* @var string
|
|
|
|
|
*/
|
|
|
|
|
public $pattern='/^{schemes}:\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)/i';
|
|
|
|
|
/**
|
|
|
|
|
* Список допустимых схем
|
|
|
|
|
*
|
|
|
|
|
* @var array
|
|
|
|
|
**/
|
|
|
|
|
public $validSchemes=array('http','https');
|
|
|
|
|
/**
|
|
|
|
|
* Дефолтная схема, которая добавляется к URL при ее отсутствии.
|
|
|
|
|
* Если null, то URL должен уже содержать схему
|
|
|
|
|
*
|
|
|
|
|
* @var null|string
|
|
|
|
|
**/
|
|
|
|
|
public $defaultScheme;
|
|
|
|
|
/**
|
|
|
|
|
* Допускать или нет пустое значение
|
|
|
|
|
*
|
|
|
|
|
* @var bool
|
|
|
|
|
*/
|
|
|
|
|
public $allowEmpty=true;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Запуск валидации
|
|
|
|
|
*
|
2012-04-27 18:03:08 +03:00
|
|
|
|
* @param mixed $sValue Данные для валидации
|
2012-03-03 10:54:39 +02:00
|
|
|
|
*
|
|
|
|
|
* @return bool|string
|
|
|
|
|
*/
|
|
|
|
|
public function validate($sValue) {
|
2012-04-07 07:59:25 +03:00
|
|
|
|
if (is_array($sValue)) {
|
|
|
|
|
return $this->getMessage($this->Lang_Get('validate_url_not_valid',null,false),'msg');
|
|
|
|
|
}
|
2012-03-03 10:54:39 +02:00
|
|
|
|
if($this->allowEmpty && $this->isEmpty($sValue)) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(($sValue=$this->validateValue($sValue))!==false) {
|
2012-04-27 18:03:08 +03:00
|
|
|
|
/**
|
|
|
|
|
* Если проверка от сущности, то возвращаем обновленное значение
|
|
|
|
|
*/
|
|
|
|
|
if ($this->oEntityCurrent) {
|
|
|
|
|
$this->setValueOfCurrentEntity($this->sFieldCurrent,$sValue);
|
|
|
|
|
}
|
2012-03-03 10:54:39 +02:00
|
|
|
|
} else {
|
|
|
|
|
return $this->getMessage($this->Lang_Get('validate_url_not_valid',null,false),'msg');
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Проверка URL на корректность
|
|
|
|
|
*
|
2012-04-27 18:03:08 +03:00
|
|
|
|
* @param string $sValue Данные для валидации
|
2012-03-03 10:54:39 +02:00
|
|
|
|
*
|
|
|
|
|
* @return bool
|
|
|
|
|
*/
|
|
|
|
|
public function validateValue($sValue) {
|
|
|
|
|
if(is_string($sValue) && strlen($sValue)<2000) {
|
|
|
|
|
if($this->defaultScheme!==null && strpos($sValue,'://')===false) {
|
|
|
|
|
$sValue=$this->defaultScheme.'://'.$sValue;
|
|
|
|
|
}
|
|
|
|
|
if(strpos($this->pattern,'{schemes}')!==false) {
|
|
|
|
|
$sPattern=str_replace('{schemes}','('.implode('|',$this->validSchemes).')',$this->pattern);
|
|
|
|
|
} else {
|
|
|
|
|
$sPattern=$this->pattern;
|
|
|
|
|
}
|
|
|
|
|
if(preg_match($sPattern,$sValue)) {
|
|
|
|
|
return $sValue;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
?>
|