admincp_setting.php 228 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671
  1. <?php
  2. /**
  3. * [Discuz!] (C)2001-2099 Comsenz Inc.
  4. * This is NOT a freeware, use is subject to license terms
  5. *
  6. * $Id: admincp_setting.php 36362 2017-02-04 02:02:03Z nemohou $
  7. */
  8. if(!defined('IN_DISCUZ') || !defined('IN_ADMINCP')) {
  9. exit('Access Denied');
  10. }
  11. cpheader();
  12. $setting = C::t('common_setting')->fetch_all(null);
  13. if(!$isfounder) {
  14. unset($setting['ftp']);
  15. }
  16. $extbutton = '';
  17. $operation = $operation ? $operation : 'basic';
  18. if($operation == 'styles') {
  19. $floatwinkeys = array('login', 'sendpm', 'newthread', 'reply', 'viewratings', 'viewwarning', 'viewthreadmod', 'viewvote', 'tradeorder', 'activity', 'debate', 'nav', 'usergroups', 'task');
  20. $floatwinarray = array();
  21. foreach($floatwinkeys as $k) {
  22. $floatwinarray[] = array($k, $lang['setting_styles_global_allowfloatwin_'.$k]);
  23. }
  24. }
  25. if(!submitcheck('settingsubmit')) {
  26. if($operation == 'ec') {
  27. shownav('extended', 'nav_ec', 'nav_ec_config');
  28. } elseif(in_array($operation, array('memory', 'cachethread', 'serveropti'))) {
  29. shownav('global', 'setting_optimize');
  30. } elseif($operation == 'seo') {
  31. shownav('global', 'nav_seo');
  32. } elseif($operation == 'styles') {
  33. shownav('style', 'setting_styles');
  34. } elseif($operation == 'editor') {
  35. shownav('style', 'setting_editor');
  36. } elseif($operation == 'profile') {
  37. shownav('user', 'nav_members_profile_group');
  38. } elseif($operation == 'threadprofile') {
  39. shownav('style', 'setting_threadprofile');
  40. } elseif($operation == 'sec') {
  41. shownav('safe', 'setting_sec');
  42. } elseif($operation == 'seccheck') {
  43. shownav('safe', 'setting_seccheck');
  44. } elseif($operation == 'accountguard') {
  45. shownav('safe', 'setting_accountguard');
  46. } elseif(in_array($operation, array('mail', 'uc'))) {
  47. shownav('founder', 'setting_'.$operation);
  48. } else {
  49. shownav('global', 'setting_'.$operation);
  50. }
  51. if(in_array($operation, array('memory', 'cachethread', 'serveropti', 'memorydata'))) {
  52. $current = array($operation => 1);
  53. $memorydata = memory('check') ? array('setting_memorydata', 'setting&operation=memorydata', $current['memorydata']) : '';
  54. showsubmenu('setting_optimize', array(
  55. array('setting_cachethread', 'setting&operation=cachethread', $current['cachethread']),
  56. array('setting_serveropti', 'setting&operation=serveropti', $current['serveropti']),
  57. array('setting_memory', 'setting&operation=memory', $current['memory']),
  58. $memorydata
  59. ));
  60. } elseif($operation == 'seo') {
  61. $_GET['anchor'] = in_array($_GET['anchor'], array('rewrite', 'portal', 'forum', 'home', 'group')) ? $_GET['anchor'] : 'rewrite';
  62. showsubmenuanchors('nav_seo', array(
  63. array('nav_seo_rewrite', 'rewrite', $_GET['anchor'] == 'rewrite'),
  64. array('nav_seo_portal', 'portal', $_GET['anchor'] == 'portal'),
  65. array('nav_seo_forum', 'forum', $_GET['anchor'] == 'forum'),
  66. array('nav_seo_home', 'home', $_GET['anchor'] == 'home'),
  67. array('nav_seo_group', 'group', $_GET['anchor'] == 'group'),
  68. array('other', 'other', $_GET['anchor'] == 'other'),
  69. ));
  70. } elseif($operation == 'ec') {
  71. showsubmenu('nav_ec', array(
  72. array('nav_ec_config', 'setting&operation=ec', 1),
  73. array('nav_ec_tenpay', 'ec&operation=tenpay', 0),
  74. array('nav_ec_alipay', 'ec&operation=alipay', 0),
  75. array('nav_ec_credit', 'ec&operation=credit', 0),
  76. array('nav_ec_orders', 'ec&operation=orders', 0),
  77. array('nav_ec_tradelog', 'tradelog&mod=forum', 0),
  78. array('nav_ec_inviteorders', 'ec&operation=inviteorders', 0)
  79. ));
  80. } elseif($operation == 'access') {
  81. $_GET['anchor'] = in_array($_GET['anchor'], array('register', 'access')) ? $_GET['anchor'] : 'register';
  82. showsubmenuanchors('setting_access', array(
  83. array('setting_access_register', 'register', $_GET['anchor'] == 'register'),
  84. array('setting_access_access', 'access', $_GET['anchor'] == 'access')
  85. ));
  86. } elseif($operation == 'follow') {
  87. $_GET['anchor'] = 'base';
  88. showsubmenuanchors('setting_follow', array(
  89. array('setting_follow_base', 'base', true)
  90. ));
  91. } elseif($operation == 'home') {
  92. $_GET['anchor'] = in_array($_GET['anchor'], array('base', 'privacy')) ? $_GET['anchor'] : 'base';
  93. showsubmenuanchors('setting_home', array(
  94. array('setting_home_base', 'base', $_GET['anchor'] == 'base'),
  95. array('setting_home_privacy', 'privacy', $_GET['anchor'] == 'privacy')
  96. ));
  97. } elseif($operation == 'profile') {
  98. $_GET['anchor'] = in_array($_GET['anchor'], array('base', 'edit')) ? $_GET['anchor'] : 'base';
  99. } elseif($operation == 'mail') {
  100. $_GET['anchor'] = in_array($_GET['anchor'], array('setting', 'check')) ? $_GET['anchor'] : 'setting';
  101. showsubmenuanchors('setting_mail', array(
  102. array('setting_mail_setting', 'mailsetting', $_GET['anchor'] == 'setting'),
  103. array('setting_mail_check', 'mailcheck', $_GET['anchor'] == 'check')
  104. ));
  105. } elseif($operation == 'sec') {
  106. $_GET['anchor'] = in_array($_GET['anchor'], array('base', 'reginput', 'postperiodtime')) ? $_GET['anchor'] : 'base';
  107. showsubmenuanchors('setting_sec', array(
  108. array('setting_sec_base', 'base', $_GET['anchor'] == 'base'),
  109. array('setting_sec_reginput', 'reginput', $_GET['anchor'] == 'reginput'),
  110. array('setting_sec_postperiodtime', 'postperiodtime', $_GET['anchor'] == 'postperiodtime'),
  111. ));
  112. } elseif($operation == 'seccheck') {
  113. $_GET['anchor'] = in_array($_GET['anchor'], array('seccode', 'secqaa')) ? $_GET['anchor'] : 'seccode';
  114. showsubmenuanchors('setting_seccheck', array(
  115. array('setting_sec_seccode', 'seccode', $_GET['anchor'] == 'seccode'),
  116. array('setting_sec_secqaa', 'secqaa', $_GET['anchor'] == 'secqaa'),
  117. ));
  118. } elseif($operation == 'attach') {
  119. $_GET['anchor'] = in_array($_GET['anchor'], array('basic', 'forumattach', 'remote', 'albumattach', 'portalarticle')) ? $_GET['anchor'] : 'basic';
  120. showsubmenuanchors('setting_attach', array(
  121. array('setting_attach_basic', 'basic', $_GET['anchor'] == 'basic'),
  122. $isfounder ? array('setting_attach_remote', 'remote', $_GET['anchor'] == 'remote') : '',
  123. array('setting_attach_forumattach', 'forumattach', $_GET['anchor'] == 'forumattach'),
  124. array('setting_attach_album', 'albumattach', $_GET['anchor'] == 'albumattach'),
  125. array('setting_attach_portal_article_attach', 'portalarticle', $_GET['anchor'] == 'portalarticle'),
  126. ));
  127. } elseif($operation == 'styles') {
  128. $_GET['anchor'] = in_array($_GET['anchor'], array('global', 'index', 'forumdisplay', 'viewthread', 'threadprofile', 'numbercard', 'refresh', 'sitemessage')) ? $_GET['anchor'] : 'global';
  129. $current = array($_GET['anchor'] => 1);
  130. showsubmenu('setting_styles', array(
  131. array('setting_styles_global', 'setting&operation=styles&anchor=global', $current['global']),
  132. array('setting_styles_index', 'setting&operation=styles&anchor=index', $current['index']),
  133. array('setting_styles_forumdisplay', 'setting&operation=styles&anchor=forumdisplay', $current['forumdisplay']),
  134. array('setting_styles_viewthread', 'setting&operation=styles&anchor=viewthread', $current['viewthread']),
  135. array('setting_styles_threadprofile', 'setting&operation=styles&anchor=threadprofile', $current['threadprofile']),
  136. array('members_profile_numbercard', 'setting&operation=styles&anchor=numbercard', $current['numbercard']),
  137. array('setting_styles_refresh', 'setting&operation=styles&anchor=refresh', $current['refresh']),
  138. array('setting_styles_sitemessage', 'setting&operation=styles&anchor=sitemessage', $current['sitemessage'])
  139. ));
  140. } elseif($operation == 'functions') {
  141. $_GET['anchor'] = in_array($_GET['anchor'], array('curscript', 'mod', 'heatthread', 'recommend', 'comment', 'activity', 'other', 'threadexp', 'guide')) ? $_GET['anchor'] : 'curscript';
  142. showsubmenu('setting_functions', array(
  143. array('setting_functions_curscript', 'setting&operation=functions&anchor=curscript', $_GET['anchor'] == 'curscript'),
  144. array('setting_functions_mod', 'setting&operation=functions&anchor=mod', $_GET['anchor'] == 'mod'),
  145. array('setting_functions_heatthread', 'setting&operation=functions&anchor=heatthread', $_GET['anchor'] == 'heatthread'),
  146. array('setting_functions_recommend', 'setting&operation=functions&anchor=recommend', $_GET['anchor'] == 'recommend'),
  147. array('setting_functions_comment', 'setting&operation=functions&anchor=comment', $_GET['anchor'] == 'comment'),
  148. array('setting_functions_guide', 'setting&operation=functions&anchor=guide', $_GET['anchor'] == 'guide'),
  149. array('setting_functions_activity', 'setting&operation=functions&anchor=activity', $_GET['anchor'] == 'activity'),
  150. array('setting_functions_threadexp', 'setting&operation=functions&anchor=threadexp', $_GET['anchor'] == 'threadexp'),
  151. array('setting_functions_other', 'setting&operation=functions&anchor=other', $_GET['anchor'] == 'other'),
  152. ));
  153. } elseif($operation == 'credits') {
  154. $_GET['anchor'] = in_array($_GET['anchor'], array('base', 'policytable')) ? $_GET['anchor'] : 'base';
  155. $current = array($_GET['anchor'] => 1);
  156. showsubmenu('setting_credits', array(
  157. array('setting_credits_base', 'setting&operation=credits&anchor=base', $current['base']),
  158. array('setting_credits_policy', 'credits&operation=list&anchor=policytable', $current['policytable']),
  159. ));
  160. } elseif($operation == 'editor') {
  161. showsubmenu('setting_editor', array(
  162. array('setting_editor_global', 'setting&operation=editor', 1),
  163. array('setting_editor_code', 'misc&operation=bbcode', 0),
  164. ));
  165. } elseif($operation == 'imgwater') {
  166. $_GET['anchor'] = in_array($_GET['anchor'], array('portal', 'forum', 'album')) ? $_GET['anchor'] : 'portal';
  167. showsubmenuanchors('setting_imgwater', array(
  168. array('setting_imgwater_portal', 'portal', $_GET['anchor'] == 'portal'),
  169. array('setting_imgwater_forum', 'forum', $_GET['anchor'] == 'forum'),
  170. array('setting_imgwater_album', 'album', $_GET['anchor'] == 'album'),
  171. ));
  172. } elseif($operation == 'mobile') {
  173. $_GET['anchor'] = in_array($_GET['anchor'], array('status')) ? $_GET['anchor'] : 'status';
  174. showsubmenuanchors('setting_mobile', array(
  175. array('setting_mobile_status', 'status', $_GET['anchor'] == 'status')
  176. ));
  177. } elseif($operation == 'antitheft') {
  178. $_GET['anchor'] = in_array($_GET['anchor'], array('iplist'), true) ? $_GET['anchor'] : '';
  179. showsubmenu('setting_antitheft', array(
  180. array('setting_antitheft', 'setting&operation=antitheft', $_GET['anchor'] == ''),
  181. array('setting_antitheft_iplist', 'setting&operation=antitheft&anchor=iplist', $_GET['anchor'] == 'iplist'),
  182. ));
  183. } else {
  184. showsubmenu('setting_'.$operation);
  185. }
  186. showformheader('setting&edit=yes', 'enctype');
  187. showhiddenfields(array('operation' => $operation));
  188. if($operation == 'basic') {
  189. showtableheader('');
  190. showsetting('setting_basic_bbname', 'settingnew[bbname]', $setting['bbname'], 'text');
  191. showsetting('setting_basic_sitename', 'settingnew[sitename]', $setting['sitename'], 'text');
  192. showsetting('setting_basic_siteurl', 'settingnew[siteurl]', $setting['siteurl'], 'text');
  193. showsetting('setting_basic_adminemail', 'settingnew[adminemail]', $setting['adminemail'], 'text');
  194. showsetting('setting_basic_site_qq', 'settingnew[site_qq]', $setting['site_qq'], 'text',$disabled = '', $hidden = 0, $comment = '', $extra = 'id="settingnew[site_qq]"');
  195. showsetting('setting_basic_icp', 'settingnew[icp]', $setting['icp'], 'text');
  196. showsetting('setting_basic_boardlicensed', 'settingnew[boardlicensed]', $setting['boardlicensed'], 'radio');
  197. showsetting('setting_basic_stat', 'settingnew[statcode]', $setting['statcode'], 'textarea');
  198. showtablefooter();
  199. showtableheader('setting_basic_bbclosed');
  200. showsetting('setting_basic_bbclosed', 'settingnew[bbclosed]', $setting['bbclosed'], 'radio', 0, 1);
  201. showsetting('setting_basic_closedreason', 'settingnew[closedreason]', $setting['closedreason'], 'textarea');
  202. showsetting('setting_basic_bbclosed_activation', 'settingnew[closedallowactivation]', $setting['closedallowactivation'], 'radio');
  203. showtagfooter('tbody');
  204. } elseif($operation == 'follow') {
  205. require_once libfile('function/forumlist');
  206. showtableheader('', 'nobottom', 'id="base"'.($_GET['anchor'] != 'base' ? ' style="display: none"' : ''));
  207. showsetting('setting_follow_base_default_follow_retain_day', 'settingnew[followretainday]', $setting['followretainday'], 'text');
  208. showsetting('setting_follow_base_default_view_profile', 'settingnew[allowquickviewprofile]', $setting['allowquickviewprofile'], 'radio');
  209. showtablefooter();
  210. } elseif($operation == 'home') {
  211. require_once libfile('function/forumlist');
  212. showtableheader('', 'nobottom', 'id="base"'.($_GET['anchor'] != 'base' ? ' style="display: none"' : ''));
  213. showsetting('setting_home_base_feedday', 'settingnew[feedday]', $setting['feedday'], 'text');
  214. showsetting('setting_home_base_feedmaxnum', 'settingnew[feedmaxnum]', $setting['feedmaxnum'], 'text');
  215. showsetting('setting_home_base_feedhotday', 'settingnew[feedhotday]', $setting['feedhotday'], 'text');
  216. showsetting('setting_home_base_feedhotmin', 'settingnew[feedhotmin]', $setting['feedhotmin'], 'text');
  217. showsetting('setting_home_base_feedtargetblank', 'settingnew[feedtargetblank]', $setting['feedtargetblank'], 'radio');
  218. showsetting('setting_home_base_showallfriendnum', 'settingnew[showallfriendnum]', $setting['showallfriendnum'], 'text');
  219. showsetting('setting_home_base_feedhotnum', 'settingnew[feedhotnum]', $setting['feedhotnum'], 'text');
  220. showsetting('setting_home_base_maxpage', 'settingnew[maxpage]', $setting['maxpage'], 'text');
  221. showsetting('setting_home_base_sendmailday', 'settingnew[sendmailday]', $setting['sendmailday'], 'text');
  222. showsetting('setting_home_base_recycle_bin', 'settingnew[blogrecyclebin]', $setting['blogrecyclebin'], 'radio');
  223. showtagfooter('tbody');
  224. loadcache('forums');
  225. showsetting('setting_home_base_groupnum', 'settingnew[friendgroupnum]', $setting['friendgroupnum'], 'text');
  226. $threadtype = array('1' => 'poll', '2' => 'trade', '3' => 'reward', '4' => 'activity', '5' => 'debate');
  227. $oldforums = $_G['cache']['forums'];
  228. foreach($threadtype as $special => $key) {
  229. if($special == 0) {
  230. $fields = C::t('forum_forumfield')->fetch_all_by_fid(array_keys($_G['cache']['forums']));
  231. foreach($fields as $fid => $field) {
  232. if(!empty($field['threadsorts'])) {
  233. unset($_G['cache']['forums'][$fid]);
  234. }
  235. }
  236. } else {
  237. $_G['cache']['forums'] = $oldforums;
  238. }
  239. $forumselect = "<select name=\"%s\">\n<option value=\"\">&nbsp;&nbsp;> ".cplang('select')."</option>".str_replace('%', '%%', forumselect(FALSE, 0, $setting[$key.'forumid'], TRUE, FALSE, $special)).'</select>';
  240. showsetting('setting_home_base_default_'.$key.'_forum', "settingnew[{$key}forumid]", $setting[$key.'forumid'], sprintf($forumselect, "settingnew[{$key}forumid]"));
  241. }
  242. showsetting('setting_home_base_default_doing', 'settingnew[defaultdoing]', $setting['defaultdoing'], 'textarea');
  243. showtablefooter();
  244. if(isset($setting['privacy'])) {
  245. $setting['privacy'] = dunserialize($setting['privacy']);
  246. }
  247. showtableheader('', 'nobottom', 'id="privacy"'.($_GET['anchor'] != 'privacy' ? ' style="display: none"' : ''));
  248. showtitle('setting_home_privacy_new_user');
  249. showsetting('setting_home_privacy_view_index', array('settingnew[privacy][view][index]', array(
  250. array(0, $lang['setting_home_privacy_alluser']),
  251. array(1, $lang['setting_home_privacy_friend']),
  252. array(2, $lang['setting_home_privacy_self']),
  253. array(3, $lang['setting_home_privacy_register'])
  254. )), $setting['privacy']['view']['index'], 'select');
  255. showsetting('setting_home_privacy_view_friend', array('settingnew[privacy][view][friend]', array(
  256. array(0, $lang['setting_home_privacy_alluser']),
  257. array(1, $lang['setting_home_privacy_friend']),
  258. array(2, $lang['setting_home_privacy_self']),
  259. array(3, $lang['setting_home_privacy_register'])
  260. )), $setting['privacy']['view']['friend'], 'select');
  261. showsetting('setting_home_privacy_view_wall', array('settingnew[privacy][view][wall]', array(
  262. array(0, $lang['setting_home_privacy_alluser']),
  263. array(1, $lang['setting_home_privacy_friend']),
  264. array(2, $lang['setting_home_privacy_self']),
  265. array(3, $lang['setting_home_privacy_register'])
  266. )), $setting['privacy']['view']['wall'], 'select');
  267. showsetting('setting_home_privacy_view_feed', array('settingnew[privacy][view][home]', array(
  268. array(0, $lang['setting_home_privacy_alluser']),
  269. array(1, $lang['setting_home_privacy_friend']),
  270. array(3, $lang['setting_home_privacy_register'])
  271. )), $setting['privacy']['view']['home'], 'select');
  272. showsetting('setting_home_privacy_view_doing', array('settingnew[privacy][view][doing]', array(
  273. array(0, $lang['setting_home_privacy_alluser']),
  274. array(1, $lang['setting_home_privacy_friend']),
  275. array(3, $lang['setting_home_privacy_register'])
  276. )), $setting['privacy']['view']['doing'], 'select');
  277. showsetting('setting_home_privacy_view_blog', array('settingnew[privacy][view][blog]', array(
  278. array(0, $lang['setting_home_privacy_alluser']),
  279. array(1, $lang['setting_home_privacy_friend']),
  280. array(3, $lang['setting_home_privacy_register'])
  281. )), $setting['privacy']['view']['blog'], 'select');
  282. showsetting('setting_home_privacy_view_album', array('settingnew[privacy][view][album]', array(
  283. array(0, $lang['setting_home_privacy_alluser']),
  284. array(1, $lang['setting_home_privacy_friend']),
  285. array(3, $lang['setting_home_privacy_register'])
  286. )), $setting['privacy']['view']['album'], 'select');
  287. showsetting('setting_home_privacy_view_share', array('settingnew[privacy][view][share]', array(
  288. array(0, $lang['setting_home_privacy_alluser']),
  289. array(1, $lang['setting_home_privacy_friend']),
  290. array(3, $lang['setting_home_privacy_register'])
  291. )), $setting['privacy']['view']['share'], 'select');
  292. showsetting('setting_home_privacy_default_feed', array('settingnew[privacy][feed]', array(
  293. array('doing', $lang['setting_home_privacy_default_feed_doing'], '1'),
  294. array('blog', $lang['setting_home_privacy_default_feed_blog'], '1'),
  295. array('upload', $lang['setting_home_privacy_default_feed_upload'], '1'),
  296. array('share', $lang['setting_home_privacy_default_feed_share'], '1'),
  297. array('poll', $lang['setting_home_privacy_default_feed_poll'], '1'),
  298. array('joinpoll', $lang['setting_home_privacy_default_feed_joinpoll'], '1'),
  299. array('friend', $lang['setting_home_privacy_default_feed_friend'], '1'),
  300. array('comment', $lang['setting_home_privacy_default_feed_comments'], '1'),
  301. array('show', $lang['setting_home_privacy_default_feed_show'], '1'),
  302. array('credit', $lang['setting_home_privacy_default_feed_credit'], '1'),
  303. array('spaceopen', $lang['setting_home_privacy_default_feed_spaceopen'], '1'),
  304. array('invite', $lang['setting_home_privacy_default_feed_invite'], '1'),
  305. array('task', $lang['setting_home_privacy_default_feed_task'], '1'),
  306. array('profile', $lang['setting_home_privacy_default_feed_profile'], '1'),
  307. array('click', $lang['setting_home_privacy_default_feed_click'], '1'),
  308. array('newthread', $lang['setting_home_privacy_default_feed_newthread'], '1'),
  309. array('newreply', $lang['setting_home_privacy_default_feed_newreply'], '1'),
  310. )), $setting['privacy']['feed'], 'omcheckbox');
  311. showtablefooter();
  312. showtableheader();
  313. } elseif($operation == 'profile') {
  314. $profilegroup = dunserialize($setting['profilegroup']);
  315. if($_GET['anchor'] == 'edit' && in_array($_GET['type'], array('base', 'contact', 'edu', 'work', 'info'))) {
  316. shownav('user', 'nav_members_profile_group');
  317. $groupinfo = $profilegroup[$_GET['type']];
  318. showsubmenu($lang['setting_profile_group_name'].'-'.$groupinfo['title'], array(
  319. array('members_profile_group', 'setting&operation=profile&anchor=base', 0),
  320. array($lang['edit'], 'setting&operation=profile&anchor=edit&type='.$_GET['type'], 1),
  321. ));
  322. showtableheader();
  323. showsetting('setting_profile_group_name', "settingnew[profile][title]", $groupinfo['title'], 'text');
  324. showsetting('setting_profile_group_available', "settingnew[profile][available]", $groupinfo['available'], 'radio');
  325. showsetting('setting_profile_group_displayorder', "settingnew[profile][displayorder]", $groupinfo['displayorder'], 'text');
  326. $varname = array('settingnew[profile][field]', array(), 'isfloat');
  327. foreach(C::t('common_member_profile_setting')->fetch_all_by_available(1) as $value) {
  328. if(!in_array($value['fieldid'], array('constellation', 'zodiac', 'birthyear', 'birthmonth', 'resideprovince', 'birthprovince', 'residedist', 'residecommunity'))) {
  329. $varname[1][] = array($value['fieldid'], $value['title'], $value['fieldid']);
  330. }
  331. }
  332. $varname[1][] = array('sightml', $lang['setting_profile_personal_signature'], 'sightml');
  333. $varname[1][] = array('customstatus', $lang['setting_profile_permission_basic_status'], 'customstatus');
  334. $varname[1][] = array('timeoffset', $lang['setting_profile_time_zone'], 'timeoffset');
  335. showsetting('setting_profile_field', $varname, $groupinfo['field'], 'omcheckbox');
  336. echo "<input type=\"hidden\" name=\"settingnew[profile][type]\" value=\"$_GET[type]\" />";
  337. showtablefooter();
  338. } else {
  339. $current = array($_GET['action'] => 1);
  340. $profilenav = array(
  341. array('members_profile_list', 'members&operation=profile', $current['members']),
  342. array('members_profile_group', 'setting&operation=profile', $current['setting']),
  343. );
  344. showsubmenu($lang['members_profile'], $profilenav);
  345. showtips('setting_profile_tips');
  346. showtableheader('setting_profile_group_setting', 'fixpadding');
  347. showsubtitle(array('setting_profile_group_available', 'setting_profile_group_displayorder', 'setting_profile_group_name', ''), 'header');
  348. foreach($profilegroup as $key => $group) {
  349. showtablerow('', array('class="td25"', '', '', 'class="td25"'), array(
  350. "<input class=\"checkbox\" type=\"checkbox\" name=\"settingnew[profilegroupnew][$key][available]\" value=\"1\" ".($profilegroup[$key]['available'] ? 'checked' : '')." />",
  351. "<input type=\"text\" class=\"txt\" size=\"8\" name=\"settingnew[profilegroupnew][$key][displayorder]\" value=\"{$profilegroup[$key]['displayorder']}\">",
  352. "<input type=\"text\" class=\"txt\" size=\"8\" name=\"settingnew[profilegroupnew][$key][title]\" value=\"{$profilegroup[$key]['title']}\">",
  353. "<a href=\"".ADMINSCRIPT."?action=setting&operation=profile&anchor=edit&type=$key\">".$lang['edit']."</a>"
  354. ));
  355. }
  356. showtablefooter();
  357. }
  358. } elseif($operation == 'access') {
  359. $wmsgcheck = array($setting['welcomemsg'] =>'checked');
  360. $setting['inviteconfig'] = dunserialize($setting['inviteconfig']);
  361. $setting['extcredits'] = dunserialize($setting['extcredits']);
  362. $buycredits = $rewardcredits = '';
  363. for($i = 0; $i <= 8; $i++) {
  364. if($setting['extcredits'][$i]['available']) {
  365. $extcredit = 'extcredits'.$i.' ('.$setting['extcredits'][$i]['title'].')';
  366. $buycredits .= '<option value="'.$i.'" '.($i == intval($setting['inviteconfig']['invitecredit']) ? 'selected' : '').'>'.($i ? $extcredit : $lang['none']).'</option>';
  367. $rewardcredits .= '<option value="'.$i.'" '.($i == intval($setting['inviteconfig']['inviterewardcredit']) ? 'selected' : '').'>'.($i ? $extcredit : $lang['none']).'</option>';
  368. }
  369. }
  370. $groupselect = '';
  371. foreach(C::t('common_usergroup')->fetch_all_by_type('special') as $group) {
  372. $groupselect .= "<option value=\"$group[groupid]\" ".($group['groupid'] == $setting['inviteconfig']['invitegroupid'] ? 'selected' : '').">$group[grouptitle]</option>\n";
  373. }
  374. $taskarray = array(array('', cplang('select')));
  375. foreach(C::t('common_task')->fetch_all_by_available(2) as $task) {
  376. $taskarray[] = array($task['taskid'], $task['name']);
  377. }
  378. showtableheader('', 'nobottom', 'id="register"'.($_GET['anchor'] != 'register' ? ' style="display: none"' : ''));
  379. $regstatus = array();
  380. if($setting['regstatus'] == 1 || $setting['regstatus'] == 3) {
  381. $regstatus[] = 'open';
  382. }
  383. if($setting['regstatus'] == 2 || $setting['regstatus'] == 3) {
  384. $regstatus[] = 'invite';
  385. }
  386. if($setting['regconnect']) {
  387. $regstatus[] = 'connect';
  388. }
  389. showsetting('setting_access_register_status', array('settingnew[regstatus]', array(
  390. array('open', $lang['setting_access_register_open']),
  391. array('invite', $lang['setting_access_register_invite'], 'showinvite'),
  392. $_G['setting']['connect']['allow'] ? array('connect', $lang['setting_access_register_connect']) : array(),
  393. )), $regstatus, 'mcheckbox');
  394. showtagheader('tbody', 'showinvite', in_array('invite', $regstatus), 'sub');
  395. showsetting('setting_access_register_invite_buyprompt', 'settingnew[inviteconfig][invitecodeprompt]', $setting['inviteconfig']['invitecodeprompt'], 'textarea');
  396. showsetting('setting_access_register_invite_buy', 'settingnew[inviteconfig][buyinvitecode]', $setting['inviteconfig']['buyinvitecode'], 'radio');
  397. showsetting('setting_access_register_invite_buyprice', 'settingnew[inviteconfig][invitecodeprice]', $setting['inviteconfig']['invitecodeprice'], 'text');
  398. showsetting('setting_access_register_invite_credit', '', '', '<select name="settingnew[inviteconfig][inviterewardcredit]">'.$rewardcredits.'</select>');
  399. showsetting('setting_access_register_invite_addcredit', 'settingnew[inviteconfig][inviteaddcredit]', $setting['inviteconfig']['inviteaddcredit'], 'text');
  400. showsetting('setting_access_register_invite_invitedcredit', 'settingnew[inviteconfig][invitedaddcredit]', $setting['inviteconfig']['invitedaddcredit'], 'text');
  401. showsetting('setting_access_register_invite_group', '', '', '<select name="settingnew[inviteconfig][invitegroupid]"><option value="0">'.$lang['usergroups_system_0'].'</option>'.$groupselect.'</select>');
  402. showsetting('setting_access_register_invite_areawhite', 'settingnew[inviteconfig][inviteareawhite]', $setting['inviteconfig']['inviteareawhite'], 'textarea');
  403. showsetting('setting_access_register_invite_ipwhite', 'settingnew[inviteconfig][inviteipwhite]', $setting['inviteconfig']['inviteipwhite'], 'textarea');
  404. showtagfooter('tbody');
  405. showsetting('setting_access_register_regclosemessage', 'settingnew[regclosemessage]', $setting['regclosemessage'], 'textarea');
  406. showsetting('setting_access_register_name', 'settingnew[regname]', $setting['regname'], 'text');
  407. showsetting('setting_access_register_send_register_url', 'settingnew[sendregisterurl]', $setting['sendregisterurl'], 'radio');
  408. showsetting('setting_access_register_link_name', 'settingnew[reglinkname]', $setting['reglinkname'], 'text');
  409. showsetting('setting_access_register_censoruser', 'settingnew[censoruser]', $setting['censoruser'], 'textarea');
  410. showsetting('setting_access_register_pwlength', 'settingnew[pwlength]', $setting['pwlength'], 'text');
  411. $setting['strongpw'] = dunserialize($setting['strongpw']);
  412. showsetting('setting_access_register_strongpw', array('settingnew[strongpw]', array(
  413. array('1', $lang['setting_access_register_strongpw_1']),
  414. array('2', $lang['setting_access_register_strongpw_2']),
  415. array('3', $lang['setting_access_register_strongpw_3']),
  416. array('4', $lang['setting_access_register_strongpw_4']),
  417. )), $setting['strongpw'], 'mcheckbox2');
  418. showsetting('setting_access_register_verify', array('settingnew[regverify]', array(
  419. array(0, $lang['none'], array('regverifyext' => 'none')),
  420. array(1, $lang['setting_access_register_verify_email'], array('regverifyext' => '')),
  421. array(2, $lang['setting_access_register_verify_manual'], array('regverifyext' => ''))
  422. )), $setting['regverify'], 'mradio');
  423. showtagheader('tbody', 'regverifyext', $setting['regverify'], 'sub');
  424. showsetting('setting_access_register_verify_areawhite', 'settingnew[areaverifywhite]', $setting['areaverifywhite'], 'textarea');
  425. showsetting('setting_access_register_verify_ipwhite', 'settingnew[ipverifywhite]', $setting['ipverifywhite'], 'textarea');
  426. showtagfooter('tbody');
  427. showsetting('setting_access_register_maildomain', array('settingnew[regmaildomain]', array(
  428. array(0, $lang['none'], array('regmaildomainext' => 'none')),
  429. array(1, $lang['setting_access_register_maildomain_white'], array('regmaildomainext' => '')),
  430. array(2, $lang['setting_access_register_maildomain_black'], array('regmaildomainext' => ''))
  431. )), $setting['regmaildomain'], 'mradio');
  432. showtagheader('tbody', 'regmaildomainext', $setting['regmaildomain'], 'sub');
  433. showsetting('setting_access_register_maildomain_list', 'settingnew[maildomainlist]', $setting['maildomainlist'], 'textarea');
  434. showtagfooter('tbody');
  435. showsetting('setting_access_register_ctrl', 'settingnew[regctrl]', $setting['regctrl'], 'text');
  436. showsetting('setting_access_register_floodctrl', 'settingnew[regfloodctrl]', $setting['regfloodctrl'], 'text');
  437. showsetting('setting_access_register_ipctrl_time', 'settingnew[ipregctrltime]', $setting['ipregctrltime'], 'text');
  438. showsetting('setting_access_register_ipctrl', 'settingnew[ipregctrl]', $setting['ipregctrl'], 'textarea');
  439. $welcomemsg = array();
  440. if($setting['welcomemsg'] == 1) {
  441. $welcomemsg[] = '1';
  442. } elseif($setting['welcomemsg'] == 2) {
  443. $welcomemsg[] = '2';
  444. } elseif($setting['welcomemsg'] == 3) {
  445. $welcomemsg[] = '1';
  446. $welcomemsg[] = '2';
  447. } else {
  448. $welcomemsg[] = '0';
  449. }
  450. showsetting('setting_access_register_welcomemsg', array('settingnew[welcomemsg]', array(
  451. array(1, $lang['setting_access_register_welcomemsg_pm']),
  452. array(2, $lang['setting_access_register_welcomemsg_email'])
  453. )), $welcomemsg, 'mcheckbox');
  454. showsetting('setting_access_register_welcomemsgtitle', 'settingnew[welcomemsgtitle]', $setting['welcomemsgtitle'], 'text');
  455. showsetting('setting_access_register_welcomemsgtxt', 'settingnew[welcomemsgtxt]', $setting['welcomemsgtxt'], 'textarea');
  456. showsetting('setting_access_register_bbrules', 'settingnew[bbrules]', $setting['bbrules'], 'radio', '', 1);
  457. showsetting('setting_access_register_bbruleforce', 'settingnew[bbrulesforce]', $setting['bbrulesforce'], 'radio');
  458. showsetting('setting_access_register_bbrulestxt', 'settingnew[bbrulestxt]', $setting['bbrulestxt'], 'textarea');
  459. showtagfooter('tbody');
  460. showtablefooter();
  461. showtableheader('', 'nobottom', 'id="access"'.($_GET['anchor'] != 'access' ? ' style="display: none"' : ''));
  462. showsetting('setting_access_access_newbiespan', 'settingnew[newbiespan]', $setting['newbiespan'], 'text');
  463. showsetting('setting_access_access_ipaccess', 'settingnew[ipaccess]', $setting['ipaccess'], 'textarea');
  464. showsetting('setting_access_access_adminipaccess', 'settingnew[adminipaccess]', $setting['adminipaccess'], 'textarea');
  465. showsetting('setting_access_access_domainwhitelist', 'settingnew[domainwhitelist]', '', '<textarea class="tarea" cols="50" id="settingnew[domainwhitelist]" name="settingnew[domainwhitelist]" onkeydown="textareakey(this, event)" onkeyup="textareasize(this, 0)" ondblclick="textareasize(this, 1)" rows="6">'.$setting['domainwhitelist'].'</textarea><br><input class="checkbox" type="checkbox" value="1" name="settingnew[domainwhitelist_affectimg]" '.($setting['domainwhitelist_affectimg'] ? 'checked' : '').'>'.cplang('setting_access_access_domainwhitelist_affectimg'));
  466. showtablefooter();
  467. showtableheader('', 'notop');
  468. showsubmit('settingsubmit');
  469. showtablefooter();
  470. showformfooter();
  471. exit;
  472. } elseif($operation == 'styles') {
  473. $_G['setting']['showsettings'] = str_pad(decbin($setting['showsettings']), 3, 0, STR_PAD_LEFT);
  474. $setting['showsignatures'] = $_G['setting']['showsettings']{0};
  475. $setting['showavatars'] = $_G['setting']['showsettings']{1};
  476. $setting['showimages'] = $_G['setting']['showsettings']{2};
  477. $setting['postnocustom'] = implode("\n", (array)dunserialize($setting['postnocustom']));
  478. $setting['sitemessage'] = dunserialize($setting['sitemessage']);
  479. $setting['disallowfloat'] = $setting['disallowfloat'] ? dunserialize($setting['disallowfloat']) : array();
  480. $setting['allowfloatwin'] = array_diff($floatwinkeys, $setting['disallowfloat']);
  481. $setting['indexhot'] = dunserialize($setting['indexhot']);
  482. $setting['customauthorinfo'] = dunserialize($setting['customauthorinfo']);
  483. $setting['customauthorinfo'] = $setting['customauthorinfo'][0];
  484. list($setting['zoomstatus'], $setting['imagemaxwidth']) = explode("\t", $setting['zoomstatus']);
  485. $setting['imagemaxwidth'] = !empty($setting['imagemaxwidth']) ? $setting['imagemaxwidth'] : 600;
  486. $setting['guestviewthumb'] = dunserialize($setting['guestviewthumb']);
  487. $setting['guesttipsinthread'] = dunserialize($setting['guesttipsinthread']);
  488. showtips('setting_tips', 'global_tips', $_GET['anchor'] == 'global');
  489. showtableheader('setting_styles_global', 'nobottom', 'id="global"'.($_GET['anchor'] != 'global' ? ' style="display: none"' : ''));
  490. showsetting('setting_styles_global_home_style', array('settingnew[homestyle]', array(
  491. array(1, $lang['setting_styles_global_home_style_1']),
  492. array(0, $lang['setting_styles_global_home_style_0']),
  493. )), $setting['homestyle'], 'mradio');
  494. showsetting('setting_styles_global_homepage_style', array('settingnew[homepagestyle]', array(
  495. array(1, $lang['setting_styles_global_homepage_style_1']),
  496. array(0, $lang['setting_styles_global_homepage_style_0']),
  497. )), $setting['homepagestyle'], 'mradio');
  498. showsetting('setting_styles_global_navsubhover', array('settingnew[navsubhover]', array(
  499. array(0, $lang['setting_styles_global_navsubhover_0']),
  500. array(1, $lang['setting_styles_global_navsubhover_1']),
  501. )), $setting['navsubhover'], 'mradio');
  502. showsetting('setting_styles_index_allowwidthauto', array('settingnew[allowwidthauto]', array(
  503. array(1, $lang['setting_styles_index_allowwidthauto_1']),
  504. array(0, $lang['setting_styles_index_allowwidthauto_0']),
  505. ), 1), $setting['allowwidthauto'], 'mradio');
  506. showtagheader('tbody', '', 1, 'sub');
  507. showsetting('setting_styles_index_switchwidthauto', 'settingnew[switchwidthauto]', $setting['switchwidthauto'], 'radio');
  508. showtagfooter('tbody');
  509. showsetting('setting_styles_global_allowfloatwin', array('settingnew[allowfloatwin]', $floatwinarray), $setting['allowfloatwin'], 'mcheckbox');
  510. showsetting('setting_styles_global_showfjump', 'settingnew[showfjump]', $setting['showfjump'], 'radio');
  511. showsetting('setting_styles_global_creditnotice', 'settingnew[creditnotice]', $setting['creditnotice'], 'radio');
  512. showsetting('setting_styles_global_showusercard', 'settingnew[showusercard]', $setting['showusercard'], 'radio');
  513. showsetting('setting_styles_global_anonymoustext', 'settingnew[anonymoustext]', $setting['anonymoustext'], 'text');
  514. showtablefooter();
  515. showtableheader('setting_styles_index', 'nobottom', 'id="index"'.($_GET['anchor'] != 'index' ? ' style="display: none"' : ''));
  516. showsetting('setting_styles_index_indexhot_status', 'settingnew[indexhot][status]', $setting['indexhot']['status'], 'radio', 0, 1);
  517. showsetting('setting_styles_index_indexhot_limit', 'settingnew[indexhot][limit]', $setting['indexhot']['limit'], 'text');
  518. showsetting('setting_styles_index_indexhot_days', 'settingnew[indexhot][days]', $setting['indexhot']['days'], 'text');
  519. showsetting('setting_styles_index_indexhot_expiration', 'settingnew[indexhot][expiration]', $setting['indexhot']['expiration'], 'text');
  520. showsetting('setting_styles_index_indexhot_messagecut', 'settingnew[indexhot][messagecut]', $setting['indexhot']['messagecut'], 'text');
  521. showtagfooter('tbody');
  522. showsetting('setting_styles_index_subforumsindex', 'settingnew[subforumsindex]', $setting['subforumsindex'], 'radio');
  523. showsetting('setting_styles_index_forumlinkstatus', 'settingnew[forumlinkstatus]', $setting['forumlinkstatus'], 'radio');
  524. showsetting('setting_styles_index_forumallowside', 'settingnew[forumallowside]', $setting['forumallowside'], 'radio');
  525. showsetting('setting_styles_index_whosonline', array('settingnew[whosonlinestatus]', array(
  526. array(0, $lang['setting_styles_index_display_none']),
  527. array(1, $lang['setting_styles_index_whosonline_index']),
  528. array(2, $lang['setting_styles_index_whosonline_forum']),
  529. array(3, $lang['setting_styles_index_whosonline_both'])
  530. )), $setting['whosonlinestatus'], 'select');
  531. showsetting('setting_styles_index_whosonline_contract', 'settingnew[whosonline_contract]', $setting['whosonline_contract'], 'radio');
  532. showsetting('setting_styles_index_online_more_members', 'settingnew[maxonlinelist]', $setting['maxonlinelist'], 'text');
  533. showsetting('setting_styles_index_hideprivate', 'settingnew[hideprivate]', $setting['hideprivate'], 'radio');
  534. showsetting('setting_styles_index_showfollowcollection', 'settingnew[showfollowcollection]', $setting['showfollowcollection'], 'text');
  535. showsetting('setting_styles_index_disfixednv', 'settingnew[disfixednv_forumindex]', !empty($setting['disfixednv_forumindex']), 'radio');
  536. showtablefooter();
  537. showtips('setting_tips', 'forumdisplay_tips', $_GET['anchor'] == 'forumdisplay');
  538. showtableheader('setting_styles_forumdisplay', 'nobottom', 'id="forumdisplay"'.($_GET['anchor'] != 'forumdisplay' ? ' style="display: none"' : ''));
  539. showsetting('setting_styles_forumdisplay_tpp', 'settingnew[topicperpage]', $setting['topicperpage'], 'text');
  540. showsetting('setting_styles_forumdisplay_threadmaxpages', 'settingnew[threadmaxpages]', $setting['threadmaxpages'], 'text');
  541. showsetting('setting_styles_forumdisplay_leftsidewidth', 'settingnew[leftsidewidth]', $setting['leftsidewidth'], 'text');
  542. showsetting('setting_styles_forumdisplay_leftsideopen', 'settingnew[leftsideopen]', $setting['leftsideopen'], 'radio');
  543. showsetting('setting_styles_forumdisplay_globalstick', 'settingnew[globalstick]', $setting['globalstick'], 'radio');
  544. showsetting('setting_styles_forumdisplay_targetblank', 'settingnew[targetblank]', $setting['targetblank'], 'radio');
  545. showsetting('setting_styles_forumdisplay_stick', 'settingnew[threadsticky]', $setting['threadsticky'], 'text');
  546. showsetting('setting_styles_forumdisplay_part', 'settingnew[forumseparator]', $setting['forumseparator'], 'radio');
  547. showsetting('setting_styles_forumdisplay_visitedforums', 'settingnew[visitedforums]', $setting['visitedforums'], 'text');
  548. showsetting('setting_styles_forumdisplay_fastpost', 'settingnew[fastpost]', $setting['fastpost'], 'radio', 0, 1);
  549. showsetting('setting_styles_forumdisplay_fastsmilies', 'settingnew[fastsmilies]', $setting['fastsmilies'], 'radio');
  550. showtagfooter('tbody');
  551. $setting['forumpicstyle'] = dunserialize($setting['forumpicstyle']);
  552. showsetting('setting_styles_forumdisplay_forumpicstyle_thumbwidth', 'settingnew[forumpicstyle][thumbwidth]', $setting['forumpicstyle']['thumbwidth'], 'text');
  553. showsetting('setting_styles_forumdisplay_forumpicstyle_thumbheight', 'settingnew[forumpicstyle][thumbheight]', $setting['forumpicstyle']['thumbheight'], 'text');
  554. showsetting('setting_styles_forumdisplay_forumpicstyle_thumbnum', 'settingnew[forumpicstyle][thumbnum]', $setting['forumpicstyle']['thumbnum'], 'text');
  555. $stamplist[] = array(0, '');
  556. foreach(C::t('common_smiley')->fetch_all_by_type('stamplist') as $smiley) {
  557. $stamplist[] = array($smiley['displayorder'], $smiley['code']);
  558. }
  559. showsetting('setting_styles_forumdisplay_newbie', array('settingnew[newbie]', $stamplist), $setting['newbie'], 'select');
  560. showsetting('setting_styles_forumdisplay_disfixednv_forumdisplay', 'settingnew[disfixednv_forumdisplay]', !empty($setting['disfixednv_forumdisplay']), 'radio');
  561. showsetting('setting_styles_forumdisplay_threadpreview', 'settingnew[forumdisplaythreadpreview]', !empty($setting['forumdisplaythreadpreview']), 'radio');
  562. showtablefooter();
  563. showtagheader('div', 'viewthread', $_GET['anchor'] == 'viewthread');
  564. showtableheader('nav_setting_viewthread', 'nobottom');
  565. showsetting('setting_styles_viewthread_ppp', 'settingnew[postperpage]', $setting['postperpage'], 'text');
  566. showsetting('setting_styles_viewthread_starthreshold', 'settingnew[starthreshold]', $setting['starthreshold'], 'text');
  567. showsetting('setting_styles_viewthread_maxsigrows', 'settingnew[maxsigrows]', $setting['maxsigrows'], 'text');
  568. showsetting('setting_styles_viewthread_sigviewcond', 'settingnew[sigviewcond]', $setting['sigviewcond'], 'text');
  569. showsetting('setting_styles_viewthread_rate_on', 'settingnew[ratelogon]', $setting['ratelogon'], 'radio');
  570. showsetting('setting_styles_viewthread_rate_number', 'settingnew[ratelogrecord]', $setting['ratelogrecord'], 'text');
  571. showsetting('setting_styles_viewthread_collection_number', 'settingnew[collectionnum]', $setting['collectionnum'], 'text');
  572. showsetting('setting_styles_viewthread_relate_number', 'settingnew[relatenum]', $setting['relatenum'], 'text');
  573. showsetting('setting_styles_viewthread_relate_time', 'settingnew[relatetime]', $setting['relatetime'], 'text');
  574. showsetting('setting_styles_viewthread_show_signature', 'settingnew[showsignatures]', $setting['showsignatures'], 'radio');
  575. showsetting('setting_styles_viewthread_show_face', 'settingnew[showavatars]', $setting['showavatars'], 'radio');
  576. showsetting('setting_styles_viewthread_show_images', 'settingnew[showimages]', $setting['showimages'], 'radio');
  577. showsetting('setting_styles_viewthread_imagemaxwidth', 'settingnew[imagemaxwidth]', $setting['imagemaxwidth'], 'text');
  578. showsetting('setting_styles_viewthread_imagelistthumb', 'settingnew[imagelistthumb]', $setting['imagelistthumb'], 'text');
  579. showsetting('setting_styles_viewthread_zoomstatus', 'settingnew[zoomstatus]', $setting['zoomstatus'], 'radio', 0, 1);
  580. showsetting('setting_styles_viewthread_showexif', 'settingnew[showexif]', $setting['showexif'], 'radio', !function_exists('exif_read_data'));
  581. showtagfooter('tbody');
  582. showsetting('setting_styles_viewthread_vtonlinestatus', array('settingnew[vtonlinestatus]', array(
  583. array(0, $lang['setting_styles_viewthread_display_none']),
  584. array(1, $lang['setting_styles_viewthread_online_easy']),
  585. array(2, $lang['setting_styles_viewthread_online_exactitude'])
  586. )), $setting['vtonlinestatus'], 'select');
  587. showsetting('setting_styles_viewthread_userstatusby', 'settingnew[userstatusby]', $setting['userstatusby'], 'radio');
  588. showsetting('setting_styles_viewthread_postno', 'settingnew[postno]', $setting['postno'], 'text');
  589. showsetting('setting_styles_viewthread_postnocustom', 'settingnew[postnocustom]', $setting['postnocustom'], 'textarea');
  590. showsetting('setting_styles_viewthread_maxsmilies', 'settingnew[maxsmilies]', $setting['maxsmilies'], 'text');
  591. showsetting('setting_styles_viewthread_author_onleft', array('settingnew[authoronleft]', array(
  592. array(1, cplang('setting_styles_viewthread_author_onleft_yes')),
  593. array(0, cplang('setting_styles_viewthread_author_onleft_no')))), $setting['authoronleft'], 'mradio');
  594. showsetting('setting_styles_forumdisplay_disfixedavatar', 'settingnew[disfixedavatar]', !empty($setting['disfixedavatar']), 'radio');
  595. showsetting('setting_styles_forumdisplay_disfixednv_viewthread', 'settingnew[disfixednv_viewthread]', !empty($setting['disfixednv_viewthread']), 'radio');
  596. showsetting('setting_styles_forumdisplay_threadguestlite', 'settingnew[threadguestlite]', !empty($setting['threadguestlite']), 'radio');
  597. showsetting('setting_styles_viewthread_close_leftinfo', 'settingnew[close_leftinfo]', !empty($setting['close_leftinfo']), 'radio');
  598. showsetting('setting_styles_viewthread_close_leftinfo_userctrl', 'settingnew[close_leftinfo_userctrl]', !empty($setting['close_leftinfo_userctrl']), 'radio');
  599. showsetting('setting_styles_viewthread_guestviewthumb', 'settingnew[guestviewthumb][flag]', !empty($setting['guestviewthumb']['flag']), 'radio', 0, 1);
  600. showsetting('setting_styles_viewthread_guestviewthumb_width', 'settingnew[guestviewthumb][width]', $setting['guestviewthumb']['width'], 'text');
  601. showsetting('setting_styles_viewthread_guestviewthumb_height', 'settingnew[guestviewthumb][height]', $setting['guestviewthumb']['height'], 'text');
  602. showtagfooter('tbody');
  603. showsetting('setting_styles_viewthread_guesttipsinthread', 'settingnew[guesttipsinthread][flag]', !empty($setting['guesttipsinthread']['flag']), 'radio', 0, 1);
  604. showsetting('setting_styles_viewthread_guesttipsinthread_text', 'settingnew[guesttipsinthread][text]', $setting['guesttipsinthread']['text'], 'text');
  605. showtagfooter('tbody');
  606. showsetting('setting_styles_viewthread_imgcontent', 'settingnew[imgcontentwidth]', $setting['imgcontentwidth'], 'text');
  607. showsetting('setting_styles_viewthread_fast_reply', 'settingnew[allowfastreply]', $setting['allowfastreply'], 'radio');
  608. showsetting('setting_styles_viewthread_allow_replybg', 'settingnew[allowreplybg]', $setting['allowreplybg'], 'radio', 0, 1);
  609. $replybghtml = '';
  610. if($setting['globalreplybg']) {
  611. $replybghtml = '<label><input type="checkbox" class="checkbox" name="delglobalreplybg" value="yes" /> '.$lang['delete'].'</label><br /><img src="'.$_G['setting']['attachurl'].'common/'.$setting['globalreplybg'].'" width="200px" />';
  612. }
  613. if($setting['globalreplybg']) {
  614. $replybgurl = parse_url($setting['globalreplybg']);
  615. }
  616. showsetting('setting_styles_viewthread_global_reply_background', 'globalreplybg', (!$replybgurl['host'] ? str_replace($_G['setting']['attachurl'].'common/', '', $setting['globalreplybg']) : $setting['globalreplybg']), 'filetext', '', 0, $replybghtml);
  617. showtablefooter();
  618. showtagfooter('div');
  619. $setting['msgforward'] = !empty($setting['msgforward']) ? dunserialize($setting['msgforward']) : array();
  620. $setting['msgforward']['messages'] = !empty($setting['msgforward']['messages']) ? implode("\n", $setting['msgforward']['messages']) : '';
  621. showtablefooter();
  622. loadcache('usergroups');
  623. $threadprofiles = C::t('forum_threadprofile')->fetch_all();
  624. $threadprofile_group = C::t('forum_threadprofile_group')->fetch_all();
  625. showtagheader('div', 'threadprofile', $_GET['anchor'] == 'threadprofile');
  626. echo '<table><tr><td valign="top" width="350">';
  627. showtableheader('setting_styles_threadprofile_group', 'nobottom');
  628. showsubtitle(array('setting_styles_threadprofile_name', 'setting_styles_threadprofile_plan'));
  629. foreach($_G['cache']['usergroups'] as $gid => $usergroup) {
  630. $select = '<select name="threadprofile['.$gid.']"><option value="0">'.$lang['nav_global'].'</option>';
  631. foreach($threadprofiles as $id => $threadprofile) {
  632. $select .= '<option value="'.$id.'"'.($threadprofile_group[$gid]['tpid'] == $id ? ' selected' : '').'>'.$threadprofile['name'].'</option>';
  633. }
  634. $select .= '</select>';
  635. showtablerow('', array('', ''), array($usergroup['grouptitle'], $select));
  636. }
  637. if($_G['setting']['verify']['enabled']) {
  638. foreach($_G['setting']['verify'] as $gid => $verify) {
  639. if($verify['available']) {
  640. $select = '<select name="threadprofile[-'.$gid.']"><option value="0">'.$lang['nav_global'].'</option>';
  641. foreach($threadprofiles as $id => $threadprofile) {
  642. $select .= '<option value="'.$id.'"'.($threadprofile_group[-$gid]['tpid'] == $id ? ' selected' : '').'>'.$threadprofile['name'].'</option>';
  643. }
  644. $select .= '</select>';
  645. showtablerow('', array('', ''), array($verify['title'], $select));
  646. }
  647. }
  648. }
  649. showtablefooter();
  650. echo '</td><td width="10"></td><td valign="top" width="350">';
  651. showtableheader('setting_styles_threadprofile_project', 'nobottom');
  652. $setting['threadprofile'] = !empty($setting['threadprofile']) ? dunserialize($setting['threadprofile']) : array();
  653. showsubtitle(array('setting_styles_threadprofile_name', 'nav_global', ''));
  654. foreach($threadprofiles as $id => $threadprofile) {
  655. showtablerow('', array('style="width:200px"', 'style="width:50px"', ''), array(
  656. $threadprofile['name'],
  657. '<input name="default" type="radio" value="'.$id.'"'.($threadprofile['global'] ? ' checked' : '').' />',
  658. '<a href="'.ADMINSCRIPT.'?action=setting&operation=threadprofile&do=edit&id='.$id.'">'.cplang('edit').'</a>'.
  659. ($id > 1 ? '&nbsp;<a href="'.ADMINSCRIPT.'?action=setting&operation=threadprofile&do=delete&id='.$id.'">'.cplang('delete').'</a>' : ''),
  660. ));
  661. }
  662. echo '<tr><td colspan="3"><a href="'.ADMINSCRIPT.'?action=setting&operation=threadprofile&do=add" class="addtr">'.$lang['setting_styles_threadprofile_addplan'].'</td></tr>';
  663. showtablefooter();
  664. echo '</td></tr></table>';
  665. showtagfooter('div');
  666. showtips('members_profile_numbercard_tips', 'numbercard_tips', $_GET['anchor'] == 'numbercard');
  667. showtableheader('members_profile_numbercard', 'nobottom', 'id="numbercard"'.($_GET['anchor'] != 'numbercard' ? ' style="display: none"' : ''));
  668. $settingsAttribute = array();
  669. $allowedAttribute = array('threads', 'posts', 'credits', 'digestposts', 'doings', 'blogs', 'albums', 'sharings', 'oltime', 'feeds', 'follower', 'following', 'friends');
  670. foreach($allowedAttribute as $attribute) {
  671. $settingsAttribute[] = array($attribute, $lang['setting_numbercard_type_'.$attribute]);
  672. }
  673. $extcredits = dunserialize($setting['extcredits']);
  674. foreach($extcredits as $creditid=>$extcredit) {
  675. if($extcredit['title']) {
  676. $settingsAttribute[] = array('extcredits'.$creditid, $extcredit['title']);
  677. }
  678. }
  679. $setting['numbercard'] = dunserialize($setting['numbercard']);
  680. for($i = 1; $i <= 3; $i++) {
  681. showsetting(cplang('setting_numbercard_row', array('i' => $i)), array('settingnew[numbercard][row]['.$i.']', $settingsAttribute), $setting['numbercard']['row'][$i], 'select');
  682. }
  683. showtablefooter();
  684. showtableheader('setting_styles_refresh', 'nobottom', 'id="refresh"'.($_GET['anchor'] != 'refresh' ? ' style="display: none"' : ''));
  685. showsetting('setting_styles_refresh_refreshtime', 'settingnew[msgforward][refreshtime]', $setting['msgforward']['refreshtime'], 'text');
  686. showsetting('setting_styles_refresh_quick', 'settingnew[msgforward][quick]', $setting['msgforward']['quick'], 'radio', '', 1);
  687. showsetting('setting_styles_refresh_messages', 'settingnew[msgforward][messages]', $setting['msgforward']['messages'], 'textarea');
  688. showtagfooter('tbody');
  689. showtablefooter();
  690. showtableheader('setting_styles_sitemessage', 'nobottom', 'id="sitemessage"'.($_GET['anchor'] != 'sitemessage' ? ' style="display: none"' : ''));
  691. showsetting('setting_styles_sitemessage_time', 'settingnew[sitemessage][time]', $setting['sitemessage']['time'], 'text');
  692. showsetting('setting_styles_sitemessage_register', 'settingnew[sitemessage][register]', $setting['sitemessage']['register'], 'textarea');
  693. showsetting('setting_styles_sitemessage_login', 'settingnew[sitemessage][login]', $setting['sitemessage']['login'], 'textarea');
  694. showsetting('setting_styles_sitemessage_newthread', 'settingnew[sitemessage][newthread]', $setting['sitemessage']['newthread'], 'textarea');
  695. showsetting('setting_styles_sitemessage_reply', 'settingnew[sitemessage][reply]', $setting['sitemessage']['reply'], 'textarea');
  696. showtagfooter('tbody');
  697. showtablefooter();
  698. showtableheader('', 'notop');
  699. showsubmit('settingsubmit');
  700. showtablefooter();
  701. showformfooter();
  702. exit;
  703. } elseif($operation == 'threadprofile') {
  704. $authorinfoitems = array();
  705. $authorinfoitems = array(
  706. '{numbercard}' => $lang['setting_styles_threadprofile_attrcard'],
  707. '{groupicon}<p>{*}</p>{/groupicon}' => $lang['setting_styles_threadprofile_groupicon'],
  708. '{authortitle}<p><em>{*}</em></p>{/authortitle}' => $lang['setting_styles_threadprofile_groupname'],
  709. '{customstatus}<p class=xg1>{*}</p>{/customstatus}' => $lang['members_edit_nickname'],
  710. '{star}<p>{*}</p>{/star}' => $lang['group_level_icon'],
  711. '{upgradeprogress}' => $lang['setting_styles_threadprofile_groupstep'],
  712. );
  713. if(!empty($_G['setting']['extcredits'])) {
  714. foreach($_G['setting']['extcredits'] as $key => $value) {
  715. $authorinfoitems['extcredits'.$key] = $value['title'];
  716. }
  717. }
  718. $authorinfoitems = array_merge($authorinfoitems, array(
  719. 1 => '-',
  720. 'uid' => 'UID',
  721. 'friends' => $lang['setting_styles_viewthread_userinfo_friends'],
  722. 'doings' => $lang['setting_styles_viewthread_userinfo_doings'],
  723. 'blogs' => $lang['setting_styles_viewthread_userinfo_blogs'],
  724. 'albums' => $lang['setting_styles_viewthread_userinfo_albums'],
  725. 'posts' => $lang['setting_styles_viewthread_userinfo_posts'],
  726. 'threads' => $lang['setting_styles_viewthread_userinfo_threads'],
  727. 'sharings' => $lang['setting_styles_viewthread_userinfo_sharings'],
  728. 'digest' => $lang['setting_styles_viewthread_userinfo_digest'],
  729. 'credits' => $lang['setting_styles_viewthread_userinfo_credits'],
  730. 'readperm' => $lang['setting_styles_viewthread_userinfo_readperm'],
  731. 'regtime' => $lang['setting_styles_viewthread_userinfo_regtime'],
  732. 'lastdate' => $lang['setting_styles_viewthread_userinfo_lastdate'],
  733. 'oltime' => $lang['setting_styles_viewthread_userinfo_oltime'],
  734. 'eccredit_seller' => $lang['setting_styles_threadprofile_eccredit_seller'],
  735. 'eccredit_buyer' => $lang['setting_styles_threadprofile_eccredit_buyer'],
  736. 'follower' => $lang['setting_styles_viewthread_userinfo_follower'],
  737. 'following' => $lang['setting_styles_viewthread_userinfo_following']
  738. ));
  739. foreach(C::t('common_member_profile_setting')->fetch_all_by_available(1) as $profilefields) {
  740. if($profilefields['fieldid'] == 'birthyear' || $profilefields['fieldid'] == 'birthmonth') {
  741. continue;
  742. } elseif($profilefields['fieldid'] == 'realname') {
  743. $setting['verify'] = dunserialize($setting['verify']);
  744. if($setting['verify'][6]['available'] && !$setting['verify'][6]['viewrealname']) {
  745. continue;
  746. }
  747. }
  748. $authorinfoitems['field_'.$profilefields['fieldid']] = $profilefields['title'];
  749. }
  750. if($_G['setting']['hookscript']['global']['profile']['funcs']['profile_node']) {
  751. $pluginidentifiers = array();
  752. foreach($_G['setting']['hookscript']['global']['profile']['funcs']['profile_node'] as $plugin) {
  753. $pluginidentifiers[] = $plugin[0];
  754. }
  755. $plugins = C::t('common_plugin')->fetch_all_identifier($pluginidentifiers);
  756. foreach($plugins as $id => $value) {
  757. $authorinfoitems['{plugin:'.$id.'}'] = $value['name'];
  758. }
  759. }
  760. if($_GET['do'] == 'add') {
  761. showtips('setting_threadprofile_tpl_tpls');
  762. showtableheader('');
  763. showhiddenfields(array('do' => 'add'));
  764. showsetting('setting_styles_threadprofile_name', 'namenew', '', 'text');
  765. showsetting_threadprfile($authorinfoitems);
  766. showtagfooter('tbody');
  767. showtablefooter();
  768. } elseif($_GET['do'] == 'edit') {
  769. $id = intval($_GET['id']);
  770. $threadprofile = C::t('forum_threadprofile')->fetch($id);
  771. if(!$threadprofile) {
  772. dheader('location: '.ADMINSCRIPT.'?action=setting&operation=styles&anchor=threadprofile');
  773. }
  774. showtips('setting_threadprofile_tpl_tpls');
  775. showtableheader('');
  776. showhiddenfields(array('do' => 'edit', 'id' => $id));
  777. $threadprofile['template'] = dunserialize($threadprofile['template']);
  778. showsetting('setting_styles_threadprofile_name', 'namenew', $threadprofile['name'], 'text');
  779. showsetting_threadprfile($authorinfoitems, $threadprofile['template']);
  780. showtagfooter('tbody');
  781. showtablefooter();
  782. } elseif($_GET['do'] == 'delete') {
  783. $id = intval($_GET['id']);
  784. C::t('forum_threadprofile')->delete($_GET['id']);
  785. C::t('forum_threadprofile_group')->delete_by_tpid($_GET['id']);
  786. updatecache('setting');
  787. cpmsg('setting_update_succeed', 'action=setting&operation=styles&anchor=threadprofile', 'succeed');
  788. }
  789. } elseif($operation == 'seo') {
  790. $setting['seotitle'] = dunserialize($setting['seotitle']);
  791. $setting['seodescription'] = dunserialize($setting['seodescription']);
  792. $setting['seokeywords'] = dunserialize($setting['seokeywords']);
  793. $rewritedata = rewritedata();
  794. $setting['rewritestatus'] = isset($setting['rewritestatus']) ? dunserialize($setting['rewritestatus']) : '';
  795. $setting['rewriterule'] = isset($setting['rewriterule']) ? dunserialize($setting['rewriterule']) : '';
  796. echo '<div id="rewrite"'.($_GET['anchor'] != 'rewrite' ? ' style="display: none"' : '').'>';
  797. showtips('setting_tips', 'tips_rewrite');
  798. showtableheader('', 'nobottom');
  799. showtitle('<em class="right">'.cplang('setting_seo_rewritestatus_viewrule').'</em>'.cplang('setting_seo_rewritestatus'));
  800. showtablerow('', array('class="vtop tips2" colspan="3"'), array(cplang('setting_seo_rewritestatus_comment')));
  801. showsubtitle(array('setting_seo_pages', 'setting_seo_vars', 'setting_seo_rule', 'available'));
  802. foreach($rewritedata['rulesearch'] as $k => $v) {
  803. $v = !$setting['rewriterule'][$k] ? $v : $setting['rewriterule'][$k];
  804. showtablerow('', array('class="td24"', 'class="td31"', 'class="longtxt"', 'class="td25"'), array(
  805. cplang('setting_seo_rewritestatus_'.$k),
  806. implode(', ', array_keys($rewritedata['rulevars'][$k])),
  807. '<input onclick="doane(event)" name="settingnew[rewriterule]['.$k.']" class="txt" value="'.dhtmlspecialchars($v).'"/>',
  808. '<input type="checkbox" name="settingnew[rewritestatus][]" class="checkbox" value="'.$k.'" '.(in_array($k, $setting['rewritestatus']) ? 'checked="checked"' : '').'/>'
  809. ));
  810. }
  811. showtablefooter();
  812. showtableheader();
  813. showsetting('setting_seo_rewritecompatible', 'settingnew[rewritecompatible]', $setting['rewritecompatible'], 'radio');
  814. showsetting('setting_seo_rewriteguest', 'settingnew[rewriteguest]', $setting['rewriteguest'], 'radio');
  815. showtablefooter();
  816. echo '</div>';
  817. echo '<div id="other"'.($_GET['anchor'] != 'other' ? ' style="display: none"' : '').'>';
  818. showtableheader();
  819. showtitle('<em class="right">'.cplang('setting_seo_robots_output').'</em>'.cplang('setting_seo'));
  820. showtablerow('', array('class="vtop tips2" colspan="4" style="padding-left:20px;"'), array('<ul><li>'.cplang('setting_seo_seotitle_comment').'</li><li>'.cplang('setting_seo_seodescription_comment').'</li><li>'.cplang('setting_seo_seokeywords_comment').'</li></ul>'));
  821. if($_G['setting']['navs'][5]['navname']) {
  822. showtitle($_G['setting']['navs'][5]['navname']);
  823. showtablerow('', array('width="80"', ''), array(
  824. cplang('setting_seo_seotitle'),
  825. '<input type="text" name="settingnew[seotitle][userapp]" value="'.$setting['seotitle']['userapp'].'" class="txt" style="width:280px;" />',
  826. )
  827. );
  828. showtablerow('', array('width="80"', ''), array(
  829. cplang('setting_seo_seokeywords'),
  830. '<input type="text" name="settingnew[seokeywords][userapp]" value="'.$setting['seokeywords']['userapp'].'" class="txt" style="width:280px;" />'
  831. )
  832. );
  833. showtablerow('', array('width="80"', ''), array(
  834. cplang('setting_seo_seodescription'),
  835. '<input type="text" name="settingnew[seodescription][userapp]" value="'.$setting['seodescription']['userapp'].'" class="txt" style="width:280px;" />',
  836. )
  837. );
  838. }
  839. showtablefooter();
  840. showtableheader();
  841. showsetting('setting_seo_seohead', 'settingnew[seohead]', $setting['seohead'], 'textarea');
  842. showtablefooter();
  843. echo '</div>';
  844. $seotypes = array(
  845. 'portal' => array('portal', 'articlelist', 'article'),
  846. 'forum' => array('forum', 'threadlist', 'viewthread'),
  847. 'home' => array('home', 'blog', 'album'),
  848. 'group' => array('group', 'grouppage', 'viewthread_group')
  849. );
  850. $codetypes = array(
  851. 'portal' => 'bbname',
  852. 'articlelist' => 'bbname,curcat,firstcat,secondcat,page',
  853. 'article' => 'bbname,curcat,firstcat,secondcat,subject,summary,user,page',
  854. 'forum' => 'bbname',
  855. 'threadlist' => 'bbname,forum,fup,fgroup,page',
  856. 'viewthread' => 'bbname,forum,fup,fgroup,subject,summary,tags,page',
  857. 'home' => 'bbname',
  858. 'blog' => 'bbname,subject,summary,tags,user',
  859. 'album' => 'bbname,album,depict,user',
  860. 'group' => 'bbname,forum,first,second',
  861. 'grouppage' => 'bbname,forum,first,second,gdes,page',
  862. 'viewthread_group' => 'bbname,forum,first,second,gdes,subject,summary,tags,page',
  863. );
  864. foreach($codetypes as $key => $val) {
  865. $jscodetypes .= "codetypes['{$key}'] = '{$val}';\r\n";
  866. foreach(explode(',', $val) as $code) {
  867. $cname = $code == 'bbname' ? cplang('setting_seo_code_bbname') : cplang('setting_seo_code_'.$key.'_'.$code);
  868. $jscodenames .= "codenames['{$key}_{$code}'] = '{$cname}';\r\n";
  869. }
  870. }
  871. print <<<EOF
  872. <div id="codediv" style="display:none; top: 707px;background: url('./static/image/common/mdly.png') no-repeat scroll 0 0 transparent; height: 100px; line-height: 32px; margin-top: -16px; overflow: hidden; padding: 10px 25px; position: absolute; left: 500px; width: 250px;">
  873. <p>
  874. EOF;
  875. echo cplang('setting_seo_insallowcode');
  876. print <<<EOF
  877. </p>
  878. <p id="seocodes">
  879. <a onclick="insertcode('subject');return false;" href="javascript:;">{subject}</a>
  880. <span class="pipe">|</span>
  881. <a onclick="insertcode('forum');return false;" href="javascript:;">{forum}</a>
  882. </p>
  883. </div>
  884. <script src="static/js/home.js" type="text/javascript"></script>
  885. <script language="javascript">
  886. var codediv = $('codediv');
  887. var codetypes = new Array(), codenames = new Array();
  888. $jscodetypes
  889. $jscodenames
  890. function getcodetext(obj, ctype) {
  891. var top_offset = obj.offsetTop;
  892. var codecontent = '';
  893. var targetid = obj.id;
  894. while((obj = obj.offsetParent).tagName != 'BODY') {
  895. top_offset += obj.offsetTop;
  896. }
  897. if(!codetypes[ctype]) {
  898. return true;
  899. }
  900. types = codetypes[ctype].split(',');
  901. for(var i = 0; i < types.length; i++) {
  902. if(codecontent != '') {
  903. codecontent += '&nbsp;&nbsp;';
  904. }
  905. codecontent += '<a onclick="insertContent(\''+targetid+'\', \'{'+types[i]+'}\');return false;" href="javascript:;" title="'+codenames[ctype+'_'+types[i]]+'">{'+types[i]+'}</a>';
  906. }
  907. $('seocodes').innerHTML = codecontent;
  908. codediv.style.top = top_offset + 'px';
  909. codediv.style.display = '';
  910. _attachEvent($('submenu'), 'mouseover', function(){codediv.style.display='none';});
  911. }
  912. </script>
  913. EOF;
  914. $first = $seconds = $thirds = $afirst = $aseconds = $athirds = array();
  915. $query = C::t('forum_forum')->fetch_all_forum_for_sub_order();
  916. foreach($query as $forum) {
  917. $forum['description'] = $forum['seodescription'];
  918. $forum['id'] = $forum['fid'];
  919. if($forum['type'] == 'group') {
  920. $first[$forum['fid']] = $forum;
  921. } elseif($forum['type'] == 'sub') {
  922. $thirds[$forum['fup']][] = $forum;
  923. } else {
  924. $seconds[$forum['fup']][] = $forum;
  925. }
  926. }
  927. loadcache('portalcategory');
  928. $portalcategory = $_G['cache']['portalcategory'];
  929. if($portalcategory) {
  930. foreach($portalcategory as $category) {
  931. $category['id'] = $category['catid'];
  932. $category['name'] = $category['catname'];
  933. $category['keywords'] = $category['keyword'];
  934. if($category['level'] == 0) {
  935. $afirst[$category['catid']] = $category;
  936. } elseif($category['level'] == 1) {
  937. $aseconds[$category['upid']][] = $category;
  938. } else {
  939. $athirds[$category['upid']][] = $category;
  940. }
  941. }
  942. }
  943. foreach($seotypes as $type => $subtypes) {
  944. echo '<div id="'.$type.'"'.($_GET['anchor'] != $type ? ' style="display: none"' : '').'>';
  945. showtips(cplang('setting_seo_global_tips').cplang('setting_seo_'.$type.'_tips'), 'tips_'.$type);
  946. showtableheader();
  947. foreach($subtypes as $subtype) {
  948. showtitle(cplang('setting_seo_'.$subtype).($subtype == 'threadlist' || $subtype == 'articlelist' ? ' &nbsp; <a href="javascript:;" class="act" onclick="if($(\''.$subtype.'_detail\').style.display){$(\''.$subtype.'_detail\').style.display=\'\';this.innerHTML=\''.cplang('setting_seo_closedetail').'\';}else{$(\''.$subtype.'_detail\').style.display=\'none\';this.innerHTML=\''.cplang('setting_seo_opendetail').'\';};return false;">'.cplang('setting_seo_opendetail').'</a>' : ''));
  949. showtablerow('', array('width="12%"', ''), array(
  950. cplang('setting_seo_seotitle'),
  951. '<input type="text" id="t_'.$type.$subtype.'" onfocus="getcodetext(this, \''.$subtype.'\');" name="settingnew[seotitle]['.$subtype.']" value="'.dhtmlspecialchars($setting['seotitle'][$subtype]).'" class="txt" style="width:280px;" />',
  952. )
  953. );
  954. showtablerow('', array('width="12%"', ''), array(
  955. cplang('setting_seo_seokeywords'),
  956. '<input type="text" id="k_'.$type.$subtype.'" onfocus="getcodetext(this, \''.$subtype.'\');" name="settingnew[seokeywords]['.$subtype.']" value="'.dhtmlspecialchars($setting['seokeywords'][$subtype]).'" class="txt" style="width:280px;" />'
  957. )
  958. );
  959. showtablerow('', array('width="12%"', ''), array(
  960. cplang('setting_seo_seodescription'),
  961. '<input type="text" id="d_'.$type.$subtype.'" onfocus="getcodetext(this, \''.$subtype.'\');" name="settingnew[seodescription]['.$subtype.']" value="'.dhtmlspecialchars($setting['seodescription'][$subtype]).'" class="txt" style="width:280px;" />',
  962. )
  963. );
  964. if($subtype == 'threadlist') {
  965. showlist($first, $seconds, $thirds, $subtype);
  966. }
  967. if($subtype == 'articlelist') {
  968. showlist($afirst, $aseconds, $athirds, $subtype);
  969. }
  970. }
  971. showtablefooter();
  972. echo '</div>';
  973. }
  974. showtagfooter('tbody');
  975. } elseif($operation == 'cachethread') {
  976. include_once libfile('function/forumlist');
  977. $forumselect = '<select name="fids[]" multiple="multiple" size="10"><option value="all">'.$lang['all'].'</option><option value="">&nbsp;</option>'.forumselect(FALSE, 0, 0, TRUE).'</select>';
  978. showtableheader();
  979. showtitle('setting_cachethread');
  980. showsetting('setting_cachethread_indexlife', 'settingnew[cacheindexlife]', $setting['cacheindexlife'], 'text');
  981. showsetting('setting_cachethread_life', 'settingnew[cachethreadlife]', $setting['cachethreadlife'], 'text');
  982. showsetting('setting_cachethread_dir', 'settingnew[cachethreaddir]', $setting['cachethreaddir'], 'text');
  983. showtitle('setting_cachethread_coefficient_set');
  984. showsetting('setting_cachethread_coefficient', 'settingnew[threadcaches]', '', "<input type=\"text\" class=\"txt\" size=\"30\" name=\"settingnew[threadcaches]\" value=\"$setting[threadcaches]\">");
  985. showsetting('setting_cachethread_coefficient_forum', '', '', $forumselect);
  986. } elseif($operation == 'serveropti') {
  987. $checkgzipfunc = !function_exists('ob_gzhandler') ? 1 : 0;
  988. if($setting['jspath'] == 'static/js/') {
  989. $tjspath['default'] = 'checked="checked"';
  990. $setting['jspath'] = '';
  991. } elseif($setting['jspath'] == 'data/cache/') {
  992. $tjspath['cache'] = 'checked="checked"';
  993. $setting['jspath'] = '';
  994. } else {
  995. $tjspath['custom'] = 'checked="checked"';
  996. }
  997. if(!$setting['csspathv'] || $setting['csspathv'] == 'data/cache/') {
  998. $tcsspath['cache'] = 'checked="checked"';
  999. $setting['csspathv'] = '';
  1000. } else {
  1001. $tcsspath['custom'] = 'checked="checked"';
  1002. }
  1003. showtips('setting_tips');
  1004. showtableheader();
  1005. showtitle('setting_serveropti');
  1006. showsetting('setting_serveropti_optimize_thread_view', 'settingnew[optimizeviews]', $setting['optimizeviews'], 'radio');
  1007. showsetting('setting_serveropti_preventrefresh', 'settingnew[preventrefresh]', $setting['preventrefresh'], 'radio');
  1008. showsetting('setting_serveropti_delayviewcount', 'settingnew[delayviewcount]', $setting['delayviewcount'], 'radio');
  1009. showsetting('setting_serveropti_nocacheheaders', 'settingnew[nocacheheaders]', $setting['nocacheheaders'], 'radio');
  1010. showsetting('setting_serveropti_maxonlines', 'settingnew[maxonlines]', $setting['maxonlines'], 'text');
  1011. showsetting('setting_serveropti_onlinehold', 'settingnew[onlinehold]', $setting['onlinehold'], 'text');
  1012. showsetting('setting_serveropti_jspath', '', '', '<ul class="nofloat" onmouseover="altStyle(this);">
  1013. <li'.($tjspath['default'] ? ' class="checked"' : '').'><input class="radio" type="radio" name="settingnew[jspath]" value="static/js/" '.$tjspath['default'].'> '.$lang['setting_serveropti_jspath_default'].'</li>
  1014. <li'.($tjspath['cache'] ? ' class="checked"' : '').'><input class="radio" type="radio" name="settingnew[jspath]" value="data/cache/" '.$tjspath['cache'].'> '.$lang['setting_serveropti_jspath_cache'].'</li>
  1015. <li'.($tjspath['custom'] ? ' class="checked"' : '').'><input class="radio" type="radio" name="settingnew[jspath]" value="" '.$tjspath['custom'].'> '.$lang['setting_serveropti_jspath_custom'].' <input type="text" class="txt" style="width: 100px" name="settingnew[jspathcustom]" value="'.$setting['jspath'].'" size="6"></li></ul>'
  1016. );
  1017. showsetting('setting_serveropti_csspath', '', '', '<ul class="nofloat" onmouseover="altStyle(this);">
  1018. <li'.($tcsspath['cache'] ? ' class="checked"' : '').'><input class="radio" type="radio" name="settingnew[csspathv]" value="data/cache/" '.$tcsspath['cache'].'> '.$lang['setting_serveropti_csspath_cache'].'</li>
  1019. <li'.($tcsspath['custom'] ? ' class="checked"' : '').'><input class="radio" type="radio" name="settingnew[csspathv]" value="" '.$tcsspath['custom'].'> '.$lang['setting_serveropti_csspath_custom'].' <input type="text" class="txt" style="width: 100px" name="settingnew[csspathcustom]" value="'.$setting['csspathv'].'" size="6"></li></ul>'
  1020. );
  1021. showsetting('setting_serveropti_lazyload', 'settingnew[lazyload]', $setting['lazyload'], 'radio');
  1022. showsetting('setting_serveropti_blockmaxaggregationitem', 'settingnew[blockmaxaggregationitem]', $setting['blockmaxaggregationitem'], 'text');
  1023. $setting['blockcachetimerange'] = empty($setting['blockcachetimerange']) ? array('0', '23') : explode(',', $setting['blockcachetimerange']);
  1024. $blockcachetimerange = range(0, 23);
  1025. $point = $lang['setting_serveropti_blockcachetimerangepoint'];
  1026. $html = '<select name="settingnew[blockcachetimerange][0]" class="ps" style="width:60px;" >';
  1027. foreach($blockcachetimerange as $value) {
  1028. $html .= '<option value="'.$value.'"'.($value == $setting['blockcachetimerange'][0] ? ' selected="selected"' : '').'>'.$value.$point.'</option>';
  1029. }
  1030. $html .= '</select>- &nbsp;<select name="settingnew[blockcachetimerange][1]" class="ps" style="width:60px;" >';
  1031. foreach($blockcachetimerange as $value) {
  1032. $html .= '<option value="'.$value.'"'.($value == $setting['blockcachetimerange'][1] ? ' selected="selected"' : '').'>'.$value.$point.'</option>';
  1033. }
  1034. $html .= '</select>';
  1035. showsetting('setting_serveropti_blockcachetimerange', '', '', $html);
  1036. showsetting('setting_serveropti_sessionclose', 'settingnew[sessionclose]', $setting['sessionclose'], 'radio', '', 1);
  1037. showsetting('setting_serveropti_onlineguestsmultiple', 'settingnew[onlineguestsmultiple]', $setting['onlineguestsmultiple'] ? $setting['onlineguestsmultiple'] : 10, 'text');
  1038. showtagheader('tbody', '', true);
  1039. } elseif($operation == 'editor') {
  1040. $_G['setting']['editoroptions'] = str_pad(decbin($setting['editoroptions']), 3, 0, STR_PAD_LEFT);
  1041. $setting['defaulteditormode'] = $_G['setting']['editoroptions']{0};
  1042. $setting['allowswitcheditor'] = $_G['setting']['editoroptions']{1};
  1043. $setting['simplemode'] = $_G['setting']['editoroptions']{2};
  1044. showtableheader();
  1045. showsetting('setting_editor_mode_default', array('settingnew[defaulteditormode]', array(
  1046. array(0, $lang['setting_editor_mode_discuzcode']),
  1047. array(1, $lang['setting_editor_mode_wysiwyg']))), $setting['defaulteditormode'], 'mradio');
  1048. showsetting('setting_editor_swtich_enable', 'settingnew[allowswitcheditor]', $setting['allowswitcheditor'], 'radio');
  1049. showsetting('setting_editor_simplemode', array('settingnew[simplemode]', array(
  1050. array(1, $lang['setting_editor_simplemode_1']),
  1051. array(0, $lang['setting_editor_simplemode_0'])), 1),$setting['simplemode'], 'mradio');
  1052. showsetting('setting_editor_smthumb', 'settingnew[smthumb]', $setting['smthumb'], 'text');
  1053. showsetting('setting_editor_smcols', 'settingnew[smcols]', $setting['smcols'], 'text');
  1054. showsetting('setting_editor_smrows', 'settingnew[smrows]', $setting['smrows'], 'text');
  1055. showtablefooter();
  1056. } elseif($operation == 'functions') {
  1057. $allowfuntype = array('portal', 'group', 'follow', 'collection', 'guide', 'feed', 'blog', 'doing', 'album', 'share', 'wall', 'homepage', 'ranklist');
  1058. $_GET['type'] = in_array($_GET['type'], $allowfuntype) ? trim($_GET['type']) : '';
  1059. echo "<script>disallowfloat = '{$_G[setting][disallowfloat]}';</script>";
  1060. showtableheader('setting_functions_curscript_list', 'nobottom', 'id="curscript"'.($_GET['anchor'] != 'curscript' ? ' style="display: none"' : ''));
  1061. $modulehtml = array();
  1062. $modulehtml[] = '<td class="td25"><img src="'.STATICURL.'image/feed/portal_b.png"/></td><td class="td23">'.$lang['setting_functions_curscript_portal'].'</td><td width="370">'.$lang['setting_functions_curscript_portal_intro'].'</td><td class="td30"><img class="vm" src="'.$_G['style']['imgdir'].'/data_'.($setting['portalstatus'] ? 'valid':'invalid').'.gif"></td><td><a href="forum.php?mod=ajax&action=setnav&do='.($setting['portalstatus'] ? 'close':'open').'&type=portal" onclick="showWindow(\'setnav\', this.href, \'get\', 0);return false;">'.($setting['portalstatus'] ? $lang['setting_functions_curscript_close']:$lang['setting_functions_curscript_open']).'</a></td>';
  1063. $modulehtml[] = '<td class="td25"><img src="'.STATICURL.'image/feed/group_b.png"/></td><td class="td23">'.$lang['setting_functions_curscript_group'].'</td><td width="370">'.$lang['setting_functions_curscript_group_intro'].'</td><td class="td30"><img class="vm" src="'.$_G['style']['imgdir'].'/data_'.($setting['groupstatus'] ? 'valid':'invalid').'.gif"></td><td><a href="forum.php?mod=ajax&action=setnav&do='.($setting['groupstatus'] ? 'close':'open').'&type=group" onclick="showWindow(\'setnav\', this.href, \'get\', 0);return false;">'.($setting['groupstatus'] ? $lang['setting_functions_curscript_close']:$lang['setting_functions_curscript_open']).'</a></td>';
  1064. $modulehtml[] = '<td class="td25"><img src="'.STATICURL.'image/feed/follow_b.png"/></td><td class="td23">'.$lang['setting_functions_curscript_follow'].'</td><td width="370">'.$lang['setting_functions_curscript_follow_intro'].'</td><td class="td30"><img class="vm" src="'.$_G['style']['imgdir'].'/data_'.($setting['followstatus'] ? 'valid':'invalid').'.gif"></td><td><a href="forum.php?mod=ajax&action=setnav&do='.($setting['followstatus'] ? 'close':'open').'&type=follow" onclick="showWindow(\'setnav\', this.href, \'get\', 0);return false;">'.($setting['followstatus'] ? $lang['setting_functions_curscript_close']:$lang['setting_functions_curscript_open']).'</a></td>';
  1065. $modulehtml[] = '<td class="td25"><img src="'.STATICURL.'image/feed/collection_b.png"/></td><td class="td23">'.$lang['setting_functions_curscript_collection'].'</td><td width="370">'.$lang['setting_functions_curscript_collection_intro'].'</td><td class="td30"><img class="vm" src="'.$_G['style']['imgdir'].'/data_'.($setting['collectionstatus'] ? 'valid':'invalid').'.gif"></td><td><a href="forum.php?mod=ajax&action=setnav&do='.($setting['collectionstatus'] ? 'close':'open').'&type=collection" onclick="showWindow(\'setnav\', this.href, \'get\', 0);return false;">'.($setting['collectionstatus'] ? $lang['setting_functions_curscript_close']:$lang['setting_functions_curscript_open']).'</a></td>';
  1066. $modulehtml[] = '<td class="td25"><img src="'.STATICURL.'image/feed/guide_b.png"/></td><td class="td23">'.$lang['setting_functions_curscript_guide'].'</td><td width="370">'.$lang['setting_functions_curscript_guide_intro'].'</td><td class="td30"><img class="vm" src="'.$_G['style']['imgdir'].'/data_'.($setting['guidestatus'] ? 'valid':'invalid').'.gif"></td><td><a href="forum.php?mod=ajax&action=setnav&do='.($setting['guidestatus'] ? 'close':'open').'&type=guide" onclick="showWindow(\'setnav\', this.href, \'get\', 0);return false;">'.($setting['guidestatus'] ? $lang['setting_functions_curscript_close']:$lang['setting_functions_curscript_open']).'</a></td>';
  1067. $modulehtml[] = '<td class="td25"><img src="'.STATICURL.'image/feed/feed_b.png"/></td><td class="td23">'.$lang['setting_functions_curscript_feed'].'</td><td width="370">'.$lang['setting_functions_curscript_feed_intro'].'</td><td class="td30"><img class="vm" src="'.$_G['style']['imgdir'].'/data_'.($setting['feedstatus'] ? 'valid':'invalid').'.gif"></td><td><a href="forum.php?mod=ajax&action=setnav&do='.($setting['feedstatus'] ? 'close':'open').'&type=feed" onclick="showWindow(\'setnav\', this.href, \'get\', 0);return false;">'.($setting['feedstatus'] ? $lang['setting_functions_curscript_close']:$lang['setting_functions_curscript_open']).'</a></td>';
  1068. $modulehtml[] = '<td class="td25"><img src="'.STATICURL.'image/feed/blog_b.png"/></td><td class="td23">'.$lang['setting_functions_curscript_blog'].'</td><td width="370">'.$lang['setting_functions_curscript_blog_intro'].'</td><td class="td30"><img class="vm" src="'.$_G['style']['imgdir'].'/data_'.($setting['blogstatus'] ? 'valid':'invalid').'.gif"></td><td><a href="forum.php?mod=ajax&action=setnav&do='.($setting['blogstatus'] ? 'close':'open').'&type=blog" onclick="showWindow(\'setnav\', this.href, \'get\', 0);return false;">'.($setting['blogstatus'] ? $lang['setting_functions_curscript_close']:$lang['setting_functions_curscript_open']).'</a></td>';
  1069. $modulehtml[] = '<td class="td25"><img src="'.STATICURL.'image/feed/album_b.png"/></td><td class="td23">'.$lang['setting_functions_curscript_album'].'</td><td width="370">'.$lang['setting_functions_curscript_album_intro'].'</td><td class="td30"><img class="vm" src="'.$_G['style']['imgdir'].'/data_'.($setting['albumstatus'] ? 'valid':'invalid').'.gif"></td><td><a href="forum.php?mod=ajax&action=setnav&do='.($setting['albumstatus'] ? 'close':'open').'&type=album" onclick="showWindow(\'setnav\', this.href, \'get\', 0);return false;">'.($setting['albumstatus'] ? $lang['setting_functions_curscript_close']:$lang['setting_functions_curscript_open']).'</a></td>';
  1070. $modulehtml[] = '<td class="td25"><img src="'.STATICURL.'image/feed/share_b.png"/></td><td class="td23">'.$lang['setting_functions_curscript_share'].'</td><td width="370">'.$lang['setting_functions_curscript_share_intro'].'</td><td class="td30"><img class="vm" src="'.$_G['style']['imgdir'].'/data_'.($setting['sharestatus'] ? 'valid':'invalid').'.gif"></td><td><a href="forum.php?mod=ajax&action=setnav&do='.($setting['sharestatus'] ? 'close':'open').'&type=share" onclick="showWindow(\'setnav\', this.href, \'get\', 0);return false;">'.($setting['sharestatus'] ? $lang['setting_functions_curscript_close']:$lang['setting_functions_curscript_open']).'</a></td>';
  1071. $modulehtml[] = '<td class="td25"><img src="'.STATICURL.'image/feed/doing_b.png"/></td><td class="td23">'.$lang['setting_functions_curscript_doing'].'</td><td width="370">'.$lang['setting_functions_curscript_doing_intro'].'</td><td class="td30"><img class="vm" src="'.$_G['style']['imgdir'].'/data_'.($setting['doingstatus'] ? 'valid':'invalid').'.gif"></td><td><a href="forum.php?mod=ajax&action=setnav&do='.($setting['doingstatus'] ? 'close':'open').'&type=doing" onclick="showWindow(\'setnav\', this.href, \'get\', 0);return false;">'.($setting['doingstatus'] ? $lang['setting_functions_curscript_close']:$lang['setting_functions_curscript_open']).'</a></td>';
  1072. $modulehtml[] = '<td class="td25"><img src="'.STATICURL.'image/feed/wall_b.png"/></td><td class="td23">'.$lang['setting_functions_curscript_message'].'</td><td width="370">'.$lang['setting_functions_curscript_message_intro'].'</td><td class="td30"><img class="vm" src="'.$_G['style']['imgdir'].'/data_'.($setting['wallstatus'] ? 'valid':'invalid').'.gif"></td><td><a href="forum.php?mod=ajax&action=setnav&do='.($setting['wallstatus'] ? 'close':'open').'&type=wall" onclick="showWindow(\'setnav\', this.href, \'get\', 0);return false;">'.($setting['wallstatus'] ? $lang['setting_functions_curscript_close']:$lang['setting_functions_curscript_open']).'</a></td>';
  1073. $modulehtml[] = '<td class="td25"><img src="'.STATICURL.'image/feed/ranklist_b.png"/></td><td class="td23">'.$lang['setting_functions_curscript_ranklist'].'</td><td width="370">'.$lang['setting_functions_curscript_ranklist_intro'].'</td><td class="td30"><img class="vm" src="'.$_G['style']['imgdir'].'/data_'.($setting['rankliststatus'] ? 'valid':'invalid').'.gif"></td><td><a href="forum.php?mod=ajax&action=setnav&do='.($setting['rankliststatus'] ? 'close':'open').'&type=ranklist" onclick="showWindow(\'setnav\', this.href, \'get\', 0);return false;">'.($setting['rankliststatus'] ? $lang['setting_functions_curscript_close']:$lang['setting_functions_curscript_open']).'</a></td>';
  1074. echo '<tr>'.implode('</tr><tr>', $modulehtml).'</tr>';
  1075. showtablefooter();
  1076. showtips('setting_tips', 'mod_tips', $_GET['anchor'] == 'mod');
  1077. showtableheader('', 'nobottom', 'id="mod"'.($_GET['anchor'] != 'mod' ? ' style="display: none"' : ''));
  1078. showsetting('setting_functions_mod_updatestat', 'settingnew[updatestat]', $setting['updatestat'], 'radio');
  1079. showsetting('setting_functions_mod_status', 'settingnew[modworkstatus]', $setting['modworkstatus'], 'radio');
  1080. showsetting('setting_functions_archiver', 'settingnew[archiver]', $setting['archiver'], 'radio', 0, 1);
  1081. showsetting('setting_functions_archiverredirect', 'settingnew[archiverredirect]', $setting['archiverredirect'], 'radio');
  1082. showtagfooter('tbody');
  1083. showsetting('setting_functions_mod_maxmodworksmonths', 'settingnew[maxmodworksmonths]', $setting['maxmodworksmonths'], 'text');
  1084. showsetting('setting_functions_mod_losslessdel', 'settingnew[losslessdel]', $setting['losslessdel'], 'text');
  1085. showsetting('setting_functions_mod_reasons', 'settingnew[modreasons]', $setting['modreasons'], 'textarea');
  1086. showsetting('setting_functions_user_reasons', 'settingnew[userreasons]', $setting['userreasons'], 'textarea');
  1087. showsetting('setting_functions_mod_bannedmessages', array('settingnew[bannedmessages]', array(
  1088. $lang['setting_functions_mod_bannedmessages_thread'],
  1089. $lang['setting_functions_mod_bannedmessages_avatar'],
  1090. $lang['setting_functions_mod_bannedmessages_signature'])), $setting['bannedmessages'], 'binmcheckbox');
  1091. showsetting('setting_functions_mod_warninglimit', 'settingnew[warninglimit]', $setting['warninglimit'], 'text');
  1092. showsetting('setting_functions_mod_warningexpiration', 'settingnew[warningexpiration]', $setting['warningexpiration'], 'text');
  1093. showsetting('setting_functions_mod_rewardexpiration', 'settingnew[rewardexpiration]', $setting['rewardexpiration'], 'text');
  1094. showsetting('setting_functions_mod_moddetail', 'settingnew[moddetail]', $setting['moddetail'], 'radio');
  1095. showtablefooter();
  1096. $setting['heatthread'] = dunserialize($setting['heatthread']);
  1097. $setting['recommendthread'] = dunserialize($setting['recommendthread']);
  1098. $setting['allowpostcomment'] = dunserialize($setting['allowpostcomment']);
  1099. $count = count(explode(',', $setting['heatthread']['iconlevels']));
  1100. $heatthreadicons = '';
  1101. for($i = 0;$i < $count;$i++) {
  1102. $heatthreadicons .= '<img src="static/image/common/hot_'.($i + 1).'.gif" /> ';
  1103. }
  1104. $count = count(explode(',', $setting['recommendthread']['iconlevels']));
  1105. $recommendicons = '';
  1106. for($i = 0;$i < $count;$i++) {
  1107. $recommendicons .= '<img src="static/image/common/recommend_'.($i + 1).'.gif" /> ';
  1108. }
  1109. $setting['commentitem'] = explode("\t", $setting['commentitem']);
  1110. foreach($setting['commentitem'] as $k => $v) {
  1111. $tmp = explode(chr(0).chr(0).chr(0), $v);
  1112. if(count($tmp) > 1) {
  1113. $setting['commentitem'][$tmp[0]] = $tmp[1];
  1114. }
  1115. }
  1116. showtips('setting_functions_heatthread_tips', 'heatthread_tips', $_GET['anchor'] == 'heatthread');
  1117. showtableheader('', 'nobottom', 'id="heatthread"'.($_GET['anchor'] != 'heatthread' ? ' style="display: none"' : ''));
  1118. showsetting('setting_functions_heatthread_period', 'settingnew[heatthread][period]', $setting['heatthread']['period'], 'text');
  1119. showsetting('setting_functions_heatthread_iconlevels', '', '', '<input name="settingnew[heatthread][iconlevels]" class="txt" type="text" value="'.$setting['heatthread']['iconlevels'].'" /><br />'.$heatthreadicons);
  1120. showtablefooter();
  1121. showtips('setting_functions_recommend_tips', 'recommend_tips', $_GET['anchor'] == 'recommend');
  1122. showtableheader('', 'nobottom', 'id="recommend"'.($_GET['anchor'] != 'recommend' ? ' style="display: none"' : ''));
  1123. showsetting('setting_functions_recommend_status', 'settingnew[recommendthread][status]', $setting['recommendthread']['status'], 'radio', 0, 1);
  1124. showsetting('setting_functions_recommend_addtext', 'settingnew[recommendthread][addtext]', $setting['recommendthread']['addtext'], 'text');
  1125. showsetting('setting_functions_recommend_subtracttext', 'settingnew[recommendthread][subtracttext]', $setting['recommendthread']['subtracttext'], 'text');
  1126. showsetting('setting_functions_recommend_daycount', 'settingnew[recommendthread][daycount]', intval($setting['recommendthread']['daycount']), 'text');
  1127. showsetting('setting_functions_recommend_ownthread', 'settingnew[recommendthread][ownthread]', $setting['recommendthread']['ownthread'], 'radio');
  1128. showsetting('setting_functions_recommend_iconlevels', '', '', '<input name="settingnew[recommendthread][iconlevels]" class="txt" type="text" value="'.$setting['recommendthread']['iconlevels'].'" /><br />'.$recommendicons);
  1129. showtablefooter();
  1130. showtableheader('', 'nobottom', 'id="comment"'.($_GET['anchor'] != 'comment' ? ' style="display: none"' : ''));
  1131. showsetting('setting_functions_comment_allow', array('settingnew[allowpostcomment]', array(
  1132. array(1, $lang['setting_functions_comment_allow_1'], 'commentextra'),
  1133. array(2, $lang['setting_functions_comment_allow_2']))), $setting['allowpostcomment'], 'mcheckbox');
  1134. showsetting('setting_functions_comment_number', 'settingnew[commentnumber]', $setting['commentnumber'], 'text');
  1135. showsetting('setting_functions_comment_postself', 'settingnew[commentpostself]', $setting['commentpostself'], 'radio');
  1136. showtagheader('tbody', 'commentextra', in_array(1, $setting['allowpostcomment']));
  1137. showsetting('setting_functions_comment_firstpost', 'settingnew[commentfirstpost]', $setting['commentfirstpost'], 'radio');
  1138. showsetting('setting_functions_comment_commentitem_0', 'settingnew[commentitem][0]', $setting['commentitem'][0], 'textarea');
  1139. showsetting('setting_functions_comment_commentitem_1', 'settingnew[commentitem][1]', $setting['commentitem'][1], 'textarea');
  1140. showsetting('setting_functions_comment_commentitem_2', 'settingnew[commentitem][2]', $setting['commentitem'][2], 'textarea');
  1141. showsetting('setting_functions_comment_commentitem_3', 'settingnew[commentitem][3]', $setting['commentitem'][3], 'textarea');
  1142. showsetting('setting_functions_comment_commentitem_4', 'settingnew[commentitem][4]', $setting['commentitem'][4], 'textarea');
  1143. showsetting('setting_functions_comment_commentitem_5', 'settingnew[commentitem][5]', $setting['commentitem'][5], 'textarea');
  1144. showtagfooter('tbody');
  1145. if(is_array($_G['setting']['threadplugins'])) foreach($_G['setting']['threadplugins'] as $tpid => $data) {
  1146. showsetting($data['name'].cplang('setting_functions_comment_commentitem_threadplugin'), 'settingnew[commentitem]['.$tpid.']', $setting['commentitem'][$tpid], 'textarea', '', 0, cplang('setting_functions_comment_commentitem_threadplugin_comment'));
  1147. }
  1148. showtablefooter();
  1149. showtableheader('', 'nobottom', 'id="threadexp"'.($_GET['anchor'] != 'threadexp' ? ' style="display: none"' : ''));
  1150. showsetting('setting_functions_threadexp_repliesrank', 'settingnew[repliesrank]', $setting['repliesrank'], 'radio');
  1151. showsetting('setting_functions_threadexp_blacklist', 'settingnew[threadblacklist]', $setting['threadblacklist'], 'radio');
  1152. showsetting('setting_functions_threadexp_hotreplies', 'settingnew[threadhotreplies]', $setting['threadhotreplies'], 'text');
  1153. showsetting('setting_functions_threadexp_filter', 'settingnew[threadfilternum]', $setting['threadfilternum'], 'text');
  1154. showsetting('setting_functions_threadexp_nofilteredpost', 'settingnew[nofilteredpost]', $setting['nofilteredpost'], 'radio');
  1155. showsetting('setting_functions_threadexp_hidefilteredpost', 'settingnew[hidefilteredpost]', $setting['hidefilteredpost'], 'radio');
  1156. showsetting('setting_functions_threadexp_filterednovote', 'settingnew[filterednovote]', $setting['filterednovote'], 'radio');
  1157. showtablefooter();
  1158. showtips('setting_tips', 'other_tips', $_GET['anchor'] == 'other');
  1159. showtableheader('', 'nobottom', 'id="other"'.($_GET['anchor'] != 'other' ? ' style="display: none"' : ''));
  1160. showsetting('setting_functions_other_pwdsafety', 'settingnew[pwdsafety]', $setting['pwdsafety'], 'radio');
  1161. showsetting('setting_functions_other_uidlogin', 'settingnew[uidlogin]', $setting['uidlogin'], 'radio');
  1162. showsetting('setting_functions_other_autoidselect', 'settingnew[autoidselect]', $setting['autoidselect'], 'radio');
  1163. showsetting('setting_functions_other_rssstatus', 'settingnew[rssstatus]', $setting['rssstatus'], 'radio');
  1164. showsetting('setting_functions_other_rssttl', 'settingnew[rssttl]', $setting['rssttl'], 'text');
  1165. showsetting('setting_functions_other_oltimespan', 'settingnew[oltimespan]', $setting['oltimespan'], 'text');
  1166. showsetting('setting_functions_other_debug', 'settingnew[debug]', $setting['debug'], 'radio');
  1167. showsetting('setting_functions_other_onlyacceptfriendpm', 'settingnew[onlyacceptfriendpm]', $setting['onlyacceptfriendpm'], 'radio');
  1168. showsetting('setting_functions_other_pmreportuser', 'settingnew[pmreportuser]', $setting['pmreportuser'], 'text');
  1169. showsetting('setting_functions_other_at_anyone', 'settingnew[at_anyone]', $setting['at_anyone'], 'radio');
  1170. showsetting('setting_functions_other_chatpmrefreshtime', 'settingnew[chatpmrefreshtime]', $setting['chatpmrefreshtime'], 'text');
  1171. showsetting('setting_functions_other_collectionteamworkernum', 'settingnew[collectionteamworkernum]', $setting['collectionteamworkernum'], 'text');
  1172. showsetting('setting_functions_other_shortcut', 'settingnew[shortcut]', $setting['shortcut'], 'text');
  1173. showsetting('setting_functions_other_closeforumorderby', 'settingnew[closeforumorderby]', $setting['closeforumorderby'], 'radio');
  1174. showsetting('setting_functions_other_disableipnotice', 'settingnew[disableipnotice]', $setting['disableipnotice'], 'radio');
  1175. showsetting('setting_functions_other_darkroom', 'settingnew[darkroom]', $setting['darkroom'], 'radio');
  1176. showsetting('setting_functions_other_global_sign', 'settingnew[globalsightml]', $setting['globalsightml'], 'textarea');
  1177. showtablefooter();
  1178. $setting['guide'] = unserialize($setting['guide']);
  1179. showtableheader('', 'nobottom', 'id="guide"'.($_GET['anchor'] != 'guide' ? ' style="display: none"' : ''));
  1180. showsetting('setting_functions_heatthread_guidelimit', 'settingnew[heatthread][guidelimit]', $setting['heatthread']['guidelimit'], 'text');
  1181. $dtarray = array(
  1182. array(604800, $lang['7_day']),
  1183. array(1209600, $lang['14_day']),
  1184. array(2592000, $lang['30_day']),
  1185. array(7776000, $lang['90_day'])
  1186. );
  1187. showsetting('setting_functions_guide_hotdt', array('settingnew[guide][hotdt]', $dtarray), $setting['guide']['hotdt'], 'select');
  1188. showsetting('setting_functions_guide_digestdt', array('settingnew[guide][digestdt]', $dtarray), $setting['guide']['digestdt'], 'select');
  1189. showtablefooter();
  1190. showtableheader('', 'nobottom', 'id="activity"'.($_GET['anchor'] != 'activity' ? ' style="display: none"' : ''));
  1191. showsetting('setting_functions_activity_type', 'settingnew[activitytype]', $setting['activitytype'], 'textarea');
  1192. $varname = array('settingnew[activityfield]', array(), 'isfloat');
  1193. $ignorearray = array('birthyear', 'birthmonth', 'resideprovince', 'birthprovince', 'residedist', 'residecommunity', 'constellation', 'zodiac');
  1194. foreach(C::t('common_member_profile_setting')->fetch_all_by_available(1) as $row) {
  1195. if(in_array($row['fieldid'], $ignorearray)) continue;
  1196. $varname[1][] = array($row['fieldid'], $row['title'], $row['title']);
  1197. }
  1198. $activityfield = dunserialize($_G['setting']['activityfield']);
  1199. showsetting('setting_functions_activity_field', $varname, $activityfield, 'omcheckbox');
  1200. showsetting('setting_functions_activity_extnum', 'settingnew[activityextnum]', $setting['activityextnum'], 'text');
  1201. $_G['setting']['creditstrans'] = array();
  1202. $setting['extcredits'] = dunserialize($setting['extcredits']);
  1203. for($i = 0; $i <= 8; $i++) {
  1204. $_G['setting']['creditstrans'] .= '<option value="'.$i.'" '.($i == $setting['activitycredit'] ? 'selected' : '').'>'.($i ? 'extcredits'.$i.($setting['extcredits'][$i]['title'] ? '('.$setting['extcredits'][$i]['title'].')' : '') : $lang['none']).'</option>';
  1205. }
  1206. showsetting('setting_functions_activity_credit', '', '' ,'<select name="settingnew[activitycredit]">'.$_G['setting']['creditstrans'].'</select>');
  1207. showsetting('setting_functions_activity_pp', 'settingnew[activitypp]', $setting['activitypp'], 'text');
  1208. showtablefooter();
  1209. showtableheader('', 'notop');
  1210. if($_GET['anchor'] != 'curscript') {
  1211. showsubmit('settingsubmit');
  1212. }
  1213. showtablefooter();
  1214. showformfooter();
  1215. exit;
  1216. } elseif($operation == 'permissions') {
  1217. include_once libfile('function/forumlist');
  1218. $setting['allowviewuserthread'] = dunserialize($setting['allowviewuserthread']);
  1219. $checkallselect = $setting['allowviewuserthread']['fids'] ? '' : ' selected';
  1220. $forumselect = '<select name="settingnew[allowviewuserthread][fids][]" multiple="multiple" size="10"><option value=""'.$checkallselect.'>'.cplang('setting_permissions_allowviewuserthread_forum_group').'</option>'.forumselect(FALSE, 0, 0, TRUE).'</select>';
  1221. if($setting['allowviewuserthread']['fids']) {
  1222. foreach($setting['allowviewuserthread']['fids'] as $v) {
  1223. $forumselect = str_replace('<option value="'.$v.'">', '<option value="'.$v.'" selected>', $forumselect);
  1224. }
  1225. }
  1226. showtableheader();
  1227. showsetting('setting_permissions_allowviewuserthread', 'settingnew[allowviewuserthread][allow]', $setting['allowviewuserthread']['allow'], 'radio', 0, 1);
  1228. showsetting('setting_permissions_allowviewuserthread_fids', '', '', $forumselect);
  1229. showtagfooter('tbody');
  1230. showsetting('setting_permissions_allowmoderatingthread', 'settingnew[allowmoderatingthread]', $setting['allowmoderatingthread'], 'radio');
  1231. showsetting('setting_permissions_memliststatus', 'settingnew[memliststatus]', $setting['memliststatus'], 'radio');
  1232. showsetting('setting_permissions_minpostsize', 'settingnew[minpostsize]', $setting['minpostsize'], 'text');
  1233. showsetting('setting_permissions_minpostsize_mobile', 'settingnew[minpostsize_mobile]', $setting['minpostsize_mobile'], 'text');
  1234. showsetting('setting_permissions_maxpostsize', 'settingnew[maxpostsize]', $setting['maxpostsize'], 'text');
  1235. showsetting('setting_permissions_alloweditpost', array('settingnew[alloweditpost]', array(
  1236. cplang('thread_general'),
  1237. cplang('thread_poll'),
  1238. cplang('thread_trade'),
  1239. cplang('thread_reward'),
  1240. cplang('thread_activity'),
  1241. cplang('thread_debate')
  1242. )), $setting['alloweditpost'], 'binmcheckbox');
  1243. showsetting('setting_permissions_post_append', 'settingnew[postappend]', $setting['postappend'], 'radio');
  1244. showsetting('setting_permissions_maxpolloptions', 'settingnew[maxpolloptions]', $setting['maxpolloptions'], 'text');
  1245. showsetting('setting_permissions_editby', 'settingnew[editedby]', $setting['editedby'], 'radio');
  1246. showtitle('nav_setting_rate');
  1247. showsetting('setting_permissions_karmaratelimit', 'settingnew[karmaratelimit]', $setting['karmaratelimit'], 'text');
  1248. showsetting('setting_permissions_modratelimit', 'settingnew[modratelimit]', $setting['modratelimit'], 'radio');
  1249. showsetting('setting_permissions_dupkarmarate', 'settingnew[dupkarmarate]', $setting['dupkarmarate'], 'radio');
  1250. showsetting('setting_permissions_editperdel', 'settingnew[editperdel]', $setting['editperdel'], 'radio');
  1251. showsetting('setting_permissions_hideexpiration', 'settingnew[hideexpiration]', $setting['hideexpiration'], 'text');
  1252. } elseif($operation == 'credits') {
  1253. $rules = array();
  1254. foreach(C::t('common_credit_rule')->fetch_all_rule() as $value) {
  1255. $rules[$value['rid']] = $value;
  1256. }
  1257. echo '<div id="base"'.($_GET['anchor'] != 'base' ? ' style="display: none"' : '').'>';
  1258. $setting['extcredits'] = dunserialize($setting['extcredits']);
  1259. $setting['initcredits'] = explode(',', $setting['initcredits']);
  1260. $extcreditsbtn = '';
  1261. for($i = 1; $i <= 8; $i++) {
  1262. $extcredittitle = $_G['setting']['extcredits'][$i]['title'] ? $_G['setting']['extcredits'][$i]['title'] : cplang('setting_credits_formula_extcredits').$i;
  1263. $resultstr .= 'result = result.replace(/extcredits'.$i.'/g, \'<u>'.str_replace("'", "\'", $extcredittitle).'</u>\');'."\r\n";
  1264. $extcreditsbtn .= '<a href="###" onclick="creditinsertunit(\'extcredits'.$i.'\')">'.$extcredittitle.'</a> &nbsp;';
  1265. }
  1266. $formulareplace .= '\'<u>'.cplang('setting_credits_formula_digestposts').'</u>\',\'<u>'.cplang('setting_credits_formula_posts').'</u>\'';
  1267. showtableheader('setting_credits_extended', 'fixpadding');
  1268. $title = $creditsetting = array();
  1269. for($i = 1; $i <= 8; $i++) {
  1270. if($i == 1) {
  1271. $title[] = '<font style="font:12px normal normal">'.cplang('setting_credits_available').'</font>';
  1272. $creditsetting[0] = '<td class="td23">'.cplang('credits_title').'</td>';
  1273. $creditsetting[2] = '<td class="td23">'.cplang('credits_img').'</td>';
  1274. $creditsetting[3] = '<td class="td23">'.cplang('credits_unit').'</td>';
  1275. $creditsetting[4] = '<td class="td23">'.cplang('setting_credits_init').'</td>';
  1276. $creditsetting[5] = '<td class="td23">'.cplang('setting_credits_lower_limit').'</td>';
  1277. $creditsetting[6] = '<td class="td23">'.cplang('setting_credits_ratio').'</td>';
  1278. $creditsetting[7] = '<td class="td23">'.cplang('credits_inport').'</td>';
  1279. $creditsetting[8] = '<td class="td23">'.cplang('credits_import').'</td>';
  1280. }
  1281. $title[] = "<input class=\"checkbox\" type=\"checkbox\" name=\"settingnew[extcredits][$i][available]\" value=\"1\" ".($setting['extcredits'][$i]['available'] ? 'checked' : '')." />extcredits$i";
  1282. $creditsetting[0] .= "<td class=\"td32\"><input type=\"text\" class=\"txt\" name=\"settingnew[extcredits][$i][title]\" value=\"{$setting['extcredits'][$i]['title']}\"></td>";
  1283. $creditsetting[2] .= "<td class=\"td32\"><input type=\"text\" class=\"txt\" style=\"margin-right:0\" name=\"settingnew[extcredits][$i][img]\" value=\"{$setting['extcredits'][$i]['img']}\">".($setting['extcredits'][$i]['img'] ? ' <img src="'.$setting['extcredits'][$i]['img'].'" class="vmiddle" />' : '')."</td>";
  1284. $creditsetting[3] .= "<td class=\"td32\"><input type=\"text\" class=\"txt\" name=\"settingnew[extcredits][$i][unit]\" value=\"{$setting['extcredits'][$i]['unit']}\"></td>";
  1285. $creditsetting[4] .= "<td class=\"td32\"><input type=\"text\" class=\"txt\" name=\"settingnew[initcredits][$i]\" value=\"".intval($setting['initcredits'][$i])."\"></td>";
  1286. $creditsetting[5] .= "<td class=\"td32\"><input type=\"text\" class=\"txt\" name=\"settingnew[lowerlimit][$i]\" value=\"{$_G['setting']['creditspolicy']['lowerlimit'][$i]}\"></td>";
  1287. $creditsetting[6] .= "<td class=\"td32\"><input type=\"text\" class=\"txt\" name=\"settingnew[extcredits][$i][ratio]\" value=\"".(float)$setting['extcredits'][$i]['ratio']."\" onkeyup=\"if(this.value != '0' && \$('allowexchangeout$i').checked == false && \$('allowexchangein$i').checked == false) {\$('allowexchangeout$i').checked = true;\$('allowexchangein$i').checked = true;} else if(this.value == '0') {\$('allowexchangeout$i').checked = false;\$('allowexchangein$i').checked = false;}\"></td>";
  1288. $creditsetting[7] .= "<td class=\"td32\"><input class=\"checkbox\" type=\"checkbox\" name=\"settingnew[extcredits][$i][allowexchangeout]\" value=\"1\" ".($setting['extcredits'][$i]['allowexchangeout'] ? 'checked' : '')." id=\"allowexchangeout$i\"></td>";
  1289. $creditsetting[8] .= "<td class=\"td32\"><input class=\"checkbox\" type=\"checkbox\" name=\"settingnew[extcredits][$i][allowexchangein]\" value=\"1\" ".($setting['extcredits'][$i]['allowexchangein'] ? 'checked' : '')." id=\"allowexchangein$i\"></td>";
  1290. }
  1291. showsubtitle($title, 'header sml');
  1292. echo '<tr>'.implode('</tr><tr>', $creditsetting).'</tr>';
  1293. showtablerow('', 'colspan="9" class="lineheight"', $lang['setting_credits_extended_comment']);
  1294. showtableheader('setting_credits');
  1295. ?>
  1296. <script type="text/JavaScript">
  1297. function isUndefined(variable) {
  1298. return typeof variable == 'undefined' ? true : false;
  1299. }
  1300. function creditinsertunit(text, textend) {
  1301. insertunit($('creditsformula'), text, textend);
  1302. formulaexp();
  1303. }
  1304. var formulafind = new Array('digestposts', 'posts');
  1305. var formulareplace = new Array(<?php echo $formulareplace?>);
  1306. function formulaexp() {
  1307. var result = $('creditsformula').value;
  1308. <?php
  1309. echo $resultstr;
  1310. echo 'result = result.replace(/digestposts/g, \'<u>'.$lang['setting_credits_formula_digestposts'].'</u>\');';
  1311. echo 'result = result.replace(/posts/g, \'<u>'.$lang['setting_credits_formula_posts'].'</u>\');';
  1312. echo 'result = result.replace(/threads/g, \'<u>'.$lang['setting_credits_formula_threads'].'</u>\');';
  1313. echo 'result = result.replace(/oltime/g, \'<u>'.$lang['setting_credits_formula_oltime'].'</u>\');';
  1314. echo 'result = result.replace(/friends/g, \'<u>'.$lang['setting_credits_formula_friends'].'</u>\');';
  1315. echo 'result = result.replace(/doings/g, \'<u>'.$lang['setting_credits_formula_doings'].'</u>\');';
  1316. echo 'result = result.replace(/blogs/g, \'<u>'.$lang['setting_credits_formula_blogs'].'</u>\');';
  1317. echo 'result = result.replace(/albums/g, \'<u>'.$lang['setting_credits_formula_albums'].'</u>\');';
  1318. echo 'result = result.replace(/sharings/g, \'<u>'.$lang['setting_credits_formula_sharings'].'</u>\');';
  1319. ?>
  1320. $('formulapermexp').innerHTML = result;
  1321. }
  1322. </script>
  1323. <?php
  1324. print <<<EOF
  1325. <tr>
  1326. <td class="td27" colspan="2">$lang[setting_credits_formula]:</td>
  1327. </tr>
  1328. <tr>
  1329. <td colspan="2">
  1330. <div class="extcredits">
  1331. $extcreditsbtn
  1332. <a href="###" onclick="creditinsertunit(' posts ')">$lang[setting_credits_formula_posts]</a>&nbsp;
  1333. <a href="###" onclick="creditinsertunit(' threads ')">$lang[setting_credits_formula_threads]</a>&nbsp;
  1334. <a href="###" onclick="creditinsertunit(' digestposts ')">$lang[setting_credits_formula_digestposts]</a>&nbsp;
  1335. <a href="###" onclick="creditinsertunit(' oltime ')">$lang[setting_credits_formula_oltime]</a>&nbsp;
  1336. <a href="###" onclick="creditinsertunit(' friends ')">$lang[setting_credits_formula_friends]</a>&nbsp;
  1337. <a href="###" onclick="creditinsertunit(' doings ')">$lang[setting_credits_formula_doings]</a>&nbsp;
  1338. <a href="###" onclick="creditinsertunit(' blogs ')">$lang[setting_credits_formula_blogs]</a>&nbsp;
  1339. <a href="###" onclick="creditinsertunit(' albums ')">$lang[setting_credits_formula_albums]</a>&nbsp;
  1340. <a href="###" onclick="creditinsertunit(' sharings ')">$lang[setting_credits_formula_sharings]</a>&nbsp;
  1341. <a href="###" onclick="creditinsertunit(' + ')">&nbsp;+&nbsp;</a>&nbsp;
  1342. <a href="###" onclick="creditinsertunit(' - ')">&nbsp;-&nbsp;</a>&nbsp;
  1343. <a href="###" onclick="creditinsertunit(' * ')">&nbsp;*&nbsp;</a>&nbsp;
  1344. <a href="###" onclick="creditinsertunit(' / ')">&nbsp;/&nbsp;</a>&nbsp;
  1345. <a href="###" onclick="creditinsertunit(' (', ') ')">&nbsp;(&nbsp;)&nbsp;</a>&nbsp;
  1346. </div>
  1347. <div id="formulapermexp" class="margintop marginbot diffcolor2">$formulapermexp</div>
  1348. <textarea name="settingnew[creditsformula]" id="creditsformula" class="marginbot" style="width:80%" rows="3" onkeyup="formulaexp()" onkeydown="textareakey(this, event)">$setting[creditsformula]</textarea>
  1349. <script type="text/JavaScript">formulaexp()</script>
  1350. <br /><span class="smalltxt">$lang[setting_credits_formula_comment]</span>
  1351. </td>
  1352. </tr>
  1353. EOF;
  1354. $setting['creditstrans'] = explode(',', $setting['creditstrans']);
  1355. $_G['setting']['creditstrans'] = array();
  1356. for($si = 0; $si < 13; $si++) {
  1357. $_G['setting']['creditstrans'][$si] = '';
  1358. for($i = 0; $i <= 8; $i++) {
  1359. $_G['setting']['creditstrans'][$si] .= '<option value="'.$i.'" '.($i == $setting['creditstrans'][$si] ? 'selected' : '').'>'.($i ? 'extcredits'.$i.($setting['extcredits'][$i]['title'] ? '('.$setting['extcredits'][$i]['title'].')' : '') : ($si > 0 ? ($si != 11 ? $lang['setting_credits_trans_used'] : $lang['setting_credits_trans_credits']) : $lang['none'])).'</option>';
  1360. }
  1361. }
  1362. showsetting('setting_credits_trans', '', '', '<select onchange="if(this.value > 0) {$(\'creditstransextra\').style.display = \'\';} else {$(\'creditstransextra\').style.display = \'none\';}" name="settingnew[creditstrans][0]">'.$_G['setting']['creditstrans'][0].'</select>');
  1363. showtagheader('tbody', 'creditstransextra', $setting['creditstrans'][0], 'sub');
  1364. showsetting('setting_credits_trans9', '', '' ,'<select name="settingnew[creditstrans][9]">'.$_G['setting']['creditstrans'][9].'</select>');
  1365. showsetting('setting_credits_trans1', '', '' ,'<select name="settingnew[creditstrans][1]">'.$_G['setting']['creditstrans'][1].'</select>');
  1366. showsetting('setting_credits_trans2', '', '' ,'<select name="settingnew[creditstrans][2]">'.$_G['setting']['creditstrans'][2].'</select>');
  1367. showsetting('setting_credits_trans3', '', '' ,'<select name="settingnew[creditstrans][3]">'.$_G['setting']['creditstrans'][3].'</select>');
  1368. showhiddenfields(array('settingnew[creditstrans][4]' => 0));
  1369. showsetting('setting_credits_trans5', '', '' ,'<select name="settingnew[creditstrans][5]"><option value="-1">'.$lang['setting_credits_trans5_none'].'</option>'.$_G['setting']['creditstrans'][5].'</select>');
  1370. showsetting('setting_credits_trans6', '', '' ,'<select name="settingnew[creditstrans][6]">'.$_G['setting']['creditstrans'][6].'</select>');
  1371. showsetting('setting_credits_trans7', '', '' ,'<select name="settingnew[creditstrans][7]">'.$_G['setting']['creditstrans'][7].'</select>');
  1372. $setting['report_reward'] = dunserialize($setting['report_reward']);
  1373. showsetting('setting_credits_trans10', '', '' ,'<select name="settingnew[creditstrans][10]">'.$_G['setting']['creditstrans'][10].'</select>');
  1374. showsetting('setting_credits_trans8', '', '' ,'<select name="settingnew[creditstrans][8]">'.$_G['setting']['creditstrans'][8].'</select><br \><br \>'.cplang('report_reward_min').': <input type="text" size="3" name="settingnew[report_reward][min]" value="'.$setting['report_reward']['min'].'">&nbsp;&nbsp;'.cplang('report_reward_max').': <input type="text" size="3" name="settingnew[report_reward][max]" value="'.$setting['report_reward']['max'].'">&nbsp;&nbsp;<br \>'.cplang('report_reward_comment'));
  1375. showsetting('setting_credits_trans11', '', '' ,'<select name="settingnew[creditstrans][11]">'.$_G['setting']['creditstrans'][11].'</select>');
  1376. showsetting('setting_credits_trans12', '', '' ,'<select name="settingnew[creditstrans][12]">'.$_G['setting']['creditstrans'][12].'</select>');
  1377. showtagfooter('tbody');
  1378. showsetting('setting_credits_tax', 'settingnew[creditstax]', $setting['creditstax'], 'text');
  1379. showsetting('setting_credits_mintransfer', 'settingnew[transfermincredits]', $setting['transfermincredits'], 'text');
  1380. showsetting('setting_credits_minexchange', 'settingnew[exchangemincredits]', $setting['exchangemincredits'], 'text');
  1381. showsetting('setting_credits_maxincperthread', 'settingnew[maxincperthread]', $setting['maxincperthread'], 'text');
  1382. showsetting('setting_credits_maxchargespan', 'settingnew[maxchargespan]', $setting['maxchargespan'], 'text');
  1383. showtablefooter();
  1384. echo '</div>';
  1385. showtableheader();
  1386. } elseif($operation == 'mail' && $isfounder) {
  1387. $setting['mail'] = dunserialize($setting['mail']);
  1388. $passwordmask = $setting['mail']['auth_password'] ? $setting['mail']['auth_password']{0}.'********'.substr($setting['mail']['auth_password'], -2) : '';
  1389. showtableheader('', '', 'id="mailsetting"'.($_GET['anchor'] != 'setting' ? ' style="display: none"' : ''));
  1390. showsetting('setting_mail_setting_send', array('settingnew[mail][mailsend]', array(
  1391. array(1, $lang['setting_mail_setting_send_1'], array('hidden1' => 'none', 'hidden2' => 'none')),
  1392. array(2, $lang['setting_mail_setting_send_2'], array('hidden1' => 'none', 'hidden2' => '')),
  1393. array(3, $lang['setting_mail_setting_send_3'], array('hidden1' => '', 'hidden2' => 'none'))
  1394. )), $setting['mail']['mailsend'], 'mradio');
  1395. $sendtype = $setting['mail']['mailsend'] == 2 ? 0 : 1;
  1396. showtagheader('tbody', 'hidden1', $setting['mail']['mailsend'] == 3, 'sub');
  1397. echo <<<EOF
  1398. <tr><td colspan="2" style="border-top:0px dotted #DEEFFB;">
  1399. <script type="text/JavaScript">
  1400. var rowtypedata = [];
  1401. function setrowtypedata(sendtype) {
  1402. if(sendtype) {
  1403. rowtypedata = [
  1404. [
  1405. [1,'', 'td25'],
  1406. [1,'<input type="text" class="txt" name="newsmtp[server][]" style="width: 90%;">', 'td28'],
  1407. [1,'<input type="text" class="txt" name="newsmtp[port][]" value="25">', 'td28'],
  1408. [1,'<input type="checkbox" name="newsmtp[auth][]" value="1">', 'td25'],
  1409. [1,'<input type="text" class="txt" name="newsmtp[from][]" style="width: 90%;">'],
  1410. [1,'<input type="text" class="txt" name="newsmtp[auth_username][]" style="width: 90%;">'],
  1411. [1,'<input type="text" class="txt" name="newsmtp[auth_password][]" style="width: 90%;">'],
  1412. ]
  1413. ];
  1414. } else {
  1415. rowtypedata = [
  1416. [
  1417. [1,'', 'td25'],
  1418. [1,'<input type="text" class="txt" name="newsmtp[server][]" style="width: 90%;">', 'td28'],
  1419. [1,'<input type="text" class="txt" name="newsmtp[port][]" value="25">', 'td28']
  1420. ]
  1421. ];
  1422. }
  1423. }
  1424. setrowtypedata($sendtype);
  1425. </script>
  1426. <table style="margin-top: 0px;" class="tb tb2">
  1427. <tr class="header">
  1428. <th class="td25">$lang[delete]</th>
  1429. <th class="td28">$lang[setting_mail_setting_server]</th>
  1430. <th class="td28">$lang[setting_mail_setting_port]</th>
  1431. </tr>
  1432. EOF;
  1433. foreach($setting['mail']['smtp'] as $id => $smtp) {
  1434. $checkauth = $smtp['auth'] ? 'checked' : '';
  1435. $smtp['auth_password'] = $smtp['auth_password'] ? $smtp['auth_password']{0}.'********'.substr($smtp['auth_password'], -2) : '';
  1436. showtablerow('', array('class="td25"', 'class="td28"', 'class="td28"'), array(
  1437. "<input class=\"checkbox\" type=\"checkbox\" name=\"settingnew[mail][smtp][delete][]\" value=\"$id\">",
  1438. "<input type=\"text\" class=\"txt\" name=\"settingnew[mail][smtp][$id][server]\" value=\"$smtp[server]\" style=\"width: 90%;\">",
  1439. "<input type=\"text\" class=\"txt\" name=\"settingnew[mail][smtp][$id][port]\" value=\"$smtp[port]\">"
  1440. ));
  1441. }
  1442. echo '<tr><td colspan="7"><div><a href="###" onclick="setrowtypedata(0);addrow(this, 0);" class="addtr">'.$lang['setting_mail_setting_edit_addnew'].'</a></div></td></tr>';
  1443. showtablefooter();
  1444. echo '</td></tr>';
  1445. showtagfooter('tbody');
  1446. showtagheader('tbody', 'hidden2', $setting['mail']['mailsend'] == 2, 'sub');
  1447. echo <<<EOF
  1448. <tr><td colspan="2" style="border-top:0px dotted #DEEFFB;">
  1449. <table style="margin-top: 0px;" class="tb tb2">
  1450. <tr class="header">
  1451. <th class="td25">$lang[delete]</th>
  1452. <th class="td28">$lang[setting_mail_setting_server]</th>
  1453. <th class="td28">$lang[setting_mail_setting_port]</th>
  1454. <th id="auth_0">$lang[setting_mail_setting_validate]</th>
  1455. <th id="from_0">$lang[setting_mail_setting_from]</th>
  1456. <th id="username_0">$lang[setting_mail_setting_username]</th>
  1457. <th id="password_0">$lang[setting_mail_setting_password]</th>
  1458. </tr>
  1459. EOF;
  1460. foreach($setting['mail']['smtp'] as $id => $smtp) {
  1461. $checkauth = $smtp['auth'] ? 'checked' : '';
  1462. $smtp['auth_password'] = $smtp['auth_password'] ? $smtp['auth_password']{0}.'********'.substr($smtp['auth_password'], -2) : '';
  1463. showtablerow('', array('class="td25"', 'class="td28"', 'class="td28"', 'class="td25"'), array(
  1464. "<input class=\"checkbox\" type=\"checkbox\" name=\"settingnew[mail][esmtp][delete][]\" value=\"$id\">",
  1465. "<input type=\"text\" class=\"txt\" name=\"settingnew[mail][esmtp][$id][server]\" value=\"$smtp[server]\" style=\"width: 90%;\">",
  1466. "<input type=\"text\" class=\"txt\" name=\"settingnew[mail][esmtp][$id][port]\" value=\"$smtp[port]\">",
  1467. "<input type=\"checkbox\" name=\"settingnew[mail][esmtp][$id][auth]\" value=\"1\" $checkauth>",
  1468. "<input type=\"text\" class=\"txt\" name=\"settingnew[mail][esmtp][$id][from]\" value=\"$smtp[from]\" style=\"width: 90%;\">",
  1469. "<input type=\"text\" class=\"txt\" name=\"settingnew[mail][esmtp][$id][auth_username]\" value=\"$smtp[auth_username]\" style=\"width: 90%;\">",
  1470. "<input type=\"text\" class=\"txt\" name=\"settingnew[mail][esmtp][$id][auth_password]\" value=\"$smtp[auth_password]\" style=\"width: 90%;\">",
  1471. ));
  1472. }
  1473. echo '<tr><td colspan="7"><div><a href="###" onclick="setrowtypedata(1);addrow(this, 0);" class="addtr">'.$lang['setting_mail_setting_edit_addnew'].'</a></div></td></tr>';
  1474. showtablefooter();
  1475. echo '</td></tr>';
  1476. showtagfooter('tbody');
  1477. showsetting('setting_mail_setting_delimiter', array('settingnew[mail][maildelimiter]', array(
  1478. array(1, $lang['setting_mail_setting_delimiter_crlf']),
  1479. array(0, $lang['setting_mail_setting_delimiter_lf']),
  1480. array(2, $lang['setting_mail_setting_delimiter_cr']))), $setting['mail']['maildelimiter'], 'mradio');
  1481. showsetting('setting_mail_setting_includeuser', 'settingnew[mail][mailusername]', $setting['mail']['mailusername'], 'radio');
  1482. showsetting('setting_mail_setting_silent', 'settingnew[mail][sendmail_silent]', $setting['mail']['sendmail_silent'], 'radio');
  1483. showsubmit('settingsubmit');
  1484. showtablefooter();
  1485. showtableheader('', '', 'id="mailcheck"'.($_GET['anchor'] != 'check' ? ' style="display: none"' : ''));
  1486. showsetting('setting_mail_check_test_from', 'test_from', '', 'text');
  1487. showsetting('setting_mail_check_test_to', 'test_to', '', 'textarea');
  1488. showsubmit('', '', '<input type="submit" class="btn" name="mailcheck" value="'.cplang('setting_mail_check_submit').'" onclick="this.form.operation.value=\'mailcheck\';this.form.action=\''.ADMINSCRIPT.'?action=checktools&operation=mailcheck&frame=no\';this.form.target=\'mailcheckiframe\';">', '<iframe name="mailcheckiframe" style="display: none"></iframe>');
  1489. showtablefooter();
  1490. showformfooter();
  1491. exit;
  1492. } elseif($operation == 'accountguard') {
  1493. loadcache('usergroups');
  1494. $setting['accountguard'] = dunserialize($setting['accountguard']);
  1495. $usergroups = C::t('common_usergroup_field')->fetch_all(array_keys($_G['cache']['usergroups']));
  1496. showtableheader('', 'nobottom');
  1497. $forcelogin = '<tr class="header"><td></td><td>'.cplang('usergroups_edit_basic_forcelogin_none').'</td>'.($_G['setting']['connect']['allow'] ? '<td>'.cplang('usergroups_edit_basic_forcelogin_qq').'</td>' : '').'<td>'.cplang('usergroups_edit_basic_forcelogin_mail').'</td></tr>';
  1498. ksort($_G['cache']['usergroups']);
  1499. foreach($_G['cache']['usergroups'] as $gid => $usergroup) {
  1500. if(in_array($gid, array(7, 8))) {
  1501. continue;
  1502. }
  1503. $forcelogin .= '<tr class="hover"><td>'.$usergroup['grouptitle'].'</td>'.
  1504. '<td><label><input class="radio" type="radio" name="aggid['.$gid.']" '.(!$usergroups[$gid]['forcelogin'] ? 'checked ' : '').'value="0">'.'</label></td>'.
  1505. ($_G['setting']['connect']['allow'] ? '<td><label><input class="radio" type="radio" name="aggid['.$gid.']" '.($usergroups[$gid]['forcelogin'] == 1 ? 'checked ' : '').'value="1">'.'</label></td>' : '').
  1506. '<td><label><input class="radio" type="radio" name="aggid['.$gid.']" '.($usergroups[$gid]['forcelogin'] == 2 ? 'checked ' : '').'value="2">'.'</label></td>'.
  1507. '</tr>';
  1508. }
  1509. $forcelogin .= '<tr><td colspan="3" class="lineheight">'.cplang('setting_sec_accountguard_forcelogin_comment').'</td></table>';
  1510. if($_G['setting']['connect']['allow']) {
  1511. showsetting('setting_sec_accountguard_postqqonly', 'settingnew[accountguard][postqqonly]', $setting['accountguard']['postqqonly'], 'radio');
  1512. }
  1513. showsetting('setting_sec_accountguard_loginpwcheck', array('settingnew[accountguard][loginpwcheck]', array(
  1514. array(0, $lang['setting_sec_accountguard_loginpwcheck_none']),
  1515. array(1, $lang['setting_sec_accountguard_loginpwcheck_prompt']),
  1516. array(2, $lang['setting_sec_accountguard_loginpwcheck_force']))), $setting['accountguard']['loginpwcheck'], 'mradio');
  1517. showsetting('setting_sec_accountguard_loginoutofdate', 'settingnew[accountguard][loginoutofdate]', $setting['accountguard']['loginoutofdate'], 'radio');
  1518. showtablefooter();
  1519. showtableheader('setting_sec_accountguard_forcelogin', 'nobottom');
  1520. echo $forcelogin;
  1521. showtablefooter();
  1522. } elseif($operation == 'seccheck') {
  1523. $seccodecheck = 1;
  1524. $sechash = 'S'.$_G['sid'];
  1525. $seccheckhtml = "<span id=\"seccode_c$sechash\"></span><script type=\"text/javascript\">updateseccode('c$sechash', '<br /><sec> <sec> <sec>', 'admin');</script>";
  1526. $checksc = array();
  1527. $setting['seccodedata'] = dunserialize($setting['seccodedata']);
  1528. $seccodetypearray = array(
  1529. array(0, cplang('setting_sec_seccode_type_image'), array('seccodeimageext' => '', 'seccodeimagewh' => '')),
  1530. array(1, cplang('setting_sec_seccode_type_chnfont'), array('seccodeimageext' => '', 'seccodeimagewh' => '')),
  1531. array(2, cplang('setting_sec_seccode_type_flash'), array('seccodeimageext' => 'none', 'seccodeimagewh' => '')),
  1532. array(3, cplang('setting_sec_seccode_type_wav'), array('seccodeimageext' => 'none', 'seccodeimagewh' => 'none')),
  1533. array(99, cplang('setting_sec_seccode_type_bitmap'), array('seccodeimageext' => 'none', 'seccodeimagewh' => 'none')),
  1534. );
  1535. $seccodetypearray = array_merge($seccodetypearray, getseccodes($seccodesettings));
  1536. showtips('setting_sec_code_tips', 'seccode_tips', $_GET['anchor'] == 'seccode');
  1537. showtableheader('', '', 'id="seccode"'.($_GET['anchor'] != 'seccode' ? ' style="display: none"' : ''));
  1538. showtitle('setting_sec_seccode_rule_setting');
  1539. showsetting('setting_sec_seccode_cloudip', 'settingnew[seccodedata][cloudip]', $setting['seccodedata']['cloudip'], 'radio');
  1540. showsetting('setting_sec_seccode_rule_register', array('settingnew[seccodedata][rule][register][allow]', array(
  1541. array(2, cplang('setting_sec_seccode_rule_register_auto'), array('secrule_register' => '')),
  1542. array(1, cplang('setting_sec_seccode_rule_register_on'), array('secrule_register' => 'none')),
  1543. array(0, cplang('setting_sec_seccode_rule_register_off'), array('secrule_register' => 'none')),
  1544. )), $setting['seccodedata']['rule']['register']['allow'], 'mradio');
  1545. showtagheader('tbody', 'secrule_register', $setting['seccodedata']['rule']['register']['allow'] == 2, 'sub');
  1546. showsetting('setting_sec_seccode_rule_register_numlimit', 'settingnew[seccodedata][rule][register][numlimit]', $setting['seccodedata']['rule']['register']['numlimit'], 'text');
  1547. showsetting('setting_sec_seccode_rule_register_timelimit', array('settingnew[seccodedata][rule][register][timelimit]', array(
  1548. array(60, '1 '.cplang('setting_sec_seccode_rule_min')),
  1549. array(180, '3'.cplang('setting_sec_seccode_rule_min')),
  1550. array(300, '5'.cplang('setting_sec_seccode_rule_min')),
  1551. array(900, '15'.cplang('setting_sec_seccode_rule_min')),
  1552. array(1800, '30'.cplang('setting_sec_seccode_rule_min')),
  1553. array(3600, '1'.cplang('setting_sec_seccode_rule_hour')),
  1554. )), $setting['seccodedata']['rule']['register']['timelimit'], 'select', 'noborder');
  1555. showtagfooter('tbody');
  1556. showsetting('setting_sec_seccode_rule_login', array('settingnew[seccodedata][rule][login][allow]', array(
  1557. array(2, cplang('setting_sec_seccode_rule_login_auto'), array('secrule_login' => '')),
  1558. array(1, cplang('setting_sec_seccode_rule_login_on'), array('secrule_login' => 'none')),
  1559. array(0, cplang('setting_sec_seccode_rule_login_off'), array('secrule_login' => 'none')),
  1560. )), $setting['seccodedata']['rule']['login']['allow'], 'mradio');
  1561. showtagheader('tbody', 'secrule_login', $setting['seccodedata']['rule']['login']['allow'] == 2, 'sub');
  1562. showsetting('setting_sec_seccode_rule_login_nolocal', 'settingnew[seccodedata][rule][login][nolocal]', $setting['seccodedata']['rule']['login']['nolocal'], 'radio');
  1563. showsetting('setting_sec_seccode_rule_login_pwsimple', 'settingnew[seccodedata][rule][login][pwsimple]', $setting['seccodedata']['rule']['login']['pwsimple'], 'radio');
  1564. showsetting('setting_sec_seccode_rule_login_pwerror', 'settingnew[seccodedata][rule][login][pwerror]', $setting['seccodedata']['rule']['login']['pwerror'], 'radio');
  1565. showsetting('setting_sec_seccode_rule_login_outofday', 'settingnew[seccodedata][rule][login][outofday]', $setting['seccodedata']['rule']['login']['outofday'], 'text');
  1566. showsetting('setting_sec_seccode_rule_login_numiptry', 'settingnew[seccodedata][rule][login][numiptry]', $setting['seccodedata']['rule']['login']['numiptry'], 'text');
  1567. showsetting('setting_sec_seccode_rule_login_timeiptry', array('settingnew[seccodedata][rule][login][timeiptry]', array(
  1568. array(60, '1 '.cplang('setting_sec_seccode_rule_min')),
  1569. array(180, '3'.cplang('setting_sec_seccode_rule_min')),
  1570. array(300, '5'.cplang('setting_sec_seccode_rule_min')),
  1571. array(900, '15'.cplang('setting_sec_seccode_rule_min')),
  1572. array(1800, '30'.cplang('setting_sec_seccode_rule_min')),
  1573. array(3600, '1'.cplang('setting_sec_seccode_rule_hour')),
  1574. )), $setting['seccodedata']['rule']['login']['timeiptry'], 'select', 'noborder');
  1575. showtagfooter('tbody');
  1576. showsetting('setting_sec_seccode_rule_post', array('settingnew[seccodedata][rule][post][allow]', array(
  1577. array(2, cplang('setting_sec_seccode_rule_post_auto'), array('secrule_post' => '', 'secrule_post_common' => '')),
  1578. array(1, cplang('setting_sec_seccode_rule_post_on'), array('secrule_post' => 'none', 'secrule_post_common' => '')),
  1579. array(0, cplang('setting_sec_seccode_rule_post_off'), array('secrule_post' => 'none', 'secrule_post_common' => 'none')),
  1580. )), $setting['seccodedata']['rule']['post']['allow'], 'mradio');
  1581. showtagheader('tbody', 'secrule_post_common', $setting['seccodedata']['rule']['post']['allow'], 'sub');
  1582. showtagheader('tbody', 'secrule_post', $setting['seccodedata']['rule']['post']['allow'] == 2, 'sub');
  1583. showsetting('setting_sec_seccode_rule_post_numlimit', 'settingnew[seccodedata][rule][post][numlimit]', $setting['seccodedata']['rule']['post']['numlimit'], 'text');
  1584. showsetting('setting_sec_seccode_rule_post_timelimit', array('settingnew[seccodedata][rule][post][timelimit]', array(
  1585. array(60, '1 '.cplang('setting_sec_seccode_rule_min')),
  1586. array(180, '3'.cplang('setting_sec_seccode_rule_min')),
  1587. array(300, '5'.cplang('setting_sec_seccode_rule_min')),
  1588. array(900, '15'.cplang('setting_sec_seccode_rule_min')),
  1589. array(1800, '30'.cplang('setting_sec_seccode_rule_min')),
  1590. array(3600, '1'.cplang('setting_sec_seccode_rule_hour')),
  1591. )), $setting['seccodedata']['rule']['post']['timelimit'], 'select', 'noborder');
  1592. showsetting('setting_sec_seccode_rule_post_nplimit', 'settingnew[seccodedata][rule][post][nplimit]', $setting['seccodedata']['rule']['post']['nplimit'], 'text');
  1593. showsetting('setting_sec_seccode_rule_post_vplimit', 'settingnew[seccodedata][rule][post][vplimit]', $setting['seccodedata']['rule']['post']['vplimit'], 'text');
  1594. showtagfooter('tbody');
  1595. showsetting('setting_sec_seccode_rule_password', 'settingnew[seccodedata][rule][password][allow]', $setting['seccodedata']['rule']['password']['allow'], 'radio');
  1596. showsetting('setting_sec_seccode_rule_card', 'settingnew[seccodedata][rule][card][allow]', $setting['seccodedata']['rule']['card']['allow'], 'radio');
  1597. showsetting('setting_sec_seccode_minposts', 'settingnew[seccodedata][minposts]', $setting['seccodedata']['minposts'], 'text');
  1598. showtitle('setting_sec_seccode_type_setting');
  1599. showsetting('setting_sec_seccode_type', array('settingnew[seccodedata][type]', $seccodetypearray), $setting['seccodedata']['type'], 'mradio', '', 0, cplang('setting_sec_seccode_type_comment').$seccheckhtml);
  1600. showtagheader('tbody', 'seccodeimagewh', is_numeric($setting['seccodedata']['type']) && $setting['seccodedata']['type'] != 3 && $setting['seccodedata']['type'] != 99, 'sub');
  1601. showsetting('setting_sec_seccode_width', 'settingnew[seccodedata][width]', $setting['seccodedata']['width'], 'text');
  1602. showsetting('setting_sec_seccode_height', 'settingnew[seccodedata][height]', $setting['seccodedata']['height'], 'text');
  1603. showtagfooter('tbody');
  1604. showtagheader('tbody', 'seccodeimageext', is_numeric($setting['seccodedata']['type']) && $setting['seccodedata']['type'] != 2 && $setting['seccodedata']['type'] != 3 && $setting['seccodedata']['type'] != 99, 'sub');
  1605. showsetting('setting_sec_seccode_scatter', 'settingnew[seccodedata][scatter]', $setting['seccodedata']['scatter'], 'text');
  1606. showsetting('setting_sec_seccode_background', 'settingnew[seccodedata][background]', $setting['seccodedata']['background'], 'radio');
  1607. showsetting('setting_sec_seccode_adulterate', 'settingnew[seccodedata][adulterate]', $setting['seccodedata']['adulterate'], 'radio');
  1608. showsetting('setting_sec_seccode_ttf', 'settingnew[seccodedata][ttf]', $setting['seccodedata']['ttf'], 'radio', !function_exists('imagettftext'));
  1609. showsetting('setting_sec_seccode_angle', 'settingnew[seccodedata][angle]', $setting['seccodedata']['angle'], 'radio');
  1610. showsetting('setting_sec_seccode_warping', 'settingnew[seccodedata][warping]', $setting['seccodedata']['warping'], 'radio');
  1611. showsetting('setting_sec_seccode_color', 'settingnew[seccodedata][color]', $setting['seccodedata']['color'], 'radio');
  1612. showsetting('setting_sec_seccode_size', 'settingnew[seccodedata][size]', $setting['seccodedata']['size'], 'radio');
  1613. showsetting('setting_sec_seccode_shadow', 'settingnew[seccodedata][shadow]', $setting['seccodedata']['shadow'], 'radio');
  1614. showsetting('setting_sec_seccode_animator', 'settingnew[seccodedata][animator]', $setting['seccodedata']['animator'], 'radio', !function_exists('imagegif'));
  1615. showtagfooter('tbody');
  1616. showsubmit('settingsubmit');
  1617. showtablefooter();
  1618. $setting['secqaa'] = dunserialize($setting['secqaa']);
  1619. $start_limit = ($page - 1) * 10;
  1620. $secqaanums = C::t('common_secquestion')->count();
  1621. $multipage = multi($secqaanums, 10, $page, ADMINSCRIPT.'?action=setting&operation=sec&anchor=secqaa');
  1622. echo <<<EOT
  1623. <script type="text/JavaScript">
  1624. var rowtypedata = [
  1625. [[1,''], [1,'<input name="newquestion[]" type="text" class="txt">','td26'], [1, '<input name="newanswer[]" type="text" class="txt">']],
  1626. ];
  1627. </script>
  1628. EOT;
  1629. showtips('setting_sec_qaa_tips', 'secqaa_tips', $_GET['anchor'] == 'secqaa');
  1630. showtagheader('div', 'secqaa', $_GET['anchor'] == 'secqaa');
  1631. showtableheader('setting_sec_secqaa', 'nobottom');
  1632. showsetting('setting_sec_secqaa_status', array('settingnew[secqaa][status]', array(
  1633. cplang('setting_sec_seccode_status_register'),
  1634. cplang('setting_sec_seccode_status_post'),
  1635. cplang('setting_sec_seccode_status_password')
  1636. )), $setting['secqaa']['status'], 'binmcheckbox');
  1637. showsetting('setting_sec_secqaa_minposts', 'settingnew[secqaa][minposts]', $setting['secqaa']['minposts'], 'text');
  1638. showtablefooter();
  1639. showtableheader('setting_sec_secqaa_qaa', 'noborder fixpadding');
  1640. showsubtitle(array('', 'setting_sec_secqaa_question', 'setting_sec_secqaa_answer'));
  1641. $qaaext = array();
  1642. foreach(C::t('common_secquestion')->fetch_all($start_limit, 10) as $item) {
  1643. if(!$item['type']) {
  1644. showtablerow('', array('', 'class="td26"'), array(
  1645. '<input class="checkbox" type="checkbox" name="delete[]" value="'.$item['id'].'">',
  1646. '<input type="text" class="txt" name="question['.$item['id'].']" value="'.dhtmlspecialchars($item['question']).'" class="txtnobd" onblur="this.className=\'txtnobd\'" onfocus="this.className=\'txt\'">',
  1647. '<input type="text" class="txt" name="answer['.$item['id'].']" value="'.$item['answer'].'" class="txtnobd" onblur="this.className=\'txtnobd\'" onfocus="this.className=\'txt\'">'
  1648. ));
  1649. } else {
  1650. $qaaext[] = $item['question'];
  1651. }
  1652. }
  1653. echo '<tr><td></td><td class="td26"><div><a href="###" onclick="addrow(this, 0)" class="addtr">'.$lang['setting_sec_secqaa_add'].'</a></div></td><td></td></tr>';
  1654. echo getsecqaas($qaaext);
  1655. showsubmit('settingsubmit', 'submit', 'del', '', $multipage);
  1656. showtablefooter();
  1657. showtagfooter('div');
  1658. exit;
  1659. } elseif($operation == 'sec') {
  1660. $setting['reginput'] = dunserialize($setting['reginput']);
  1661. showtableheader('', '', 'id="base"'.($_GET['anchor'] != 'base' ? ' style="display: none"' : ''));
  1662. showsetting('setting_sec_floodctrl', 'settingnew[floodctrl]', $setting['floodctrl'], 'text');
  1663. showsetting('setting_sec_base_need_email', 'settingnew[need_email]', $setting['need_email'], 'radio');
  1664. showsetting('setting_sec_base_need_avatar', 'settingnew[need_avatar]', $setting['need_avatar'], 'radio');
  1665. showsetting('setting_sec_base_need_friendnum', 'settingnew[need_friendnum]', $setting['need_friendnum'], 'text');
  1666. showtablefooter();
  1667. showtagheader('div', 'reginput', $_GET['anchor'] == 'reginput');
  1668. showtableheader('setting_sec_reginput', 'nobottom');
  1669. showsetting('setting_sec_reginput_username', 'settingnew[reginput][username]', $setting['reginput']['username'], 'text');
  1670. showsetting('setting_sec_reginput_password', 'settingnew[reginput][password]', $setting['reginput']['password'], 'text');
  1671. showsetting('setting_sec_reginput_password2', 'settingnew[reginput][password2]', $setting['reginput']['password2'], 'text');
  1672. showsetting('setting_sec_reginput_email', 'settingnew[reginput][email]', $setting['reginput']['email'], 'text');
  1673. showtablefooter();
  1674. showtagfooter('div');
  1675. showtagheader('div', 'postperiodtime', $_GET['anchor'] == 'postperiodtime');
  1676. showtableheader('setting_sec_postperiodtime', 'nobottom');
  1677. showsetting('setting_datetime_postbanperiods', 'settingnew[postbanperiods]', $setting['postbanperiods'], 'textarea');
  1678. showsetting('setting_datetime_postmodperiods', 'settingnew[postmodperiods]', $setting['postmodperiods'], 'textarea');
  1679. showsetting('setting_datetime_postignorearea', 'settingnew[postignorearea]', $setting['postignorearea'], 'textarea');
  1680. showsetting('setting_datetime_postignoreip', 'settingnew[postignoreip]', $setting['postignoreip'], 'textarea');
  1681. showtablefooter();
  1682. showtagfooter('div');
  1683. } elseif($operation == 'datetime') {
  1684. $checktimeformat = array($setting['timeformat'] == 'H:i' ? 24 : 12 => 'checked');
  1685. $setting['userdateformat'] = dateformat($setting['userdateformat']);
  1686. $setting['dateformat'] = dateformat($setting['dateformat']);
  1687. showtableheader();
  1688. showtitle('setting_datetime_format');
  1689. showsetting('setting_datetime_dateformat', 'settingnew[dateformat]', $setting['dateformat'], 'text');
  1690. showsetting('setting_datetime_timeformat', '', '', '<input class="radio" type="radio" name="settingnew[timeformat]" value="24" '.$checktimeformat[24].'> 24 '.$lang['hour'].' <input class="radio" type="radio" name="settingnew[timeformat]" value="12" '.$checktimeformat[12].'> 12 '.$lang['hour'].'');
  1691. showsetting('setting_datetime_dateconvert', 'settingnew[dateconvert]', $setting['dateconvert'], 'radio');
  1692. $timezone_lang = cplang('setting_datetime_timezone');
  1693. $timezone_select = "<select name='global_timeoffset' onchange=\"if(this.value !== '')$('settingnew[timeoffset]').value=this.value;\">";
  1694. foreach($timezone_lang AS $key => $val) {
  1695. $timezone_select .= "<option value='$key' ".($setting['timeoffset'] == $key ? 'selected="selected"' : '').">".cutstr($val, 34, '..')."</option>";
  1696. }
  1697. $timezone_select .= "</select>";
  1698. $timezone_select .= "<br><br><input id=\"settingnew[timeoffset]\" type=\"text\" class=\"txt\" value=\"".$setting['timeoffset']."\" name=\"settingnew[timeoffset]\">";
  1699. showsetting('setting_datetime_timeoffset', '', '', $timezone_select);
  1700. showtitle('setting_datetime_periods');
  1701. showsetting('setting_datetime_visitbanperiods', 'settingnew[visitbanperiods]', $setting['visitbanperiods'], 'textarea');
  1702. showsetting('setting_datetime_ban_downtime', 'settingnew[attachbanperiods]', $setting['attachbanperiods'], 'textarea');
  1703. showsetting('setting_datetime_searchbanperiods', 'settingnew[searchbanperiods]', $setting['searchbanperiods'], 'textarea');
  1704. } elseif($operation == 'attach') {
  1705. showtableheader('', '', 'id="basic"'.($_GET['anchor'] != 'basic' ? ' style="display: none"' : ''));
  1706. showsetting('setting_attach_basic_dir', 'settingnew[attachdir]', $setting['attachdir'], 'text');
  1707. showsetting('setting_attach_basic_url', 'settingnew[attachurl]', $setting['attachurl'], 'text');
  1708. showsetting('setting_attach_image_lib', array('settingnew[imagelib]', array(
  1709. array(0, $lang['setting_attach_image_watermarktype_GD'], array('imagelibext' => 'none')),
  1710. array(1, $lang['setting_attach_image_watermarktype_IM'], array('imagelibext' => ''))
  1711. )), $setting['imagelib'], 'mradio');
  1712. showsetting('setting_attach_image_thumbquality', 'settingnew[thumbquality]', $setting['thumbquality'], 'text');
  1713. showsetting('setting_attach_image_disabledmobile', 'settingnew[thumbdisabledmobile]', !$setting['thumbdisabledmobile'], 'radio');
  1714. showsetting('setting_attach_image_preview', '', '', cplang('setting_attach_image_thumb_preview_btn'));
  1715. showtagfooter('tbody');
  1716. showsubmit('settingsubmit');
  1717. showtablefooter();
  1718. showtableheader('', '', 'id="forumattach"'.($_GET['anchor'] != 'forumattach' ? ' style="display: none"' : ''));
  1719. showsetting('setting_attach_basic_imgpost', 'settingnew[attachimgpost]', $setting['attachimgpost'], 'radio');
  1720. showsetting('setting_attach_basic_allowattachurl', 'settingnew[allowattachurl]', $setting['allowattachurl'], 'radio');
  1721. showsetting('setting_attach_image_thumbstatus', array('settingnew[thumbstatus]', array(
  1722. array('', $lang['setting_attach_image_thumbstatus_none'], array('thumbext' => 'none')),
  1723. array('fixnone', $lang['setting_attach_image_thumbstatus_fixnone'], array('thumbext' => '')),
  1724. array('fixwr', $lang['setting_attach_image_thumbstatus_fixwr'], array('thumbext' => '')),
  1725. )), $setting['thumbstatus'], 'mradio');
  1726. showtagheader('tbody', 'thumbext', $setting['thumbstatus'], 'sub');
  1727. showsetting('setting_attach_image_thumbwidthheight', array('settingnew[thumbwidth]', 'settingnew[thumbheight]'), array(intval($setting['thumbwidth']), intval($setting['thumbheight'])), 'multiply');
  1728. showtagfooter('tbody');
  1729. showsetting('setting_attach_basic_thumbsource', 'settingnew[thumbsource]', $setting['thumbsource'], 'radio', 0, 1);
  1730. showsetting('setting_attach_image_thumbsourcewidthheight', array('settingnew[sourcewidth]', 'settingnew[sourceheight]'), array(intval($setting['sourcewidth']), intval($setting['sourceheight'])), 'multiply');
  1731. showtagfooter('tbody');
  1732. showsetting('setting_attach_antileech_expire', 'settingnew[attachexpire]', $setting['attachexpire'], 'text');
  1733. showsetting('setting_attach_antileech_refcheck', 'settingnew[attachrefcheck]', $setting['attachrefcheck'], 'radio');
  1734. showtagfooter('tbody');
  1735. showsubmit('settingsubmit');
  1736. showtablefooter();
  1737. if($isfounder) {
  1738. $setting['ftp'] = dunserialize($setting['ftp']);
  1739. $setting['ftp'] = is_array($setting['ftp']) ? $setting['ftp'] : array();
  1740. $setting['ftp']['password'] = authcode($setting['ftp']['password'], 'DECODE', md5($_G['config']['security']['authkey']));
  1741. $setting['ftp']['password'] = $setting['ftp']['password'] ? $setting['ftp']['password']{0}.'********'.$setting['ftp']['password']{strlen($setting['ftp']['password']) - 1} : '';
  1742. require_once libfile('function/cache');
  1743. showtableheader('', '', 'id="remote"'.($_GET['anchor'] != 'remote' ? ' style="display: none"' : ''));
  1744. showsetting('setting_attach_remote_enabled', array('settingnew[ftp][on]', array(
  1745. array(1, $lang['yes'], array('ftpext' => '', 'ftpcheckbutton' => '')),
  1746. array(0, $lang['no'], array('ftpext' => 'none', 'ftpcheckbutton' => 'none'))
  1747. ), TRUE), $setting['ftp']['on'], 'mradio');
  1748. showtagheader('tbody', 'ftpext', $setting['ftp']['on'], 'sub');
  1749. showsetting('setting_attach_remote_enabled_ssl', 'settingnew[ftp][ssl]', $setting['ftp']['ssl'], 'radio');
  1750. showsetting('setting_attach_remote_ftp_host', 'settingnew[ftp][host]', $setting['ftp']['host'], 'text');
  1751. showsetting('setting_attach_remote_ftp_port', 'settingnew[ftp][port]', $setting['ftp']['port'], 'text');
  1752. showsetting('setting_attach_remote_ftp_user', 'settingnew[ftp][username]', $setting['ftp']['username'], 'text');
  1753. showsetting('setting_attach_remote_ftp_pass', 'settingnew[ftp][password]', $setting['ftp']['password'], 'text');
  1754. showsetting('setting_attach_remote_ftp_pasv', 'settingnew[ftp][pasv]', $setting['ftp']['pasv'], 'radio');
  1755. showsetting('setting_attach_remote_dir', 'settingnew[ftp][attachdir]', $setting['ftp']['attachdir'], 'text');
  1756. showsetting('setting_attach_remote_url', 'settingnew[ftp][attachurl]', $setting['ftp']['attachurl'], 'text');
  1757. showsetting('setting_attach_remote_timeout', 'settingnew[ftp][timeout]', $setting['ftp']['timeout'], 'text');
  1758. showsetting('setting_attach_remote_preview', '', '', cplang('setting_attach_remote_preview_btn'));
  1759. showtagfooter('tbody');
  1760. showsetting('setting_attach_remote_allowedexts', 'settingnew[ftp][allowedexts]', $setting['ftp']['allowedexts'], 'textarea');
  1761. showsetting('setting_attach_remote_disallowedexts', 'settingnew[ftp][disallowedexts]', $setting['ftp']['disallowedexts'], 'textarea');
  1762. showsetting('setting_attach_remote_minsize', 'settingnew[ftp][minsize]', $setting['ftp']['minsize'], 'text');
  1763. showsetting('setting_attach_antileech_remote_hide_dir', 'settingnew[ftp][hideurl]', $setting['ftp']['hideurl'], 'radio');
  1764. showsubmit('settingsubmit');
  1765. showtablefooter();
  1766. }
  1767. showtableheader('', '', 'id="albumattach"'.($_GET['anchor'] != 'albumattach' ? ' style="display: none"' : ''));
  1768. showsetting('setting_attach_album_maxtimage', array('settingnew[maxthumbwidth]', 'settingnew[maxthumbheight]'), array(intval($setting['maxthumbwidth']), intval($setting['maxthumbheight'])), 'multiply');
  1769. showsubmit('settingsubmit');
  1770. showtablefooter();
  1771. showtableheader('', '', 'id="portalarticle"'.($_GET['anchor'] != 'portalarticle' ? ' style="display: none"' : ''));
  1772. showsetting('setting_attach_portal_article_img_thumb_closed', 'settingnew[portalarticleimgthumbclosed]', !$setting['portalarticleimgthumbclosed'], 'radio');
  1773. showsetting('setting_attach_portal_article_imgsize', array('settingnew[portalarticleimgthumbwidth]', 'settingnew[portalarticleimgthumbheight]'), array(intval($setting['portalarticleimgthumbwidth']), intval($setting['portalarticleimgthumbheight'])), 'multiply');
  1774. showsubmit('settingsubmit');
  1775. showtablefooter();
  1776. showformfooter();
  1777. exit;
  1778. } elseif($operation == 'imgwater') {
  1779. $setting['watermarktext'] = (array)dunserialize($setting['watermarktext']);
  1780. $setting['watermarkstatus'] = (array)dunserialize($setting['watermarkstatus']);
  1781. $setting['watermarktype'] = (array)dunserialize($setting['watermarktype']);
  1782. $setting['watermarktrans'] = (array)dunserialize($setting['watermarktrans']);
  1783. $setting['watermarkquality'] = (array)dunserialize($setting['watermarkquality']);
  1784. $setting['watermarkminheight'] = (array)dunserialize($setting['watermarkminheight']);
  1785. $setting['watermarkminwidth'] = (array)dunserialize($setting['watermarkminwidth']);
  1786. $setting['watermarktext']['fontpath'] = str_replace(array('ch/', 'en/'), '', $setting['watermarktext']['fontpath']);
  1787. $fontlist = array();
  1788. $dir = opendir(DISCUZ_ROOT.'./static/image/seccode/font/en');
  1789. while($entry = readdir($dir)) {
  1790. if(in_array(strtolower(fileext($entry)), array('ttf', 'ttc'))) {
  1791. $fontlist['portal'] .= '<option value="'.$entry.'"'.($entry == $setting['watermarktext']['fontpath']['portal'] ? ' selected>' : '>').$entry.'</option>';
  1792. $fontlist['forum'] .= '<option value="'.$entry.'"'.($entry == $setting['watermarktext']['fontpath']['forum'] ? ' selected>' : '>').$entry.'</option>';
  1793. $fontlist['album'] .= '<option value="'.$entry.'"'.($entry == $setting['watermarktext']['fontpath']['album'] ? ' selected>' : '>').$entry.'</option>';
  1794. }
  1795. }
  1796. $dir = opendir(DISCUZ_ROOT.'./static/image/seccode/font/ch');
  1797. while($entry = readdir($dir)) {
  1798. if(in_array(strtolower(fileext($entry)), array('ttf', 'ttc'))) {
  1799. $fontlist['portal'] .= '<option value="'.$entry.'"'.($entry == $setting['watermarktext']['fontpath']['portal'] ? ' selected>' : '>').$entry.'</option>';
  1800. $fontlist['forum'] .= '<option value="'.$entry.'"'.($entry == $setting['watermarktext']['fontpath']['forum'] ? ' selected>' : '>').$entry.'</option>';
  1801. $fontlist['album'] .= '<option value="'.$entry.'"'.($entry == $setting['watermarktext']['fontpath']['album'] ? ' selected>' : '>').$entry.'</option>';
  1802. }
  1803. }
  1804. $fontlist['portal'] .= '</select>';
  1805. $fontlist['forum'] .= '</select>';
  1806. $fontlist['album'] .= '</select>';
  1807. $checkwm['portal'] = array($setting['watermarkstatus']['portal'] => 'checked');
  1808. $checkwm['forum'] = array($setting['watermarkstatus']['forum'] => 'checked');
  1809. $checkwm['album'] = array($setting['watermarkstatus']['album'] => 'checked');
  1810. showtableheader('setting_imgwater_image_watermarks_portal', '', 'id="portal"'.($_GET['anchor'] != 'portal' ? ' style="display: none"' : ''));
  1811. $fontlist['portal'] = '<select name="settingnew[watermarktext][fontpath][portal]">' . $fontlist['portal'];
  1812. showhiddenfields(array('imagelib' => $_G['setting']['imagelib']));
  1813. showsetting('setting_imgwater_image_watermarkstatus', '', '', '<table style="margin-bottom: 3px; margin-top:3px;"><tr><td colspan="3"><input class="radio" type="radio" name="settingnew[watermarkstatus][portal]" value="0" '.$checkwm['portal'][0].'>'.$lang['setting_imgwater_image_watermarkstatus_none'].'</td></tr><tr><td><input class="radio" type="radio" name="settingnew[watermarkstatus][portal]" value="1" '.$checkwm['portal'][1].'> #1</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][portal]" value="2" '.$checkwm['portal'][2].'> #2</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][portal]" value="3" '.$checkwm['portal'][3].'> #3</td></tr><tr><td><input class="radio" type="radio" name="settingnew[watermarkstatus][portal]" value="4" '.$checkwm['portal'][4].'> #4</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][portal]" value="5" '.$checkwm['portal'][5].'> #5</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][portal]" value="6" '.$checkwm['portal'][6].'> #6</td></tr><tr><td><input class="radio" type="radio" name="settingnew[watermarkstatus][portal]" value="7" '.$checkwm['portal'][7].'> #7</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][portal]" value="8" '.$checkwm['portal'][8].'> #8</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][portal]" value="9" '.$checkwm['portal'][9].'> #9</td></tr></table>');
  1814. showsetting('setting_imgwater_image_watermarkminwidthheight', array('settingnew[watermarkminwidth][portal]', 'settingnew[watermarkminheight][portal]'), array(intval($setting['watermarkminwidth']['portal']), intval($setting['watermarkminheight']['portal'])), 'multiply');
  1815. showsetting('setting_imgwater_image_watermarktype', array('settingnew[watermarktype][portal]', array(
  1816. array('gif', $lang['setting_imgwater_image_watermarktype_gif'], array('watermarktypeext_portal' => 'none')),
  1817. array('png', $lang['setting_imgwater_image_watermarktype_png'], array('watermarktypeext_portal' => 'none')),
  1818. array('text', $lang['setting_imgwater_image_watermarktype_text'], array('watermarktypeext_portal' => ''))
  1819. )), $setting['watermarktype']['portal'], 'mradio');
  1820. showsetting('setting_imgwater_image_watermarktrans', 'settingnew[watermarktrans][portal]', $setting['watermarktrans']['portal'], 'text');
  1821. showsetting('setting_imgwater_image_watermarkquality', 'settingnew[watermarkquality][portal]', $setting['watermarkquality']['portal'], 'text');
  1822. showtagheader('tbody', 'watermarktypeext_portal', $setting['watermarktype']['portal'] == 'text', 'sub');
  1823. showsetting('setting_imgwater_image_watermarktext_text', 'settingnew[watermarktext][text][portal]', $setting['watermarktext']['text']['portal'], 'textarea');
  1824. showsetting('setting_imgwater_image_watermarktext_fontpath', '', '', $fontlist['portal']);
  1825. showsetting('setting_imgwater_image_watermarktext_size', 'settingnew[watermarktext][size][portal]', $setting['watermarktext']['size']['portal'], 'text');
  1826. showsetting('setting_imgwater_image_watermarktext_angle', 'settingnew[watermarktext][angle][portal]', $setting['watermarktext']['angle']['portal'], 'text');
  1827. showsetting('setting_imgwater_image_watermarktext_color', 'settingnew[watermarktext][color][portal]', $setting['watermarktext']['color']['portal'], 'color');
  1828. showsetting('setting_imgwater_image_watermarktext_shadowx', 'settingnew[watermarktext][shadowx][portal]', $setting['watermarktext']['shadowx']['portal'], 'text');
  1829. showsetting('setting_imgwater_image_watermarktext_shadowy', 'settingnew[watermarktext][shadowy][portal]', $setting['watermarktext']['shadowy']['portal'], 'text');
  1830. showsetting('setting_imgwater_image_watermarktext_shadowcolor', 'settingnew[watermarktext][shadowcolor][portal]', $setting['watermarktext']['shadowcolor']['portal'], 'color');
  1831. showsetting('setting_imgwater_image_watermarktext_imtranslatex', 'settingnew[watermarktext][translatex][portal]', $setting['watermarktext']['translatex']['portal'], 'text');
  1832. showsetting('setting_imgwater_image_watermarktext_imtranslatey', 'settingnew[watermarktext][translatey][portal]', $setting['watermarktext']['translatey']['portal'], 'text');
  1833. showsetting('setting_imgwater_image_watermarktext_imskewx', 'settingnew[watermarktext][skewx][portal]', $setting['watermarktext']['skewx']['portal'], 'text');
  1834. showsetting('setting_imgwater_image_watermarktext_imskewy', 'settingnew[watermarktext][skewy][portal]', $setting['watermarktext']['skewy']['portal'], 'text');
  1835. showtagfooter('tbody');
  1836. showsetting('setting_imgwater_preview', '', '', cplang('setting_imgwater_preview_portal'));
  1837. showtablefooter();
  1838. showtableheader('setting_imgwater_image_watermarks_forum', '', 'id="forum"'.($_GET['anchor'] != 'forum' ? ' style="display: none"' : ''));
  1839. $fontlist['forum'] = '<select name="settingnew[watermarktext][fontpath][forum]">' . $fontlist['forum'];
  1840. showsetting('setting_imgwater_image_watermarkstatus', '', '', '<table style="margin-bottom: 3px; margin-top:3px;"><tr><td colspan="3"><input class="radio" type="radio" name="settingnew[watermarkstatus][forum]" value="0" '.$checkwm['forum'][0].'>'.$lang['setting_imgwater_image_watermarkstatus_none'].'</td></tr><tr><td><input class="radio" type="radio" name="settingnew[watermarkstatus][forum]" value="1" '.$checkwm['forum'][1].'> #1</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][forum]" value="2" '.$checkwm['forum'][2].'> #2</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][forum]" value="3" '.$checkwm['forum'][3].'> #3</td></tr><tr><td><input class="radio" type="radio" name="settingnew[watermarkstatus][forum]" value="4" '.$checkwm['forum'][4].'> #4</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][forum]" value="5" '.$checkwm['forum'][5].'> #5</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][forum]" value="6" '.$checkwm['forum'][6].'> #6</td></tr><tr><td><input class="radio" type="radio" name="settingnew[watermarkstatus][forum]" value="7" '.$checkwm['forum'][7].'> #7</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][forum]" value="8" '.$checkwm['forum'][8].'> #8</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][forum]" value="9" '.$checkwm['forum'][9].'> #9</td></tr></table>');
  1841. showsetting('setting_imgwater_image_watermarkminwidthheight', array('settingnew[watermarkminwidth][forum]', 'settingnew[watermarkminheight][forum]'), array(intval($setting['watermarkminwidth']['forum']), intval($setting['watermarkminheight']['forum'])), 'multiply');
  1842. showsetting('setting_imgwater_image_watermarktype', array('settingnew[watermarktype][forum]', array(
  1843. array('gif', $lang['setting_imgwater_image_watermarktype_gif'], array('watermarktypeext_forum' => 'none')),
  1844. array('png', $lang['setting_imgwater_image_watermarktype_png'], array('watermarktypeext_forum' => 'none')),
  1845. array('text', $lang['setting_imgwater_image_watermarktype_text'], array('watermarktypeext_forum' => ''))
  1846. )), $setting['watermarktype']['forum'], 'mradio');
  1847. showsetting('setting_imgwater_image_watermarktrans', 'settingnew[watermarktrans][forum]', $setting['watermarktrans']['forum'], 'text');
  1848. showsetting('setting_imgwater_image_watermarkquality', 'settingnew[watermarkquality][forum]', $setting['watermarkquality']['forum'], 'text');
  1849. showtagheader('tbody', 'watermarktypeext_forum', $setting['watermarktype']['forum'] == 'text', 'sub');
  1850. showsetting('setting_imgwater_image_watermarktext_text', 'settingnew[watermarktext][text][forum]', $setting['watermarktext']['text']['forum'], 'textarea');
  1851. showsetting('setting_imgwater_image_watermarktext_fontpath', '', '', $fontlist['forum']);
  1852. showsetting('setting_imgwater_image_watermarktext_size', 'settingnew[watermarktext][size][forum]', $setting['watermarktext']['size']['forum'], 'text');
  1853. showsetting('setting_imgwater_image_watermarktext_angle', 'settingnew[watermarktext][angle][forum]', $setting['watermarktext']['angle']['forum'], 'text');
  1854. showsetting('setting_imgwater_image_watermarktext_color', 'settingnew[watermarktext][color][forum]', $setting['watermarktext']['color']['forum'], 'color');
  1855. showsetting('setting_imgwater_image_watermarktext_shadowx', 'settingnew[watermarktext][shadowx][forum]', $setting['watermarktext']['shadowx']['forum'], 'text');
  1856. showsetting('setting_imgwater_image_watermarktext_shadowy', 'settingnew[watermarktext][shadowy][forum]', $setting['watermarktext']['shadowy']['forum'], 'text');
  1857. showsetting('setting_imgwater_image_watermarktext_shadowcolor', 'settingnew[watermarktext][shadowcolor][forum]', $setting['watermarktext']['shadowcolor']['forum'], 'color');
  1858. showsetting('setting_imgwater_image_watermarktext_imtranslatex', 'settingnew[watermarktext][translatex][forum]', $setting['watermarktext']['translatex']['forum'], 'text');
  1859. showsetting('setting_imgwater_image_watermarktext_imtranslatey', 'settingnew[watermarktext][translatey][forum]', $setting['watermarktext']['translatey']['forum'], 'text');
  1860. showsetting('setting_imgwater_image_watermarktext_imskewx', 'settingnew[watermarktext][skewx][forum]', $setting['watermarktext']['skewx']['forum'], 'text');
  1861. showsetting('setting_imgwater_image_watermarktext_imskewy', 'settingnew[watermarktext][skewy][forum]', $setting['watermarktext']['skewy']['forum'], 'text');
  1862. showtagfooter('tbody');
  1863. showsetting('setting_imgwater_preview', '', '', cplang('setting_imgwater_preview_forum'));
  1864. showtablefooter();
  1865. showtableheader('setting_imgwater_image_watermarks_album', '', 'id="album"'.($_GET['anchor'] != 'album' ? ' style="display: none"' : ''));
  1866. $fontlist['album'] = '<select name="settingnew[watermarktext][fontpath][album]">' . $fontlist['album'];
  1867. showsetting('setting_imgwater_image_watermarkstatus', '', '', '<table style="margin-bottom: 3px; margin-top:3px;"><tr><td colspan="3"><input class="radio" type="radio" name="settingnew[watermarkstatus][album]" value="0" '.$checkwm['album'][0].'>'.$lang['setting_imgwater_image_watermarkstatus_none'].'</td></tr><tr><td><input class="radio" type="radio" name="settingnew[watermarkstatus][album]" value="1" '.$checkwm['album'][1].'> #1</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][album]" value="2" '.$checkwm['album'][2].'> #2</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][album]" value="3" '.$checkwm['album'][3].'> #3</td></tr><tr><td><input class="radio" type="radio" name="settingnew[watermarkstatus][album]" value="4" '.$checkwm['album'][4].'> #4</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][album]" value="5" '.$checkwm['album'][5].'> #5</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][album]" value="6" '.$checkwm['album'][6].'> #6</td></tr><tr><td><input class="radio" type="radio" name="settingnew[watermarkstatus][album]" value="7" '.$checkwm['album'][7].'> #7</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][album]" value="8" '.$checkwm['album'][8].'> #8</td><td><input class="radio" type="radio" name="settingnew[watermarkstatus][album]" value="9" '.$checkwm['album'][9].'> #9</td></tr></table>');
  1868. showsetting('setting_imgwater_image_watermarkminwidthheight', array('settingnew[watermarkminwidth][album]', 'settingnew[watermarkminheight][album]'), array(intval($setting['watermarkminwidth']['album']), intval($setting['watermarkminheight']['album'])), 'multiply');
  1869. showsetting('setting_imgwater_image_watermarktype', array('settingnew[watermarktype][album]', array(
  1870. array('gif', $lang['setting_imgwater_image_watermarktype_gif'], array('watermarktypeext_album' => 'none')),
  1871. array('png', $lang['setting_imgwater_image_watermarktype_png'], array('watermarktypeext_album' => 'none')),
  1872. array('text', $lang['setting_imgwater_image_watermarktype_text'], array('watermarktypeext_album' => ''))
  1873. )), $setting['watermarktype']['album'], 'mradio');
  1874. showsetting('setting_imgwater_image_watermarktrans', 'settingnew[watermarktrans][album]', $setting['watermarktrans']['album'], 'text');
  1875. showsetting('setting_imgwater_image_watermarkquality', 'settingnew[watermarkquality][album]', $setting['watermarkquality']['album'], 'text');
  1876. showtagheader('tbody', 'watermarktypeext_album', $setting['watermarktype']['album'] == 'text', 'sub');
  1877. showsetting('setting_imgwater_image_watermarktext_text', 'settingnew[watermarktext][text][album]', $setting['watermarktext']['text']['album'], 'textarea');
  1878. showsetting('setting_imgwater_image_watermarktext_fontpath', '', '', $fontlist['album']);
  1879. showsetting('setting_imgwater_image_watermarktext_size', 'settingnew[watermarktext][size][album]', $setting['watermarktext']['size']['album'], 'text');
  1880. showsetting('setting_imgwater_image_watermarktext_angle', 'settingnew[watermarktext][angle][album]', $setting['watermarktext']['angle']['album'], 'text');
  1881. showsetting('setting_imgwater_image_watermarktext_color', 'settingnew[watermarktext][color][album]', $setting['watermarktext']['color']['album'], 'color');
  1882. showsetting('setting_imgwater_image_watermarktext_shadowx', 'settingnew[watermarktext][shadowx][album]', $setting['watermarktext']['shadowx']['album'], 'text');
  1883. showsetting('setting_imgwater_image_watermarktext_shadowy', 'settingnew[watermarktext][shadowy][album]', $setting['watermarktext']['shadowy']['album'], 'text');
  1884. showsetting('setting_imgwater_image_watermarktext_shadowcolor', 'settingnew[watermarktext][shadowcolor][album]', $setting['watermarktext']['shadowcolor']['album'], 'color');
  1885. showsetting('setting_imgwater_image_watermarktext_imtranslatex', 'settingnew[watermarktext][translatex][album]', $setting['watermarktext']['translatex']['album'], 'text');
  1886. showsetting('setting_imgwater_image_watermarktext_imtranslatey', 'settingnew[watermarktext][translatey][album]', $setting['watermarktext']['translatey']['album'], 'text');
  1887. showsetting('setting_imgwater_image_watermarktext_imskewx', 'settingnew[watermarktext][skewx][album]', $setting['watermarktext']['skewx']['album'], 'text');
  1888. showsetting('setting_imgwater_image_watermarktext_imskewy', 'settingnew[watermarktext][skewy][album]', $setting['watermarktext']['skewy']['album'], 'text');
  1889. showtagfooter('tbody');
  1890. showsetting('setting_imgwater_preview', '', '', cplang('setting_imgwater_preview_album'));
  1891. showtablefooter();
  1892. showtableheader();
  1893. } elseif($operation == 'search') {
  1894. $setting['search'] = dunserialize($setting['search']);
  1895. $appService = Cloud::loadClass('Service_App');
  1896. showtableheader('setting_search_status', 'fixpadding');
  1897. showsubtitle(array('setting_search_onoff', 'search_item_name', 'setting_serveropti_searchctrl', 'setting_serveropti_maxspm', 'setting_serveropti_maxsearchresults'));
  1898. if(helper_access::check_module('portal')) {
  1899. $search_portal = array(
  1900. $setting['search']['portal']['status'] ? '<input type="checkbox" class="checkbox" name="settingnew[search][portal][status]" value="1" checked="checked" />' : '<input type="checkbox" class="checkbox" name="settingnew[search][portal][status]" value="1" />',
  1901. cplang('setting_search_status_portal'),
  1902. '<input type="text" class="txt" name="settingnew[search][portal][searchctrl]" value="'.$setting['search']['portal']['searchctrl'].'" />',
  1903. '<input type="text" class="txt" name="settingnew[search][portal][maxspm]" value="'.$setting['search']['portal']['maxspm'].'" />',
  1904. '<input type="text" class="txt" name="settingnew[search][portal][maxsearchresults]" value="'.$setting['search']['portal']['maxsearchresults'].'" />',
  1905. );
  1906. }
  1907. if(!$appService->getCloudAppStatus('search')) {
  1908. $search_forum = array(
  1909. $setting['search']['forum']['status'] ? '<input type="checkbox" class="checkbox" name="settingnew[search][forum][status]" value="1" checked="checked" />' : '<input type="checkbox" class="checkbox" name="settingnew[search][forum][status]" value="1" />',
  1910. cplang('setting_search_status_forum'),
  1911. '<input type="text" class="txt" name="settingnew[search][forum][searchctrl]" value="'.$setting['search']['forum']['searchctrl'].'" />',
  1912. '<input type="text" class="txt" name="settingnew[search][forum][maxspm]" value="'.$setting['search']['forum']['maxspm'].'" />',
  1913. '<input type="text" class="txt" name="settingnew[search][forum][maxsearchresults]" value="'.$setting['search']['forum']['maxsearchresults'].'" />',
  1914. );
  1915. }
  1916. if(helper_access::check_module('blog')) {
  1917. $search_blog = array(
  1918. $setting['search']['blog']['status'] ? '<input type="checkbox" class="checkbox" name="settingnew[search][blog][status]" value="1" checked="checked" />' : '<input type="checkbox" class="checkbox" name="settingnew[search][blog][status]" value="1" />',
  1919. cplang('setting_search_status_blog'),
  1920. '<input type="text" class="txt" name="settingnew[search][blog][searchctrl]" value="'.$setting['search']['blog']['searchctrl'].'" />',
  1921. '<input type="text" class="txt" name="settingnew[search][blog][maxspm]" value="'.$setting['search']['blog']['maxspm'].'" />',
  1922. '<input type="text" class="txt" name="settingnew[search][blog][maxsearchresults]" value="'.$setting['search']['blog']['maxsearchresults'].'" />',
  1923. );
  1924. }
  1925. if(helper_access::check_module('album')) {
  1926. $search_album = array(
  1927. $setting['search']['album']['status'] ? '<input type="checkbox" class="checkbox" name="settingnew[search][album][status]" value="1" checked="checked" />' : '<input type="checkbox" class="checkbox" name="settingnew[search][album][status]" value="1" />',
  1928. cplang('setting_search_status_album'),
  1929. '<input type="text" class="txt" name="settingnew[search][album][searchctrl]" value="'.$setting['search']['album']['searchctrl'].'" />',
  1930. '<input type="text" class="txt" name="settingnew[search][album][maxspm]" value="'.$setting['search']['album']['maxspm'].'" />',
  1931. '<input type="text" class="txt" name="settingnew[search][album][maxsearchresults]" value="'.$setting['search']['album']['maxsearchresults'].'" />',
  1932. );
  1933. }
  1934. if(helper_access::check_module('group')) {
  1935. $search_group = array(
  1936. $setting['search']['group']['status'] ? '<input type="checkbox" class="checkbox" name="settingnew[search][group][status]" value="1" checked="checked" />' : '<input type="checkbox" class="checkbox" name="settingnew[search][group][status]" value="1" />',
  1937. cplang('setting_search_status_group'),
  1938. '<input type="text" class="txt" name="settingnew[search][group][searchctrl]" value="'.$setting['search']['group']['searchctrl'].'" />',
  1939. '<input type="text" class="txt" name="settingnew[search][group][maxspm]" value="'.$setting['search']['group']['maxspm'].'" />',
  1940. '<input type="text" class="txt" name="settingnew[search][group][maxsearchresults]" value="'.$setting['search']['group']['maxsearchresults'].'" />',
  1941. );
  1942. }
  1943. if(helper_access::check_module('collection')) {
  1944. $search_collection = array(
  1945. $setting['search']['collection']['status'] ? '<input type="checkbox" class="checkbox" name="settingnew[search][collection][status]" value="1" checked="checked" />' : '<input type="checkbox" class="checkbox" name="settingnew[search][collection][status]" value="1" />',
  1946. cplang('setting_search_status_collection'),
  1947. '<input type="text" class="txt" name="settingnew[search][collection][searchctrl]" value="'.$setting['search']['collection']['searchctrl'].'" />',
  1948. '<input type="text" class="txt" name="settingnew[search][collection][maxspm]" value="'.$setting['search']['collection']['maxspm'].'" />',
  1949. '<input type="text" class="txt" name="settingnew[search][collection][maxsearchresults]" value="'.$setting['search']['collection']['maxsearchresults'].'" />',
  1950. );
  1951. }
  1952. showtablerow('', array('width="100"', 'width="120"', 'width="120"', 'width="120"'), $search_portal);
  1953. showtablerow('', '', $search_forum);
  1954. showtablerow('', '', $search_blog);
  1955. showtablerow('', '', $search_album);
  1956. showtablerow('', '', $search_group);
  1957. showtablerow('', '', $search_collection);
  1958. showtablefooter();
  1959. if (!$appService->getCloudAppStatus('search')) {
  1960. showtableheader('setting_search_srchhotkeywords');
  1961. showsetting('setting_search_srchhotkeywords', 'settingnew[srchhotkeywords]', $setting['srchhotkeywords'], 'textarea');
  1962. showtablefooter();
  1963. showtableheader('settings_sphinx', 'fixpadding');
  1964. showsetting('settings_sphinx_sphinxon', 'settingnew[sphinxon]', $setting['sphinxon'], 'radio');
  1965. showsetting('settings_sphinx_sphinxhost', 'settingnew[sphinxhost]', $setting['sphinxhost'], 'text');
  1966. showsetting('settings_sphinx_sphinxport', 'settingnew[sphinxport]', $setting['sphinxport'], 'text');
  1967. showsetting('settings_sphinx_sphinxsubindex', 'settingnew[sphinxsubindex]', $setting['sphinxsubindex'], 'text');
  1968. showsetting('settings_sphinx_sphinxmsgindex', 'settingnew[sphinxmsgindex]', $setting['sphinxmsgindex'], 'text');
  1969. showsetting('settings_sphinx_sphinxmaxquerytime', 'settingnew[sphinxmaxquerytime]', $setting['sphinxmaxquerytime'], 'text');
  1970. showsetting('settings_sphinx_sphinxlimit', 'settingnew[sphinxlimit]', $setting['sphinxlimit'], 'text');
  1971. $spx_ranks = array('SPH_RANK_PROXIMITY_BM25', 'SPH_RANK_BM25', 'SPH_RANK_NONE');
  1972. $selectspxrank = '';
  1973. $selectspxrank = '<select name="settingnew[sphinxrank]">';
  1974. foreach($spx_ranks as $spx_rank) {
  1975. $selectspxrank.= '<option value="'.$spx_rank.'"'.($spx_rank == $setting['sphinxrank'] ? 'selected="selected"' : '').'>'.$spx_rank.'</option>';
  1976. }
  1977. $selectspxrank .='</select>';
  1978. showsetting('settings_sphinx_sphinxrank', '', '', $selectspxrank);
  1979. showtablefooter();
  1980. } else {
  1981. showtablerow('', 'colspan="10" class="lineheight"', $lang['setting_search_srchhotkeywords_disabled']);
  1982. }
  1983. showtableheader();
  1984. } elseif($operation == 'uc' && $isfounder) {
  1985. $disable = !is_writeable(DISCUZ_ROOT . './config/config_ucenter.php');
  1986. include DISCUZ_ROOT.'./config/config_ucenter.php';
  1987. showtips('setting_uc_tips');
  1988. showtableheader();
  1989. showsetting('setting_uc_appid', 'settingnew[uc][appid]', UC_APPID, 'text', $disable);
  1990. showsetting('setting_uc_key', 'settingnew[uc][key]', '********', 'text', $disable);
  1991. showsetting('setting_uc_api', 'settingnew[uc][api]', UC_API, 'text', $disable);
  1992. showsetting('setting_uc_ip', 'settingnew[uc][ip]', UC_IP, 'text', $disable);
  1993. showsetting('setting_uc_connect', array('settingnew[uc][connect]', array(
  1994. array('mysql', $lang['setting_uc_connect_mysql'], array('ucmysql' => '')),
  1995. array('', $lang['setting_uc_connect_api'], array('ucmysql' => 'none')))), UC_CONNECT, 'mradio', $disable);
  1996. if(strpos(UC_DBTABLEPRE, '.')) {
  1997. $prestr = str_replace('`', '', UC_DBTABLEPRE);
  1998. $uctablepre = substr($prestr, strrpos($prestr, '.')+1);
  1999. }
  2000. showtagheader('tbody', 'ucmysql', UC_CONNECT, 'sub');
  2001. showsetting('setting_uc_dbhost', 'settingnew[uc][dbhost]', UC_DBHOST, 'text', $disable);
  2002. showsetting('setting_uc_dbuser', 'settingnew[uc][dbuser]', UC_DBUSER, 'text', $disable);
  2003. showsetting('setting_uc_dbpass', 'settingnew[uc][dbpass]', '********', 'text', $disable);
  2004. showsetting('setting_uc_dbname', 'settingnew[uc][dbname]', UC_DBNAME, 'text', $disable);
  2005. showsetting('setting_uc_dbtablepre', 'settingnew[uc][dbtablepre]', $uctablepre, 'text', $disable);
  2006. showtagfooter('tbody');
  2007. showsetting('setting_uc_activation', 'settingnew[ucactivation]', $setting['ucactivation'], 'radio', 0, 1);
  2008. showsetting('setting_uc_fastactivation', 'settingnew[fastactivation]', $setting['fastactivation'], 'radio');
  2009. showtagfooter('tbody');
  2010. showsetting('setting_uc_avatarmethod', array('settingnew[avatarmethod]', array(
  2011. array(0, $lang['setting_uc_avatarmethod_0']),
  2012. array(1, $lang['setting_uc_avatarmethod_1']),
  2013. )), $setting['avatarmethod'], 'mradio');
  2014. } elseif($operation == 'ec') {
  2015. showtableheader();
  2016. showtitle('setting_ec_credittrade');
  2017. showsetting('setting_ec_ratio', 'settingnew[ec_ratio]', $setting['ec_ratio'], 'text');
  2018. showsetting('setting_ec_mincredits', 'settingnew[ec_mincredits]', $setting['ec_mincredits'], 'text');
  2019. showsetting('setting_ec_maxcredits', 'settingnew[ec_maxcredits]', $setting['ec_maxcredits'], 'text');
  2020. showsetting('setting_ec_maxcreditspermonth', 'settingnew[ec_maxcreditspermonth]', $setting['ec_maxcreditspermonth'], 'text');
  2021. } elseif($operation == 'memory') {
  2022. showtips('setting_memory_tips');
  2023. showtableheader('setting_memory_status', 'fixpadding');
  2024. showsubtitle(array('setting_memory_state_interface', 'setting_memory_state_extension', 'setting_memory_state_config', 'setting_memory_clear', ''));
  2025. $do_clear_ok = $do == 'clear' ? cplang('setting_memory_do_clear') : '';
  2026. $do_clear_link = '<a href="'.ADMINSCRIPT.'?action=setting&operation=memory&do=clear">'.cplang('setting_memory_clear').'</a>'.$do_clear_ok;
  2027. $cache_extension = C::memory()->extension;
  2028. $cache_config = C::memory()->config;
  2029. $cache_type = C::memory()->type;
  2030. $dir = DISCUZ_ROOT.'./source/class/memory';
  2031. $qaadir = dir($dir);
  2032. $cachelist = array();
  2033. while($entry = $qaadir->read()) {
  2034. if(!in_array($entry, array('.', '..')) && preg_match("/^memory\_driver\_[\w\.]+$/", $entry) && substr($entry, -4) == '.php' && strlen($entry) < 30 && is_file($dir.'/'.$entry)) {
  2035. $cache = str_replace(array('.php', 'memory_driver_'), '', $entry);
  2036. $class_name = 'memory_driver_'.$cache;
  2037. $memory = new $class_name();
  2038. $available = is_array($cache_config[$cache]) ? !empty($cache_config[$cache]['server']) : !empty($cache_config[$cache]);
  2039. $cachelist[] = array($memory->cacheName,
  2040. $memory->env($config) ? cplang('setting_memory_php_enable') : cplang('setting_memory_php_disable'),
  2041. $available ? cplang('open') : cplang('closed'),
  2042. $cache_type == $memory->cacheName ? $do_clear_link : '--'
  2043. );
  2044. }
  2045. }
  2046. foreach($cachelist as $cache) {
  2047. showtablerow('', array('width="100"', 'width="120"', 'width="120"'), $cache);
  2048. }
  2049. showtablefooter();
  2050. if(!isset($setting['memory'])) {
  2051. C::t('common_setting')->update('memory', '');
  2052. $setting['memory'] = '';
  2053. }
  2054. if($do == 'clear') {
  2055. C::memory()->clear();
  2056. }
  2057. $setting['memory'] = dunserialize($setting['memory']);
  2058. showtableheader('setting_memory_function', 'fixpadding');
  2059. showsubtitle(array('setting_memory_func', 'setting_memory_func_enable', 'setting_memory_func_ttl', ''));
  2060. foreach (getmemorycachekeys() as $skey) {
  2061. $ttl = isset($setting['memory'][$skey]) ? intval($setting['memory'][$skey]) : '';
  2062. showtablerow('', array('width="120"', 'width="120"', 'width="120"', ''), array(
  2063. cplang('setting_memory_func_'.$skey),
  2064. '<input type="checkbox" class="checkbox" name="settingnew[memory]['.$skey.'][enable]" '.($ttl !== ''? 'checked' : '').' value="1">',
  2065. '<input type="text" class="txt" name="settingnew[memory]['.$skey.'][ttl]" value="'.$ttl.'">',cplang('setting_memory_func_'.$skey.'_comment'),
  2066. ));
  2067. }
  2068. } elseif($operation == 'memorydata') {
  2069. $cache_keys = getmemorycachekeys();
  2070. if(submitcheck('memorydatasubmit')) {
  2071. $flag = 0;
  2072. foreach($cache_keys as $k) {
  2073. if(($id = $_GET[$k.'_id'])) {
  2074. if($k == 'common_member') {
  2075. $uid = intval($id);
  2076. C::t('common_member')->clear_cache($uid);
  2077. C::t('common_member_status')->clear_cache($uid);
  2078. C::t('common_member_count')->clear_cache($uid);
  2079. C::t('common_member_profile')->clear_cache($uid);
  2080. C::t('common_member_field_home')->clear_cache($uid);
  2081. C::t('common_member_field_forum')->clear_cache($uid);
  2082. C::t('common_member_verify')->clear_cache($uid);
  2083. } elseif($k == 'forum_thread_forumdisplay') {
  2084. memory('rm', $id, 'forumdisplay_');
  2085. } elseif($k == 'forumindex') {
  2086. memory('rm', 'forum_index_page_'.$id);
  2087. } elseif($k == 'diyblock' || $k == 'diyblockoutput') {
  2088. C::t('common_block')->clear_cache($id);
  2089. } else {
  2090. C::t($k)->clear_cache($id);
  2091. }
  2092. $flag = 1;
  2093. }
  2094. }
  2095. if($flag) {
  2096. cpmsg('setting_memory_rm_succeed', 'action=setting&operation=memorydata', 'succeed', '', FALSE);
  2097. } else {
  2098. cpmsg('setting_memory_rm_error', 'action=setting&operation=memorydata', 'error', '', FALSE);
  2099. }
  2100. }
  2101. $setting['memory'] = dunserialize($setting['memory']);
  2102. showtableheader('setting_memorydata', 'fixpadding');
  2103. showsubtitle(array('setting_memory_func', 'setting_memorydata_rm_cache_key', '', ''));
  2104. foreach ($cache_keys as $skey) {
  2105. if(isset($setting['memory'][$skey])) {
  2106. showtablerow('', array('width="120"', 'width="120"', '', ''), array(
  2107. cplang('setting_memory_func_'.$skey),
  2108. '<input type="text" class="txt" name="'.$skey.'_id" id="'.$skey.'_id" value="">',
  2109. cplang('setting_memory_data_'.$skey.'_comment'),
  2110. ));
  2111. }
  2112. }
  2113. showsubmit('memorydatasubmit');
  2114. showtablefooter();
  2115. showtagfooter('div');
  2116. showformfooter();
  2117. exit;
  2118. } elseif($operation == 'ranklist') {
  2119. $setting['ranklist'] = dunserialize($setting['ranklist']);
  2120. showtableheader('', 'nobottom', 'id="all"');
  2121. showsetting('setting_ranklist_status', 'settingnew[ranklist][status]', $setting['ranklist']['status'], 'radio');
  2122. showsetting('setting_ranklist_index_cache_time', 'settingnew[ranklist][cache_time]', $setting['ranklist']['cache_time'], 'text');
  2123. showsetting('setting_ranklist_index_select', array('settingnew[ranklist][index_select]', array(array('all',cplang('dateline_all')), array('thismonth',cplang('thismonth')), array('thisweek',cplang('thisweek')), array('today',cplang('today')))), $setting['ranklist']['index_select'], 'select');
  2124. showsetting('setting_ranklist_ignorefid', 'settingnew[ranklist][ignorefid]', $setting['ranklist']['ignorefid'], 'text');
  2125. showtablefooter();
  2126. showtableheader('setting_ranklist_block_set', 'fixpadding', 'id="other"');
  2127. showsubtitle(array('setting_credits_available', 'setting_ranklist_block_name', 'setting_ranklist_cache_time', 'setting_ranklist_show_num'), '');
  2128. $ranklist = array('member','thread','blog','poll','activity','picture','forum','group');
  2129. if(!is_array($setting['ranklist'])) {
  2130. $setting['ranklist'] = array();
  2131. }
  2132. foreach($ranklist as $i) {
  2133. showtablerow('', array('width="40"', 'class="td22"', 'class="td21"', 'class="td28"', 'class="td28"', 'class="td28"', 'class="td28"'), array(
  2134. "<input class=\"checkbox\" type=\"checkbox\" name=\"settingnew[ranklist][$i][available]\" value=\"1\" ".($setting['ranklist'][$i]['available'] ? 'checked' : '')." />",
  2135. cplang('setting_ranklist_'.$i),
  2136. "<input type=\"text\" class=\"txt\" size=\"8\" name=\"settingnew[ranklist][$i][cache_time]\" value=\"{$setting['ranklist'][$i]['cache_time']}\">",
  2137. "<input type=\"text\" class=\"txt\" size=\"8\" name=\"settingnew[ranklist][$i][show_num]\" value=\"{$setting['ranklist'][$i]['show_num']}\">"
  2138. ));
  2139. }
  2140. showtablerow('', 'colspan="10" class="lineheight"', $lang['setting_ranklist_block_comment']);
  2141. showtablefooter();
  2142. showtableheader('', 'notop');
  2143. showsubmit('settingsubmit');
  2144. showtablefooter();
  2145. showtableheader('', 'notop');
  2146. $ranklistarray = array();
  2147. $ranklistarray[] = array('index', cplang('setting_ranklist_index'));
  2148. foreach($ranklist as $k) {
  2149. $ranklistarray[] = array($k, cplang('setting_ranklist_'.$k));
  2150. }
  2151. showsetting('setting_ranklist_update_cache_choose', array('update_ranklist_cache', $ranklistarray), '', 'mcheckbox');
  2152. showtablerow('', 'colspan="10" class="lineheight"', $lang['setting_ranklist_cache_comment']);
  2153. showtablefooter();
  2154. showtableheader('', 'notop');
  2155. showhiddenfields(array('updateranklistcache' => 0));
  2156. showsubmit('', '', '<input type="submit" class="btn" name="settingsubmit" value="'.cplang('setting_ranklist_update_cache').'" onclick="this.form.updateranklistcache.value=1">');
  2157. showtablefooter();
  2158. showformfooter();
  2159. exit;
  2160. } elseif ($operation == 'mobile'){
  2161. $setting['mobile'] = dunserialize($setting['mobile']);
  2162. showtips('setting_mobile_status_tips');
  2163. showtableheader('setting_mobile_status', '', 'id="status"'.($_GET['anchor'] != 'status' ? ' style="display: none"' : ''));
  2164. showsetting('setting_mobile_allowmobile', array('settingnew[mobile][allowmobile]', array(
  2165. array(1, $lang['yes'], array('mobileext' => '')),
  2166. array(0, $lang['no'], array('mobileext' => 'none'))
  2167. ), TRUE), $setting['mobile']['allowmobile'] ? $setting['mobile']['allowmobile'] : 0, 'mradio');
  2168. showtagheader('tbody', 'mobileext', $setting['mobile']['allowmobile'], 'sub');
  2169. showsetting('setting_mobile_mobileforward', 'settingnew[mobile][mobileforward]', $setting['mobile']['mobileforward'], 'radio');
  2170. showsetting('setting_mobile_register', 'settingnew[mobile][mobileregister]', $setting['mobile']['mobileregister'], 'radio');
  2171. showsetting('setting_mobile_hotthread', 'settingnew[mobile][mobilehotthread]', $setting['mobile']['mobilehotthread'], 'radio');
  2172. showsetting('setting_mobile_displayorder3', 'settingnew[mobile][mobiledisplayorder3]', $setting['mobile']['mobiledisplayorder3'], 'radio');
  2173. showsetting('setting_mobile_simpletype', 'settingnew[mobile][mobilesimpletype]', $setting['mobile']['mobilesimpletype'], 'radio');
  2174. showsetting('setting_mobile_topicperpage', 'settingnew[mobile][mobiletopicperpage]', $setting['mobile']['mobiletopicperpage'] ? $setting['mobile']['mobiletopicperpage'] : 10, 'text');
  2175. showsetting('setting_mobile_postperpage', 'settingnew[mobile][mobilepostperpage]', $setting['mobile']['mobilepostperpage'] ? $setting['mobile']['mobilepostperpage'] : 5, 'text');
  2176. showsetting('setting_mobile_cachetime', 'settingnew[mobile][mobilecachetime]', $setting['mobile']['mobilecachetime'] ? $setting['mobile']['mobilecachetime'] : 0, 'text');
  2177. showsetting('setting_mobile_index_forumview', array('settingnew[mobile][mobileforumview]', array(
  2178. array(1, $lang['pack']),
  2179. array(0, $lang['unwind'])
  2180. )), $setting['mobile']['mobileforumview'] ? $setting['mobile']['mobileforumview'] : 0, 'mradio');
  2181. showsetting('setting_mobile_come_from', 'settingnew[mobile][mobilecomefrom]', $setting['mobile']['mobilecomefrom'], 'textarea');
  2182. showsetting('setting_mobile_wml', 'settingnew[mobile][wml]', $setting['mobile']['wml'], 'radio');
  2183. showtagfooter('tbody');
  2184. showsubmit('settingsubmit');
  2185. showformfooter();
  2186. showtablefooter();
  2187. exit;
  2188. } elseif ($operation == 'antitheft'){
  2189. if($_GET['anchor'] == 'iplist') {
  2190. if(submitcheck('antitheftsubmit', true)) {
  2191. $_GET['ips'] = dintval($_GET['ips'], true);
  2192. $url = 'action=setting&operation=antitheft&anchor=iplist&page='.$page;
  2193. if(empty($_GET['ips'])) {
  2194. cpmsg('setting_antitheft_choose_ip', $url, 'error');
  2195. }
  2196. $antitheftsetting = C::t('common_setting')->fetch('antitheftsetting', true);
  2197. if($_GET['optype'] == 'white' || $_GET['optype'] == 'black') {
  2198. $ips = explode("\n", $antitheftsetting[$_GET['optype']]);
  2199. $ips = array_diff(array_map('long2ip', $_GET['ips']), $ips);
  2200. if($ips) {
  2201. $antitheftsetting[$_GET['optype']] = $antitheftsetting[$_GET['optype']]."\n".implode("\n", $ips);
  2202. C::t('common_setting')->update('antitheftsetting', $antitheftsetting);
  2203. updatecache('antitheft');
  2204. }
  2205. C::t('common_visit')->delete($_GET['ips']);
  2206. cpmsg('setting_antitheft_add_'.$_GET['optype'], $url, 'succeed');
  2207. } elseif($_GET['optype'] == 'delete') {
  2208. C::t('common_visit')->delete($_GET['ips']);
  2209. cpmsg('setting_antitheft_delete_view', $url, 'succeed');
  2210. } else {
  2211. cpmsg('setting_antitheft_choose_optype', $url, 'error');
  2212. }
  2213. } else {
  2214. $perpage = 30;
  2215. $start = ($page-1)*$perpage;
  2216. $mpurl .= '&perpage='.$perpage;
  2217. $mpurl = ADMINSCRIPT.'?action=setting&operation=antitheft&anchor='.$_GET['anchor'];
  2218. showformheader('setting&operation=antitheft&anchor='.$_GET['anchor']);
  2219. showtableheader('setting_antitheft_iplist');
  2220. showsubtitle(array('', 'setting_antitheft_ip', 'setting_antitheft_view', 'setting_antitheft_op'));
  2221. $multipage = '';
  2222. $count = C::t('common_visit')->count();
  2223. if($count) {
  2224. require_once libfile('function/misc');
  2225. foreach(C::t('common_visit')->range($start, $perpage) as $value) {
  2226. $ip = long2ip($value['ip']);
  2227. showtablerow('', array('class="td25"', 'class=""', 'class="td28"'), array(
  2228. "<input type=\"checkbox\" class=\"checkbox\" name=\"ips[]\" value=\"$value[ip]\">",
  2229. "$ip ".convertip($ip),
  2230. $value['view'],
  2231. "<a href=\"$mpurl&optype=white&ips[]=$value[ip]&antitheftsubmit=yes\">$lang[setting_antitheft_addwhitelist]</a> |
  2232. <a href=\"$mpurl&optype=black&ips[]=$value[ip]&antitheftsubmit=yes\">$lang[setting_antitheft_addblacklist]</a> |
  2233. <a href=\"$mpurl&optype=delete&ips[]=$value[ip]&antitheftsubmit=yes\">$lang[delete]</a>
  2234. ",
  2235. ));
  2236. }
  2237. $multipage = multi($count, $perpage, $page, $mpurl);
  2238. }
  2239. $batchradio = '<input type="radio" name="optype" value="white" id="op_white" class="radio" /><label for="op_white">'.cplang('setting_antitheft_addwhitelist').'</label>&nbsp;&nbsp;';
  2240. $batchradio .= '<input type="radio" name="optype" value="black" id="op_black" class="radio" /><label for="op_black">'.cplang('setting_antitheft_addblacklist').'</label>&nbsp;&nbsp;';
  2241. $batchradio .= '<input type="radio" name="optype" value="delete" id="op_remove" class="radio" /><label for="op_remove">'.cplang('delete').'</label>&nbsp;&nbsp;<input type="hidden" name="antitheftsubmit" value="yes" />';
  2242. showsubmit('', '', '', '<input type="checkbox" name="chkall" id="chkall" class="checkbox" onclick="checkAll(\'prefix\', this.form, \'ips\')" /><label for="chkall">'.cplang('select_all').'</label>&nbsp;&nbsp;'
  2243. .$batchradio.'<input type="submit" class="btn" name="antitheftbutton" value="'.cplang('submit').'" />', $multipage);
  2244. showtablefooter();
  2245. showformfooter();
  2246. }
  2247. } else {
  2248. showtips('setting_antitheft_tips');
  2249. $setting['antitheft'] = dunserialize($setting['antitheft']);
  2250. $setting['antitheftsetting'] = dunserialize($setting['antitheftsetting']);
  2251. showtableheader('setting_antitheft_status', 'fixpadding');
  2252. showsetting('setting_antitheft_allow', array('settingnew[antitheft][allow]', array(
  2253. array(1, $lang['yes'], array('antitheftext' => '')),
  2254. array(0, $lang['no'], array('antitheftext' => 'none'))
  2255. ), TRUE), !empty($setting['antitheft']['allow']) ? $setting['antitheft']['allow'] : 0, 'mradio');
  2256. showtagheader('tbody', 'antitheftext', !empty($setting['antitheft']['allow']), 'sub');
  2257. showsetting('setting_antitheft_24_max', 'settingnew[antitheft][max]', $setting['antitheft']['max'], 'text');
  2258. showsetting('setting_antitheft_white', 'settingnew[antitheftwhite]', $setting['antitheftsetting']['white'], 'textarea');
  2259. showsetting('setting_antitheft_black', 'settingnew[antitheftblack]', $setting['antitheftsetting']['black'], 'textarea');
  2260. showsetting('setting_antitheft_disable', array('settingnew[antitheft][disable]', array(
  2261. array('thread', $lang['setting_antitheft_disable_thread'], '1'),
  2262. array('article', $lang['setting_antitheft_disable_article'], '1'),
  2263. array('blog', $lang['setting_antitheft_disable_blog'], '1'),
  2264. )), $setting['antitheft']['disable'], 'omcheckbox');
  2265. showtagfooter('tbody');
  2266. showtablefooter();
  2267. showsubmit('settingsubmit');
  2268. }
  2269. exit;
  2270. } else {
  2271. if($operation == 'mail' || $operation == 'uc') {
  2272. cpmsg('founder_action');
  2273. } else {
  2274. cpmsg('undefined_action');
  2275. }
  2276. }
  2277. showsubmit('settingsubmit', 'submit', '', $extbutton.(!empty($from) ? '<input type="hidden" name="from" value="'.$from.'">' : ''));
  2278. showtablefooter();
  2279. showformfooter();
  2280. } else {
  2281. $settingnew = $_GET['settingnew'];
  2282. if($operation == 'credits') {
  2283. $extcredits_exists = 0;
  2284. foreach($settingnew['extcredits'] as $val) {
  2285. if(isset($val['available']) && $val['available'] == 1) {
  2286. $extcredits_exists = 1;
  2287. break;
  2288. }
  2289. }
  2290. if(!$extcredits_exists) {
  2291. cpmsg('setting_extcredits_must_available');
  2292. }
  2293. if($settingnew['report_reward']) {
  2294. $settingnew['report_reward']['min'] = intval($settingnew['report_reward']['min']);
  2295. $settingnew['report_reward']['max'] = intval($settingnew['report_reward']['max']);
  2296. if($settingnew['report_reward']['min'] > $settingnew['report_reward']['max']) {
  2297. unset($settingnew['report_reward']);
  2298. }
  2299. if($settingnew['report_reward']['min'] == $settingnew['report_reward']['max']) {
  2300. $settingnew['report_reward'] = array('min' => '', 'max' => '');
  2301. }
  2302. $settingnew['report_reward'] = serialize($settingnew['report_reward']);
  2303. }
  2304. $settingnew['creditspolicy'] = @dunserialize($setting['creditspolicy']);
  2305. $settingnew['creditspolicy']['lowerlimit'] = array();
  2306. foreach($settingnew['lowerlimit'] as $key => $value) {
  2307. if($settingnew['extcredits'][$key]['available']) {
  2308. $settingnew['creditspolicy']['lowerlimit'][$key] = (float)$value;
  2309. }
  2310. }
  2311. unset($settingnew['lowerlimit']);
  2312. }
  2313. if($operation == 'uc' && is_writeable('./config/config_ucenter.php') && $isfounder) {
  2314. require_once './config/config_ucenter.php';
  2315. $ucdbpassnew = $settingnew['uc']['dbpass'] == '********' ? addslashes(UC_DBPW) : $settingnew['uc']['dbpass'];
  2316. $settingnew['uc']['key'] = addslashes($settingnew['uc']['key'] == '********' ? addslashes(UC_KEY) : $settingnew['uc']['key']);
  2317. if($settingnew['uc']['connect']) {
  2318. $uc_dblink = function_exists("mysql_connect") ? @mysql_connect($settingnew['uc']['dbhost'], $settingnew['uc']['dbuser'], $ucdbpassnew, 1) : new mysqli($settingnew['uc']['dbhost'], $settingnew['uc']['dbuser'], $ucdbpassnew);
  2319. if(!$uc_dblink) {
  2320. cpmsg('uc_database_connect_error', '', 'error');
  2321. } else {
  2322. if(function_exists("mysql_connect")) {
  2323. mysql_close($uc_dblink);
  2324. } else {
  2325. $uc_dblink->close();
  2326. }
  2327. }
  2328. }
  2329. $fp = fopen('./config/config_ucenter.php', 'r');
  2330. $configfile = fread($fp, filesize('./config/config_ucenter.php'));
  2331. $configfile = trim($configfile);
  2332. $configfile = substr($configfile, -2) == '?>' ? substr($configfile, 0, -2) : $configfile;
  2333. fclose($fp);
  2334. $connect = '';
  2335. $settingnew['uc'] = daddslashes($settingnew['uc']);
  2336. if($settingnew['uc']['connect']) {
  2337. $connect = 'mysql';
  2338. $samelink = ($dbhost == $settingnew['uc']['dbhost'] && $dbuser == $settingnew['uc']['dbuser'] && $dbpw == $ucdbpassnew);
  2339. $samecharset = !($dbcharset == 'gbk' && UC_DBCHARSET == 'latin1' || $dbcharset == 'latin1' && UC_DBCHARSET == 'gbk');
  2340. $configfile = str_replace("define('UC_DBHOST', '".addslashes(UC_DBHOST)."')", "define('UC_DBHOST', '".$settingnew['uc']['dbhost']."')", $configfile);
  2341. $configfile = str_replace("define('UC_DBUSER', '".addslashes(UC_DBUSER)."')", "define('UC_DBUSER', '".$settingnew['uc']['dbuser']."')", $configfile);
  2342. $configfile = str_replace("define('UC_DBPW', '".addslashes(UC_DBPW)."')", "define('UC_DBPW', '".$ucdbpassnew."')", $configfile);
  2343. if(!preg_match('/^[\w\d\_]+$/', $settingnew['uc']['dbtablepre']) || !preg_match('/^[\w\d\_]+$/', $settingnew['uc']['dbname'])) {
  2344. cpmsg('uc_config_write_error', '', 'error');
  2345. }
  2346. $configfile = str_replace("define('UC_DBNAME', '".addslashes(UC_DBNAME)."')", "define('UC_DBNAME', '".$settingnew['uc']['dbname']."')", $configfile);
  2347. $configfile = str_replace("define('UC_DBTABLEPRE', '".addslashes(UC_DBTABLEPRE)."')", "define('UC_DBTABLEPRE', '`".$settingnew['uc']['dbname'].'`.'.$settingnew['uc']['dbtablepre']."')", $configfile);
  2348. }
  2349. $configfile = str_replace("define('UC_CONNECT', '".addslashes(UC_CONNECT)."')", "define('UC_CONNECT', '".$connect."')", $configfile);
  2350. $configfile = str_replace("define('UC_KEY', '".addslashes(UC_KEY)."')", "define('UC_KEY', '".$settingnew['uc']['key']."')", $configfile);
  2351. $configfile = str_replace("define('UC_API', '".addslashes(UC_API)."')", "define('UC_API', '".$settingnew['uc']['api']."')", $configfile);
  2352. $configfile = str_replace("define('UC_IP', '".addslashes(UC_IP)."')", "define('UC_IP', '".$settingnew['uc']['ip']."')", $configfile);
  2353. $configfile = str_replace("define('UC_APPID', '".addslashes(UC_APPID)."')", "define('UC_APPID', '".$settingnew['uc']['appid']."')", $configfile);
  2354. $fp = fopen('./config/config_ucenter.php', 'w');
  2355. if(!($fp = @fopen('./config/config_ucenter.php', 'w'))) {
  2356. cpmsg('uc_config_write_error', '', 'error');
  2357. }
  2358. @fwrite($fp, trim($configfile));
  2359. @fclose($fp);
  2360. }
  2361. isset($settingnew['regname']) && empty($settingnew['regname']) && $settingnew['regname'] = 'register';
  2362. isset($settingnew['reglinkname']) && empty($settingnew['reglinkname']) && $settingnew['reglinkname'] = cplang('reglinkname_default');
  2363. $nohtmlarray = array('bbname', 'regname', 'reglinkname', 'icp', 'sitemessage', 'site_qq');
  2364. foreach($nohtmlarray as $k) {
  2365. if(isset($settingnew[$k])) {
  2366. $settingnew[$k] = dhtmlspecialchars($settingnew[$k]);
  2367. }
  2368. }
  2369. if(isset($settingnew['statcode'])) {
  2370. $settingnew['statcode'] = preg_replace('/language\s*=[\s|\'|\"]*php/is', '_', $settingnew['statcode']);
  2371. $settingnew['statcode'] = str_replace(array('<?', '?>'), array('&lt;?', '?&gt;'), $settingnew['statcode']);
  2372. }
  2373. if($operation == 'access') {
  2374. $settingnew['pwlength'] = intval($settingnew['pwlength']);
  2375. $settingnew['regstatus'] = (array)$settingnew['regstatus'];
  2376. $settingnew['regconnect'] = in_array('connect', $settingnew['regstatus']) ? 1 : 0;
  2377. if(in_array('open', $settingnew['regstatus']) && in_array('invite', $settingnew['regstatus'])) {
  2378. $settingnew['regstatus'] = 3;
  2379. } elseif(in_array('open', $settingnew['regstatus'])) {
  2380. $settingnew['regstatus'] = 1;
  2381. } elseif(in_array('invite', $settingnew['regstatus'])) {
  2382. $settingnew['regstatus'] = 2;
  2383. } else {
  2384. $settingnew['regstatus'] = 0;
  2385. }
  2386. $settingnew['regconnect'] = $settingnew['regconnect'] ? 1 : 0;
  2387. $settingnew['welcomemsg'] = (array)$settingnew['welcomemsg'];
  2388. if(in_array('1', $settingnew['welcomemsg']) && in_array('2', $settingnew['welcomemsg'])) {
  2389. $settingnew['welcomemsg'] = 3;
  2390. } elseif(in_array('1', $settingnew['welcomemsg'])) {
  2391. $settingnew['welcomemsg'] = 1;
  2392. } elseif(in_array('2', $settingnew['welcomemsg'])) {
  2393. $settingnew['welcomemsg'] = 2;
  2394. } else {
  2395. $settingnew['welcomemsg'] = 0;
  2396. }
  2397. if(empty($settingnew['strongpw'])) {
  2398. $settingnew['strongpw'] = array();
  2399. }
  2400. }
  2401. if(isset($settingnew['censoruser'])) {
  2402. $settingnew['censoruser'] = trim(preg_replace("/\s*(\r\n|\n\r|\n|\r)\s*/", "\r\n", $settingnew['censoruser']));
  2403. }
  2404. foreach(array('inviteconfig' => 'inviteipwhite', 'ipverifywhite', 'ipregctrl', 'ipaccess', 'adminipaccess') as $ipkey => $ipfield) {
  2405. if(!is_int($ipkey)) {
  2406. if(isset($settingnew[$ipkey][$ipfield])) {
  2407. $ipfilterpointer = &$settingnew[$ipkey][$ipfield];
  2408. }
  2409. } else {
  2410. if(isset($settingnew[$ipfield])) {
  2411. $ipfilterpointer = &$settingnew[$ipfield];
  2412. }
  2413. }
  2414. if(isset($ipfilterpointer)) {
  2415. $ipfilterpointer = trim(preg_replace("/\s*(\r\n|\n\r|\n|\r)\s*/", "\r\n", $ipfilterpointer));
  2416. }
  2417. unset($ipfilterpointer);
  2418. }
  2419. if(!empty($settingnew['ipaccess']) && !ipaccess($_G['clientip'], $settingnew['ipaccess'])) {
  2420. cpmsg('setting_ipaccess_invalid', '', 'error');
  2421. }
  2422. if(isset($settingnew['commentitem'])) {
  2423. foreach($settingnew['commentitem'] as $k => $v) {
  2424. if(!is_int($k)) {
  2425. $settingnew['commentitem'][$k] = $k.chr(0).chr(0).chr(0).$v;
  2426. }
  2427. }
  2428. $settingnew['commentitem'] = implode("\t" , $settingnew['commentitem']);
  2429. }
  2430. if(isset($settingnew['adminipaccess'])) {
  2431. if($settingnew['adminipaccess'] = trim(preg_replace("/(\s*(\r\n|\n\r|\n|\r)\s*)/", "\r\n", $settingnew['adminipaccess']))) {
  2432. if(!ipaccess($_G['clientip'], $settingnew['adminipaccess'])) {
  2433. cpmsg('setting_adminipaccess_invalid', '', 'error');
  2434. }
  2435. }
  2436. }
  2437. if(isset($settingnew['welcomemsgtitle'])) {
  2438. $settingnew['welcomemsgtitle'] = cutstr(trim(dhtmlspecialchars($settingnew['welcomemsgtitle'])), 75);
  2439. }
  2440. if(isset($settingnew['showsignatures']) && isset($settingnew['showavatars']) && isset($settingnew['showimages'])) {
  2441. $settingnew['showsettings'] = bindec($settingnew['showsignatures'].$settingnew['showavatars'].$settingnew['showimages']);
  2442. }
  2443. if(!empty($settingnew['globalstick'])) {
  2444. updatecache('globalstick');
  2445. }
  2446. if(isset($settingnew['targetblank'])) {
  2447. $settingnew['targetblank'] = intval($settingnew['targetblank']);
  2448. }
  2449. if(isset($settingnew['inviteconfig'])) {
  2450. if($settingnew['inviteconfig']['invitecodeprice']) {
  2451. $settingnew['inviteconfig']['invitecodeprice'] = round(abs($settingnew['inviteconfig']['invitecodeprice']), 2);
  2452. }
  2453. }
  2454. if(isset($settingnew['smthumb'])) {
  2455. $settingnew['smthumb'] = intval($settingnew['smthumb']) >= 20 && intval($settingnew['smthumb']) <= 40 ? intval($settingnew['smthumb']) : 20;
  2456. }
  2457. if(isset($settingnew['indexhot'])) {
  2458. $settingnew['indexhot']['limit'] = intval($settingnew['indexhot']['limit']) ? $settingnew['indexhot']['limit'] : 10;
  2459. $settingnew['indexhot']['days'] = intval($settingnew['indexhot']['days']) ? $settingnew['indexhot']['days'] : 7;
  2460. $settingnew['indexhot']['expiration'] = intval($settingnew['indexhot']['expiration']) ? $settingnew['indexhot']['expiration'] : 900;
  2461. $settingnew['indexhot']['width'] = intval($settingnew['indexhot']['width']) ? $settingnew['indexhot']['width'] : 100;
  2462. $settingnew['indexhot']['height'] = intval($settingnew['indexhot']['height']) ? $settingnew['indexhot']['height'] : 70;
  2463. $settingnew['indexhot']['messagecut'] = intval($settingnew['indexhot']['messagecut']) ? $settingnew['indexhot']['messagecut'] : 200;
  2464. $_G['setting']['indexhot'] = $settingnew['indexhot'];
  2465. updatecache('heats');
  2466. }
  2467. if(isset($settingnew['anonymoustext'])) {
  2468. if(empty($settingnew['anonymoustext'])) {
  2469. $settingnew['anonymoustext'] = cplang('anonymous');
  2470. } else {
  2471. $settingnew['anonymoustext'] = dhtmlspecialchars($settingnew['anonymoustext']);
  2472. }
  2473. }
  2474. if(isset($settingnew['defaulteditormode']) && isset($settingnew['allowswitcheditor'])) {
  2475. $settingnew['editoroptions'] = bindec($settingnew['defaulteditormode'].$settingnew['allowswitcheditor'].$settingnew['simplemode']);
  2476. }
  2477. if(isset($settingnew['myrecorddays'])) {
  2478. $settingnew['myrecorddays'] = intval($settingnew['myrecorddays']) > 0 ? intval($settingnew['myrecorddays']) : 30;
  2479. }
  2480. if(!empty($settingnew['thumbstatus']) && !function_exists('imagejpeg')) {
  2481. $settingnew['thumbstatus'] = 0;
  2482. }
  2483. if(!empty($settingnew['memory'])) {
  2484. $memory = array();
  2485. foreach($settingnew['memory'] as $k => $v) {
  2486. if(!empty($settingnew['memory'][$k]['enable'])) {
  2487. $memory[$k] = intval($settingnew['memory'][$k]['ttl']);
  2488. }
  2489. }
  2490. if(isset($memory['common_member'])) {
  2491. $memory['common_member_count'] = $memory['common_member_status'] = $memory['common_member_profile'] = $memory['common_member_field_home'] = $memory['common_member_field_forum'] = $memory['common_member_verify'] = $memory['common_member'];
  2492. } else {
  2493. unset($memory['common_member_count'], $memory['common_member_status'], $memory['common_member_profile'], $memory['common_member_field_home'], $memory['common_member_field_forum'], $memory['common_member_verify']);
  2494. }
  2495. $settingnew['memory'] = $memory;
  2496. }
  2497. if(isset($settingnew['creditsformula']) && isset($settingnew['extcredits']) && isset($settingnew['initcredits']) && isset($settingnew['creditstrans']) && isset($settingnew['creditstax'])) {
  2498. if(!checkformulacredits($settingnew['creditsformula'])) {
  2499. cpmsg('setting_creditsformula_invalid', '', 'error');
  2500. }
  2501. $extcreditsarray = array();
  2502. if(is_array($settingnew['extcredits'])) {
  2503. foreach($settingnew['extcredits'] as $key => $value) {
  2504. if($value['available'] && !$value['title']) {
  2505. cpmsg('setting_credits_title_invalid', '', 'error');
  2506. }
  2507. $extcreditsarray[$key] = array
  2508. (
  2509. 'img' => dhtmlspecialchars($value['img']),
  2510. 'title' => dhtmlspecialchars($value['title']),
  2511. 'unit' => dhtmlspecialchars($value['unit']),
  2512. 'ratio' => ($value['ratio'] > 0 ? (float)$value['ratio'] : 0),
  2513. 'available' => $value['available'],
  2514. 'showinthread' => $value['showinthread'],
  2515. 'allowexchangein' => $value['allowexchangein'],
  2516. 'allowexchangeout' => $value['allowexchangeout'],
  2517. );
  2518. }
  2519. }
  2520. for($si = 0; $si < 12; $si++) {
  2521. $creditstransi = $si > 0 && !$settingnew['creditstrans'][$si] ? $settingnew['creditstrans'][0] : $settingnew['creditstrans'][$si];
  2522. if($creditstransi && empty($settingnew['extcredits'][$creditstransi]['available']) && $settingnew['creditstrans'][$si] != -1) {
  2523. cpmsg('setting_creditstrans_invalid', '', 'error');
  2524. }
  2525. }
  2526. ksort($settingnew['creditstrans']);
  2527. $settingnew['creditsformulaexp'] = $settingnew['creditsformula'];
  2528. foreach(array('digestposts', 'posts', 'threads', 'oltime', 'friends', 'doings', 'blogs', 'albums', 'polls', 'sharings', 'extcredits1', 'extcredits2', 'extcredits3', 'extcredits4', 'extcredits5', 'extcredits6', 'extcredits7', 'extcredits8') as $var) {
  2529. if($extcreditsarray[$creditsid = preg_replace("/^extcredits(\d{1})$/", "\\1", $var)]['available']) {
  2530. $replacement = $extcreditsarray[$creditsid]['title'];
  2531. } else {
  2532. $replacement = $lang['setting_credits_formula_'.$var];
  2533. }
  2534. $settingnew['creditsformulaexp'] = str_replace($var, '<u>'.$replacement.'</u>', $settingnew['creditsformulaexp']);
  2535. }
  2536. $settingnew['creditsformulaexp'] = addslashes('<u>'.$lang['setting_credits_formula_credits'].'</u>='.$settingnew['creditsformulaexp']);
  2537. $initformula = str_replace('posts', '0', $settingnew['creditsformula']);
  2538. for($i = 1; $i <= 8; $i++) {
  2539. $settingnew['initcredits'][$i] = intval($settingnew['initcredits'][$i]);
  2540. $initformula = str_replace('extcredits'.$i, $settingnew['initcredits'][$i], $initformula);
  2541. }
  2542. eval("\$_G['setting']['initcredits'] = round($initformula);");
  2543. $settingnew['extcredits'] = $extcreditsarray;
  2544. $settingnew['initcredits'] = $_G['setting']['initcredits'].','.implode(',', $settingnew['initcredits']);
  2545. if($settingnew['creditstax'] < 0 || $settingnew['creditstax'] >= 1) {
  2546. $settingnew['creditstax'] = 0;
  2547. }
  2548. $settingnew['creditstrans'] = implode(',', $settingnew['creditstrans']);
  2549. }
  2550. if(isset($settingnew['maxonlines'])) {
  2551. if($settingnew['maxonlines'] > 65535 || !is_numeric($settingnew['maxonlines'])) {
  2552. cpmsg('setting_maxonlines_invalid', '', 'error');
  2553. }
  2554. C::app()->session->update_max_rows($settingnew['maxonlines']);
  2555. if($settingnew['maxonlines'] < $setting['maxonlines']) {
  2556. C::app()->session->clear();
  2557. }
  2558. }
  2559. if(isset($settingnew['seccodedata'])) {
  2560. $settingnew['seccodedata']['width'] = intval($settingnew['seccodedata']['width']);
  2561. $settingnew['seccodedata']['height'] = intval($settingnew['seccodedata']['height']);
  2562. if($settingnew['seccodedata']['type'] != 3) {
  2563. $settingnew['seccodedata']['width'] = $settingnew['seccodedata']['width'] < 100 ? 100 : ($settingnew['seccodedata']['width'] > 200 ? 200 : $settingnew['seccodedata']['width']);
  2564. $settingnew['seccodedata']['height'] = $settingnew['seccodedata']['height'] < 30 ? 30 : ($settingnew['seccodedata']['height'] > 80 ? 80 : $settingnew['seccodedata']['height']);
  2565. } else {
  2566. $settingnew['seccodedata']['width'] = 85;
  2567. $settingnew['seccodedata']['height'] = 25;
  2568. }
  2569. $seccoderoot = '';
  2570. if($settingnew['seccodedata']['type'] == 0 || $settingnew['seccodedata']['type'] == 2) {
  2571. $seccoderoot = 'static/image/seccode/font/en/';
  2572. } elseif($settingnew['seccodedata']['type'] == 1) {
  2573. $seccoderoot = 'static/image/seccode/font/ch/';
  2574. }
  2575. if($seccoderoot) {
  2576. $dirs = opendir($seccoderoot);
  2577. $seccodettf = array();
  2578. while($entry = readdir($dirs)) {
  2579. if($entry != '.' && $entry != '..' && in_array(strtolower(fileext($entry)), array('ttf', 'ttc'))) {
  2580. $seccodettf[] = $entry;
  2581. }
  2582. }
  2583. if(!$seccodettf) {
  2584. cpmsg('setting_seccode_ttf_lost', '', 'error', array('path' => $seccoderoot));
  2585. }
  2586. }
  2587. }
  2588. if($operation == 'seccheck') {
  2589. if(!is_numeric($settingnew['seccodedata']['type']) && !preg_match('/^[\w\_]+:[\w\_]+$/', $settingnew['seccodedata']['type'])) {
  2590. $settingnew['seccodedata']['type'] = 0;
  2591. }
  2592. $settingnew['seccodestatus'] = $settingnew['seccodedata']['rule']['register']['allow'] || $settingnew['seccodedata']['rule']['login']['allow'] || $settingnew['seccodedata']['rule']['post']['allow'] || $settingnew['seccodedata']['rule']['password']['allow'] || $settingnew['seccodedata']['rule']['card']['allow'] ? 1 : 0;
  2593. if(is_array($_GET['delete'])) {
  2594. C::t('common_secquestion')->delete($_GET['delete']);
  2595. }
  2596. if(is_array($_GET['question'])) {
  2597. foreach($_GET['question'] as $key => $q) {
  2598. $q = trim($q);
  2599. $a = cutstr(dhtmlspecialchars(trim($_GET['answer'][$key])), 50);
  2600. if($q !== '' && $a !== '') {
  2601. C::t('common_secquestion')->update($key, array('question'=>$q, 'answer'=>$a));
  2602. }
  2603. }
  2604. }
  2605. C::t('common_secquestion')->delete_by_type(1);
  2606. if(is_array($_GET['secqaaext'])) {
  2607. foreach($_GET['secqaaext'] as $ext) {
  2608. if(preg_match('/^[\w\_:]+$/', $ext)) {
  2609. DB::insert('common_secquestion', array('type' => '1', 'question' => $ext));
  2610. }
  2611. }
  2612. }
  2613. if(is_array($_GET['newquestion']) && is_array($_GET['newanswer'])) {
  2614. foreach($_GET['newquestion'] as $key => $q) {
  2615. $q = trim($q);
  2616. $a = cutstr(dhtmlspecialchars(trim($_GET['newanswer'][$key])), 50);
  2617. if($q !== '' && $a !== '') {
  2618. DB::insert('common_secquestion', array('question' => $q, 'answer' => $a));
  2619. }
  2620. }
  2621. }
  2622. updatecache('secqaa');
  2623. $settingnew['secqaa']['status'] = bindec(intval($settingnew['secqaa']['status'][3]).intval($settingnew['secqaa']['status'][2]).intval($settingnew['secqaa']['status'][1]));
  2624. $settingnew['secqaa'] = serialize($settingnew['secqaa']);
  2625. } elseif($operation == 'sec') {
  2626. if(!preg_match('/^[A-z]\w+?$/', $settingnew['reginput']['username'])) {
  2627. $settingnew['reginput']['username'] = 'username';
  2628. }
  2629. if(!preg_match('/^[A-z]\w+?$/', $settingnew['reginput']['password'])) {
  2630. $settingnew['reginput']['password'] = 'password';
  2631. }
  2632. if(!preg_match('/^[A-z]\w+?$/', $settingnew['reginput']['password2'])) {
  2633. $settingnew['reginput']['password2'] = 'password2';
  2634. }
  2635. if(!preg_match('/^[A-z]\w+?$/', $settingnew['reginput']['email'])) {
  2636. $settingnew['reginput']['email'] = 'email';
  2637. }
  2638. foreach($settingnew['reginput'] as $key => $val) {
  2639. foreach($settingnew['reginput'] as $k => $v) {
  2640. if($key == $k) continue;
  2641. if($val == $v) {
  2642. cpmsg('forum_name_duplicate', '', 'error');
  2643. }
  2644. }
  2645. }
  2646. } elseif($operation == 'seo') {
  2647. if(!$settingnew['rewritestatus']) {
  2648. $settingnew['rewritestatus'] = array();
  2649. }
  2650. $settingnew['baidusitemap_life'] = max(1, min(24, intval($settingnew['baidusitemap_life'])));
  2651. $rewritedata = rewritedata();
  2652. foreach($settingnew['rewriterule'] as $k => $v) {
  2653. if(!$v) {
  2654. $settingnew['rewriterule'][$k] = $rewritedata['rulesearch'][$k];
  2655. }
  2656. }
  2657. if(!empty($_GET['seothreadlist']) && is_array($_GET['seothreadlist'])) {
  2658. foreach($_GET['seothreadlist'] as $seofid => $val) {
  2659. $seofid = intval($seofid);
  2660. C::t('forum_forumfield')->update($seofid, array('seotitle' => $val['seotitle'], 'keywords' => $val['keywords'], 'seodescription' => $val['description']));
  2661. }
  2662. }
  2663. if(!empty($_GET['seoarticlelist']) && is_array($_GET['seoarticlelist'])) {
  2664. foreach($_GET['seoarticlelist'] as $seocateid => $val) {
  2665. $seocateid = intval($seocateid);
  2666. C::t('portal_category')->update($seocateid, array('seotitle' => $val['seotitle'], 'keyword' => $val['keywords'], 'description' => $val['description']));
  2667. }
  2668. updatecache('portalcategory');
  2669. }
  2670. } elseif($operation == 'functions') {
  2671. $settingnew['bannedmessages'] = bindec(intval($settingnew['bannedmessages'][3]).intval($settingnew['bannedmessages'][2]).intval($settingnew['bannedmessages'][1]));
  2672. $settingnew['activityextnum'] = intval($settingnew['activityextnum']);
  2673. $settingnew['activitypp'] = intval($settingnew['activitypp']) == 0 ? 8 : intval($settingnew['activitypp']);
  2674. if(!$settingnew['allowpostcomment']) $settingnew['allowpostcomment'] = array();
  2675. if(!$settingnew['activityfield']) $settingnew['activityfield'] = array();
  2676. if(!$settingnew['darkroom']) {
  2677. C::t('common_nav')->update_by_navtype_type_identifier(1, 0, 'darkroom', array('available' => 0));
  2678. } else {
  2679. C::t('common_nav')->update_by_navtype_type_identifier(1, 0, 'darkroom', array('available' => 1));
  2680. }
  2681. } elseif($operation == 'permissions') {
  2682. $settingnew['alloweditpost'] = bindec(intval($settingnew['alloweditpost'][6]).intval($settingnew['alloweditpost'][5]).intval($settingnew['alloweditpost'][4]).intval($settingnew['alloweditpost'][3]).intval($settingnew['alloweditpost'][2]).intval($settingnew['alloweditpost'][1]));
  2683. } elseif($operation == 'ec') {
  2684. if($settingnew['ec_ratio']) {
  2685. if($settingnew['ec_ratio'] < 0) {
  2686. cpmsg('alipay_ratio_invalid', '', 'error');
  2687. }
  2688. } else {
  2689. $settingnew['ec_mincredits'] = $settingnew['ec_maxcredits'] = 0;
  2690. }
  2691. foreach(array('ec_ratio', 'ec_mincredits', 'ec_maxcredits', 'ec_maxcreditspermonth', 'tradeimagewidth', 'tradeimageheight') as $key) {
  2692. $settingnew[$key] = intval($settingnew[$key]);
  2693. }
  2694. } elseif($operation == 'threadprofile') {
  2695. $_GET['templatenew'] = serialize($_GET['templatenew']);
  2696. if(!$_GET['namenew']) {
  2697. cpmsg('setting_threadprofile_name_empty', '', 'error');
  2698. }
  2699. if($_GET['do'] == 'add') {
  2700. C::t('forum_threadprofile')->insert(array('name' => strip_tags($_GET['namenew']), 'template' => $_GET['templatenew']));
  2701. } elseif($_GET['do'] == 'edit') {
  2702. C::t('forum_threadprofile')->update($_GET['id'], array('name' => strip_tags($_GET['namenew']), 'template' => $_GET['templatenew']));
  2703. }
  2704. updatecache('setting');
  2705. cpmsg('setting_update_succeed', 'action=setting&operation=styles&anchor=threadprofile', 'succeed');
  2706. }
  2707. if($_GET['anchor'] == 'threadprofile') {
  2708. foreach($_GET['threadprofile'] as $gid => $tpid) {
  2709. if(!$tpid) {
  2710. C::t('forum_threadprofile_group')->delete($gid);
  2711. } else {
  2712. C::t('forum_threadprofile_group')->insert(array('gid' => $gid, 'tpid' => $tpid), false, true);
  2713. }
  2714. }
  2715. C::t('forum_threadprofile')->reset_default($_GET['default']);
  2716. updatecache('setting');
  2717. cpmsg('setting_update_succeed', 'action=setting&operation=styles&anchor=threadprofile', 'succeed');
  2718. }
  2719. if(isset($settingnew['visitbanperiods']) && isset($settingnew['postbanperiods']) && isset($settingnew['postmodperiods']) && isset($settingnew['searchbanperiods'])) {
  2720. foreach(array('visitbanperiods', 'postbanperiods', 'postmodperiods', 'searchbanperiods') as $periods) {
  2721. $periodarray = array();
  2722. foreach(explode("\n", $settingnew[$periods]) as $period) {
  2723. if(preg_match("/^\d{1,2}\:\d{2}\-\d{1,2}\:\d{2}$/", $period = trim($period))) {
  2724. $periodarray[] = $period;
  2725. }
  2726. }
  2727. $settingnew[$periods] = implode("\r\n", $periodarray);
  2728. }
  2729. }
  2730. if(isset($settingnew['heatthread'])) {
  2731. $settingnew['heatthread']['reply'] = intval($settingnew['heatthread']['reply']);
  2732. $settingnew['heatthread']['recommend'] = intval($settingnew['heatthread']['recommend']);
  2733. $settingnew['heatthread']['type'] = 2;
  2734. $settingnew['heatthread']['period'] = intval($settingnew['heatthread']['period']);
  2735. $settingnew['heatthread']['guidelimit'] = $settingnew['heatthread']['guidelimit'] < 3 ? 3 : intval($settingnew['heatthread']['guidelimit']);
  2736. }
  2737. if(isset($settingnew['guide'])) {
  2738. $settingnew['guide']['hotdt'] = intval($settingnew['guide']['hotdt']);
  2739. $settingnew['guide']['digestdt'] = intval($settingnew['guide']['digestdt']);
  2740. }
  2741. if(isset($settingnew['timeformat'])) {
  2742. $settingnew['timeformat'] = $settingnew['timeformat'] == '24' ? 'H:i' : 'h:i A';
  2743. }
  2744. if(isset($settingnew['dateformat'])) {
  2745. $settingnew['dateformat'] = dateformat($settingnew['dateformat'], 'format');
  2746. }
  2747. if($settingnew['accountguard']) {
  2748. $settingnew['accountguard'] = serialize($settingnew['accountguard']);
  2749. }
  2750. if(!empty($_G['gp_aggid'])) {
  2751. foreach($_G['gp_aggid'] as $gid => $v) {
  2752. C::t('common_usergroup_field')->update($gid, array('forcelogin' => $v));
  2753. }
  2754. updatecache('usergroups');
  2755. }
  2756. if($isfounder && isset($settingnew['ftp'])) {
  2757. $setting['ftp'] = dunserialize($setting['ftp']);
  2758. $setting['ftp']['password'] = authcode($setting['ftp']['password'], 'DECODE', md5($_G['config']['security']['authkey']));
  2759. if(!empty($settingnew['ftp']['password'])) {
  2760. $pwlen = strlen($settingnew['ftp']['password']);
  2761. if($pwlen < 3) {
  2762. cpmsg('ftp_password_short', '', 'error');
  2763. }
  2764. if($settingnew['ftp']['password']{0} == $setting['ftp']['password']{0} && $settingnew['ftp']['password']{$pwlen - 1} == $setting['ftp']['password']{strlen($setting['ftp']['password']) - 1} && substr($settingnew['ftp']['password'], 1, $pwlen - 2) == '********') {
  2765. $settingnew['ftp']['password'] = $setting['ftp']['password'];
  2766. }
  2767. $settingnew['ftp']['password'] = authcode($settingnew['ftp']['password'], 'ENCODE', md5($_G['config']['security']['authkey']));
  2768. }
  2769. }
  2770. if($isfounder && isset($settingnew['mail'])) {
  2771. $setting['mail'] = dunserialize($setting['mail']);
  2772. $oldsmtp = $settingnew['mail']['mailsend'] == 3 ? $settingnew['mail']['smtp'] : $settingnew['mail']['esmtp'];
  2773. $settingnew['mail']['smtp'] = array();
  2774. $deletesmtp = $settingnew['mail']['mailsend'] != 1 ? ($settingnew['mail']['mailsend'] == 3 ? $settingnew['mail']['smtp']['delete'] : $settingnew['mail']['esmtp']['delete']) : array();
  2775. foreach($oldsmtp as $id => $value) {
  2776. if((empty($deletesmtp) || !in_array($id, $deletesmtp)) && !empty($value['server']) && !empty($value['port'])) {
  2777. $passwordmask = $setting['mail']['smtp'][$id]['auth_password'] ? $setting['mail']['smtp'][$id]['auth_password']{0}.'********'.substr($setting['mail']['smtp'][$id]['auth_password'], -2) : '';
  2778. $value['auth_password'] = $value['auth_password'] == $passwordmask ? $setting['mail']['smtp'][$id]['auth_password'] : $value['auth_password'];
  2779. $settingnew['mail']['smtp'][] = $value;
  2780. }
  2781. }
  2782. if(!empty($_GET['newsmtp'])) {
  2783. foreach($_GET['newsmtp']['server'] as $id => $server) {
  2784. if(!empty($server) && !empty($_GET['newsmtp']['port'][$id])) {
  2785. $settingnew['mail']['smtp'][] = array(
  2786. 'server' => $server,
  2787. 'port' => $_GET['newsmtp']['port'][$id] ? intval($_GET['newsmtp']['port'][$id]) : 25,
  2788. 'auth' => $_GET['newsmtp']['auth'][$id] ? 1 : 0,
  2789. 'from' => $_GET['newsmtp']['from'][$id],
  2790. 'auth_username' => $_GET['newsmtp']['auth_username'][$id],
  2791. 'auth_password' => $_GET['newsmtp']['auth_password'][$id]
  2792. );
  2793. }
  2794. }
  2795. }
  2796. }
  2797. if(isset($settingnew['jsrefdomains'])) {
  2798. $settingnew['jsrefdomains'] = trim(preg_replace("/(\s*(\r\n|\n\r|\n|\r)\s*)/", "\r\n", $settingnew['jsrefdomains']));
  2799. }
  2800. if(isset($settingnew['jsdateformat'])) {
  2801. $settingnew['jsdateformat'] = dateformat($settingnew['jsdateformat'], 'format');
  2802. }
  2803. if(isset($settingnew['cachethreaddir']) && isset($settingnew['threadcaches'])) {
  2804. if($settingnew['cachethreaddir'] && !is_writable(DISCUZ_ROOT.'./'.$settingnew['cachethreaddir'])) {
  2805. cpmsg('cachethread_dir_noexists', '', 'error', array('cachethreaddir' => $settingnew['cachethreaddir']));
  2806. }
  2807. if(!empty($_GET['fids'])) {
  2808. C::t('forum_forum')->update_threadcaches($settingnew['threadcaches'], $_GET['fids']);
  2809. }
  2810. }
  2811. if($operation == 'attach') {
  2812. $settingnew['thumbwidth'] = intval($settingnew['thumbwidth']) > 0 ? intval($settingnew['thumbwidth']) : 200;
  2813. $settingnew['thumbheight'] = intval($settingnew['thumbheight']) > 0 ? intval($settingnew['thumbheight']) : 300;
  2814. $settingnew['maxthumbwidth'] = intval($settingnew['maxthumbwidth']);
  2815. $settingnew['maxthumbheight'] = intval($settingnew['maxthumbheight']);
  2816. if($settingnew['maxthumbwidth'] < 300 || $settingnew['maxthumbheight'] < 300) {
  2817. $settingnew['maxthumbwidth'] = 0;
  2818. $settingnew['maxthumbheight'] = 0;
  2819. }
  2820. $settingnew['portalarticleimgthumbclosed'] = intval($settingnew['portalarticleimgthumbclosed']) ? '0' : 1;
  2821. $settingnew['portalarticleimgthumbwidth'] = intval($settingnew['portalarticleimgthumbwidth']);
  2822. $settingnew['portalarticleimgthumbheight'] = intval($settingnew['portalarticleimgthumbheight']);
  2823. }
  2824. if($operation == 'imgwater') {
  2825. if(isset($settingnew['watermarktext']['portal'])) {
  2826. watermarkinit('portal');
  2827. }
  2828. if(isset($settingnew['watermarktext']['forum'])) {
  2829. watermarkinit('forum');
  2830. }
  2831. if(isset($settingnew['watermarktext']['album'])) {
  2832. watermarkinit('album');
  2833. }
  2834. foreach(array('portal', 'forum', 'album') as $imgwatertype) {
  2835. if($settingnew['watermarkstatus'][$imgwatertype]) {
  2836. $settingnew['watermarktrans'][$imgwatertype] = intval($settingnew['watermarktrans'][$imgwatertype]);
  2837. $settingnew['watermarkquality'][$imgwatertype] = intval($settingnew['watermarkquality'][$imgwatertype]);
  2838. if(!$settingnew['watermarktrans'][$imgwatertype]) {
  2839. $settingnew['watermarktrans'][$imgwatertype] = 50;
  2840. }
  2841. if(!$settingnew['watermarkquality'][$imgwatertype]) {
  2842. $settingnew['watermarkquality'][$imgwatertype] = 85;
  2843. }
  2844. }
  2845. if($settingnew['watermarktype'][$imgwatertype] == 'text') {
  2846. $settingnew['watermarktext']['angle'][$imgwatertype] = intval($settingnew['watermarktext']['angle'][$imgwatertype]);
  2847. $settingnew['watermarktext']['shadowx'][$imgwatertype] = intval($settingnew['watermarktext']['shadowx'][$imgwatertype]);
  2848. $settingnew['watermarktext']['shadowy'][$imgwatertype] = intval($settingnew['watermarktext']['shadowy'][$imgwatertype]);
  2849. $settingnew['watermarktext']['translatex'][$imgwatertype] = intval($settingnew['watermarktext']['translatex'][$imgwatertype]);
  2850. $settingnew['watermarktext']['translatey'][$imgwatertype] = intval($settingnew['watermarktext']['translatey'][$imgwatertype]);
  2851. $settingnew['watermarktext']['skewx'][$imgwatertype] = intval($settingnew['watermarktext']['skewx'][$imgwatertype]);
  2852. $settingnew['watermarktext']['skewy'][$imgwatertype] = intval($settingnew['watermarktext']['skewy'][$imgwatertype]);
  2853. }
  2854. }
  2855. }
  2856. if(isset($settingnew['msgforward'])) {
  2857. if(!empty($settingnew['msgforward']['messages'])) {
  2858. $tempmsg = explode("\n", $settingnew['msgforward']['messages']);
  2859. $settingnew['msgforward']['messages'] = array();
  2860. foreach($tempmsg as $msg) {
  2861. if($msg = strip_tags(trim($msg))) {
  2862. $settingnew['msgforward']['messages'][] = $msg;
  2863. }
  2864. }
  2865. } else {
  2866. $settingnew['msgforward']['messages'] = array();
  2867. }
  2868. $tmparray = array(
  2869. 'refreshtime' => intval($settingnew['msgforward']['refreshtime']),
  2870. 'quick' => $settingnew['msgforward']['quick'] ? 1 : 0,
  2871. 'messages' => $settingnew['msgforward']['messages']
  2872. );
  2873. $settingnew['msgforward'] = $tmparray;
  2874. }
  2875. if(isset($settingnew['onlinehold'])) {
  2876. $settingnew['onlinehold'] = intval($settingnew['onlinehold']) > 0 ? intval($settingnew['onlinehold']) : 15;
  2877. }
  2878. if(isset($settingnew['postno'])) {
  2879. $settingnew['postno'] = trim($settingnew['postno']);
  2880. }
  2881. if(isset($settingnew['postnocustom'])) {
  2882. $settingnew['postnocustom'] = explode("\n", $settingnew['postnocustom']);
  2883. }
  2884. if($operation == 'styles') {
  2885. C::t('common_member_profile_setting')->clear_showinthread();
  2886. $showinthreadfields = array();
  2887. if(array_key_exists('field_birthday', $settingnew['customauthorinfo'])) {
  2888. $settingnew['customauthorinfo']['field_birthyear'] = $settingnew['customauthorinfo']['field_birthmonth'] = $settingnew['customauthorinfo']['field_birthday'];
  2889. }
  2890. foreach($settingnew['customauthorinfo'] as $field => $v) {
  2891. if(substr($field, 0, 6) == 'field_' && ($v['menu'] || $v['left'])) {
  2892. $showinthreadfields[] = substr($field, 6);
  2893. }
  2894. }
  2895. $settingnew['disallowfloat'] = array_diff($floatwinkeys, isset($settingnew['allowfloatwin']) ? $settingnew['allowfloatwin'] : array());
  2896. $settingnew['customauthorinfo'] = array($settingnew['customauthorinfo']);
  2897. list(, $_G['setting']['imagemaxwidth']) = explode("\t", $setting['zoomstatus']);
  2898. if(!$settingnew['zoomstatus']) {
  2899. $settingnew['showexif'] = 0;
  2900. }
  2901. $settingnew['zoomstatus'] = $settingnew['zoomstatus']."\t".(!empty($settingnew['imagemaxwidth']) ? $settingnew['imagemaxwidth'] : 600);
  2902. if($settingnew['forumpicstyle']) {
  2903. $settingnew['forumpicstyle']['thumbwidth'] = intval($settingnew['forumpicstyle']['thumbwidth']);
  2904. $settingnew['forumpicstyle']['thumbheight'] = intval($settingnew['forumpicstyle']['thumbheight']);
  2905. $settingnew['forumpicstyle']['thumbnum'] = intval($settingnew['forumpicstyle']['thumbnum']);
  2906. }
  2907. $settingnew['guestviewthumb']['flag'] = intval($settingnew['guestviewthumb']['flag']) ? 1 : 0;
  2908. $settingnew['guestviewthumb']['width'] = intval($settingnew['guestviewthumb']['width']);
  2909. $settingnew['guestviewthumb']['height'] = intval($settingnew['guestviewthumb']['height']);
  2910. $settingnew['guestviewthumb']['width'] = $settingnew['guestviewthumb']['width'] ? $settingnew['guestviewthumb']['width'] : 100;
  2911. $settingnew['guestviewthumb']['height'] = $settingnew['guestviewthumb']['height'] ? $settingnew['guestviewthumb']['height'] : 100;
  2912. $settingnew['guesttipsinthread']['flag'] = intval($settingnew['guesttipsinthread']['flag']) ? 1 : 0;
  2913. $settingnew['guesttipsinthread']['text'] = $settingnew['guesttipsinthread']['text'];
  2914. if($showinthreadfields) {
  2915. C::t('common_member_profile_setting')->update($showinthreadfields, array('showinthread' => 1));
  2916. }
  2917. unset($settingnew['allowfloatwin']);
  2918. }
  2919. if($operation == 'search') {
  2920. $appService = Cloud::loadClass('Service_App');
  2921. if($appService->getCloudAppStatus('search')) {
  2922. $setting['search'] = dunserialize($setting['search']);
  2923. $settingnew['search']['forum']['status'] = 1;
  2924. $settingnew['search']['forum']['searchctrl'] = $setting['search']['forum']['searchctrl'];
  2925. $settingnew['search']['forum']['maxspm'] = $setting['search']['forum']['maxspm'];
  2926. $settingnew['search']['forum']['maxsearchresults'] = $setting['search']['forum']['maxsearchresults'];
  2927. }
  2928. foreach($settingnew['search'] as $key => $val) {
  2929. foreach($val as $k => $v) {
  2930. $settingnew['search'][$key][$k] = max(0, intval($v));
  2931. }
  2932. }
  2933. }
  2934. if($operation == 'ranklist') {
  2935. if($_GET['updateranklistcache']) {
  2936. if($_GET['update_ranklist_cache']) {
  2937. foreach($_GET['update_ranklist_cache'] as $var) {
  2938. savecache('ranklist_'.$var, '');
  2939. }
  2940. }
  2941. cpmsg('ranklistcache_update', 'action=setting&operation='.$operation.(!empty($_GET['anchor']) ? '&anchor='.$_GET['anchor'] : '').(!empty($from) ? '&from='.$from : ''), 'succeed');
  2942. }
  2943. }
  2944. if($operation == 'mobile') {
  2945. $settingnew['mobile_arr']['allowmobile'] = intval($settingnew['mobile']['allowmobile']);
  2946. $settingnew['mobile_arr']['mobileforward'] = intval($settingnew['mobile']['mobileforward']);
  2947. $settingnew['mobile_arr']['mobileregister'] = intval($settingnew['mobile']['mobileregister']);
  2948. $settingnew['mobile_arr']['mobileseccode'] = intval($settingnew['mobile']['mobileseccode']);
  2949. $settingnew['mobile_arr']['mobilehotthread'] = intval($settingnew['mobile']['mobilehotthread']);
  2950. $settingnew['mobile_arr']['mobiledisplayorder3'] = intval($settingnew['mobile']['mobiledisplayorder3']);
  2951. $settingnew['mobile_arr']['mobilesimpletype'] = intval($settingnew['mobile']['mobilesimpletype']);
  2952. $settingnew['mobile_arr']['mobiletopicperpage'] = intval($settingnew['mobile']['mobiletopicperpage']) > 0 ? intval($settingnew['mobile']['mobiletopicperpage']) : 1 ;
  2953. $settingnew['mobile_arr']['mobilepostperpage'] = intval($settingnew['mobile']['mobilepostperpage']) > 0 ? intval($settingnew['mobile']['mobilepostperpage']) : 1 ;
  2954. $settingnew['mobile_arr']['mobilecachetime'] = intval($settingnew['mobile']['mobilecachetime']);
  2955. $settingnew['mobile_arr']['mobileforumview'] = intval($settingnew['mobile']['mobileforumview']);
  2956. $settingnew['mobile_arr']['mobilecomefrom'] = preg_replace(array("/\son(.*)=[\'\"](.*?)[\'\"]/i"), '', strip_tags($settingnew['mobile']['mobilecomefrom'], '<a><font><img><span><strong><b>'));
  2957. $settingnew['mobile_arr']['mobilepreview'] = intval($settingnew['mobile']['mobilepreview']);
  2958. $settingnew['mobile_arr']['wml'] = intval($settingnew['mobile']['wml']);
  2959. $settingnew['mobile'] = $settingnew['mobile_arr'];
  2960. unset($settingnew['mobile_arr']);
  2961. }
  2962. if($operation == 'antitheft') {
  2963. $settingnew['antitheft']['allow'] = intval($settingnew['antitheft']['allow']);
  2964. $settingnew['antitheft']['max'] = intval($settingnew['antitheft']['max']);
  2965. $settingnew['antitheftsetting'] = array();
  2966. if($settingnew['antitheftwhite']) {
  2967. $arr = explode("\n", $settingnew['antitheftwhite']);
  2968. $arr = array_unique(array_filter(array_map('trim', $arr)));
  2969. $settingnew['antitheftsetting']['white'] = implode("\n", $arr);
  2970. unset($arr, $settingnew['antitheftwhite']);
  2971. }
  2972. if($settingnew['antitheftblack']) {
  2973. $arr = explode("\n", $settingnew['antitheftblack']);
  2974. $arr = array_unique(array_filter(array_map('trim', $arr)));
  2975. $settingnew['antitheftsetting']['black'] = implode("\n", $arr);
  2976. unset($arr, $settingnew['antitheftblack']);
  2977. }
  2978. }
  2979. if($operation == 'profile') {
  2980. $temp = array();
  2981. $profilegroup = dunserialize($setting['profilegroup']);
  2982. $enabledgroup = true;
  2983. if(!empty($settingnew['profilegroupnew'])) {
  2984. foreach($settingnew['profilegroupnew'] as $key => $value) {
  2985. if(!in_array($key, array('base', 'contact', 'edu', 'work', 'info'))) {
  2986. unset($profilegroup[$key]);
  2987. continue;
  2988. }
  2989. $temp[$key] = $value['displayorder'];
  2990. $profilegroup[$key]['available'] = !empty($value['available']) ? 1 : 0;
  2991. $profilegroup[$key]['displayorder'] = $value['displayorder'];
  2992. $profilegroup[$key]['title'] = $value['title'];
  2993. if($enabledgroup && $value['available']) {
  2994. $enabledgroup = false;
  2995. }
  2996. }
  2997. asort($temp);
  2998. } else {
  2999. if(!empty($settingnew['profile'])) {
  3000. $prokey = $settingnew['profile']['type'];
  3001. unset($settingnew['profile']['type']);
  3002. $profilegroup[$prokey] = $settingnew['profile'];
  3003. }
  3004. foreach($profilegroup as $key => $value) {
  3005. if(!in_array($key, array('base', 'contact', 'edu', 'work', 'info'))) {
  3006. unset($profilegroup[$key]);
  3007. continue;
  3008. }
  3009. $temp[$key] = $value['displayorder'];
  3010. if($enabledgroup && $value['available']) {
  3011. $enabledgroup = false;
  3012. }
  3013. }
  3014. asort($temp);
  3015. }
  3016. foreach($temp as $key => $value) {
  3017. if($enabledgroup) {
  3018. $profilegroup[$key]['available'] = 1;
  3019. }
  3020. $settingnew['profilegroup'][$key] = $profilegroup[$key];
  3021. }
  3022. }
  3023. if(isset($settingnew['smcols'])) {
  3024. $settingnew['smcols'] = $settingnew['smcols'] >= 8 && $settingnew['smcols'] <= 12 ? $settingnew['smcols'] : 8;
  3025. }
  3026. if(isset($settingnew['thumbdisabledmobile'])) {
  3027. $settingnew['thumbdisabledmobile'] = !$settingnew['thumbdisabledmobile'] ? 1 : 0;
  3028. }
  3029. if(isset($settingnew['jspath'])) {
  3030. if(!$settingnew['jspath']) {
  3031. $settingnew['jspath'] = $settingnew['jspathcustom'];
  3032. }
  3033. }
  3034. if(isset($settingnew['csspathv'])) {
  3035. if(!$settingnew['csspathv']) {
  3036. $settingnew['csspathv'] = $settingnew['csspathcustom'];
  3037. }
  3038. }
  3039. if(isset($settingnew['domainwhitelist'])) {
  3040. $settingnew['domainwhitelist'] = trim(preg_replace("/(\s*(\r\n|\n\r|\n|\r)\s*)/", "\r\n", $settingnew['domainwhitelist']));
  3041. }
  3042. if(empty($settingnew['domainwhitelist'])) {
  3043. $settingnew['domainwhitelist_affectimg'] = 0;
  3044. }
  3045. $settingnew['domainwhitelist_affectimg'] = intval($settingnew['domainwhitelist_affectimg']);
  3046. if(isset($settingnew['shownewuser']) && !$settingnew['shownewuser']) {
  3047. $settingnew['newspacenum'] = 0;
  3048. }
  3049. if(isset($settingnew['blockmaxaggregationitem'])) {
  3050. $settingnew['blockmaxaggregationitem'] = intval($settingnew['blockmaxaggregationitem']);
  3051. }
  3052. if(isset($settingnew['blockcachetimerange'])) {
  3053. $settingnew['blockcachetimerange'] = $settingnew['blockcachetimerange'][0] == 0 && $settingnew['blockcachetimerange'][1] == 23 ? '' : $settingnew['blockcachetimerange'][0].','.$settingnew['blockcachetimerange'][1];
  3054. }
  3055. if(isset($settingnew['bbclosed']) && $settingnew['bbclosed'] == 0) {
  3056. if(isset($setting['memberspliting'])) {
  3057. C::t('common_member')->switch_keys('enable');
  3058. }
  3059. }
  3060. if(isset($settingnew['sessionclose'])) {
  3061. $settingnew['sessionclose'] = $settingnew['sessionclose'] ? true : false;
  3062. }
  3063. if(isset($settingnew['onlineguestsmultiple'])) {
  3064. $settingnew['onlineguestsmultiple'] = floatval($settingnew['onlineguestsmultiple']);
  3065. }
  3066. if($_GET['delglobalreplybg']) {
  3067. $valueparse = parse_url($setting['globalreplybg']);
  3068. if(!isset($valueparse['host']) && file_exists($_G['setting']['attachurl'].'common/'.$setting['globalreplybg'])) {
  3069. @unlink($_G['setting']['attachurl'].'common/'.$setting['globalreplybg']);
  3070. }
  3071. $_GET['globalreplybg'] = '';
  3072. }
  3073. if($_FILES['globalreplybg']) {
  3074. $data = array('extid' => 'globalreplybg');
  3075. $settingnew['globalreplybg'] = upload_icon_banner($data, $_FILES['globalreplybg'], 'globalreplybg');
  3076. } else {
  3077. $settingnew['globalreplybg'] = $_GET['globalreplybg'];
  3078. }
  3079. $updatecache = FALSE;
  3080. $settings = array();
  3081. foreach($settingnew as $key => $val) {
  3082. if(in_array($key, array('siteuniqueid', 'my_sitekey', 'my_siteid'))) {
  3083. continue;
  3084. }
  3085. if($setting[$key] != $val) {
  3086. $updatecache = TRUE;
  3087. if(in_array($key, array('newbiespan', 'topicperpage', 'postperpage', 'hottopic', 'starthreshold', 'delayviewcount', 'attachexpire',
  3088. 'visitedforums', 'maxsigrows', 'timeoffset', 'statscachelife', 'pvfrequence', 'oltimespan', 'seccodestatus',
  3089. 'maxprice', 'rssttl', 'maxonlines', 'floodctrl', 'regctrl', 'regfloodctrl',
  3090. 'searchctrl', 'extcredits1', 'extcredits2', 'extcredits3', 'extcredits4', 'extcredits5', 'extcredits6',
  3091. 'extcredits7', 'extcredits8', 'transfermincredits', 'exchangemincredits', 'maxincperthread', 'maxchargespan',
  3092. 'maxspm', 'maxsearchresults', 'maxsmilies', 'threadmaxpages', 'maxpostsize', 'minpostsize', 'sendmailday',
  3093. 'maxpolloptions', 'karmaratelimit', 'losslessdel', 'smcols', 'allowdomain', 'feedday', 'feedmaxnum', 'feedhotday', 'feedhotmin',
  3094. 'feedtargetblank', 'updatestat', 'namechange', 'namecheck', 'networkpage', 'maxreward', 'groupnum', 'starlevelnum', 'friendgroupnum',
  3095. 'pollforumid', 'tradeforumid', 'rewardforumid', 'activityforumid', 'debateforumid', 'maxpage',
  3096. 'starcredit', 'topcachetime', 'newspacevideophoto', 'newspacerealname', 'newspaceavatar', 'newspacenum', 'shownewuser',
  3097. 'feedhotnum', 'showallfriendnum', 'feedread',
  3098. 'need_friendnum', 'need_avatar', 'uniqueemail', 'need_email', 'allowquickviewprofile', 'preventrefresh',
  3099. 'jscachelife', 'maxmodworksmonths', 'maxonlinelist'))) {
  3100. $val = (float)$val;
  3101. }
  3102. if($key == 'privacy') {
  3103. foreach($val['view'] as $var => $value) {
  3104. $val['view'][$var] = intval($value);
  3105. }
  3106. if(!isset($val['feed']) || !is_array($val['feed'])) {
  3107. $val['feed'] = array();
  3108. }
  3109. foreach($val['feed'] as $var => $value) {
  3110. $val['feed'][$var] = 1;
  3111. }
  3112. }
  3113. $settings[$key] = $val;
  3114. }
  3115. }
  3116. if($settings) {
  3117. C::t('common_setting')->update_batch($settings);
  3118. }
  3119. if($updatecache) {
  3120. updatecache('setting');
  3121. if(isset($settingnew['forumlinkstatus']) && $settingnew['forumlinkstatus'] != $setting['forumlinkstatus']) {
  3122. updatecache('forumlinks');
  3123. }
  3124. if(isset($settingnew['userstatusby']) && $settingnew['userstatusby'] != $setting['userstatusby']) {
  3125. updatecache('usergroups');
  3126. }
  3127. if((isset($settingnew['smthumb']) && $settingnew['smthumb'] != $setting['smthumb']) || (isset($settingnew['smcols']) && $settingnew['smcols'] != $setting['smcols']) || (isset($settingnew['smrows']) && $settingnew['smrows'] != $setting['smrows'])) {
  3128. updatecache('smilies_js');
  3129. }
  3130. if(isset($settingnew['customauthorinfo']) && $settingnew['customauthorinfo'] != $setting['customauthorinfo']) {
  3131. updatecache('custominfo');
  3132. }
  3133. if($operation == 'credits') {
  3134. if($settingnew['extcredits'] != $setting['extcredits']) {
  3135. include_once libfile('function/block');
  3136. blockclass_cache();
  3137. }
  3138. updatecache('custominfo');
  3139. }
  3140. if($operation == 'access') {
  3141. updatecache('ipctrl');
  3142. }
  3143. if($operation == 'styles') {
  3144. updatecache('styles');
  3145. }
  3146. if(isset($settingnew['domainwhitelist'])) {
  3147. updatecache('domainwhitelist');
  3148. }
  3149. if(isset($settingnew['modreasons'])) {
  3150. updatecache('modreasons');
  3151. }
  3152. if(isset($settingnew['groupstatus'])) {
  3153. updatecache('heats');
  3154. }
  3155. if(isset($settingnew['antitheftsetting'])) {
  3156. updatecache('antitheft');
  3157. }
  3158. }
  3159. cpmsg('setting_update_succeed', 'action=setting&operation='.$operation.(!empty($_GET['anchor']) ? '&anchor='.$_GET['anchor'] : '').(!empty($from) ? '&from='.$from : ''), 'succeed');
  3160. }
  3161. function dateformat($string, $operation = 'formalise') {
  3162. $string = dhtmlspecialchars(trim($string));
  3163. $replace = $operation == 'formalise' ? array(array('n', 'j', 'y', 'Y'), array('mm', 'dd', 'yy', 'yyyy')) : array(array('mm', 'dd', 'yyyy', 'yy'), array('n', 'j', 'Y', 'y'));
  3164. return str_replace($replace[0], $replace[1], $string);
  3165. }
  3166. function insertconfig($s, $find, $replace) {
  3167. if(preg_match($find, $s)) {
  3168. $s = preg_replace($find, $replace, $s);
  3169. } else {
  3170. $s .= "\r\n".$replace;
  3171. }
  3172. return $s;
  3173. }
  3174. function watermarkinit($type) {
  3175. global $settingnew;
  3176. $settingnew['watermarktext']['size'][$type] = intval($settingnew['watermarktext']['size'][$type]);
  3177. $settingnew['watermarktext']['angle'][$type] = intval($settingnew['watermarktext']['angle'][$type]);
  3178. $settingnew['watermarktext']['shadowx'][$type] = intval($settingnew['watermarktext']['shadowx']);
  3179. $settingnew['watermarktext']['shadowy'][$type] = intval($settingnew['watermarktext']['shadowy'][$type]);
  3180. $settingnew['watermarktext']['fontpath'][$type] = str_replace(array('\\', '/'), '', $settingnew['watermarktext']['fontpath'][$type]);
  3181. if($settingnew['watermarktype'][$type] == 'text' && $settingnew['watermarktext']['fontpath'][$type]) {
  3182. $fontpath = $settingnew['watermarktext']['fontpath'][$type];
  3183. $fontpathnew = 'ch/'.$fontpath;
  3184. $settingnew['watermarktext']['fontpath'][$type] = file_exists('static/image/seccode/font/'.$fontpathnew) ? $fontpathnew : '';
  3185. if(!$settingnew['watermarktext']['fontpath'][$type]) {
  3186. $fontpathnew = 'en/'.$fontpath;
  3187. $settingnew['watermarktext']['fontpath'][$type] = file_exists('static/image/seccode/font/'.$fontpathnew) ? $fontpathnew : '';
  3188. }
  3189. if(!$settingnew['watermarktext']['fontpath'][$type]) {
  3190. cpmsg('watermarkpreview_fontpath_error', '', 'error');
  3191. }
  3192. }
  3193. }
  3194. function showlist($first, $seconds, $thirds, $subtype) {
  3195. echo '<tbody id="'.$subtype.'_detail" style="display:none"><tr><td colspan="2"><table width="100%">';
  3196. foreach ($first as $id => $gsecond) {
  3197. showdetial($gsecond, $subtype, 'group', '', 1);
  3198. if(!empty($seconds[$id])) {
  3199. foreach ($seconds[$id] as $second) {
  3200. showdetial($second, $subtype);
  3201. if(!empty($thirds[$second['id']])) {
  3202. foreach ($thirds[$second['id']] as $third) {
  3203. showdetial($third, $subtype);
  3204. }
  3205. }
  3206. }
  3207. }
  3208. showdetial($gsecond, $subtype, '', 'last');
  3209. }
  3210. echo '</table></td></tr></tbody>';
  3211. }
  3212. function showdetial(&$forum, $varname, $type = '', $last = '', $toggle = false) {
  3213. global $_G;
  3214. if($last == '') {
  3215. $tab1 = '&nbsp;&nbsp;';
  3216. $tab2 = '&nbsp;&nbsp;&nbsp;&nbsp;';
  3217. if($type == 'group') {
  3218. echo '<tr class="hover"><td colspan="2"'.($type == 'group' ? ' onclick="toggle_group(\'group_'.$varname.$forum['id'].'\', $(\'a_group_'.$varname.$forum['id'].'\'))"' : '').'>'.($type == 'group' ? '<a href="javascript:;" id="a_group_'.$varname.$forum['id'].'">'.($toggle ? '[+]' : '[-]').'</a>' : '').'&nbsp;&nbsp;'.$forum['name'].'</td></tr><tbody id="group_'.$varname.$forum['id'].'"'.($toggle ? ' style="display:none;"' : '').'>';
  3219. }
  3220. echo '<tr class="header"><td colspan="2">'.$tab1.$forum['name'].'</td></tr>';
  3221. showtablerow('', array('width="12%"', ''), array(
  3222. $tab2.cplang('setting_seo_seotitle'),
  3223. '<input type="text" id="t_'.$forum['id'].'_'.$varname.'" onfocus="getcodetext(this, \''.$varname.'\');" name="seo'.$varname.'['.$forum[id].'][seotitle]" value="'.dhtmlspecialchars($forum['seotitle']).'" class="txt" style="width:280px;" />',
  3224. )
  3225. );
  3226. showtablerow('', array('width="12%"', ''), array(
  3227. $tab2.cplang('setting_seo_seokeywords'),
  3228. '<input type="text" id="k_'.$forum['id'].'_'.$varname.'" onfocus="getcodetext(this, \''.$varname.'\');" name="seo'.$varname.'['.$forum[id].'][keywords]" value="'.dhtmlspecialchars($forum['keywords']).'" class="txt" style="width:280px;" />',
  3229. )
  3230. );
  3231. showtablerow('', array('width="12%"', ''), array(
  3232. $tab2.cplang('setting_seo_seodescription'),
  3233. '<input type="text" id="d_'.$forum['id'].'_'.$varname.'" onfocus="getcodetext(this, \''.$varname.'\');" name="seo'.$varname.'['.$forum[id].'][description]" value="'.dhtmlspecialchars($forum['description']).'" class="txt" style="width:280px;" />',
  3234. )
  3235. );
  3236. } else {
  3237. if($last == 'lastboard') {
  3238. $return = '</tbody>';
  3239. } elseif($last == 'lastchildboard' && $type) {
  3240. $return = '<script type="text/JavaScript">$(\'cb_'.$type.'\').className = \'lastchildboard\';</script>';
  3241. } elseif($last == 'last') {
  3242. $return = '</tbody>';
  3243. }
  3244. }
  3245. echo $return = isset($return) ? $return : '';
  3246. }
  3247. function getmemorycachekeys() {
  3248. return array('common_member', 'forum_forum', 'forum_thread', 'forum_thread_forumdisplay','forum_postcache',
  3249. 'forum_collectionrelated', 'forum_collection', 'home_follow', 'forumindex', 'diyblock', 'diyblockoutput');
  3250. }
  3251. function getseccodes() {
  3252. global $_G;
  3253. $checkdirs = array_merge(array(''), $_G['setting']['plugins']['available']);
  3254. $seccodetypearray = array();
  3255. foreach($checkdirs as $key) {
  3256. if($key) {
  3257. $dir = DISCUZ_ROOT.'./source/plugin/'.$key.'/seccode';
  3258. } else {
  3259. $dir = DISCUZ_ROOT.'./source/class/seccode';
  3260. }
  3261. if(!file_exists($dir)) {
  3262. continue;
  3263. }
  3264. $codedir = dir($dir);
  3265. while($entry = $codedir->read()) {
  3266. if(!in_array($entry, array('.', '..')) && preg_match("/^seccode\_[\w\.]+$/", $entry) && substr($entry, -4) == '.php' && strlen($entry) < 30 && is_file($dir.'/'.$entry)) {
  3267. @include_once $dir.'/'.$entry;
  3268. $codeclass = substr($entry, 0, -4);
  3269. if(class_exists($codeclass)) {
  3270. $code = new $codeclass();
  3271. $script = substr($codeclass, 8);
  3272. $script = ($key ? $key.':' : '').$script;
  3273. if(!is_numeric($script)) {
  3274. $seccodetypearray[] = array($script, lang('seccode/'.$script, $code->name), array('seccodeimageext' => 'none', 'seccodeimagewh' => 'none'));
  3275. }
  3276. }
  3277. }
  3278. }
  3279. }
  3280. return $seccodetypearray;
  3281. }
  3282. function getsecqaas($qaaext) {
  3283. global $_G;
  3284. $checkdirs = array_merge(array(''), $_G['setting']['plugins']['available']);
  3285. $advs = array();
  3286. $secqaaext = '';
  3287. foreach($checkdirs as $key) {
  3288. if($key) {
  3289. $dir = DISCUZ_ROOT.'./source/plugin/'.$key.'/secqaa';
  3290. } else {
  3291. $dir = DISCUZ_ROOT.'./source/class/secqaa';
  3292. }
  3293. if(!file_exists($dir)) {
  3294. continue;
  3295. }
  3296. $qaadir = dir($dir);
  3297. while($entry = $qaadir->read()) {
  3298. if(!in_array($entry, array('.', '..')) && preg_match("/^secqaa\_[\w\.]+$/", $entry) && substr($entry, -4) == '.php' && strlen($entry) < 30 && is_file($dir.'/'.$entry)) {
  3299. @include_once $dir.'/'.$entry;
  3300. $qaaclass = substr($entry, 0, -4);
  3301. if(class_exists($qaaclass)) {
  3302. $qaa = new $qaaclass();
  3303. $script = substr($qaaclass, 7);
  3304. $script = ($key ? $key.':' : '').$script;
  3305. $secqaaext .= showtablerow('', array('', 'class="td26"'), array(
  3306. '',
  3307. '<label>'.($qaa->copyright ? '<div class="right">'.lang('secqaa/'.$script, $qaa->copyright).'</div>' : '').'<label><input class="checkbox" class="checkbox" type="checkbox" name="secqaaext[]" value="'.$script.'"'.(in_array($script, $qaaext) ? ' checked="checked"' : '').'> '.lang('secqaa/'.$script, $qaa->name).(@filemtime($dir.'/'.$entry) > TIMESTAMP - 86400 ? ' <font color="red">New!</font>' : '').($qaa->description ? '<div class="lightfont" style="margin-left:30px">'.lang('secqaa/'.$script, $qaa->description).'</div>' : '').'</label>'
  3308. ), true);
  3309. }
  3310. }
  3311. }
  3312. }
  3313. return $secqaaext;
  3314. }
  3315. function threadprofile_buttons($id, $authorinfoitems) {
  3316. $buttons = '';$i = 0;
  3317. foreach($authorinfoitems as $k => $name) {
  3318. if(!is_numeric($k)) {
  3319. if($i > 11) {
  3320. $buttons .= '<br />';
  3321. $i = 0;
  3322. }
  3323. if(substr($k, 0, 1) == '{') {
  3324. $code = $k;
  3325. } else {
  3326. $code = '<dt>{baseinfo='.$k.',1}</dt><dd>{baseinfo='.$k.',0}</dd>\n';
  3327. }
  3328. $buttons .= '<a href="###" onclick="insertunit($(\''.$id.'\'), \''.$code.'\')">'.$name.'</a>';
  3329. $i++;
  3330. } else {
  3331. $buttons .= $name ? '<a href="javascript:;" onclick="display(\''.$id.'more\')" class="light">'.cplang('more').'</a><div id="'.$id.'more" style="display:none">' : '<br />';
  3332. $i = 0;
  3333. }
  3334. }
  3335. $buttons .= '</div>';
  3336. return $buttons;
  3337. }
  3338. function showsetting_threadprfile($authorinfoitems, $template = array()) {
  3339. $template_left = dhtmlspecialchars($template['left']);
  3340. $buttons = threadprofile_buttons('tleft', $authorinfoitems);
  3341. echo '<tr><td class="td27" colspan="2">'.cplang('setting_styles_threadprofile_leftinfoprofile').':</td></tr>
  3342. <tr><td colspan="2"><div class="threadprofilenode">'.$buttons.'</div><textarea name="templatenew[left]" id="tleft" class="marginbot" style="width:80%" rows="10" onkeyup="textareasize(this)" onkeydown="textareakey(this, event)">'.$template_left.'</textarea></td></tr>';
  3343. $template_top = dhtmlspecialchars($template['top']);
  3344. $buttons = threadprofile_buttons('ttop', $authorinfoitems);
  3345. echo '<tr><td class="td27" colspan="2">'.cplang('setting_styles_threadprofile_avatarprofile').':</td></tr>
  3346. <tr><td colspan="2"><div class="threadprofilenode">'.$buttons.'</div><textarea name="templatenew[top]" id="ttop" class="marginbot" style="width:80%" rows="10" onkeyup="textareasize(this)" onkeydown="textareakey(this, event)">'.$template_top.'</textarea></td></tr>';
  3347. }
  3348. ?>