Bearsampp 2026.9.23
Loading...
Searching...
No Matches
PEAR_REST_11 Class Reference

Public Member Functions

 __construct ($config, $options=array())
 betterStates ($state, $include=false)
 listAll ($base, $dostable, $basic=true, $searchpackage=false, $searchsummary=false, $channel=false)
 listCategories ($base, $channel=false)
 listCategory ($base, $category, $info=false, $channel=false)

Data Fields

 $_rest

Detailed Description

Definition at line 33 of file 11.php.

Constructor & Destructor Documentation

◆ __construct()

__construct ( $config,
$options = array() )

Definition at line 40 of file 11.php.

41 {
42 $this->_rest = new PEAR_REST($config, $options);
43 }
$options
Definition pearcmd.php:145
$config
Definition pearcmd.php:182

References $config, and $options.

Member Function Documentation

◆ betterStates()

betterStates ( $state,
$include = false )

Return an array containing all of the states that are more stable than or equal to the passed in state

Parameters
stringRelease state
booleanDetermines whether to include $state in the list
Returns
false|array False if $state is not a valid release state

Definition at line 327 of file 11.php.

328 {
329 static $states = array('snapshot', 'devel', 'alpha', 'beta', 'stable');
330 $i = array_search($state, $states);
331 if ($i === false) {
332 return false;
333 }
334 if ($include) {
335 $i--;
336 }
337 return array_slice($states, $i + 1);
338 }

◆ listAll()

listAll ( $base,
$dostable,
$basic = true,
$searchpackage = false,
$searchsummary = false,
$channel = false )

Definition at line 45 of file 11.php.

46 {
47 $categorylist = $this->_rest->retrieveData($base . 'c/categories.xml', false, false, $channel);
48 if (PEAR::isError($categorylist)) {
49 return $categorylist;
50 }
51
52 $ret = array();
53 if (!is_array($categorylist['c']) || !isset($categorylist['c'][0])) {
54 $categorylist['c'] = array($categorylist['c']);
55 }
56
57 PEAR::pushErrorHandling(PEAR_ERROR_RETURN);
58
59 foreach ($categorylist['c'] as $progress => $category) {
60 $category = $category['_content'];
61 $packagesinfo = $this->_rest->retrieveData($base .
62 'c/' . urlencode($category) . '/packagesinfo.xml', false, false, $channel);
63
64 if (PEAR::isError($packagesinfo)) {
65 continue;
66 }
67
68 if (!is_array($packagesinfo) || !isset($packagesinfo['pi'])) {
69 continue;
70 }
71
72 if (!is_array($packagesinfo['pi']) || !isset($packagesinfo['pi'][0])) {
73 $packagesinfo['pi'] = array($packagesinfo['pi']);
74 }
75
76 foreach ($packagesinfo['pi'] as $packageinfo) {
77 if (empty($packageinfo)) {
78 continue;
79 }
80
81 $info = $packageinfo['p'];
82 $package = $info['n'];
83 $releases = isset($packageinfo['a']) ? $packageinfo['a'] : false;
84 unset($latest);
85 unset($unstable);
86 unset($stable);
87 unset($state);
88
89 if ($releases) {
90 if (!isset($releases['r'][0])) {
91 $releases['r'] = array($releases['r']);
92 }
93
94 foreach ($releases['r'] as $release) {
95 if (!isset($latest)) {
96 if ($dostable && $release['s'] == 'stable') {
97 $latest = $release['v'];
98 $state = 'stable';
99 }
100 if (!$dostable) {
101 $latest = $release['v'];
102 $state = $release['s'];
103 }
104 }
105
106 if (!isset($stable) && $release['s'] == 'stable') {
107 $stable = $release['v'];
108 if (!isset($unstable)) {
109 $unstable = $stable;
110 }
111 }
112
113 if (!isset($unstable) && $release['s'] != 'stable') {
114 $unstable = $release['v'];
115 $state = $release['s'];
116 }
117
118 if (isset($latest) && !isset($state)) {
119 $state = $release['s'];
120 }
121
122 if (isset($latest) && isset($stable) && isset($unstable)) {
123 break;
124 }
125 }
126 }
127
128 if ($basic) { // remote-list command
129 if (!isset($latest)) {
130 $latest = false;
131 }
132
133 if ($dostable) {
134 // $state is not set if there are no releases
135 if (isset($state) && $state == 'stable') {
136 $ret[$package] = array('stable' => $latest);
137 } else {
138 $ret[$package] = array('stable' => '-n/a-');
139 }
140 } else {
141 $ret[$package] = array('stable' => $latest);
142 }
143
144 continue;
145 }
146
147 // list-all command
148 if (!isset($unstable)) {
149 $unstable = false;
150 $state = 'stable';
151 if (isset($stable)) {
152 $latest = $unstable = $stable;
153 }
154 } else {
155 $latest = $unstable;
156 }
157
158 if (!isset($latest)) {
159 $latest = false;
160 }
161
162 $deps = array();
163 if ($latest && isset($packageinfo['deps'])) {
164 if (!is_array($packageinfo['deps']) ||
165 !isset($packageinfo['deps'][0])
166 ) {
167 $packageinfo['deps'] = array($packageinfo['deps']);
168 }
169
170 $d = false;
171 foreach ($packageinfo['deps'] as $dep) {
172 if ($dep['v'] == $latest) {
173 $d = unserialize($dep['d']);
174 }
175 }
176
177 if ($d) {
178 if (isset($d['required'])) {
179 if (!class_exists('PEAR_PackageFile_v2')) {
180 require_once 'PEAR/PackageFile/v2.php';
181 }
182
183 if (!isset($pf)) {
184 $pf = new PEAR_PackageFile_v2;
185 }
186
187 $pf->setDeps($d);
188 $tdeps = $pf->getDeps();
189 } else {
190 $tdeps = $d;
191 }
192
193 foreach ($tdeps as $dep) {
194 if ($dep['type'] !== 'pkg') {
195 continue;
196 }
197
198 $deps[] = $dep;
199 }
200 }
201 }
202
203 $info = array(
204 'stable' => $latest,
205 'summary' => $info['s'],
206 'description' => $info['d'],
207 'deps' => $deps,
208 'category' => $info['ca']['_content'],
209 'unstable' => $unstable,
210 'state' => $state
211 );
212 $ret[$package] = $info;
213 }
214 }
215
216 PEAR::popErrorHandling();
217 return $ret;
218 }
const PEAR_ERROR_RETURN
Definition PEAR.php:24

References PEAR_ERROR_RETURN.

◆ listCategories()

listCategories ( $base,
$channel = false )

List all categories of a REST server

Parameters
string$basebase URL of the server
Returns
array of categorynames

Definition at line 226 of file 11.php.

227 {
228 $categorylist = $this->_rest->retrieveData($base . 'c/categories.xml', false, false, $channel);
229 if (PEAR::isError($categorylist)) {
230 return $categorylist;
231 }
232
233 if (!is_array($categorylist) || !isset($categorylist['c'])) {
234 return array();
235 }
236
237 if (isset($categorylist['c']['_content'])) {
238 // only 1 category
239 $categorylist['c'] = array($categorylist['c']);
240 }
241
242 return $categorylist['c'];
243 }

◆ listCategory()

listCategory ( $base,
$category,
$info = false,
$channel = false )

List packages in a category of a REST server

Parameters
string$basebase URL of the server
string$categoryname of the category
boolean$infoalso download full package info
Returns
array of packagenames

Definition at line 253 of file 11.php.

254 {
255 if ($info == false) {
256 $url = '%s'.'c/%s/packages.xml';
257 } else {
258 $url = '%s'.'c/%s/packagesinfo.xml';
259 }
260 $url = sprintf($url,
261 $base,
262 urlencode($category));
263
264 // gives '404 Not Found' error when category doesn't exist
265 $packagelist = $this->_rest->retrieveData($url, false, false, $channel);
266 if (PEAR::isError($packagelist)) {
267 return $packagelist;
268 }
269 if (!is_array($packagelist)) {
270 return array();
271 }
272
273 if ($info == false) {
274 if (!isset($packagelist['p'])) {
275 return array();
276 }
277 if (!is_array($packagelist['p']) ||
278 !isset($packagelist['p'][0])) { // only 1 pkg
279 $packagelist = array($packagelist['p']);
280 } else {
281 $packagelist = $packagelist['p'];
282 }
283 return $packagelist;
284 }
285
286 // info == true
287 if (!isset($packagelist['pi'])) {
288 return array();
289 }
290
291 if (!is_array($packagelist['pi']) ||
292 !isset($packagelist['pi'][0])) { // only 1 pkg
293 $packagelist_pre = array($packagelist['pi']);
294 } else {
295 $packagelist_pre = $packagelist['pi'];
296 }
297
298 $packagelist = array();
299 foreach ($packagelist_pre as $i => $item) {
300 // compatibility with r/<latest.txt>.xml
301 if (isset($item['a']['r'][0])) {
302 // multiple releases
303 $item['p']['v'] = $item['a']['r'][0]['v'];
304 $item['p']['st'] = $item['a']['r'][0]['s'];
305 } elseif (isset($item['a'])) {
306 // first and only release
307 $item['p']['v'] = $item['a']['r']['v'];
308 $item['p']['st'] = $item['a']['r']['s'];
309 }
310
311 $packagelist[$i] = array('attribs' => $item['p']['r'],
312 '_content' => $item['p']['n'],
313 'info' => $item['p']);
314 }
315
316 return $packagelist;
317 }

Field Documentation

◆ $_rest

$_rest

Definition at line 38 of file 11.php.


The documentation for this class was generated from the following file:
  • E:/Bearsampp-development/sandbox/core/libs/php/pear/pear/PEAR/REST/11.php