$_POST = {};
$_GET = {};
$_SERVER = {};
$_SESSION = {};
function StdClass() {}
function extend(superClass,child){
var c = new Function();
c.prototype = superClass.prototype;
child.prototype = new c();
child.prototype.constructor = child;
child.superclass = superClass.prototype;
child.superclass.__construct = superClass;
}
/**
* @description В транслированом из php кода js коде тип Object может иметь только то, что в оригинальном коде было ассоциативным массивом
*/
function __php2js_clone_argument__(o) {
if ((o instanceof Array) || (o && o.constructor && o.constructor.name == 'Object') ) {
if (o instanceof Array) {
var r = [], i, j;
for (i = 0; i < o.length; i++) {
j = o[i];
if (j instanceof Array) {
j = __php2js_clone_argument__(j);
}
r.push(o[i]);
}
return r;
}
var r = {}, i;
for (i in o) {
if ((o[i] instanceof Array) || (o[i] && o[i].constructor && o[i].constructor.name == 'Object') ) {
o[i] = __php2js_clone_argument__(o[i]);
}
r[i] = o[i];
}
return r;
}
return o;
}
/**
* @description замена метода push для ассоциативных массивов, транслированных в
*/
function __php2js_push__(item) {
var o = this, max = -1, i;
for (i in o) {
i = parseInt(i, 10);
if (!isNaN(i)) {
if (max < i) {
max = i;
}
}
}
max++;
this[max] = item;
}
function chr(n) {
return String.fromCharCode(n);
}
function count(data, dbg) {
if (!data) {
return 0;
}
if (data instanceof Array /*|| isset(data.length)*/) {
return data.length;
}
var i, c = 0;
for (i in data) c++;
return c;
}
function dechex(n) {
return Number(n).toString(16);
}
function define(name, val) {
window[name] = val;
}
function defined(name) {
if (window[name]) {
return true;
}
return false;
}
function isset(v) {
var dbg = window.issetdbg;
if (dbg) {
console.log('arguments:');
console.log(arguments);
}
if (String(v) === 'undefined') {
if (dbg) {
//window.issetdbg = 0;
}
return false;
}
for (var i = 1; i < arguments.length; i++) {
if (dbg) {
console.log('check key = ' + arguments[i]);
}
v = v[ arguments[i] ];
if (String(v) === 'undefined') {
if (dbg) {
//window.issetdbg = 0;
}
return false;
}
}
if (dbg) {
//window.issetdbg = 0;
}
return true;
}
function get_defined_vars() {
return window;
}
function getimagesize($path) {
if (PHP && PHP.getimagesize) {
var r = PHP.getimagesize($path);
return r;
}
return {};
}
function explode(ch, str) {
return str.split(ch);
}
/**
* @return {Array} of Object or Array в зависимости от типа data и safeKeys
* safeKeys == true вернет array of Objects
* иначе data instanceof Array ? Array : Object
*/
function array_chunk(data, size, safeKeys) {
if (data instanceof Array) {
if (safeKeys) {
var buf = {}, i;
for (i = 0; i < data.length; i++) {
buf[i] = data[i];
}
return object_chunk(data, size, safeKeys);
}
return _array_chunk(data, size);
}
return object_chunk(data, size, safeKeys);
}
function object_chunk(data, size, safeKeys) {
var i, j, k, buf = {length:0}, r = [];
j = k = 0;
for (i in data) {
if (j >= size) {
r.push(buf);
buf = {length:0};
j = 0;
}
if (safeKeys) {
buf[i] = data[i];
} else {
buf[k] = data[i];
}
buf.length++;
j++;
k++;
}
if (buf.length) {
r.push(buf);
}
return r;
}
function ord(s) {
return String(s).charCodeAt(0);
}
function _array_chunk(data, size) {
var i, j, buf = [], r = [];
for (j = 0, i = 0; i < data.length; i++) {
if (j >= size) {
r.push(buf);
buf = [];
j = 0;
}
buf.push(data[i]);
j++;
}
if (buf.length) {
r.push(buf);
}
return r;
}
function array_intersect(a, b) {
var i, buf = [];
for (i = 0; i < a.length; i++) {
if (~$.inArray(a[i], b)) {
buf.push(a[i]);
}
}
return buf;
}
function array_map(F, arr) {
for (var i = 0; i < arr.length; i++) {
arr[i] = F(arr[i]);
}
return arr;
}
function array_merge() {
var j, sub, r = {}, nI = 0;
for (i = 0; i < arguments.length; i++) {
sub = arguments[i];
if (!(sub instanceof Array) && !(sub instanceof Object)) {
continue;
}
if (sub instanceof Array) {
for (j = 0; j < sub.length; j++) {
r[nI] = sub[j];
nI++;
}
} else if (sub instanceof Object) {
for (j in sub) {
if (String(j) === String(parseInt(j))) {
r[nI] = sub[j];
nI++;
} else {
r[j] = sub[j];
}
}
}
}
return r;
}
function array_search(s, arr) {
var r = false;
$(arr).each(function(i, j) {
if (r === false && j == s) {
r = i;
}
});
return r;
}
function array_shift(arr) {
if (arr instanceof Array) {
var k = arr.shift();
return k;
}
if (typeof(arr) == 'object') {
var obj = {}, i, j = 0, m;
for (i in arr) {
if (j == 0) {
j++;
} else {
//obj[i] = arr[i];
break;
}
}
m = arr[i];
delete arr[i];
return m;
}
return arr;
}
function array_sum(a) {
var i, r = 0;
for (i = 0; i < a.length; i++) {
r += a[i];
}
return r;
}
/**
* В процессе https://www.php.net/manual/ru/function.array-slice.php
*
* Переписать тесты заменив ключи на строки.
*
* Проблема числовых ключей в array_slice - js упорядочивает их.
* Варианта для данных, полученных извне просто нет.
* Для объявленных прямо в коде можно помудрить. Но стоит ли?
*
* Итого, скорее всего ничего лучше чем Exception не ждёт нас...
*
* @param {Array} or {Object} aInput
* @param {Number] iOffset
* @param {Number} iLength = null (as in PHP 5.2.4+) A NULL length now tells the function to use the length of array. Значение NULL в качестве length теперь означает, что в качестве этого значения будет использована длина массива array.
* param {Boolean} bPreversekeys = false NOT SUPPORTED!
* @return Array or Object if aInput is Object
*/
function array_slice(aInput, iOffset, iLength) {
aInput = __array_slice_normalize_input(aInput);
var u = 'undefined', i, iSz, result, inputSize = count(aInput), aKeys = [],
bPreversekeys = false;
iLength = String(iLength) == u ? null : iLength;
if (!(aInput instanceof Array)) {
bPreversekeys = true;
}
if (iOffset < 0) {
iOffset = count(aInput) + iOffset;
}
//Элемент iOffset включаем, я проверял
if (iLength == null) {
iSz = inputSize;
} else {
if (iLength >= 0) {
iSz = iOffset + iLength;
iSz = iSz <= inputSize ? iSz : inputSize;
} else {
iSz = inputSize + iLength;
}
}
//Сначала делаю с массивом, использовать Array.slice не надо,
//там используются индексы во втором аргументе
result = bPreversekeys ? {} : [];
if (aInput instanceof Array) {
for (i = iOffset; i < iSz; i++) {
result.push(aInput[i]);
}
return result;
}
//Для объекта
if (!(aInput instanceof Array)) {
for (i in aInput) {
if (String( parseInt(i) ) === String(i)) {
throw new Error(i + ' is a number key. php.js array_slice does not work with associative array with number keys');
}
if (i == 'push' && aInput[i].name == '__php2js_push__') {
continue;
}
aKeys.push(i);
}
for (i = iOffset; i < iSz; i++) {
result[ aKeys[i] ] = aInput[ aKeys[i] ];
}
return result;
}
return result;
}
/**
* @see array_slice
* @description Remove all undefined items from array aInput.
* @param {*} aInput
* @return Object if input Array containts undefined items
*/
function __array_slice_normalize_input(aInput) {
if (!(aInput instanceof Array)) {
return aInput;
}
var i, oBuf = {}, n = 0;
for (i = 0; i < aInput.length; i++) {
if (String(aInput[i]) == 'undefined') {
n++;
} else {
oBuf[i] = aInput[i];
}
}
if (n > 0) {
return oBuf;
}
return aInput;
}
function array_unique(a){
if (!(a instanceof Array) && !!(a instanceof Object)) {
return a;
}
var i, o = {};
if ((a instanceof Array)) {
for (i = 0; i < a.length; i++) {
o[a[i]] = 1;
}
} else {
for (i in a) {
o[a[i]] = 1;
}
}
a = [];
for (i in o) {
a.push(i);
}
return a;
}
function array_unshift(a) {
var i, j, sz = a.length;
for (i = 1; i < arguments.length; i++) {
a[sz + i - 1] = 0;
}
sz = arguments.length - 1;
for (i = a.length - 1; i > 0; i--) {
a[i] = a[i - sz];
}
for (i = 1, j = 0; i < arguments.length; i++, j++) {
a[j] = arguments[i];
}
return a.length;
}
function array_fill_keys(arr, value) {
var i, res = {};
for (i = 0; i < arr.length; i++) {
res[arr[i]] = value;
}
return res;
}
function array_flip(arr) {
var i, res = {};
if (arr instanceof Array) {
for (i = 0; i < arr.length; i++) {
res[arr[i]] = i;
}
}else if (arr instanceof Object) {
for (i in arr) {
res[arr[i]] = i;
}
}
return res;
}
function hexdec(n) {
var r = parseInt(n, 16);
if (isNaN(r)) {
throw new Error('n = ' + n);
}
return r;
}
function htmlspecialchars($s) {
//return encodeURIComponent($s);
return $s;
}
function implode(glue, arr) {
var i, a = [];
if (arr instanceof Array) {
return arr.join(glue);
}
if (arr instanceof Object) {
for (i in arr) {
a.push(arr[i]);
}
}
return a.join(glue);
}
function in_array(needle, subject, strict) {
var i, j, r;
if (typeof(subject) == 'array') {
for (i = 0; i < subject.length; i++) {
j = subject[i];
r = (j == needle);
if (strict) {
r = (j === needle);
}
if (r) {
return true;
}
}
} else if (typeof(subject) == 'object') {
for (i in subject) {
j = subject[i];
r = (j == needle);
if (strict) {
r = (j === needle);
}
if (r) {
return true;
}
}
}
return false;
}
function intval(i) {
var r = parseInt(i, 10);
return isNaN(r) ? 0 : r;
}
function is_array(s) {
if (s instanceof Array) {
return true;
}
if (typeof(s) == 'array') {
return true;
}
if (typeof(s) == 'object') {
return true;
}
return false;
}
function is_numeric(s) {
return !isNaN( parseFloat(s) ) || !isNaN( parseInt(s, 10) ) || !isNaN( parseInt(s, 16) ) || !isNaN( parseInt(s, 8) );
}
function is_string(s) {
if (s instanceof String) {
return true;
}
if (typeof(s) == 'string') {
return true;
}
return false;
}
/**
* @description
* @param {String} sDatetime 'Y-m-d H:i:s' (php date() format)
* @return Количество секунд с 01.01.1970 до sDatetime
*/
function time(sDatetime) {
var re = /^[0-9]{4}\-[0-9]{2}\-[0-9]{2}\s[0-9]{2}:[0-9]{2}:[0-9]{2}$/, arr = String(sDatetime).split(' '),
sDate = arr[0],
sTime = arr[1], d = new Date(),
re2 = /^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/;
if (!re.test(sDatetime) && !re2.test(sDatetime)) {
return parseInt(new Date().getTime()/1000);
}
arr = sDate.split('-');
d.setDate(parseInt(arr[2], 10));
d.setFullYear(arr[0]);
d.setMonth(parseInt(arr[1], 10) - 1);
if (sTime) {
arr = sTime.split(':');
d.setHours(parseInt(arr[0], 10));
d.setMinutes(parseInt(arr[1], 10));
d.setSeconds(parseInt(arr[2], 10), 0);
} else {
d.setHours(0);
d.setMinutes(0);
d.setSeconds(0, 0);
}
return parseInt(d.getTime()/1000);
}
function trim(s) {
return $.trim(s);
}
function strval(s) {
return String(s);
}
function strlen(s) {
return s.length;
}
function substr(s, start, length) {
if (length) {
return s.substring(start, start + length);
} else {
return s.substring(start);
}
}
function sqrt(a) {
return Math.sqrt(a);
}
function empty(v) {
if (!v) {
return true;
}
if (v instanceof Array) {
if (v.length == 0) {
return true;
}
}
return false;
}
function exit() {
throw new Error("Exit");
}
function array() {
return [];
}
function round(float, per) {
if (!per) {
return Math.round(float);
}
var n = 1, i;
for (var i = 0; i < per; i++) {
n *= 10;
}
return Math.round(float * n) / n;
}
function sizeof(n){
if (n && n.length) {
return n.length;
}
if (n && (n instanceof Object) ) {
var sz = 0, i;
for (i in n) {
sz++;
}
return sz;
}
return null;
}
function sprintf() {
var format = arguments[0], argIdx = 1, i, j, ch, buf = '', q, sym;
//console.log(arguments);
var locs = '';
for (var loc = 0; loc < arguments.length; loc++) {
if (String(arguments[loc]) == 'NaN') {
throw new Error('sprintf got NaN!');
}
locs += arguments[loc] + ',';
}
//console.log(locs);
if (typeof(format) == 'array') {
throw new Error('Sprintf got array');
}
while (true) {
i = format.indexOf('%');
if (~i) {
buf = '';
for (j = i; j < format.length; j++) {
ch = format.charAt(j);
if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == ')' || ch == '('|| ch == ']' || ch == '[' || ch == '\'' || ch == '"' || ch == ':') {
break;
}
buf += ch;
}
var re = /%\.[0-9]+F/, num,
re2 = /%[0-9]+d/;
if (buf != '%.d' && re.test(buf)) {
ch = buf.replace('%.', '');
num = parseInt(ch, 10);
ch = arguments[argIdx];
argIdx++;
if (!isNaN(parseFloat(ch))) {
ch = String(round(ch, num));
if (ch.indexOf('.') == -1) {
ch += '.';
}
q = ch.substring(ch.indexOf('.'));
while(q.length < num + 1) {
q += '0';
ch += '0';
}
format = format.replace(buf, ch);
}
} else if (buf != '%.d' && re2.test(buf)) {
ch = buf.replace('%', '');
sym = (String(ch).charAt(0) == '0') ? '0' : ' ';
num = parseInt(ch, 10);
ch = arguments[argIdx];
argIdx++;
q = '';
if (!isNaN(num)) {
for (j = 3; j < num; j++) {
q += sym;
}
}
q += String(ch);
format = format.replace(buf, q);
} else if (buf == '%.d') {
ch = arguments[argIdx];
argIdx++;
format = format.replace(buf, parseInt(ch, 10));
} else if (buf == '%d') {
ch = arguments[argIdx];
argIdx++;
format = format.replace(buf, ch);
} else if (buf == '%s') {
ch = arguments[argIdx];
argIdx++;
format = format.replace(buf, ch);
}
else {
format = format.replace(buf, 'nAn');
throw new Error("sprintf: unable process |" + format + '|');
}
} else {
break;
}
}
//console.log('return |' + format + '|');
return format;
}
function pathinfo(path) {
var a = path.split('/'),
filename = a[a.length - 1], ext, r = {};
a.pop();
r.dirname = a.join('/');
r.basename = filename;
a = filename.split('.');
ext = a[a.length - 1];
a.pop();
filename = a.join('.');
r.filename = filename;
r.extension = ext;
if (!r.filename) {
r.filename = r.basename;
r.extension = '';
}
return r;
}
function array_reverse(a) {
return a.reverse();
}
function array_values(v) {
var r = [];
if (v instanceof Array) {
for (var i = 0; i < v.length; i++) {
if (v[i]) {
r.push( v[i] );
}
}
} else if (v instanceof Object) {
for (var i in v) {
if (v[i]) {
r.push( v[i] );
}
}
}
return r;
}
function array_keys(arr){
var r = [], v = arr;
if (v instanceof Array) {
for (var i = 0; i < v.length; i++) {
if (v[i]) {
r.push(i);
}
}
} else if (v instanceof Object) {
for (var i in v) {
r.push(i);
}
}
return r;
}
function strtolower(s) {
if (String(s) == 'undefined')
throw new Error('strtolower: s is undefined');
return String(s).toLowerCase();
}
function strpos(s, needle, offset) {
offset = parseInt(offset) ? parseInt(offset) : 0;
var n = s.indexOf(needle, offset);
if (n == -1) {
return false;
}
return n;
}
/**
* @description this private helper for define strrpos();
*/
function _strrpos(s, needle, offset) {
offset = parseInt(offset) ? parseInt(offset) : s.length;
if (offset < 0) {
s = s.substring(0, s.length + offset + 1);
return strrpos(s, needle);
} else {
offset = s.length;
}
var n = s.lastIndexOf(needle, offset);
if (n == -1) {
return false;
}
return n;
}
/**
* @testing
* Test values from
* PHP 5.5.9 (cli) (built: Feb 12 2014 22:09:05)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Xdebug v2.2.3, Copyright (c) 2002-2013, by Derick Rethans
*
* Test code:
var $s = 'abrrrerf';
var values = {'-9': false, '-8':false, '-7': false, '-6':2, '-5':3,'-4':4, '-3':4,
'-2':6,'-1':6, '0':6, '1':6,
2:6, 3:6, 4:6, 5:6, 6:6, 7:false, 8:false, 9:false
};
$('#console').html('');
for (var i = -9; i < 10; i++) {
var m = strrpos($s, 'r', i);
if (m === values[i]) {
writeln('on i == ' + i + ' m = ' + m + ', expected = ' + values[i] + ', success');
} else {
writeln('on i == ' + i + ' m = ' + m + ', expected = ' + values[i] + ', FAIL');
}
}
$s = '/media/andrey/C/dev/v3-r9/default/php/PdfCreator/fpdf17/0.png';
m = strrpos($s, '.');
if (m === 57) {
writeln('on i == ' + i + ' m = ' + m + ', expected = ' + 57 + ', success');
} else {
writeln('on i == ' + i + ' m = ' + m + ', expected = ' + 57 + ', FAIL');
}
*/
function strrpos(s, needle, offset) {
var sourceOffset = offset;
offset = parseInt(offset) ? parseInt(offset) : s.length;
if (offset < 0) {
s = s.substring(0, s.length + offset + 1);
//writeln('call _strrpos');
return _strrpos(s, needle);
} else {
if (offset >= s.length - 1 && sourceOffset !== 0 && String(sourceOffset) !== 'undefined') {
//writeln('return false here!');
return false;
}
offset = s.length;
}
var n = s.lastIndexOf(needle, offset);
if (n == -1) {
return false;
}
return n;
}
function strtoupper(s) {
return s.toUpperCase();
}
function max(arr) {
if (arr instanceof Array) {
return Math.max.apply(Math, arr);
}
return Math.max.apply(Math, arguments);
}
function method_exists(obj, foo) {
if (obj[foo] instanceof Function) {
return true;
}
return false;
}
function md5(s){
//TODO
return s;
}
function min(arr) {
if (arr instanceof Array) {
return Math.min.apply(Math, arr);
}
return Math.min.apply(Math, arguments);
}
function mb_strtolower(s) {
return s.toLowerCase();
}
function mb_strlen(s) {
return s.length;
}
function mb_substr(s, index, length) {
return s.substring(index, (index + length));
}
function mb_strpos(s, substr) {
var i = s.indexOf(substr);
if (i == -1) {
return false;
}
return i;
}
function rand(min, max) {
var n = 0, k;
while (n == 0) n = Math.round(Math.random()*(max-min))+min;
k = Math.random();
if (k > 0.5) {
if (k > 0.75 && n == max - 1) {
n++;
} else if( n == min + 1){
n--;
}
}
return n;
}
function session_start() {}
function strtotime(sDate) {
return time(sDate);
}
/**
* @description pseodorequest may be helpful for validate data before send
*/
function die(data) {
if (window && window.pseudorequest && window.pseudorequest.onSuccess && (window.pseudorequest.onSuccess instanceof Function)) {
try {
data = JSON.parse(data);
}catch(e){;}
if (window.pseudorequest.log) {
console.log(data);
}
window.pseudorequest.onSuccess(data);
return;
}
throw new Error(data);
}
function dirname() {
if (Qt && Qt.appDir) {
return Qt.appDir();
}
return '/';
}
function file_exists(filename) {
if (window.PHP && PHP.file_exists) {
return PHP.file_exists(filename);
}
return false;
}
function file_get_contents($file) {
if (PHP && PHP.file_get_contents) {
return PHP.file_get_contents($file);
}
return '';
}
function floatval(v){
return parseFloat(v);
}
function json_encode(d) {
return JSON.stringify(d);
}
function join(glue, data) {
if (data instanceof Array) {
return data.join(glue);
} else if(data instanceof Object){
var i, k = [];
for (i in data) {
k.push(data[i]);
}
return k.join(glue);
}
}
function str_replace(search, replace, subject, oCount) {
if (oCount && (oCount instanceof Object)) {
if (!oCount.v) {
oCount.v = 0;
}
}
while (subject.indexOf(search) != -1) {
subject = subject.replace(search, replace);
if (oCount && (oCount instanceof Object)) {
oCount.v++;
}
}
return subject;
}
function strip_tags(s) {
var i, ch, inTag = 0, q = '';
for (i = 0; i < s.length; i++) {
ch = s.charAt(i);
if (ch == '<') {
inTag = 1;
}
if (ch == '>') {
inTag = 0;
continue;
}
if (!inTag) {
q += ch;
}
}
return q;
}
function _dateParseN(dt) {
var n = dt.getDay();
n = (n == 0 ? 7 : n);
return n;
}
function date(pattern, ts){
ts = ts ? ts : time();
ts *= 1000;
var dt = new Date(ts), map = {
Y : dt.getFullYear(),
y : dt.getYear(),
m : dt.getMonth() + 1,
d : dt.getDate(),
H : dt.getHours(),
N : _dateParseN(dt),
i : dt.getMinutes(),
s : dt.getSeconds()
};
var key;
for (key in map) {
if (key != 'N') {
map[key] = +map[key] < 10 ? ('0' + map[key]) : map[key];
}
pattern = str_replace(key, map[key], pattern);
}
return pattern;
}
function uniqid(s) {
//TODO
return s;
}
function var_dump(o) {
console.log(o);
}
function parse_url(s) {
s = $.trim(s);
var a, r = {}, i, q;
a = s.split('?');
if (a.length > 1) {
q = a[a.length - 1];
}
s = s.replace('?' + q, '');
a = s.split('/');
if (a[0] == 'http:' || a[0] == 'https:') {
r.scheme = a[0].replace(':', '');
}
if (a[2]) {
r.host = a[2];
}
if (r.scheme) {
array_shift(a);
array_shift(a);
array_shift(a);
}
if (a.length) {
r.path = a.join('/');
}
if (q) {
r.query = q;
}
return r;
}
function Request(){}
Request.prototype.input = function(v, def) {
return Library._GET(v, def);
}