UploadSourceAdapter::url_stat()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 19
Code Lines 16

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 16
nc 1
nop 0
dl 0
loc 19
rs 9.4285
c 0
b 0
f 0
1
<?php
2
/**
3
 * MediaWiki page data importer.
4
 *
5
 * Copyright © 2003,2005 Brion Vibber <[email protected]>
6
 * https://www.mediawiki.org/
7
 *
8
 * This program is free software; you can redistribute it and/or modify
9
 * it under the terms of the GNU General Public License as published by
10
 * the Free Software Foundation; either version 2 of the License, or
11
 * (at your option) any later version.
12
 *
13
 * This program is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
 * GNU General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU General Public License along
19
 * with this program; if not, write to the Free Software Foundation, Inc.,
20
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21
 * http://www.gnu.org/copyleft/gpl.html
22
 *
23
 * @file
24
 * @ingroup SpecialPage
25
 */
26
27
/**
28
 * This is a horrible hack used to keep source compatibility.
29
 * @ingroup SpecialPage
30
 */
31
class UploadSourceAdapter {
32
	/** @var array */
33
	public static $sourceRegistrations = [];
34
35
	/** @var string */
36
	private $mSource;
37
38
	/** @var string */
39
	private $mBuffer;
40
41
	/** @var int */
42
	private $mPosition;
43
44
	/**
45
	 * @param ImportSource $source
46
	 * @return string
47
	 */
48
	static function registerSource( ImportSource $source ) {
49
		$id = wfRandomString();
50
51
		self::$sourceRegistrations[$id] = $source;
52
53
		return $id;
54
	}
55
56
	/**
57
	 * @param string $path
58
	 * @param string $mode
59
	 * @param array $options
60
	 * @param string $opened_path
61
	 * @return bool
62
	 */
63
	function stream_open( $path, $mode, $options, &$opened_path ) {
64
		$url = parse_url( $path );
65
		$id = $url['host'];
66
67
		if ( !isset( self::$sourceRegistrations[$id] ) ) {
68
			return false;
69
		}
70
71
		$this->mSource = self::$sourceRegistrations[$id];
72
73
		return true;
74
	}
75
76
	/**
77
	 * @param int $count
78
	 * @return string
79
	 */
80
	function stream_read( $count ) {
81
		$return = '';
82
		$leave = false;
83
84
		while ( !$leave && !$this->mSource->atEnd() &&
0 ignored issues
show
Bug introduced by
The method atEnd cannot be called on $this->mSource (of type string).

Methods can only be called on objects. This check looks for methods being called on variables that have been inferred to never be objects.

Loading history...
85
				strlen( $this->mBuffer ) < $count ) {
86
			$read = $this->mSource->readChunk();
0 ignored issues
show
Bug introduced by
The method readChunk cannot be called on $this->mSource (of type string).

Methods can only be called on objects. This check looks for methods being called on variables that have been inferred to never be objects.

Loading history...
87
88
			if ( !strlen( $read ) ) {
89
				$leave = true;
90
			}
91
92
			$this->mBuffer .= $read;
93
		}
94
95
		if ( strlen( $this->mBuffer ) ) {
96
			$return = substr( $this->mBuffer, 0, $count );
97
			$this->mBuffer = substr( $this->mBuffer, $count );
98
		}
99
100
		$this->mPosition += strlen( $return );
101
102
		return $return;
103
	}
104
105
	/**
106
	 * @param string $data
107
	 * @return bool
108
	 */
109
	function stream_write( $data ) {
110
		return false;
111
	}
112
113
	/**
114
	 * @return mixed
115
	 */
116
	function stream_tell() {
117
		return $this->mPosition;
118
	}
119
120
	/**
121
	 * @return bool
122
	 */
123
	function stream_eof() {
124
		return $this->mSource->atEnd();
0 ignored issues
show
Bug introduced by
The method atEnd cannot be called on $this->mSource (of type string).

Methods can only be called on objects. This check looks for methods being called on variables that have been inferred to never be objects.

Loading history...
125
	}
126
127
	/**
128
	 * @return array
129
	 */
130
	function url_stat() {
131
		$result = [];
132
133
		$result['dev'] = $result[0] = 0;
134
		$result['ino'] = $result[1] = 0;
135
		$result['mode'] = $result[2] = 0;
136
		$result['nlink'] = $result[3] = 0;
137
		$result['uid'] = $result[4] = 0;
138
		$result['gid'] = $result[5] = 0;
139
		$result['rdev'] = $result[6] = 0;
140
		$result['size'] = $result[7] = 0;
141
		$result['atime'] = $result[8] = 0;
142
		$result['mtime'] = $result[9] = 0;
143
		$result['ctime'] = $result[10] = 0;
144
		$result['blksize'] = $result[11] = 0;
145
		$result['blocks'] = $result[12] = 0;
146
147
		return $result;
148
	}
149
}
150