public static function skipMask($abs_path) { if (!IntOption('skip_mask')) return false; global $skip_mask_array; $path = substr($abs_path,strlen(DOCUMENT_ROOT_SITE)); $path = str_replace('\\','/',$path); static $preg_mask_array; if (!$preg_mask_array) { $preg_mask_array = array(); foreach($skip_mask_array as $a) $preg_mask_array[] = CBackup::_preg_escape($a); } reset($skip_mask_array); foreach($skip_mask_array as $k => $mask) { if (strpos($mask,'/')===0) // absolute path { if (strpos($mask,'*') === false) // нет звездочки { if (strpos($path.'/',$mask.'/') === 0) return true; } elseif (preg_match('#^'.str_replace('*','[^/]*?',$preg_mask_array[$k]).'$#i',$path)) return true; } elseif (strpos($mask, '/')===false) { if (strpos($mask,'*')===false) { if (substr($path,-strlen($mask)) == $mask) return true; } elseif (preg_match('#/[^/]*'.str_replace('*','[^/]*?',$preg_mask_array[$k]).'$#i',$path)) return true; } } }
function skipMask($abs_path) { if (!IntOption('skip_mask')) { return false; } global $skip_mask_array; $path = substr($abs_path, strlen(self::$DOCUMENT_ROOT_SITE)); $path = str_replace('\\', '/', $path); static $preg_mask_array; if (!$preg_mask_array) { $preg_mask_array = array(); foreach ($skip_mask_array as $a) { $preg_mask_array[] = CBackup::_preg_escape($a); } } reset($skip_mask_array); foreach ($skip_mask_array as $k => $mask) { if (strpos($mask, '/') === 0) { if (strpos($mask, '*') === false) { if (strpos($path . '/', $mask . '/') === 0) { return true; } } elseif (preg_match('#^' . str_replace('*', '[^/]*?', $preg_mask_array[$k]) . '$#i', $path)) { return true; } } elseif (strpos($mask, '/') === false) { if (strpos($mask, '*') === false) { if (substr($path, -strlen($mask)) == $mask) { return true; } } elseif (preg_match('#/[^/]*' . str_replace('*', '[^/]*?', $preg_mask_array[$k]) . '$#i', $path)) { return true; } } } }
function prepare_preg_escape($arSkipMask) { static $res; if (!isset($res)) foreach($arSkipMask as $a) $res[] = CBackup::_preg_escape($a); return $res; }