Code Duplication    Length = 25-29 lines in 4 locations

lib/modules/mod_util.php 2 locations

@@ 27-55 (lines=29) @@
24
			return $result;
25
		}
26
27
		function path_unescape($path) {
28
			$result = "";
29
			if ($path) {
30
				debug("path_unescape: escaped path: $path");
31
				$result = preg_replace_callback(
32
					'/(_[0-9a-fA-F][0-9a-fA-F]|__)/',
33
					function( $matches ) {
34
						// Two types of escaped characters can be here, the
35
						// underscore or other characters. Check for the
36
						// underscore first.
37
38
						$char = $matches[0];
39
						if ($char[1] == "_") {
40
						// It is the underscore, return it as a character.
41
						       return "_";
42
						}
43
44
						// Assume it is an escaped character here. Find the
45
						// numbers in hex, turn them back to decimal, get
46
						// the corresponding character and return it.
47
48
						return chr(hexdec(substr($char, 1, 2)));
49
					},
50
					$path
51
				);
52
			}
53
			debug("path_unescape: unescaped path: $result");
54
			return $result;
55
		}
56
57
58
		function path_escape($path) {
@@ 58-85 (lines=28) @@
55
		}
56
57
58
		function path_escape($path) {
59
			// This function will return an escaped path. All the characters not supported by Ariadne will be encoded.
60
			// See also path_escape_callback
61
62
			// Returns an empty string if no path, or an empty path was given.
63
			$result = "";
64
			if ($path) {
65
				debug("path_escape:files unescaped path: $path");
66
				$result = preg_replace_callback(
67
					'/[^\/A-Za-z0-9.-]/',
68
					function ( $char ) {
69
						// Replaces characters in the path with their number.
70
						// Quite similar to " " -> "%20" for HTML escape, but we use _ instead of %
71
						// This function is to be used as a callback for preg_replace_callback
72
						if ($char[0]) {
73
							if ($char[0]=="_") {
74
								return "__";
75
							} else {
76
								return "_".dechex(ord($char[0]));
77
							}
78
						}
79
					},
80
					$path
81
				);
82
			}
83
			debug("path_escaspe:files escaped path: $result");
84
			return $result;
85
		}
86
	}
87
88
	class pinp_util extends util {

lib/modules/mod_webdav.php 1 location

@@ 22-50 (lines=29) @@
19
			debug("webdav: init done");
20
		}
21
22
		function path_unescape($path) {
23
			$result = "";
24
			if ($path) {
25
				debug("webdav: escaped path: $path");
26
				$result = preg_replace_callback(
27
					'/(_[0-9a-fA-F][0-9a-fA-F]|__)/',
28
					function ( $matches ) {
29
						// Two types of escaped characters can be here, the
30
						// underscore or other characters. Check for the
31
						// underscore first.
32
33
						$char = $matches[0];
34
						if ($char[1] == "_") {
35
						// It is the underscore, return it as a character.
36
							return "_";
37
						}
38
39
						// Assume it is an escaped character here. Find the
40
						// numbers in hex, turn them back to decimal, get
41
						// the corresponding character and return it.
42
43
						return chr(hexdec(substr($char, 1, 2)));
44
					},
45
					$path
46
				);
47
			}
48
			debug("webdav: unescaped path: $result");
49
			return $result;
50
		}
51
52
		public static function path_unescape_callback($char) {
53
			// Two types of escaped characters can be here, the

lib/modules/mod_webdav/files.php 1 location

@@ 24-48 (lines=25) @@
21
			}
22
		}
23
24
		function path_escape($path) {
25
			// This function will return an escaped path. All the characters not supported by Ariadne will be encoded.
26
			// See also path_escape_callback
27
28
			// Returns an empty string if no path, or an empty path was given.
29
			$result = "";
30
			if ($path) {
31
				debug("webdav:files unescaped path: $path");
32
				$result = preg_replace_callback(
33
					'/[^\/A-Za-z0-9.-]/',
34
					function( $char ) {
35
						if ($char[0]) {
36
							if ($char[0]=="_") {
37
								return "__";
38
							} else {
39
								return "_".dechex(ord($char[0]));
40
							}
41
						}
42
					},
43
					$path
44
				);
45
			}
46
			debug("webdav:files escaped path: $result");
47
			return $result;
48
		}
49
50
		function make_path($curr_dir, $path) {
51
			debug("webdav:files:make_path($curr_dir, $path)");