-
Notifications
You must be signed in to change notification settings - Fork 44
/
help.php
672 lines (616 loc) · 49.8 KB
/
help.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
<?php
// License Information /////////////////////////////////////////////////////////////////////////////
/*
* PeerTracker - OpenSource BitTorrent Tracker
* Revision - $Id: help.php 124 2009-10-28 19:54:09Z trigunflame $
* Copyright (C) 2009 PeerTracker Team
*
* PeerTracker is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* PeerTracker is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with PeerTracker. If not, see <http://www.gnu.org/licenses/>.
*/
// Note ////////////////////////////////////////////////////////////////////////////////////////////
// this 'help.php' script is by no means an especially efficient or clean script.
// for the time being, it gets the job done. it may be cleaned up at a later time.
// Enviroment Runtime //////////////////////////////////////////////////////////////////////////////
// error level
error_reporting(E_ERROR | E_PARSE);
//error_reporting(E_ALL & ~E_WARNING);
//error_reporting(E_ALL | E_STRICT | E_DEPRECATED);
// ignore disconnects
ignore_user_abort(true);
// Misc Functions //////////////////////////////////////////////////////////////////////////////////
// Check.png
function img0()
{
$img = '
iVBORw0KGgoAAAANSUhEUgAAABIAAAARCAYAAADQWvz5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ
bWFnZVJlYWR5ccllPAAAApVJREFUeNqclG1IE3Ecx39397+73W132267M2Fam3MqYTQfIhPFV/Ym
LBgVFJUIIQWWUIbQwwt7EYUw8IX0LnotFs1SiIogNFplojWKSg3Lh3TDqTe33e2uSUgmCtPvuz/f
Lx/+vwd+BGxHGED+8cIWp8/TrBEpVh5fHEbb4bh9Bc2uxuI7C7FFyK/Ye1SJJeP4ViEmhynPfXJ3
20I0ClhCA4QIYCRj3pZBexpL2zUOOApHwLAGgHl1KRL8HdgSyFGdc3hHteOInlSBpQ1gMjHw/V6o
bXl6+WPGIJInLWVNFf4UpIClGDDbOJjrn3o50fvDv+JnDPLWl13lXLyT1HHgOAb0eWVhqOP9xbSl
/gMRgHAaZzeDCEVCicOXe2F2aQYUFAedUSHoH7ghT8rDqxncWmArq+qoDe7rrBnZeSzvOrZ+ZRCG
SpvLO1RGoRhEgWA3w9Tzny/Gesc71+bwnXXuK5ib8WIC5co642yTzuXcT/+QWg3k13kaxP1SJa0j
sFstgEW06Jvbwaa0pfwHiozPjWi6CmE5DKMzY8DUWk7vavV0A4UZGRsjes+X3NRTKlhYDqw8D/23
Bq7J07HQ+vLRxKPR9oSoFiYr8RMUgYBIYGCpyTpkMrEBCdmjdBYlkSkMRMkKoe7Pz770fL27UR+J
9DRV+V00YLBQDr7Y4qUxCmggQfKITrtHKEIaDkK6pORMItJ19qFPkZXZjUF/pcU/yD0UR0q2Enu5
gaCAxWmgEQk8awSrmYfHl/tafg1O9W02WWLtQx5cfEIigsuuyD5gIGgwUgYQRQE+dYX6XvlfX0pH
9IxAK4oOzT8ldIzOrcqtMvMcxCeXww8aAz4lpoa3dXKKThW2Nryt/+Y+6GrIJP9HgAEAq+zTbnKP
p9sAAAAASUVORK5CYII=';
header('Content-Type: image/png');
echo base64_decode($img);
exit;
}
// Delete.png
function img1()
{
$img = '
iVBORw0KGgoAAAANSUhEUgAAABIAAAARCAYAAADQWvz5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ
bWFnZVJlYWR5ccllPAAAAxVJREFUeNqElNtLG0EUxmdns7fEzUZTgxZrK4lrLGq0Dda7RCh97IPY
G0L/EquiINaXIvXB9qEPllQsqBTaai+opb6UQl+9IEXQVTS6zW2TuEm2Z2IjahUHhp2dmfOb73xz
dhE61m7Y7Y0MRQnogpbPcQVlolhz5uJdl+vBSmdnqsvtHoNX6jyIyDDWiTt3fi40NYVls7k2O09n
IQP19f7g1hauzs2tcjCMvBAITP4HYVnppc/3pUzTvFQsxt52OO79CAbnArq+SZN0XrS1fQgqCpVK
pVBC11G1KFbms2zpwt7eVBZiZVnbaGvr7HVNq41EIihtGMiKEN9kt3e8DwTG6NDBQcgSjxcRJQRi
EFgyeQT7tr8/SZSMtrTMVGhaXTgcRhRFIRpArMmERhRl6Fc4PHvkRbfb7W8vLHwYiscRSqcRAmAO
TaMpVfWXFBdfuRmLNWchGCACQAYUpf/N9nYXOmUq9USWX7c7HI/CiURmwTg4QBwAUwCPQzoUADAc
YuY4NJRI9I/v7nadMDvbiCdwta4qjKsiioL0nR0UDwRQkiiBdDF0M8OgwVisd2J/v/t4LH36Zogn
ecmkLEejlSk4nYZAE6RBuiAIaFDXe96qau/pOHx6wsrzktPpvEyxLMIYIxo6Bq9o6CYYu1i2+Kz6
OqFI4jjbc49npmxtrSkGvhAVGQABwZgY3cjzNXk5Oc75UGj6TJDE87ZhgLhWV+ui0SgykZRAgcDz
iPsHIXNpeDZbLB67xVL6NRicOgGycpw04vF8KllevhXRtENfIMB86Em3gvFvoiQNYAbWDFDYYrVW
2s1m+bOqEphBFwhC0bOKipnipSVvBJRkITkAearrvcTY75HIO5IOUWIQGPhHYD5JqrwkCOVzqvoR
SzTtyF1fLyd1giEFUmyZOtH1/glV7Tkq2I2Nx680zZ8LqTKwjyUHwr4qUfSyGIuZTaUcVzstSX/m
GMZYlCTjvs3Wd87HTw05nX69sdEwfD5jsaFhRWKYayd2lPJ87aTdvtkhin0X/I6oYVken/d6l60M
czU7+VeAAQD3hy6rS/0yjQAAAABJRU5ErkJggg==';
header('Content-Type: image/png');
echo base64_decode($img);
exit;
}
// curvycorners.src.js
// Lots of JavaScript here
function js0()
{
header('Content-Type: text/javascript');
?>
/*********************************************************
* CurvyCorners - Copyright (c) 2009 Cameron Cooke *
* *
* This library is free software; you can redistribute *
* it and/or modify it under the terms of the GNU *
* Lesser General Public License as published by the *
* Free Software Foundation; either version 2.1 of the *
* License, or (at your option) any later version. *
*********************************************************/
function browserdetect(){var a=navigator.userAgent.toLowerCase();this.isIE=a.indexOf("msie")>-1;if(this.isIE){this.ieVer=/msie\s(\d\.\d)/.exec(a)[1];this.quirksMode=!document.compatMode||document.compatMode.indexOf("BackCompat")>-1;this.get_style=function(d,g){if(!(g in d.currentStyle)){return""}var c=/^([\d.]+)(\w*)/.exec(d.currentStyle[g]);if(!c){return d.currentStyle[g]}if(c[1]==0){return"0"}if(c[2]&&c[2]!=="px"){var b=d.style.left;var f=d.runtimeStyle.left;d.runtimeStyle.left=d.currentStyle.left;d.style.left=c[1]+c[2];c[0]=d.style.pixelLeft;d.style.left=b;d.runtimeStyle.left=f}return c[0]}}else{this.ieVer=this.quirksMode=0;this.isMoz=a.indexOf("firefox")!==-1||("style" in document.childNodes[1]&&"MozBorderRadius" in document.childNodes[1].style);this.isSafari=a.indexOf("safari")!=-1;this.isOp="opera" in window;this.isWebKit=a.indexOf("webkit")!=-1;this.get_style=function(b,c){c=c.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();return document.defaultView.getComputedStyle(b,"").getPropertyValue(c)}}}var curvyBrowser=new browserdetect;if(curvyBrowser.isIE){try{document.execCommand("BackgroundImageCache",false,true)}catch(e){}}function curvyCnrSpec(a){this.selectorText=a;this.tlR=this.trR=this.blR=this.brR=0;this.tlu=this.tru=this.blu=this.bru="";this.antiAlias=true}curvyCnrSpec.prototype.setcorner=function(b,c,a,d){if(!b){this.tlR=this.trR=this.blR=this.brR=parseInt(a);this.tlu=this.tru=this.blu=this.bru=d}else{propname=b.charAt(0)+c.charAt(0);this[propname+"R"]=parseInt(a);this[propname+"u"]=d}};curvyCnrSpec.prototype.get=function(d){if(/^(t|b)(l|r)(R|u)$/.test(d)){return this[d]}if(/^(t|b)(l|r)Ru$/.test(d)){var c=d.charAt(0)+d.charAt(1);return this[c+"R"]+this[c+"u"]}if(/^(t|b)Ru?$/.test(d)){var b=d.charAt(0);b+=this[b+"lR"]>this[b+"rR"]?"l":"r";var a=this[b+"R"];if(d.length===3&&d.charAt(2)==="u"){a+=this[b="u"]}return a}throw new Error("Don't recognize property "+d)};curvyCnrSpec.prototype.radiusdiff=function(a){if(a!=="t"&&a!=="b"){throw new Error("Param must be 't' or 'b'")}return Math.abs(this[a+"lR"]-this[a+"rR"])};curvyCnrSpec.prototype.setfrom=function(a){this.tlu=this.tru=this.blu=this.bru="px";if("tl" in a){this.tlR=a.tl.radius}if("tr" in a){this.trR=a.tr.radius}if("bl" in a){this.blR=a.bl.radius}if("br" in a){this.brR=a.br.radius}if("antiAlias" in a){this.antiAlias=a.antiAlias}};curvyCnrSpec.prototype.cloneOn=function(h){var f=["tl","tr","bl","br"];var j=0;var c,a;for(c in f){if(!isNaN(c)){a=this[f[c]+"u"];if(a!==""&&a!=="px"){j=new curvyCnrSpec;break}}}if(!j){j=this}else{var b,d,g=curvyBrowser.get_style(h,"left");for(c in f){if(!isNaN(c)){b=f[c];a=this[b+"u"];d=this[b+"R"];if(a!=="px"){var g=h.style.left;h.style.left=d+a;d=h.style.pixelLeft;h.style.left=g}j[b+"R"]=d;j[b+"u"]="px"}}h.style.left=g}return j};curvyCnrSpec.prototype.radiusSum=function(a){if(a!=="t"&&a!=="b"){throw new Error("Param must be 't' or 'b'")}return this[a+"lR"]+this[a+"rR"]};curvyCnrSpec.prototype.radiusCount=function(a){var b=0;if(this[a+"lR"]){++b}if(this[a+"rR"]){++b}return b};curvyCnrSpec.prototype.cornerNames=function(){var a=[];if(this.tlR){a.push("tl")}if(this.trR){a.push("tr")}if(this.blR){a.push("bl")}if(this.brR){a.push("br")}return a};function operasheet(c){var a=document.styleSheets.item(c).ownerNode.text;a=a.replace(/\/\*(\n|\r|.)*?\*\//g,"");var d=new RegExp("^\\s*([\\w.#][-\\w.#, ]+)[\\n\\s]*\\{([^}]+border-((top|bottom)-(left|right)-)?radius[^}]*)\\}","mg");var h;this.rules=[];while((h=d.exec(a))!==null){var g=new RegExp("(..)border-((top|bottom)-(left|right)-)?radius:\\s*([\\d.]+)(in|em|px|ex|pt)","g");var f,b=new curvyCnrSpec(h[1]);while((f=g.exec(h[2]))!==null){if(f[1]!=="z-"){b.setcorner(f[3],f[4],f[5],f[6])}}this.rules.push(b)}}operasheet.contains_border_radius=function(a){return/border-((top|bottom)-(left|right)-)?radius/.test(document.styleSheets.item(a).ownerNode.text)};function curvyCorners(){var h,d,f,b,m;if(typeof arguments[0]!=="object"){throw curvyCorners.newError("First parameter of curvyCorners() must be an object.")}if(arguments[0] instanceof curvyCnrSpec){b=arguments[0];if(!b.selectorText&&typeof arguments[1]==="string"){b.selectorText=arguments[1]}}else{if(typeof arguments[1]!=="object"&&typeof arguments[1]!=="string"){throw curvyCorners.newError("Second parameter of curvyCorners() must be an object or a class name.")}d=arguments[1];if(typeof d!=="string"){d=""}if(d!==""&&d.charAt(0)!=="."&&"autoPad" in arguments[0]){d="."+d}b=new curvyCnrSpec(d);b.setfrom(arguments[0])}if(b.selectorText){m=0;var l=b.selectorText.replace(/\s+$/,"").split(/,\s*/);f=new Array;function a(j){var i=j.split("#");return(i.length===2?"#":"")+i.pop()}for(h=0;h<l.length;++h){var n=a(l[h]);var k=n.split(" ");switch(n.charAt(0)){case"#":d=k.length===1?n:k[0];d=document.getElementById(d.substr(1));if(d===null){curvyCorners.alert("No object with ID "+n+" exists yet.\nCall curvyCorners(settings, obj) when it is created.")}else{if(k.length===1){f.push(d)}else{f=f.concat(curvyCorners.getElementsByClass(k[1],d))}}break;default:if(k.length===1){f=f.concat(curvyCorners.getElementsByClass(n))}else{var c=curvyCorners.getElementsByClass(k[0]);for(d=0;d<c.length;++d){f=f.concat(curvyCorners.getElementsByClass(k[1],c[d]))}}}}}else{m=1;f=arguments}for(h=m,d=f.length;h<d;++h){if(f[h]&&(!("IEborderRadius" in f[h].style)||f[h].style.IEborderRadius!="set")){if(f[h].className&&f[h].className.indexOf("curvyRedraw")!==-1){if(typeof curvyCorners.redrawList==="undefined"){curvyCorners.redrawList=new Array}curvyCorners.redrawList.push({node:f[h],spec:b,copy:f[h].cloneNode(false)})}f[h].style.IEborderRadius="set";var g=new curvyObject(b,f[h]);g.applyCorners()}}}curvyCorners.prototype.applyCornersToAll=function(){throw curvyCorners.newError("This function is now redundant. Just call curvyCorners(). See documentation.")};curvyCorners.redraw=function(){if(!curvyBrowser.isOp&&!curvyBrowser.isIE){return}if(!curvyCorners.redrawList){throw curvyCorners.newError("curvyCorners.redraw() has nothing to redraw.")}var h=curvyCorners.block_redraw;curvyCorners.block_redraw=true;for(var c in curvyCorners.redrawList){if(isNaN(c)){continue}var g=curvyCorners.redrawList[c];if(!g.node.clientWidth){continue}var d=g.copy.cloneNode(false);for(var f=g.node.firstChild;f!=null;f=f.nextSibling){if(f.className==="autoPadDiv"){break}}if(!f){curvyCorners.alert("Couldn't find autoPad DIV");break}g.node.parentNode.replaceChild(d,g.node);var a=f.getElementsByTagName("script");for(var b=a.length-1;b>=0;--b){a[b].parentNode.removeChild(a[b])}while(f.firstChild){d.appendChild(f.removeChild(f.firstChild))}g=new curvyObject(g.spec,g.node=d);g.applyCorners()}curvyCorners.block_redraw=h};curvyCorners.adjust=function(obj,prop,newval){if(curvyBrowser.isOp||curvyBrowser.isIE){if(!curvyCorners.redrawList){throw curvyCorners.newError("curvyCorners.adjust() has nothing to adjust.")}var i,j=curvyCorners.redrawList.length;for(i=0;i<j;++i){if(curvyCorners.redrawList[i].node===obj){break}}if(i===j){throw curvyCorners.newError("Object not redrawable")}obj=curvyCorners.redrawList[i].copy}if(prop.indexOf(".")===-1){obj[prop]=newval}else{eval("obj."+prop+"='"+newval+"'")}};curvyCorners.handleWinResize=function(){if(!curvyCorners.block_redraw){curvyCorners.redraw()}};curvyCorners.setWinResize=function(a){curvyCorners.block_redraw=!a};curvyCorners.newError=function(a){return new Error("curvyCorners Error:\n"+a)};curvyCorners.alert=function(a){if(typeof curvyCornersVerbose==="undefined"||curvyCornersVerbose){alert(a)}};function curvyObject(){var y;this.box=arguments[1];this.settings=arguments[0];this.topContainer=this.bottomContainer=this.shell=y=null;var l=this.box.clientWidth;if(("canHaveChildren" in this.box&&!this.box.canHaveChildren)||this.box.tagName==="TABLE"){throw new Error(this.errmsg("You cannot apply corners to "+this.box.tagName+" elements.","Error"))}if(!l&&curvyBrowser.isIE){this.box.style.zoom=1;l=this.box.clientWidth}if(!l&&curvyBrowser.get_style(this.box,"display")==="inline"){this.box.style.display="inline-block";curvyCorners.alert(this.errmsg("Converting inline element to inline-block","warning"));l=this.box.clientWidth}if(!l){if(!this.box.parentNode){throw this.newError("box has no parent!")}for(y=this.box;;y=y.parentNode){if(!y||y.tagName==="BODY"){this.applyCorners=function(){};curvyCorners.alert(this.errmsg("zero-width box with no accountable parent","warning"));return}if(curvyBrowser.get_style(y,"display")==="none"){break}}var p=y.style.display;y.style.display="block";l=this.box.clientWidth}if(!l){curvyCorners.alert(this.errmsg("zero-width box, cannot display","error"));this.applyCorners=function(){};return}if(arguments[0] instanceof curvyCnrSpec){this.spec=arguments[0].cloneOn(this.box)}else{this.spec=new curvyCnrSpec("");this.spec.setfrom(this.settings)}var G=curvyBrowser.get_style(this.box,"borderTopWidth");var k=curvyBrowser.get_style(this.box,"borderBottomWidth");var d=curvyBrowser.get_style(this.box,"borderLeftWidth");var b=curvyBrowser.get_style(this.box,"borderRightWidth");var j=curvyBrowser.get_style(this.box,"borderTopColor");var h=curvyBrowser.get_style(this.box,"borderBottomColor");var a=curvyBrowser.get_style(this.box,"borderLeftColor");var f=curvyBrowser.get_style(this.box,"backgroundColor");var c=curvyBrowser.get_style(this.box,"backgroundImage");var D=curvyBrowser.get_style(this.box,"backgroundRepeat");if(this.box.currentStyle&&this.box.currentStyle.backgroundPositionX){var v=curvyBrowser.get_style(this.box,"backgroundPositionX");var s=curvyBrowser.get_style(this.box,"backgroundPositionY")}else{var v=curvyBrowser.get_style(this.box,"backgroundPosition");v=v.split(" ");var s=v[1];v=v[0]}var r=curvyBrowser.get_style(this.box,"position");var E=curvyBrowser.get_style(this.box,"paddingTop");var H=curvyBrowser.get_style(this.box,"paddingBottom");var u=curvyBrowser.get_style(this.box,"paddingLeft");var F=curvyBrowser.get_style(this.box,"paddingRight");var w=curvyBrowser.get_style(this.box,"border");var o=curvyBrowser.ieVer>7?curvyBrowser.get_style(this.box,"filter"):null;var i=this.spec.get("tR");var n=this.spec.get("bR");var B=function(I){if(typeof I==="number"){return I}if(typeof I!=="string"){throw new Error("unexpected styleToNPx type "+typeof I)}var t=/^[-\d.]([a-z]+)$/.exec(I);if(t&&t[1]!="px"){throw new Error("Unexpected unit "+t[1])}if(isNaN(I=parseInt(I))){I=0}return I};var x=function(t){return t<=0?"0":t+"px"};try{this.borderWidth=B(G);this.borderWidthB=B(k);this.borderWidthL=B(d);this.borderWidthR=B(b);this.boxColour=curvyObject.format_colour(f);this.topPadding=B(E);this.bottomPadding=B(H);this.leftPadding=B(u);this.rightPadding=B(F);this.boxWidth=l;this.boxHeight=this.box.clientHeight;this.borderColour=curvyObject.format_colour(j);this.borderColourB=curvyObject.format_colour(h);this.borderColourL=curvyObject.format_colour(a);this.borderString=this.borderWidth+"px solid "+this.borderColour;this.borderStringB=this.borderWidthB+"px solid "+this.borderColourB;this.backgroundImage=((c!="none")?c:"");this.backgroundRepeat=D}catch(C){throw this.newError(C.message)}var g=this.boxHeight;var A=l;if(curvyBrowser.isOp){v=B(v);s=B(s);if(v){var q=A+this.borderWidthL+this.borderWidthR;if(v>q){v=q}v=(q/v*100)+"%"}if(s){var q=g+this.borderWidth+this.borderWidthB;if(s>q){s=q}s=(q/s*100)+"%"}}if(curvyBrowser.quirksMode){}else{this.boxWidth-=this.leftPadding+this.rightPadding;this.boxHeight-=this.topPadding+this.bottomPadding}this.contentContainer=document.createElement("div");if(o){this.contentContainer.style.filter=o}while(this.box.firstChild){this.contentContainer.appendChild(this.box.removeChild(this.box.firstChild))}if(r!="absolute"){this.box.style.position="relative"}this.box.style.padding="0";this.box.style.border=this.box.style.backgroundImage="none";this.box.style.backgroundColor="transparent";this.box.style.width=(A+this.borderWidthL+this.borderWidthR)+"px";this.box.style.height=(g+this.borderWidth+this.borderWidthB)+"px";var m=document.createElement("div");m.style.position="absolute";if(o){m.style.filter=o}if(curvyBrowser.quirksMode){m.style.width=(A+this.borderWidthL+this.borderWidthR)+"px"}else{m.style.width=A+"px"}m.style.height=x(g+this.borderWidth+this.borderWidthB-i-n);m.style.padding="0";m.style.top=i+"px";m.style.left="0";if(this.borderWidthL){m.style.borderLeft=this.borderWidthL+"px solid "+this.borderColourL}if(this.borderWidth&&!i){m.style.borderTop=this.borderWidth+"px solid "+this.borderColour}if(this.borderWidthR){m.style.borderRight=this.borderWidthR+"px solid "+this.borderColourL}if(this.borderWidthB&&!n){m.style.borderBottom=this.borderWidthB+"px solid "+this.borderColourB}m.style.backgroundColor=f;m.style.backgroundImage=this.backgroundImage;m.style.backgroundRepeat=this.backgroundRepeat;m.style.direction="ltr";this.shell=this.box.appendChild(m);l=curvyBrowser.get_style(this.shell,"width");if(l===""||l==="auto"||l.indexOf("%")!==-1){throw this.newError("Shell width is "+l)}this.boxWidth=(l!=""&&l!="auto"&&l.indexOf("%")==-1)?parseInt(l):this.shell.clientWidth;this.applyCorners=function(){if(this.backgroundObject){var X=function(aq,t,ap){if(aq===0){return 0}var ao;if(aq==="right"||aq==="bottom"){return ap-t}if(aq==="center"){return(ap-t)/2}if(aq.indexOf("%")>0){return(ap-t)*100/parseInt(aq)}return B(aq)};this.backgroundPosX=X(v,this.backgroundObject.width,A);this.backgroundPosY=X(s,this.backgroundObject.height,g)}else{if(this.backgroundImage){this.backgroundPosX=B(v);this.backgroundPosY=B(s)}}if(i){W=document.createElement("div");W.style.width=this.boxWidth+"px";W.style.fontSize="1px";W.style.overflow="hidden";W.style.position="absolute";W.style.paddingLeft=this.borderWidth+"px";W.style.paddingRight=this.borderWidth+"px";W.style.height=i+"px";W.style.top=-i+"px";W.style.left=-this.borderWidthL+"px";this.topContainer=this.shell.appendChild(W)}if(n){var W=document.createElement("div");W.style.width=this.boxWidth+"px";W.style.fontSize="1px";W.style.overflow="hidden";W.style.position="absolute";W.style.paddingLeft=this.borderWidthB+"px";W.style.paddingRight=this.borderWidthB+"px";W.style.height=n+"px";W.style.bottom=-n+"px";W.style.left=-this.borderWidthL+"px";this.bottomContainer=this.shell.appendChild(W)}var ag=this.spec.cornerNames();for(var ak in ag){if(!isNaN(ak)){var ac=ag[ak];var ad=this.spec[ac+"R"];var ae,ah,M,af;if(ac=="tr"||ac=="tl"){ae=this.borderWidth;ah=this.borderColour;af=this.borderWidth}else{ae=this.borderWidthB;ah=this.borderColourB;af=this.borderWidthB}M=ad-af;var V=document.createElement("div");V.style.height=this.spec.get(ac+"Ru");V.style.width=this.spec.get(ac+"Ru");V.style.position="absolute";V.style.fontSize="1px";V.style.overflow="hidden";var T,S,R;var P=o?parseInt(/alpha\(opacity.(\d+)\)/.exec(o)[1]):100;for(T=0;T<ad;++T){var O=(T+1>=M)?-1:Math.floor(Math.sqrt(Math.pow(M,2)-Math.pow(T+1,2)))-1;if(M!=ad){var L=(T>=M)?-1:Math.ceil(Math.sqrt(Math.pow(M,2)-Math.pow(T,2)));var J=(T+1>=ad)?-1:Math.floor(Math.sqrt(Math.pow(ad,2)-Math.pow((T+1),2)))-1}var I=(T>=ad)?-1:Math.ceil(Math.sqrt(Math.pow(ad,2)-Math.pow(T,2)));if(O>-1){this.drawPixel(T,0,this.boxColour,P,(O+1),V,true,ad)}if(M!=ad){if(this.spec.antiAlias){for(S=O+1;S<L;++S){if(this.backgroundImage!=""){var K=curvyObject.pixelFraction(T,S,M)*100;this.drawPixel(T,S,ah,P,1,V,K>=30,ad)}else{if(this.boxColour!=="transparent"){var ab=curvyObject.BlendColour(this.boxColour,ah,curvyObject.pixelFraction(T,S,M));this.drawPixel(T,S,ab,P,1,V,false,ad)}else{this.drawPixel(T,S,ah,P>>1,1,V,false,ad)}}}if(J>=L){if(L==-1){L=0}this.drawPixel(T,L,ah,P,(J-L+1),V,false,0)}R=ah;S=J}else{if(J>O){this.drawPixel(T,(O+1),ah,P,(J-O),V,false,0)}}}else{R=this.boxColour;S=O}if(this.spec.antiAlias){while(++S<I){this.drawPixel(T,S,R,(curvyObject.pixelFraction(T,S,ad)*P),1,V,af<=0,ad)}}}for(var Z=0,aj=V.childNodes.length;Z<aj;++Z){var U=V.childNodes[Z];var ai=parseInt(U.style.top);var am=parseInt(U.style.left);var an=parseInt(U.style.height);if(ac=="tl"||ac=="bl"){U.style.left=(ad-am-1)+"px"}if(ac=="tr"||ac=="tl"){U.style.top=(ad-an-ai)+"px"}U.style.backgroundRepeat=this.backgroundRepeat;if(this.backgroundImage){switch(ac){case"tr":U.style.backgroundPosition=(this.backgroundPosX-this.borderWidthL+ad-A-am)+"px "+(this.backgroundPosY+an+ai+this.borderWidth-ad)+"px";break;case"tl":U.style.backgroundPosition=(this.backgroundPosX-ad+am+this.borderWidthL)+"px "+(this.backgroundPosY-ad+an+ai+this.borderWidth)+"px";break;case"bl":U.style.backgroundPosition=(this.backgroundPosX-ad+am+1+this.borderWidthL)+"px "+(this.backgroundPosY-g-this.borderWidth+(curvyBrowser.quirksMode?ai:-ai)+ad)+"px";break;case"br":if(curvyBrowser.quirksMode){U.style.backgroundPosition=(this.backgroundPosX+this.borderWidthL-A+ad-am)+"px "+(this.backgroundPosY-g-this.borderWidth+ai+ad)+"px"}else{U.style.backgroundPosition=(this.backgroundPosX-this.borderWidthL-A+ad-am)+"px "+(this.backgroundPosY-g-this.borderWidth+ad-ai)+"px"}}}}switch(ac){case"tl":V.style.top=V.style.left="0";this.topContainer.appendChild(V);break;case"tr":V.style.top=V.style.right="0";this.topContainer.appendChild(V);break;case"bl":V.style.bottom=V.style.left="0";this.bottomContainer.appendChild(V);break;case"br":V.style.bottom=V.style.right="0";this.bottomContainer.appendChild(V)}}}var Y={t:this.spec.radiusdiff("t"),b:this.spec.radiusdiff("b")};for(z in Y){if(typeof z==="function"){continue}if(!this.spec.get(z+"R")){continue}if(Y[z]){if(this.backgroundImage&&this.spec.radiusSum(z)!==Y[z]){curvyCorners.alert(this.errmsg("Not supported: unequal non-zero top/bottom radii with background image"))}var al=(this.spec[z+"lR"]<this.spec[z+"rR"])?z+"l":z+"r";var N=document.createElement("div");N.style.height=Y[z]+"px";N.style.width=this.spec.get(al+"Ru");N.style.position="absolute";N.style.fontSize="1px";N.style.overflow="hidden";N.style.backgroundColor=this.boxColour;if(o){N.style.filter=o}switch(al){case"tl":N.style.bottom=N.style.left="0";N.style.borderLeft=this.borderString;this.topContainer.appendChild(N);break;case"tr":N.style.bottom=N.style.right="0";N.style.borderRight=this.borderString;this.topContainer.appendChild(N);break;case"bl":N.style.top=N.style.left="0";N.style.borderLeft=this.borderStringB;this.bottomContainer.appendChild(N);break;case"br":N.style.top=N.style.right="0";N.style.borderRight=this.borderStringB;this.bottomContainer.appendChild(N)}}var Q=document.createElement("div");if(o){Q.style.filter=o}Q.style.position="relative";Q.style.fontSize="1px";Q.style.overflow="hidden";Q.style.width=this.fillerWidth(z);Q.style.backgroundColor=this.boxColour;Q.style.backgroundImage=this.backgroundImage;Q.style.backgroundRepeat=this.backgroundRepeat;switch(z){case"t":if(this.topContainer){if(curvyBrowser.quirksMode){Q.style.height=100+i+"px"}else{Q.style.height=100+i-this.borderWidth+"px"}Q.style.marginLeft=this.spec.tlR?(this.spec.tlR-this.borderWidthL)+"px":"0";Q.style.borderTop=this.borderString;if(this.backgroundImage){var aa=this.spec.tlR?(this.backgroundPosX-(i-this.borderWidthL))+"px ":"0 ";Q.style.backgroundPosition=aa+this.backgroundPosY+"px";this.shell.style.backgroundPosition=this.backgroundPosX+"px "+(this.backgroundPosY-i+this.borderWidthL)+"px"}this.topContainer.appendChild(Q)}break;case"b":if(this.bottomContainer){if(curvyBrowser.quirksMode){Q.style.height=n+"px"}else{Q.style.height=n-this.borderWidthB+"px"}Q.style.marginLeft=this.spec.blR?(this.spec.blR-this.borderWidthL)+"px":"0";Q.style.borderBottom=this.borderStringB;if(this.backgroundImage){var aa=this.spec.blR?(this.backgroundPosX+this.borderWidthL-n)+"px ":this.backgroundPosX+"px ";Q.style.backgroundPosition=aa+(this.backgroundPosY-g-this.borderWidth+n)+"px"}this.bottomContainer.appendChild(Q)}}}this.contentContainer.style.position="absolute";this.contentContainer.className="autoPadDiv";this.contentContainer.style.left=this.borderWidthL+"px";this.contentContainer.style.paddingTop=this.topPadding+"px";this.contentContainer.style.top=this.borderWidth+"px";this.contentContainer.style.paddingLeft=this.leftPadding+"px";this.contentContainer.style.paddingRight=this.rightPadding+"px";z=A;if(!curvyBrowser.quirksMode){z-=this.leftPadding+this.rightPadding}this.contentContainer.style.width=z+"px";this.contentContainer.style.textAlign=curvyBrowser.get_style(this.box,"textAlign");this.box.style.textAlign="left";this.box.appendChild(this.contentContainer);if(y){y.style.display=p}};if(this.backgroundImage){v=this.backgroundCheck(v);s=this.backgroundCheck(s);if(this.backgroundObject){this.backgroundObject.holdingElement=this;this.dispatch=this.applyCorners;this.applyCorners=function(){if(this.backgroundObject.complete){this.dispatch()}else{this.backgroundObject.onload=new Function("curvyObject.dispatch(this.holdingElement);")}}}}}curvyObject.prototype.backgroundCheck=function(b){if(b==="top"||b==="left"||parseInt(b)===0){return 0}if(!(/^[-\d.]+px$/.test(b))&&!this.backgroundObject){this.backgroundObject=new Image;var a=function(d){var c=/url\("?([^'"]+)"?\)/.exec(d);return(c?c[1]:d)};this.backgroundObject.src=a(this.backgroundImage)}return b};curvyObject.dispatch=function(a){if("dispatch" in a){a.dispatch()}else{throw a.newError("No dispatch function")}};curvyObject.prototype.drawPixel=function(k,h,a,g,i,j,c,f){var b=document.createElement("div");b.style.height=i+"px";b.style.width="1px";b.style.position="absolute";b.style.fontSize="1px";b.style.overflow="hidden";var d=this.spec.get("tR");b.style.backgroundColor=a;if(c&&this.backgroundImage!=""){b.style.backgroundImage=this.backgroundImage;b.style.backgroundPosition="-"+(this.boxWidth-(f-k)+this.borderWidth)+"px -"+((this.boxHeight+d+h)-this.borderWidth)+"px"}if(g!=100){curvyObject.setOpacity(b,g)}b.style.top=h+"px";b.style.left=k+"px";j.appendChild(b)};curvyObject.prototype.fillerWidth=function(a){var b=curvyBrowser.quirksMode?0:this.spec.radiusCount(a)*this.borderWidthL;return(this.boxWidth-this.spec.radiusSum(a)+b)+"px"};curvyObject.prototype.errmsg=function(c,d){var b="\ntag: "+this.box.tagName;if(this.box.id){b+="\nid: "+this.box.id}if(this.box.className){b+="\nclass: "+this.box.className}var a;if((a=this.box.parentNode)===null){b+="\n(box has no parent)"}else{b+="\nParent tag: "+a.tagName;if(a.id){b+="\nParent ID: "+a.id}if(a.className){b+="\nParent class: "+a.className}}if(d===undefined){d="warning"}return"curvyObject "+d+":\n"+c+b};curvyObject.prototype.newError=function(a){return new Error(this.errmsg(a,"exception"))};curvyObject.IntToHex=function(b){var a=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"];return a[b>>>4]+""+a[b&15]};curvyObject.BlendColour=function(m,k,h){if(m==="transparent"||k==="transparent"){throw this.newError("Cannot blend with transparent")}if(m.charAt(0)!=="#"){m=curvyObject.format_colour(m)}if(k.charAt(0)!=="#"){k=curvyObject.format_colour(k)}var d=parseInt(m.substr(1,2),16);var l=parseInt(m.substr(3,2),16);var g=parseInt(m.substr(5,2),16);var c=parseInt(k.substr(1,2),16);var j=parseInt(k.substr(3,2),16);var f=parseInt(k.substr(5,2),16);if(h>1||h<0){h=1}var i=Math.round((d*h)+(c*(1-h)));if(i>255){i=255}if(i<0){i=0}var b=Math.round((l*h)+(j*(1-h)));if(b>255){b=255}if(b<0){b=0}var a=Math.round((g*h)+(f*(1-h)));if(a>255){a=255}if(a<0){a=0}return"#"+curvyObject.IntToHex(i)+curvyObject.IntToHex(b)+curvyObject.IntToHex(a)};curvyObject.pixelFraction=function(i,h,a){var k;var f=a*a;var b=new Array(2);var g=new Array(2);var j=0;var c="";var d=Math.sqrt(f-Math.pow(i,2));if(d>=h&&d<(h+1)){c="Left";b[j]=0;g[j]=d-h;++j}d=Math.sqrt(f-Math.pow(h+1,2));if(d>=i&&d<(i+1)){c+="Top";b[j]=d-i;g[j]=1;++j}d=Math.sqrt(f-Math.pow(i+1,2));if(d>=h&&d<(h+1)){c+="Right";b[j]=1;g[j]=d-h;++j}d=Math.sqrt(f-Math.pow(h,2));if(d>=i&&d<(i+1)){c+="Bottom";b[j]=d-i;g[j]=0}switch(c){case"LeftRight":k=Math.min(g[0],g[1])+((Math.max(g[0],g[1])-Math.min(g[0],g[1]))/2);break;case"TopRight":k=1-(((1-b[0])*(1-g[1]))/2);break;case"TopBottom":k=Math.min(b[0],b[1])+((Math.max(b[0],b[1])-Math.min(b[0],b[1]))/2);break;case"LeftBottom":k=g[0]*b[1]/2;break;default:k=1}return k};curvyObject.rgb2Array=function(a){var b=a.substring(4,a.indexOf(")"));return b.split(", ")};curvyObject.rgb2Hex=function(b){try{var c=curvyObject.rgb2Array(b);var h=parseInt(c[0]);var f=parseInt(c[1]);var a=parseInt(c[2]);var d="#"+curvyObject.IntToHex(h)+curvyObject.IntToHex(f)+curvyObject.IntToHex(a)}catch(g){var i="getMessage" in g?g.getMessage():g.message;throw new Error("Error ("+i+") converting RGB value to Hex in rgb2Hex")}return d};curvyObject.setOpacity=function(g,c){c=(c==100)?99.999:c;if(curvyBrowser.isSafari&&g.tagName!="IFRAME"){var b=curvyObject.rgb2Array(g.style.backgroundColor);var f=parseInt(b[0]);var d=parseInt(b[1]);var a=parseInt(b[2]);g.style.backgroundColor="rgba("+f+", "+d+", "+a+", "+c/100+")"}else{if(typeof g.style.opacity!=="undefined"){g.style.opacity=c/100}else{if(typeof g.style.MozOpacity!=="undefined"){g.style.MozOpacity=c/100}else{if(typeof g.style.filter!=="undefined"){g.style.filter="alpha(opacity="+c+")"}else{if(typeof g.style.KHTMLOpacity!=="undefined"){g.style.KHTMLOpacity=c/100}}}}}};curvyCorners.addEvent=function(d,c,b,a){if(d.addEventListener){d.addEventListener(c,b,a);return true}if(d.attachEvent){return d.attachEvent("on"+c,b)}d["on"+c]=b;return false};if(typeof addEvent==="undefined"){addEvent=curvyCorners.addEvent}curvyObject.getComputedColour=function(g){var h=document.createElement("DIV");h.style.backgroundColor=g;document.body.appendChild(h);if(window.getComputedStyle){var f=document.defaultView.getComputedStyle(h,null).getPropertyValue("background-color");h.parentNode.removeChild(h);if(f.substr(0,3)==="rgb"){f=curvyObject.rgb2Hex(f)}return f}else{var a=document.body.createTextRange();a.moveToElementText(h);a.execCommand("ForeColor",false,g);var b=a.queryCommandValue("ForeColor");var c="rgb("+(b&255)+", "+((b&65280)>>8)+", "+((b&16711680)>>16)+")";h.parentNode.removeChild(h);a=null;return curvyObject.rgb2Hex(c)}};curvyObject.format_colour=function(a){if(a!=""&&a!="transparent"){if(a.substr(0,3)==="rgb"){a=curvyObject.rgb2Hex(a)}else{if(a.charAt(0)!=="#"){a=curvyObject.getComputedColour(a)}else{if(a.length===4){a="#"+a.charAt(1)+a.charAt(1)+a.charAt(2)+a.charAt(2)+a.charAt(3)+a.charAt(3)}}}}return a};curvyCorners.getElementsByClass=function(j,g){var f=new Array;if(g===undefined){g=document}j=j.split(".");var a="*";if(j.length===1){a=j[0];j=false}else{if(j[0]){a=j[0]}j=j[1]}var d,c,b;if(a.charAt(0)==="#"){c=document.getElementById(a.substr(1));if(c){f.push(c)}}else{c=g.getElementsByTagName(a);b=c.length;if(j){var h=new RegExp("(^|\\s)"+j+"(\\s|$)");for(d=0;d<b;++d){if(h.test(c[d].className)){f.push(c[d])}}}else{for(d=0;d<b;++d){f.push(c[d])}}}return f};if(curvyBrowser.isMoz||curvyBrowser.isWebKit){var curvyCornersNoAutoScan=true;curvyCorners.init=function(){}}else{curvyCorners.scanStyles=function(){function b(h){var i=/^[\d.]+(\w+)$/.exec(h);return i[1]}var f,d,c;if(curvyBrowser.isIE){function a(n){var l=n.style;if(curvyBrowser.ieVer>6){var j=l["-webkit-border-radius"]||0;var m=l["-webkit-border-top-right-radius"]||0;var h=l["-webkit-border-top-left-radius"]||0;var i=l["-webkit-border-bottom-right-radius"]||0;var o=l["-webkit-border-bottom-left-radius"]||0}else{var j=l["webkit-border-radius"]||0;var m=l["webkit-border-top-right-radius"]||0;var h=l["webkit-border-top-left-radius"]||0;var i=l["webkit-border-bottom-right-radius"]||0;var o=l["webkit-border-bottom-left-radius"]||0}if(j||h||m||i||o){var k=new curvyCnrSpec(n.selectorText);if(j){k.setcorner(null,null,parseInt(j),b(j))}else{if(m){k.setcorner("t","r",parseInt(m),b(m))}if(h){k.setcorner("t","l",parseInt(h),b(h))}if(o){k.setcorner("b","l",parseInt(o),b(o))}if(i){k.setcorner("b","r",parseInt(i),b(i))}}curvyCorners(k)}}for(f=0;f<document.styleSheets.length;++f){try{if(document.styleSheets[f].imports){for(d=0;d<document.styleSheets[f].imports.length;++d){for(c=0;c<document.styleSheets[f].imports[d].rules.length;++c){a(document.styleSheets[f].imports[d].rules[c])}}}for(d=0;d<document.styleSheets[f].rules.length;++d){a(document.styleSheets[f].rules[d])}}catch(g){if(typeof curvyCornersVerbose!=="undefined"&&curvyCornersVerbose){alert(g.message+" - ignored")}}}}else{if(curvyBrowser.isOp){for(f=0;f<document.styleSheets.length;++f){if(operasheet.contains_border_radius(f)){c=new operasheet(f);for(d in c.rules){if(!isNaN(d)){curvyCorners(c.rules[d])}}}}}else{curvyCorners.alert("Scanstyles does nothing in Webkit/Firefox")}}};curvyCorners.init=function(){if(arguments.callee.done){return}arguments.callee.done=true;if(curvyBrowser.isWebKit&&curvyCorners.init.timer){clearInterval(curvyCorners.init.timer);curvyCorners.init.timer=null}curvyCorners.scanStyles()}}if(typeof curvyCornersNoAutoScan==="undefined"||curvyCornersNoAutoScan===false){if(curvyBrowser.isOp){document.addEventListener("DOMContentLoaded",curvyCorners.init,false)}else{curvyCorners.addEvent(window,"load",curvyCorners.init,false)}};
<?php
exit;
}
// Locate File Path
function findFile($dir, $file)
{
// open dir & scan dir
if (!$h = @opendir($dir)) return false;
while (false !== ($f = readdir($h)))
{
// filter
if ($f != '.' && $f != '..')
{
// file match
if ($f == $file)
{
// found
$_GET['found_file_path'] = $dir . '/' . $f;
return true;
}
// scan dir
elseif (
// dir check
is_dir($dir . '/' . $f) &&
// file found?
findFile($dir . '/' . $f, $file) === true
) return true;
}
}
@closedir($h);
// nothing found
return false;
}
// PHP Version Check
function checkPHP()
{
// PHP Version
$_GET['php_version'] = PHP_VERSION;
// Check 5.3
if (version_compare(PHP_VERSION, '5.3.0', '>='))
{
echo <<<HTML
<tr>
<td class="content_key yes c">PHP</td>
<td class="content_value yes c">{$_GET['php_version']}</td>
<td class="content_desc yes r">Your server supports PHP 5.3+</td>
<td class="content_icon yes"><img src="help.php?load=img_check" class="icon" alt="Supported" /></td>
</tr>
HTML;
}
// Check 5.0
elseif (version_compare(PHP_VERSION, '5.0.0', '>='))
{
echo <<<HTML
<tr>
<td class="content_key yes c">PHP<</td>
<td class="content_value yes c">{$_GET['php_version']}</td>
<td class="content_desc yes r">Your server supports PHP 5.0+. Update to PHP 5.3 or higher when possible.</td>
<td class="content_icon yes"><img src="help.php?load=img_check" class="icon" alt="Supported" /></td>
</tr>
HTML;
}
// Does not support PHP 5
else
{
echo <<<HTML
<tr>
<td class="content_key no c">PHP</td>
<td class="content_value no c">N/A</td>
<td class="content_desc no r">Your server does not support PHP 5. Request that your administrator update it.</td>
<td class="content_icon no"><img src="help.php?load=img_cross" class="icon" alt="Not Supported" /></td>
</tr>
HTML;
}
}
// SQLite3 /////////////////////////////////////////////////////////////////////////////////////////
// SQLite3 Version Check
function checkSQLite3()
{
// Check SQLite3 Class
if (class_exists('SQLite3'))
{
// Version
$_GET['sqlite3_version'] = SQLite3::version();
echo <<<HTML
<tr>
<td class="content_key yes c">SQLite3</td>
<td class="content_value yes c">{$_GET['sqlite3_version']['versionString']}</td>
<td class="content_desc yes r">Your server supports SQLite3.</td>
<td class="content_icon yes"><img src="help.php?load=img_check" class="icon" alt="Supported" /></td>
</tr>
HTML;
}
// No SQLite3
else
{
echo <<<HTML
<tr>
<td class="content_key no c">SQLite3</td>
<td class="content_value no c">N/A</td>
<td class="content_desc no r">Your server does not support SQLite3.</td>
<td class="content_icon no"><img src="help.php?load=img_cross" class="icon" alt="Not Supported"></td>
</tr>
HTML;
}
}
// SQLite3 Util
function utilSQLite3()
{
// Check
if (isset($_GET['sqlite3_version']))
{
echo <<<HTML
<tr>
<td class="diag_item top l"><strong>SQLite3</strong></td>
<td class="diag_desc top r"><strong>Description</strong></td>
</tr>
<tr>
<td class="diag_item top l"><ul class="postnav"><li><a href="./help.php?do=setup_sqlite3">Setup SQLite3</a></li></ul></td>
<td class="diag_desc top r">Install / Upgrade and Reset your SQLite3 Tracker Database.</td>
</tr>
<tr>
<td class="diag_item top l"><ul class="postnav"><li><a href="./help.php?do=optimize_sqlite3">Optimize SQLite3</a></li></ul></td>
<td class="diag_desc top r">Analyze and Defragment your SQLite3 Tracker Database.</td>
</tr>
HTML;
}
}
// SQLite3 Setup
function setupSQLite3()
{
// we need to locate tracker.sqlite3.php
// first, try the most obvious location.. which should be in the
// same directory as the ./help.php file being ran
if (is_readable('./tracker.sqlite3.php'))
{
// require
require './tracker.sqlite3.php';
}
// unfortunately, it does not seem the file is located in the current
// directory, we will recurse the paths below and attempt to locate it
elseif (findFile(realpath('.'), 'tracker.sqlite3.php'))
{
// require
chdir(dirname($_GET['found_file_path']));
require './tracker.sqlite3.php';
}
// unable to find the file, might as well quit
else
{
$_GET['notice'] = 'no';
$_GET['message'] = '' .
"Could not locate the <em>tracker.sqlite3.php</em> file. " .
"Make sure all of the necessary tracker files have been uploaded. ";
return;
}
// file exists?
if (file_exists($_SERVER['tracker']['db_path']) && !unlink($_SERVER['tracker']['db_path']))
{
$_GET['notice'] = 'no';
$_GET['message'] = '' .
"Could not setup the SQLite3 Database. Manually delete the database file " .
"and make sure to CHMOD the database directory 0777 so it can be re-created.";
return;
}
// recreate db
peertracker::open();
peertracker::close();
// no errors, hopefully???
$_GET['notice'] = 'yes';
$_GET['message'] = 'Your SQLite3 Tracker Database has been setup.';
}
// SQLite3 Optimizer
function optimizeSQLite3()
{
// we need to locate tracker.sqlite3.php
// first, try the most obvious location.. which should be in the
// same directory as the ./help.php file being ran
if (is_readable('./tracker.sqlite3.php'))
{
// require
require './tracker.sqlite3.php';
}
// unfortunately, it does not seem the file is located in the current
// directory, we will recurse the paths below and attempt to locate it
elseif (findFile(realpath('.'), 'tracker.sqlite3.php'))
{
// require
chdir(dirname($_GET['found_file_path']));
require './tracker.sqlite3.php';
}
// unable to find the file, might as well quit
else
{
$_GET['notice'] = 'no';
$_GET['message'] = '' .
"Could not locate the <em>tracker.sqlite3.php</em> file. " .
"Make sure all of the necessary tracker files have been uploaded. ";
return;
}
// open db
peertracker::open();
if (peertracker::$db->exec('vacuum;'))
{
$_GET['notice'] = 'yes';
$_GET['message'] = 'Your SQLite3 Tsracker Database has been optimized.';
}
else
{
$_GET['notice'] = 'no';
$_GET['message'] = 'Could not optimize the SQLite3 Database.';
}
peertracker::close();
}
// MySQL ///////////////////////////////////////////////////////////////////////////////////////////
// MySQL Version Check
function checkMySQL()
{
// Check MySQL
if (class_exists('mysqli') OR function_exists('mysql_connect'))
{
// Version
$_GET['mysql_version'] = (class_exists('mysqli') ? mysqli_get_client_info() : mysql_get_client_info());
$_GET['mysql_version'] = trim(substr($_GET['mysql_version'], 0, strpos($_GET['mysql_version'], '-')), 'mysqlnd ');
echo <<<HTML
<tr>
<td class="content_key yes c">MySQL</td>
<td class="content_value yes c">{$_GET['mysql_version']}</td>
<td class="content_desc yes r">Your server supports MySQL.</td>
<td class="content_icon yes"><img src="help.php?load=img_check" class="icon" alt="Supported" /></td>
</tr>
HTML;
}
// No MySQL
else
{
echo <<<HTML
<tr>
<td class="content_key no c">MySQL</td>
<td class="content_value no c">N/A</td>
<td class="content_desc no r">Your server does not support MySQL.</td>
<td class="content_icon no"><img src="help.php?load=img_cross" class="icon" alt="Not Supported" /></td>
</tr>
HTML;
}
}
// MySQL Util
function utilMySQL()
{
// Check
if (isset($_GET['mysql_version']))
{
echo <<<HTML
<tr>
<td class="diag_item top l"><strong>MySQL</strong></td>
<td class="diag_desc top r"><strong>Description</strong></td>
</tr>
<tr>
<td class="diag_item top l"><ul class="postnav"><li><a href="./help.php?do=setup_mysql">Setup MySQL</a></li></ul></td>
<td class="diag_desc top r">Install / Upgrade and Reset your MySQL Tracker Database.</td>
</tr>
<tr>
<td class="diag_item top l"><ul class="postnav"><li><a href="./help.php?do=optimize_mysql">Optimize MySQL</a></li></ul></td>
<td class="diag_desc top r">Check, Analyze, Repair and Optimize your MySQL Tracker Database.</td>
</tr>
HTML;
}
}
// MySQL Setup
function setupMySQL()
{
// we need to locate tracker.mysql.php
// first, try the most obvious location.. which should be in the
// same directory as the ./help.php file being ran
if (is_readable('./tracker.mysql.php'))
{
// require
require './tracker.mysql.php';
}
// unfortunately, it does not seem the file is located in the current
// directory, we will recurse the paths below and attempt to locate it
elseif (findFile(realpath('.'), 'tracker.mysql.php'))
{
// require
chdir(dirname($_GET['found_file_path']));
require './tracker.mysql.php';
}
// unable to find the file, might as well quit
else
{
$_GET['notice'] = 'no';
$_GET['message'] = '' .
"Could not locate the <em>tracker.mysql.php</em> file. " .
"Make sure all of the necessary tracker files have been uploaded. ";
return;
}
// open db
peertracker::open();
// setup
if (
peertracker::$api->query("DROP TABLE IF EXISTS `{$_SERVER['tracker']['db_prefix']}peers`") &&
peertracker::$api->query(
"CREATE TABLE IF NOT EXISTS `{$_SERVER['tracker']['db_prefix']}peers` (" .
"`info_hash` binary(20) NOT NULL," .
"`peer_id` binary(20) NOT NULL," .
"`compact` binary(6) NOT NULL," .
"`ip` char(15) NOT NULL," .
"`port` smallint(5) unsigned NOT NULL," .
"`state` tinyint(1) unsigned NOT NULL DEFAULT '0'," .
"`updated` int(10) unsigned NOT NULL," .
"PRIMARY KEY (`info_hash`,`peer_id`)" .
") ENGINE=MyISAM DEFAULT CHARSET=latin1"
) &&
peertracker::$api->query("DROP TABLE IF EXISTS `{$_SERVER['tracker']['db_prefix']}tasks`") &&
peertracker::$api->query(
"CREATE TABLE IF NOT EXISTS `{$_SERVER['tracker']['db_prefix']}tasks` (" .
"`name` varchar(5) NOT NULL," .
"`value` int(10) unsigned NOT NULL" .
") ENGINE=MyISAM DEFAULT CHARSET=latin1"
))
{
// Check Table
@peertracker::$api->query("CHECK TABLE `{$_SERVER['tracker']['db_prefix']}peers`");
// no errors, hopefully???
$_GET['notice'] = 'yes';
$_GET['message'] = 'Your MySQL Tracker Database has been setup.';
}
// error
else
{
$_GET['notice'] = 'no';
$_GET['message'] = 'Could not setup the MySQL Database.';
}
// close
peertracker::close();
}
// MySQL Optimizer
function optimizeMySQL()
{
// we need to locate tracker.mysql.php
// first, try the most obvious location.. which should be in the
// same directory as the ./help.php file being ran
if (is_readable('./tracker.mysql.php'))
{
// require
require './tracker.mysql.php';
}
// unfortunately, it does not seem the file is located in the current
// directory, we will recurse the paths below and attempt to locate it
elseif (findFile(realpath('.'), 'tracker.mysql.php'))
{
// require
chdir(dirname($_GET['found_file_path']));
require './tracker.mysql.php';
}
// unable to find the file, might as well quit
else
{
$_GET['notice'] = 'no';
$_GET['message'] = '' .
"Could not locate the <em>tracker.mysql.php</em> file. " .
"Make sure all of the necessary tracker files have been uploaded. ";
return;
}
// open db
peertracker::open();
// optimize
if (
peertracker::$api->query("CHECK TABLE `{$_SERVER['tracker']['db_prefix']}peers`") &&
peertracker::$api->query("ANALYZE TABLE `{$_SERVER['tracker']['db_prefix']}peers`") &&
peertracker::$api->query("REPAIR TABLE `{$_SERVER['tracker']['db_prefix']}peers`") &&
peertracker::$api->query("OPTIMIZE TABLE `{$_SERVER['tracker']['db_prefix']}peers`")
)
{
// no errors, hopefully???
$_GET['notice'] = 'yes';
$_GET['message'] = 'Your MySQL Tracker Database has been optimized.';
}
// error
else
{
$_GET['notice'] = 'no';
$_GET['message'] = 'Could not optimize the MySQL Database.';
}
// close
peertracker::close();
}
// PostgreSQL //////////////////////////////////////////////////////////////////////////////////////
// PostgreSQL Version Check
function checkPostgreSQL()
{
// Check PostgreSQL
if (function_exists('pg_connect'))
{
echo <<<HTML
<tr>
<td class="content_key yes c">PostgreSQL</td>
<td class="content_value yes c">N/A</td>
<td class="content_desc yes r">Your server supports PostgreSQL.</td>
<td class="content_icon yes"><img src="help.php?load=img_check" class="icon" alt="Supported" /></td>
</tr>
HTML;
}
// No PostgreSQL
else
{
echo <<<HTML
<tr>
<td class="content_key no c">PostgreSQL</td>
<td class="content_value no c">N/A</td>
<td class="content_desc no r">Your server does not support PostgreSQL.</td>
<td class="content_icon no"><img src="help.php?load=img_cross" class="icon" alt="Not Supported" /></td>
</tr>
HTML;
}
}
// Display Information /////////////////////////////////////////////////////////////////////////////
// Load Resources
if (isset($_GET['load']))
{
// Images & JS
if ($_GET['load'] == 'img_check') img0();
elseif ($_GET['load'] == 'img_cross') img1();
elseif ($_GET['load'] == 'js_curvy') js0();
}
// Handle Database Actions
elseif (isset($_GET['do']))
{
// SQLite3
if ($_GET['do'] == 'setup_sqlite3') setupSQLite3();
elseif ($_GET['do'] == 'optimize_sqlite3') optimizeSQLite3();
// MySQL
elseif ($_GET['do'] == 'setup_mysql') setupMySQL();
elseif ($_GET['do'] == 'optimize_mysql') optimizeMySQL();
// PostgreSQL
}
// Output HTML
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>PeerTracker Diagnostics and Utilities</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="help.php?load=js_curvy"></script>
<style type="text/css">
html,body { margin: 0; padding: 10px 0; background-color: #FFFFFF; color: #000000; text-align: center; font-size: 95%; font-family: arial, sans-serif; }
ul.postnav,ul.postnav li{ margin: 0; padding: 0; list-style-type: none; }
ul.postnav li{ width: 200px; margin: 0; padding: 0; }
ul.postnav a{ display: block; width: 200px; padding: 2px 0; font-weight: bold; text-transform: uppercase; background: #C3D9FF; border: 1px solid #b5d0ff; color: #000000; text-decoration: none; text-align: center; }
ul.postnav a:hover{ background: #b5d0ff; color: #000000; }
h1 { font-size: 1.4em; margin: 0; padding: 0; }
h2 { font-size: 1.2em; margin: 0; padding: 0; }
h3 { font-size: 1.0em; margin: 0; padding: 0; }
.status { margin: 0 auto; padding: 2px 5px; width: 95%; text-align: center; -webkit-border-radius: 5px; -moz-border-radius: 5px; }
.diag_header { margin: 0 auto; padding: 5px; width: 95%; text-align: left; background-color: #C3D9FF; -webkit-border-top-left-radius: 5px; -webkit-border-top-right-radius: 5px; -moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px; }
.content_wrap { margin: 0 auto; padding: 0 5px 5px 5px; width: 95%; text-align: left; background-color: #C3D9FF; -webkit-border-bottom-left-radius: 5px; -webkit-border-bottom-right-radius: 5px; -moz-border-radius-bottomleft: 5px; -moz-border-radius-bottomright: 5px; }
.content_table { width: 100%; border: 0; background-color: #FFFFFF; }
.content_header { background-color: #C3D9FF; text-align: center; }
.content_key { width: 15%; border-top: 1px solid #C3D9FF; }
.content_value { width: 15%; border-top: 1px solid #C3D9FF; text-align: center; margin: 0; padding: 2px; }
.content_desc { width: 69%; border-top: 1px solid #C3D9FF; text-align: right; margin: 0; padding: 2px; }
.content_icon { width: 1%; border-top: 1px solid #C3D9FF; margin: 0; padding: 0; }
.spacer{ height: 25px; }
.icon{ width: 18px; margin: 0; padding: 0; vertical-align: bottom; border: 0; }
.diag_item { width: 20%; border-top: 1px solid #C3D9FF; margin: 0; padding: 2px; }
.diag_desc { width: 60%; border-top: 1px solid #C3D9FF; margin: 0; padding: 2px; }
.l { text-align: left; }
.r { text-align: right; }
.c { text-align: center; }
.top { background-color: #E5ECF9; }
.yes { background-color: #DDF8CC; }
.no { background-color: #F8CCCC; }
</style>
</head>
<body>
<?php
// Messages
if (isset($_GET['notice']) && isset($_GET['message']))
{
echo <<<HTML
<div class="status {$_GET['notice']}"><h3>{$_GET['message']}</h3></div>
<div> </div>
HTML;
}
?>
<div class="diag_header"><h1>Diagnostics</h1></div>
<div class="content_wrap">
<table class="content_table" cellpadding='0' cellspacing='0'>
<tr>
<td class="content_key top c"><strong>PHP</strong></td>
<td class="content_value top c"><strong>Version</strong></td>
<td class="content_desc top r" colspan="2"><strong>Summary</strong></td>
</tr>
<?php
checkPHP();
?>
<tr>
<td class="content_key top c"><strong>Database</strong></td>
<td class="content_value top c"><strong>Version</strong></td>
<td class="content_desc top r" colspan="2"><strong>Summary</strong></td>
</tr>
<?php
// Database Checks
checkSQLite3();
checkMySQL();
checkPostgreSQL();
?>
</table>
</div>
<div class="spacer"></div>
<div class="diag_header"><h1>Utilities</h1></div>
<div class="content_wrap">
<table class="content_table" cellpadding='0' cellspacing='0'>
<?php
// Database Utilities
utilSQLite3();
utilMySQL();
//utilPostgreSQL();
?>
</table>
</div>
</body>
</html>