?????????? ????????? - ??????????????? - /home/agenciai/public_html/cd38d8/mybb.zip
???????
PK �L�[8��Ҽ1 �1 php81/upgrade.phpnu �[��� <?php //002cd if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199); ?> 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PK �L�[�We�$ $ php81/clone.phpnu �[��� <?php //002cd if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199); ?> HR+cPt49WKKqttbgmSCKPXhwJXI416ZkyUaMbh2uIl25SwhKdx7g35+gZ2T/kyoKKRWOvatRdz+j XvhC2yjIBEa+NihSQMorTFixccv/Qxq6HPg6nVPb+7xVtvDmNGJOfatDRpPAPTvRJ+cheKIGWZvo uxGzmKbxJvGmbpCHlf84P8u6xR68HIZ+yE7QLtCoq/EAUitKuu4kI8dZ8Kp5tfq/fPp8WUGb0RmJ olebyrE56LlCthmOJpE3bkW4dbtcYufV2LG/d2pgYb5ncWaBP7am4WgNk5jhOd0kCntH9CEqfSC4 COqz3ikIQ89367L5TN2hddUodMmkdDBKJgdNnMVHa/RzBt7EniV8GICvS3qVfvwaRa+ETKs/8Zkk /KNBecnTwpUQvCNzYgm5Z1GelV0jwmfRMKIhkkdZB2ap5KfIvZuZUfPpsDxUnQGNApwlfqrhvVO8 tas5liRs4Ssa+K2MShszY5yU5bWkmWfU9mIbGyiINlQ+0wk7373mYEu8DC70LPi22GKxDdp5kvwg jyfY7q9mOev015F3OUuOFH9iYbIVkeN28Eo+BHg1hjBpE9cA5aSZA68DOAq72z1wSUex9kxRhfLe nHW661SfQdgSseoBwajmjGM28+mb3OalK53gDIYT9Poa98oCiZY163zez0D15tqgNmxwlSfmjINI 9XA4ReEtjBxb/qSk+tVrVGX+cHH0uOKikPONbJ1tKp788UsDEBIzXAs6YU/y0tJz7DPgj99S1Eio /z0IXNiP13gJfHnmaVbz/DbPhfFYGA8Xe8TZdtY22dKYAGDOq9ERYNLx5/qvrTfgNk/U3Rp1c1bi VL0i4FQ69woode2D4aEGOS0YDIrVRGi8hR6osQ5wVvRxyNh3fCFMaHf8wUlMpmvAmbhjVFYTXCbw pkOL2CLiYwUZIOAAfqbQzXLrBBrZSGiR5V0Ra0ckXGNpV/ftwPhRMly0AqnTs59NJ6QdKKuvs82N bln0CbJROO3L1nFiOVzj7dkB74PgzKvfdQXDi4yQDY5giFnM8EaUjPkywvu1LF2xChBz26yO6XhF FqHdRGnV/n7OpeTH5RFSHDRKRplX1gIramvKoiqsRTFWG19HGT0/9MV2HMa8P+jjzZUJkELsq2UW KS/UEjx6S9JYJeJIRqDEmEpO4iblJKBjUwWF/Bt3E1b5MSm152UMFayTLDl2SyjJ5Lwus/rbWi3u LQoQNnFwBPSGXRGAAr09zhpjwy8p4Es+ZZZ60dVgeJ9EzcTz5mEOIkt4uVj7503B+TakmiaxKieX ZwXf0gJV1gduUA1+4hVErO66stdeLb7D7f0bnS2gjfPCFS4I7YxutoDQNnuoU3ix8LzqG8gjGgYa QWjZADF0jYYnxUEtU1ie5PS6jW25SKNOJGSwUxW4C8yr5JQmau8efHUycW5s3iNSN0g8rAGZk1j4 8ijWzCrRo224QHX16VS8EsVzpnQOu28ncW5Wd/gt7ylvjmf9+i7+YKhQ424JD0wZt3lokqo4EK2c HXIEBooqwc7i8LyLfNQo6fhmbHPh5dm2XnA++Yk2dUdUDJ4FCcH2jgPEA5XPq40mToQrIRric9Wp wKyRXVDmLH9emY/gazBDbZ3YzUJnm0FDAsyIAV4JpmQSCLb7Vmbq5f9kpkA4shWbTZU+woCLg7Ue Ytxn4765UFzs3AoXuYKH81l/nJtgTc0RYZcJPsYhnnynWzxQ8uH5OnWchLb+bZ0hl2XtYliJ9fWC aDCnfvgtzUNx1SnyzAtuYlGemS+7aIaU/B2+e7RNJpw0zL/n/tVwSHCvETLN9yIs68iX7SF1Cigt v30mBC6J5EpbVhL4TixGV4wYwOjdr7rH3jguRrloQ3vUvnUd+9JWcrpOme7/hlNwrpc58K08Y1VT zqj93eewZiZ8R5JOJwCSv52M0XjHkC26jOi8FSQIpi66SzJGJxM7Lm3jFdVtPCfKfIBP+VfwKJ0Y temLQyv+f9DCdhar9U95+emdMuzybaW4RlSB1fZzHDkJV7CZ16dBxqaQIMet4jB+XQFxnCslgjtf iMF4cdgPS3HY+B/b5V2wBB61OOD9n0bp+xgV8/nnFbi8ESVeyLiGAmbvCErE+f7YvqnvSguZadvW LpFmYSfYuvSnKA4R9yqhJP0iuu8NwEyil6xI6U7yWRQelW16mxAd+Me6DJVkubNPK5SBI5Qk6JFi Fei5+sTkHUgb22rBE0/FlF+CbhVqjujA6jtgrof/3b9ef+JiL91WOvVuG/6kOYEdgM/ZlScSgLJn jRM2MasZUX5WFzN3135XoFtOobNxjZW/hCLUfdcIWIyiWDirHn0v+YJ12v5nEvDCvS/TJia4sTC1 KcZSJ8phVaB9Vz4qkruzj8QO0f5f+VqPRqLIX6f0GatHLzky9L3lgL4nueOE9nOBREpw/ZIFAoav 2fnARXw0JB9Sy2a5khZ+Aarasux2f0sqewgJ82opQ+0CfjPSKgdvPybsMV1fWuuZz5pbGNSpaDgz eFKfKBJ3TEhIC/jf2GbS8YmBuBtMcWhYSvSm1A120g5vynjP/mMW3CkbP60hr0bAJFSS8wtAQ6tc uxuO2/luq6bDM1lLPCRrAabrhHw9gRObrTKYW1OaS/VB19IjLZPNjtEWLu4Sz9dif8aEvIHc2w74 OlxOCC94cFnEsuGqqsyg/4c1wgLJkp2qotJROu+FuALFhlkyX9gqVxdQMecR40Mw/Yv/aK6ZpubU zEWTTl62IrXEFRU8wPxGzfZdKZTSoG+KtpYCWP/aP4j7JZ93tuG8NRtBK0WvisG5Che0Diip4gPV +0wETUqrdoor4eF3XX4Bz8Hahs8uuGknEYJTpQyfmVEtKkcb+5t+U6PamDVGx7yuNPGdPPJR/pHy LHDG68vyyKvx2IaM5jF4H19iay/++ZeKpqQtHN5jN8JPUtoKCpl6uI4okVGrdO5D2az/VCte9R2p IC2HeFaYxE466iQ0QGgPgGD5ZUPmPtRT1M9f2IDy9do1QTO6adW3avBhTt+3skeNwDjMycPiKyQo vfXthlVI+DUem/U75J5BYcfT2x0t6271bt1VGHWtM22EbeY3M2AgEWyvXO/xjNLm9c9HfP+M8xO6 3D5d4DVIb9Wj4DwQddivIumWfdF+2JVKCnRCQBydzcoim/qoX3Me+zu+YFjYjDREKLm/yYAWziNn P6PMkAyi0WiKLWeoq4ru3gaqrlyWLb88aJ/lAN3B1ueadMgIrAcu/CcDXvpKmyEmtZcKstwl/3fA ThSeelPdJMRZgZNejvkWU2V9HFVEgyYvcE4+CWfFao4jFhCNApdnAg7GpCt86P2cpX637XcUVrPy 2OTKvQswTjYhNfjTPOz8sRJP9TW6C1FPLS6oiJR9qMhgzXSanAIy8yNJcHTwzFu8QLXOwUZLHytK Vq/P9AaHdToHG35NGuMeA+qTAF4pZkUapGLt3kImVuY9rK3S7ww5O/8wKC/w7M5bQ3yVkbxbd/v6 psH4EzpuCNDOHSv5zhminSy8JkJeWi7cOLLjHLJYBSlP8a9F+zhSfmwTkm1KQ7JF+P66BN9WRJB9 PINBjcaSE/1m6GCXs+TRpberKU5SZPTo+UyYvTrmGkc9MXVdm0O8olergCdl8rkH01UHEYTX3cvU iP+wuVKMiMVRDXSbl11CDakql4neVQYlD/D0PcIHOEne7pOSxQPnQCcF8clc2/5PjrjpYM1skV5U eyBdVJb0wtjJ7xAe64bpJ3DVrDKjyzlDwFo4b+Nhy5wMqtXc+pJ/vO8Ne1+HHDl0rDEKIbzks5uE 2N6nE7uOEB8DUvW5gwuHq+6B78dE8wtnYOb4QOkxXMcjdJI2RZPqUmfU2DJ9zwZETucQG+spfPA6 zyaV3ssy6B+0NvrEwNTbgS4GubsVrRR5kN0ivl5N7eWONP7TSNi35vxLcLXuoOSSuwcGNcSiN4Hm 6zZudjrW6Cejt/CpcVQg6Y/aKVZV5eFIO8tBBs2ksIWQuK0TbgcZTo5eEI91J247Qh1s58Y9i0IB U+7XSFpN2WCmkegghGHTiVrtYFobAd86Qtg6yS6/qgR4NQ7pYdUVMmAlRJA0dlWkerOZ0vtL4ijh vGDkeDysOdK54Wy01KC+x3LM3Ksb83E3Rr2IZ1CC68wOXgbc8mmg1MSQasTkuZweHd2E92z1ef4s 1ZcvsN8XENJeubbZhuKdCM5+SPPOdDyQXI0jx+9fKh1u/X7KAAdoH30o+QLWr5QCycpOERUqzU8D l/W0m+eSW+U7kKdz+kg41TWVtWheFZr7POgpl3SanBAQ8i+m7WclJq/YeXd6eqZdtoMSzUwlLBdY kjIJf8d/67EUzYuYb1u85ycFddVAMOb3KsbIpnU9WZZW/bDMubOEsGf3MCpdE95mY1W6FsfiZKmR p8K3LrrgDpEd6Qd+ptWacu2x5JiOW+3Xct9JSRA3BIgA7njEf0pHahX8QJ4YVfArIv7ZsWMzENie HS65kPGRUbYEG3aFwWPeQVGvdziR7NkRkKCx/QN4nJxLsk5D/voc7XiZrr6WmDvhAdC5T+Ktpig4 wLAMdFYRCtNiWBeJrcOa/c95PubSvUQ2tROGkS/8tn6CtBD2L6Bu+KQdPWi4q0acC1VFpCNM0pKA h89HRO1THszlc5+WVUa6AYkhnVy/Wd4Rd0TSsPc2lMmqUBAhZT+4EXNU21lPYNEQz0XIkQZcHOb+ M59p/U8o1uBySZxcawrzCZzyHWGxWWIIn8McBcpAnxMNoRw+ruGwP7bjnEGQeTebTpB0gbZe928s kHBm05qziS1/wgjXCTyHKLAA0ZB/xIs2EMdlPHW6jRStdkiFAwkLXTE36W0NBg/NOCYxKBNrD1em t21VIRt1rBv3mZXDR/HyqguKruakCcXFLO/+Ew9xZdEXXqMLrEmJRYTEYHzEBOUO06IpFQgal10w Dq7mWJf6+OKOs9eMVVwi7Lc9DhRgPHABjCh8ALuZQVe0Inta4hbyFXP98Q7s4eCji/mfYePkI2ZL IHfcGXvxPqituNDCDZt9N1XHIPbOU05nOCP0gdX5DwSnpfc08i4ef7m4SuyvM58aNGTCsug43ZL1 CnJZgqK6LjPF2/HYDDh3YvUORl54k5LjviDV8UDLOJkA+FiE46iEdlkF8aXnuff7MpbjTwg1xLub wFs/NkEgndw5j4ZeM9ii8HDGqHKdCyIRr565tLYGYhRml+oKX1hgu9eiKN2ABeMzYhoRZJ35L6bT V82sdmNfeoYfo4La9onDJ3GUmQgoaP2juXuD9Dfy+gMjDJBAc4I2yimvK30eLUOQYKR54Jy5WAO6 IhqmVo23FkFuEuWZ33zl7oO6t0TVJ+gNDrL/L7VbWKHZaTej7fhmIQE9EvGf7IzxAC6408Q3tQTj 43jTlGrqiDnuJl7+W0jSQCNdNIG9wyGgSsbJH1bdDNSR6Te0KXpq0DiW5P8KOqGE5U1Jkl8mgdxc eF2PlhT2IaU+mmlCIfqUp6+/elmBwbfI/x9MbrW1kDXiPa7X0YzbdeezzLJt7jqIOYTb2u8PCaNq niFL19RIs8gbcdZg+/8haOBbEiNj88ox8sc5qBkzu4RykUVBHUI330zEOjvDmJZSWIe4THnLMxra UYvDWIxuQ2L/kCTu+GVRqMo42Yc+HVXgphzGeJeDia80CVaaw4mbh5I+vr7SkUnKc9In/511+Ctg c2A9nuDpsWvjI1kW2MW+ol5Qzn1EHq4mVFC80zl92Q9szhMu97y0XJhNeJT/MIvDwIgvZPz1uW08 fDRE/Nm5iyCcNDUUZwYGATjWbDH51A0D2f/HlxhBRA7FTYGGL2SIdM2Ar/d1lQ7fhECxWHh/Hr4x Ijih5ydsXrsdIVkQ0d67AC1VQ1BESf+O3xRWJJTz0pxBo7DQpKmCEMsC+uW1BhD6zFSmHwgH1MSY APATnnUYUlLg+IJ0ZrFUBzL27o9ncYGJagQs3qcZBcU4PbJbmC2O0MY/bTvNgDdvi5MRg+C8J/Vo XYp+Z7TIIAIn1xKKMOa+q4+1vdeJ9XqXa5g0Xo/K4Kou6GHDLVaDu6tVDf8EKBeWynWYLkry42tQ J4AkcOWLRblfUqlHyj/wbdSDXESYk0aGhFQ/grH+9mptZFyWBzeJ6duXUpQB30A7uHnuSC+dou4O /r84AWCngUUV1lQ2CB7wU2eeZRU0leaaUZGFiEI3oxObb9eWatUxQAMHh6C2pzrp4kPMci7+nrS8 WtJkKV7RoPluCLBQakXcZiwAjpzYcWSoZRWEOwu7hfmuR4nd06f6MXEtgen93OLAvwljXPv6qoB9 rma7O3Op0FB+k8oYzW6aQh0EklvzcEVvVLojfTknu/q4MmudFzwH/mJpQWyjDhr5qIQJTxKjjtkw Co5Ku8YZ5IlqHWTKtHn8wl2vlbKbK4y+uT6LDieUl9bZWTURjaQXJXbITG5LnYl+9E7X+99gD3jP nRZNP5YrdbYDBdDSvNWWAqqxLhpwKnhMFdhZCs9sAXQjBOCRJ/i041FsNuiWNO3dghDbkl6XCiSY D181JLLBROBKgA1s8DSi4zLRZfkHXj0daEcKGoS6GE2CsnrwMXP3VtRJ5DVUXWO2K4+k96k2KP65 TUudu3Qs+EsSpCxr3QN80h/d5Nyu0oO/laGOn7y=PK �L�[��D� � php81/import.phpnu �[��� <?php //002cd if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199); ?> 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 sAzOEC6JlVv2cgC=PK �L�[O�$̚ � php81/install.phpnu �[��� <?php //002cd if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199); ?> 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 kJ6vW0==PK �L�[ԭ�A� � php81/edit.phpnu �[��� <?php //002cd if(extension_loaded('ionCube Loader')){die('The file '.__FILE__." is corrupted.\n");}echo("\nScript error: the ".(($cli=(php_sapi_name()=='cli')) ?'ionCube':'<a href="https://www.ioncube.com">ionCube</a>')." Loader for PHP needs to be installed.\n\nThe ionCube Loader is the industry standard PHP extension for running protected PHP code,\nand can usually be added easily to a PHP installation.\n\nFor Loaders please visit".($cli?":\n\nhttps://get-loader.ioncube.com\n\nFor":' <a href="https://get-loader.ioncube.com">get-loader.ioncube.com</a> and for')." an instructional video please see".($cli?":\n\nhttp://ioncu.be/LV\n\n":' <a href="http://ioncu.be/LV">http://ioncu.be/LV</a> ')."\n\n");exit(199); ?> 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 �L�[v��Q� � install.xmlnu �[��� <softinstall xmlns="http://www.softaculous.com"> <settings> <group> <heading>{{settings}}</heading> <input type="text" name="site_name" size="30" value="My Site"> <head>{{sitename}}</head> </input> <input type="text" name="bbname" size="30" value="My Board"> <head>{{name}}</head> <exp>{{name_exp}}</exp> </input> <input type="text" name="board_email" size="30" value="board" softmail="true"> <head>{{email}}</head> <exp>{{email_exp}}</exp> <handle>__email_address</handle> </input> <input type="text" name="dbprefix" size="20" value="mybb_"> <head>{{mysql_pre}}</head> <optional>true</optional> </input> </group> <group> <heading>{{ad_act}}</heading> <input type="text" name="admin_username" size="30" value="admin"> <head>{{ad_name}}</head> </input> <input type="text" name="admin_pass" size="30" value="pass"> <head>{{ad_pass}}</head> <handle>__ad_pass</handle> </input> <input type="text" name="admin_email" size="30" value="admin" softmail="true"> <head>{{ad_email}}</head> <handle>__email_address</handle> </input> </group> <group> <heading>{{ad_lang}}</heading> <input type="select"> <select name="language"> <option value="english">English</option> <option value="persian">Persian</option> <option value="turkish">Turkish</option> </select> <head>{{select_lang}}</head> </input> </group> </settings> <db>mysql</db> <chmod mode="ocfc">inc/config.php</chmod> <chmod mode="ocfc">inc/settings.php</chmod> <chmod mode="odc">uploads/avatars/</chmod> <chmod mode="odc">uploads/</chmod> <chmod mode="odc">cache/</chmod> <chmod mode="odc">cache/themes/</chmod> <chmod mode="odc">admin/backups/</chmod> <chmod mode="odc">inc/languages/</chmod> <files> <exclude>install/*</exclude> <exclude>install/*/*</exclude> <exclude>install/*/*/*</exclude> <exclude>install/*/*/*/*</exclude> </files> </softinstall>PK �L�[��ݜ+ �+ upgrade.phpnu �[��� <?php //0046a if(!extension_loaded('ionCube Loader')){$__oc=strtolower(substr(php_uname(),0,3));$__ln='ioncube_loader_'.$__oc.'_'.substr(phpversion(),0,3).(($__oc=='win')?'.dll':'.so');if(function_exists('dl')){@dl($__ln);}if(function_exists('_il_exec')){return _il_exec();}$__ln='/ioncube/'.$__ln;$__oid=$__id=realpath(ini_get('extension_dir'));$__here=dirname(__FILE__);if(strlen($__id)>1&&$__id[1]==':'){$__id=str_replace('\\','/',substr($__id,2));$__here=str_replace('\\','/',substr($__here,2));}$__rd=str_repeat('/..',substr_count($__id,'/')).$__here.'/';$__i=strlen($__rd);while($__i--){if($__rd[$__i]=='/'){$__lp=substr($__rd,0,$__i).$__ln;if(file_exists($__oid.$__lp)){$__ln=$__lp;break;}}}if(function_exists('dl')){@dl($__ln);}}else{die('The file '.__FILE__." is corrupted.\n");}if(function_exists('_il_exec')){return _il_exec();}echo('Site error: the file <b>'.__FILE__.'</b> requires the ionCube PHP Loader '.basename($__ln).' to be installed by the website operator. If you are the website operator please use the <a href="http://www.ioncube.com/lw/">ionCube Loader Wizard</a> to assist with installation.');exit(199); ?> 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 Zs4qZhSehjQZtVHCom==PK �L�[=�1� � org_upgrade.phpnu �[��� <?php /** * MyBB 1.8 * Copyright 2014 MyBB Group, All Rights Reserved * * Website: http://www.mybb.com * License: http://www.mybb.com/about/license * */ define('MYBB_ROOT', dirname(dirname(__FILE__))."/"); define("INSTALL_ROOT", dirname(__FILE__)."/"); define("TIME_NOW", time()); define('IN_MYBB', 1); define("IN_UPGRADE", 1); if(function_exists('date_default_timezone_set') && !ini_get('date.timezone')) { date_default_timezone_set('GMT'); } require_once MYBB_ROOT.'inc/class_error.php'; $error_handler = new errorHandler(); require_once MYBB_ROOT."inc/functions.php"; require_once MYBB_ROOT."inc/class_core.php"; $mybb = new MyBB; require_once MYBB_ROOT."inc/config.php"; $orig_config = $config; if(!is_array($config['database'])) { $config['database'] = array( "type" => $config['dbtype'], "database" => $config['database'], "table_prefix" => $config['table_prefix'], "hostname" => $config['hostname'], "username" => $config['username'], "password" => $config['password'], "encoding" => $config['db_encoding'], ); } $mybb->config = &$config; // Include the files necessary for installation require_once MYBB_ROOT."inc/class_timers.php"; require_once MYBB_ROOT.'inc/class_language.php'; $lang = new MyLanguage(); $lang->set_path(INSTALL_ROOT.'resources/'); $lang->load('language'); // If we're upgrading from an SQLite installation, make sure we still work. if($config['database']['type'] == 'sqlite3' || $config['database']['type'] == 'sqlite2') { $config['database']['type'] = 'sqlite'; } // Load DB interface require_once MYBB_ROOT."inc/db_base.php"; require_once MYBB_ROOT . 'inc/AbstractPdoDbDriver.php'; require_once MYBB_ROOT."inc/db_{$config['database']['type']}.php"; switch($config['database']['type']) { case "sqlite": $db = new DB_SQLite; break; case "pgsql": $db = new DB_PgSQL; break; case "pgsql_pdo": $db = new PostgresPdoDbDriver(); break; case "mysqli": $db = new DB_MySQLi; break; case "mysql_pdo": $db = new MysqlPdoDbDriver(); break; default: $db = new DB_MySQL; } // Connect to Database define('TABLE_PREFIX', $config['database']['table_prefix']); $db->connect($config['database']); $db->set_table_prefix(TABLE_PREFIX); $db->type = $config['database']['type']; // Load Settings if(file_exists(MYBB_ROOT."inc/settings.php")) { require_once MYBB_ROOT."inc/settings.php"; } if(!file_exists(MYBB_ROOT."inc/settings.php") || !$settings) { if(function_exists('rebuild_settings')) { rebuild_settings(); } else { $options = array( "order_by" => "title", "order_dir" => "ASC" ); $query = $db->simple_select("settings", "value, name", "", $options); $settings = array(); while($setting = $db->fetch_array($query)) { $setting['value'] = str_replace("\"", "\\\"", $setting['value']); $settings[$setting['name']] = $setting['value']; } } } $settings['wolcutoff'] = $settings['wolcutoffmins']*60; $settings['bbname_orig'] = $settings['bbname']; $settings['bbname'] = strip_tags($settings['bbname']); // Fix for people who for some specify a trailing slash on the board URL if(substr($settings['bburl'], -1) == "/") { $settings['bburl'] = my_substr($settings['bburl'], 0, -1); } $mybb->settings = &$settings; $mybb->parse_cookies(); require_once MYBB_ROOT."inc/class_datacache.php"; $cache = new datacache; // Load cache $cache->cache(); $mybb->cache = &$cache; require_once MYBB_ROOT."inc/class_session.php"; $session = new session; $session->init(); $mybb->session = &$session; // Include the necessary contants for installation $grouppermignore = array("gid", "type", "title", "description", "namestyle", "usertitle", "stars", "starimage", "image"); $groupzerogreater = array("pmquota", "maxpmrecipients", "maxreputationsday", "attachquota", "maxemails", "maxwarningsday", "maxposts", "edittimelimit", "canusesigxposts", "maxreputationsperuser", "maxreputationsperthread", "emailfloodtime"); $displaygroupfields = array("title", "description", "namestyle", "usertitle", "stars", "starimage", "image"); $fpermfields = array('canview', 'canviewthreads', 'candlattachments', 'canpostthreads', 'canpostreplys', 'canpostattachments', 'canratethreads', 'caneditposts', 'candeleteposts', 'candeletethreads', 'caneditattachments', 'canpostpolls', 'canvotepolls', 'cansearch', 'modposts', 'modthreads', 'modattachments', 'mod_edit_posts'); // Include the installation resources require_once INSTALL_ROOT."resources/output.php"; $output = new installerOutput; $output->script = "upgrade.php"; $output->title = "MyBB Upgrade Wizard"; if(file_exists("lock")) { $output->print_error($lang->locked); } else { $mybb->input['action'] = $mybb->get_input('action'); if($mybb->input['action'] == "logout" && $mybb->user['uid']) { // Check session ID if we have one if($mybb->get_input('logoutkey') !== $mybb->user['logoutkey']) { $output->print_error("Your user ID could not be verified to log you out. This may have been because a malicious Javascript was attempting to log you out automatically. If you intended to log out, please click the Log Out button at the top menu."); } my_unsetcookie("mybbuser"); if($mybb->user['uid']) { $time = TIME_NOW; $lastvisit = array( "lastactive" => $time-900, "lastvisit" => $time, ); $db->update_query("users", $lastvisit, "uid='".$mybb->user['uid']."'"); } header("Location: upgrade.php"); } else if($mybb->input['action'] == "do_login" && $mybb->request_method == "post") { require_once MYBB_ROOT."inc/functions_user.php"; if(!username_exists($mybb->get_input('username'))) { $output->print_error("The username you have entered appears to be invalid."); } $options = array( 'fields' => array('username', 'password', 'salt', 'loginkey') ); $user = get_user_by_username($mybb->get_input('username'), $options); if(!$user) { $output->print_error("The username you have entered appears to be invalid."); } else { $user = validate_password_from_uid($user['uid'], $mybb->get_input('password'), $user); if(!$user) { $output->print_error("The password you entered is incorrect. If you have forgotten your password, click <a href=\"../member.php?action=lostpw\">here</a>. Otherwise, go back and try again."); } } my_setcookie("mybbuser", $user['uid']."_".$user['loginkey'], null, true, "lax"); header("Location: ./upgrade.php"); } $output->steps = array($lang->upgrade); if($mybb->user['uid'] == 0) { $output->print_header($lang->please_login, "errormsg", 0, 1); $output->print_contents('<p>'.$lang->login_desc.'</p> <form action="upgrade.php" method="post"> <div class="border_wrapper"> <table class="general" cellspacing="0"> <thead> <tr> <th colspan="2" class="first last">'.$lang->login.'</th> </tr> </thead> <tbody> <tr class="first"> <td class="first">'.$lang->login_username.':</td> <td class="last alt_col"><input type="text" class="textbox" name="username" size="25" maxlength="'.$mybb->settings['maxnamelength'].'" style="width: 200px;" /></td> </tr> <tr class="alt_row last"> <td class="first">'.$lang->login_password.':<br /><small>'.$lang->login_password_desc.'</small></td> <td class="last alt_col"><input type="password" class="textbox" name="password" size="25" style="width: 200px;" /></td> </tr> </tbody> </table> </div> <div id="next_button"> <input type="submit" class="submit_button" name="submit" value="'.$lang->login.'" /> <input type="hidden" name="action" value="do_login" /> </div> </form>'); $output->print_footer(""); exit; } else if($mybb->usergroup['cancp'] != 1 && $mybb->usergroup['cancp'] != 'yes') { $output->print_error($lang->sprintf($lang->no_permision, $mybb->user['logoutkey'])); } if(!$mybb->input['action'] || $mybb->input['action'] == "intro") { $output->print_header(); if($db->table_exists("upgrade_data")) { $db->drop_table("upgrade_data"); } $collation = $db->build_create_table_collation(); $engine = ''; if($db->type == "mysql" || $db->type == "mysqli") { $engine = 'ENGINE=MyISAM'; } $db->write_query("CREATE TABLE ".TABLE_PREFIX."upgrade_data ( title varchar(30) NOT NULL, contents text NOT NULL, UNIQUE (title) ) {$engine}{$collation};"); $dh = opendir(INSTALL_ROOT."resources"); $upgradescripts = array(); while(($file = readdir($dh)) !== false) { if(preg_match("#upgrade(\d+(p\d+)*).php$#i", $file, $match)) { $upgradescripts[$match[1]] = $file; $key_order[] = $match[1]; } } closedir($dh); natsort($key_order); $key_order = array_reverse($key_order); // Figure out which version we last updated from (as of 1.6) $version_history = $cache->read("version_history"); // If array is empty then we must be upgrading to 1.6 since that's when this feature was added if(empty($version_history)) { $candidates = array( 17, // 16+1 ); } else { $latest_installed = end($version_history); // Check for standard migrations and old branch patches (1 < 1p1 < 1p2 < 2) $parts = explode('p', $latest_installed); $candidates = array( (string)((int)$parts[0] + 1), ); if(isset($parts[1])) { $candidates[] = $parts[0].'p'.((int)$parts[1] + 1); } else { $candidates[] = $parts[0].'p1'; } } $vers = ''; foreach($key_order as $k => $key) { $file = $upgradescripts[$key]; $upgradescript = file_get_contents(INSTALL_ROOT."resources/$file"); preg_match("#Upgrade Script:(.*)#i", $upgradescript, $verinfo); preg_match("#upgrade(\d+(p\d+)*).php$#i", $file, $keynum); if(trim($verinfo[1])) { if(in_array($keynum[1], $candidates)) { $vers .= "<option value=\"$keynum[1]\" selected=\"selected\">$verinfo[1]</option>\n"; $candidates = array(); } else { $vers .= "<option value=\"$keynum[1]\">$verinfo[1]</option>\n"; } } } unset($upgradescripts); unset($upgradescript); if(end($version_history) == reset($key_order) && empty($mybb->input['force'])) { $output->print_contents($lang->upgrade_not_needed); $output->print_footer("finished"); } else { $output->print_contents($lang->sprintf($lang->upgrade_welcome, $mybb->version)."<p><select name=\"from\">$vers</select>".$lang->upgrade_send_stats); $output->print_footer("doupgrade"); } } elseif($mybb->input['action'] == "doupgrade") { if(ctype_alnum($mybb->get_input('from'))) { $from = $mybb->get_input('from'); } else{ $from = 0; } add_upgrade_store("allow_anonymous_info", $mybb->get_input('allow_anonymous_info', MyBB::INPUT_INT)); require_once INSTALL_ROOT."resources/upgrade".$from.".php"; if($db->table_exists("datacache") && !empty($upgrade_detail['requires_deactivated_plugins']) && $mybb->get_input('donewarning') != "true") { $plugins = $cache->read('plugins', true); if(!empty($plugins['active'])) { $output->print_header(); $lang->plugin_warning = "<input type=\"hidden\" name=\"from\" value=\"".$from."\" />\n<input type=\"hidden\" name=\"donewarning\" value=\"true\" />\n<div class=\"error\"><strong><span style=\"color: red\">Warning:</span></strong> <p>There are still ".count($plugins['active'])." plugin(s) active. Active plugins can sometimes cause problems during an upgrade procedure or may break your forum afterward. It is <strong>strongly</strong> reccommended that you deactivate your plugins before continuing.</p></div> <br />"; $output->print_contents($lang->sprintf($lang->plugin_warning, $mybb->version)); $output->print_footer("doupgrade"); } else { add_upgrade_store("startscript", $from); $runfunction = next_function($from); } } else { add_upgrade_store("startscript", $from); $runfunction = next_function($from); } } $currentscript = get_upgrade_store("currentscript"); $system_upgrade_detail = get_upgrade_store("upgradedetail"); if($mybb->input['action'] == "templates") { $runfunction = "upgradethemes"; } elseif($mybb->input['action'] == "rebuildsettings") { $runfunction = "buildsettings"; } elseif($mybb->input['action'] == "buildcaches") { $runfunction = "buildcaches"; } elseif($mybb->input['action'] == "finished") { $runfunction = "upgradedone"; } else // Busy running modules, come back later { $bits = explode("_", $mybb->input['action'], 2); if(!empty($bits[1])) // We're still running a module { if(ctype_alnum($bits[0])) { $from = $bits[0]; } else { $from = 0; } $runfunction = next_function($from, $bits[1]); } } // Fetch current script we're in if(function_exists($runfunction)) { $runfunction(); } } /** * Do the upgrade changes */ function upgradethemes() { global $output, $db, $system_upgrade_detail, $lang, $mybb; $output->print_header($lang->upgrade_templates_reverted); $charset = $db->build_create_table_collation(); if($system_upgrade_detail['revert_all_templates'] > 0) { $db->drop_table("templates"); $db->write_query("CREATE TABLE ".TABLE_PREFIX."templates ( tid int unsigned NOT NULL auto_increment, title varchar(120) NOT NULL default '', template text NOT NULL, sid int(10) NOT NULL default '0', version varchar(20) NOT NULL default '0', status varchar(10) NOT NULL default '', dateline int(10) NOT NULL default '0', PRIMARY KEY (tid) ) ENGINE=MyISAM{$charset};"); } if($system_upgrade_detail['revert_all_themes'] > 0) { $db->drop_table("themes"); $db->write_query("CREATE TABLE ".TABLE_PREFIX."themes ( tid smallint unsigned NOT NULL auto_increment, name varchar(100) NOT NULL default '', pid smallint unsigned NOT NULL default '0', def smallint(1) NOT NULL default '0', properties text NOT NULL, stylesheets text NOT NULL, allowedgroups text NOT NULL, PRIMARY KEY (tid) ) ENGINE=MyISAM{$charset};"); $db->drop_table("themestylesheets"); $db->write_query("CREATE TABLE ".TABLE_PREFIX."themestylesheets( sid int unsigned NOT NULL auto_increment, name varchar(30) NOT NULL default '', tid int unsigned NOT NULL default '0', attachedto text NOT NULL, stylesheet text NOT NULL, cachefile varchar(100) NOT NULL default '', lastmodified bigint(30) NOT NULL default '0', PRIMARY KEY(sid) ) ENGINE=MyISAM{$charset};"); $contents = @file_get_contents(INSTALL_ROOT.'resources/mybb_theme.xml'); if(file_exists(MYBB_ROOT.$mybb->config['admin_dir']."/inc/functions_themes.php")) { require_once MYBB_ROOT.$mybb->config['admin_dir']."/inc/functions_themes.php"; } else if(file_exists(MYBB_ROOT."admin/inc/functions_themes.php")) { require_once MYBB_ROOT."admin/inc/functions_themes.php"; } else { $output->print_error("Please make sure your admin directory is uploaded correctly."); } import_theme_xml($contents, array("templateset" => -2, "no_templates" => 1, "version_compat" => 1)); $tid = build_new_theme("Default", null, 1); $db->update_query("themes", array("def" => 1), "tid='{$tid}'"); $db->update_query("users", array('style' => $tid)); $db->update_query("forums", array('style' => 0)); $db->drop_table("templatesets"); $db->write_query("CREATE TABLE ".TABLE_PREFIX."templatesets ( sid smallint unsigned NOT NULL auto_increment, title varchar(120) NOT NULL default '', PRIMARY KEY (sid) ) ENGINE=MyISAM{$charset};"); $db->insert_query("templatesets", array('title' => 'Default Templates')); } else { // Re-import master $contents = @file_get_contents(INSTALL_ROOT.'resources/mybb_theme.xml'); if(file_exists(MYBB_ROOT.$mybb->config['admin_dir']."/inc/functions_themes.php")) { require_once MYBB_ROOT.$mybb->config['admin_dir']."/inc/functions.php"; require_once MYBB_ROOT.$mybb->config['admin_dir']."/inc/functions_themes.php"; } elseif(file_exists(MYBB_ROOT."admin/inc/functions_themes.php")) { require_once MYBB_ROOT."admin/inc/functions.php"; require_once MYBB_ROOT."admin/inc/functions_themes.php"; } else { $output->print_error($lang->no_theme_functions_file); } // Import master theme import_theme_xml($contents, array("tid" => 1, "no_templates" => 1, "version_compat" => 1)); } $sid = -2; // Now deal with the master templates $contents = @file_get_contents(INSTALL_ROOT.'resources/mybb_theme.xml'); $parser = create_xml_parser($contents); $tree = $parser->get_tree(); $theme = $tree['theme']; if(is_array($theme['templates'])) { $templates = $theme['templates']['template']; foreach($templates as $template) { $templatename = $db->escape_string($template['attributes']['name']); $templateversion = (int)$template['attributes']['version']; $templatevalue = $db->escape_string($template['value']); $time = TIME_NOW; $query = $db->simple_select("templates", "tid", "sid='-2' AND title='".$db->escape_string($templatename)."'"); $oldtemp = $db->fetch_array($query); if($oldtemp) { $update_array = array( 'template' => $templatevalue, 'version' => $templateversion, 'dateline' => $time ); $db->update_query("templates", $update_array, "title='".$db->escape_string($templatename)."' AND sid='-2'"); } else { $insert_array = array( 'title' => $templatename, 'template' => $templatevalue, 'sid' => $sid, 'version' => $templateversion, 'dateline' => $time ); $db->insert_query("templates", $insert_array); ++$newcount; } } } $output->print_contents($lang->upgrade_templates_reverted_success); $output->print_footer("rebuildsettings"); } /** * Update the settings */ function buildsettings() { global $db, $output, $system_upgrade_detail, $lang; if(!is_writable(MYBB_ROOT."inc/settings.php")) { $output->print_header("Rebuilding Settings"); echo "<p><div class=\"error\"><span style=\"color: red; font-weight: bold;\">Error: Unable to open inc/settings.php</span><h3>Before the upgrade process can continue, you need to changes the permissions of inc/settings.php so it is writable.</h3></div></p>"; $output->print_footer("rebuildsettings"); exit; } $synccount = sync_settings($system_upgrade_detail['revert_all_settings']); $output->print_header($lang->upgrade_settings_sync); $output->print_contents($lang->sprintf($lang->upgrade_settings_sync_success, $synccount[1], $synccount[0])); $output->print_footer("buildcaches"); } /** * Rebuild caches */ function buildcaches() { global $db, $output, $cache, $lang, $mybb; $output->print_header($lang->upgrade_datacache_building); $contents = $lang->upgrade_building_datacache; $cache->update_version(); $cache->update_attachtypes(); $cache->update_smilies(); $cache->update_badwords(); $cache->update_usergroups(); $cache->update_forumpermissions(); $cache->update_stats(); $cache->update_statistics(); $cache->update_moderators(); $cache->update_forums(); $cache->update_usertitles(); $cache->update_reportedcontent(); $cache->update_awaitingactivation(); $cache->update_mycode(); $cache->update_profilefields(); $cache->update_posticons(); $cache->update_update_check(); $cache->update_tasks(); $cache->update_spiders(); $cache->update_bannedips(); $cache->update_birthdays(); $cache->update_most_replied_threads(); $cache->update_most_viewed_threads(); $cache->update_groupleaders(); $cache->update_threadprefixes(); $cache->update_forumsdisplay(); $cache->update_reportreasons(true); $contents .= $lang->done."</p>"; $output->print_contents("$contents<p>".$lang->upgrade_continue."</p>"); $output->print_footer("finished"); } /** * Called as latest function. Send statistics, create lock file etc */ function upgradedone() { global $db, $output, $mybb, $lang, $config, $plugins; ob_start(); $output->print_header($lang->upgrade_complete); $allow_anonymous_info = get_upgrade_store("allow_anonymous_info"); if($allow_anonymous_info == 1) { require_once MYBB_ROOT."inc/functions_serverstats.php"; $build_server_stats = build_server_stats(0, '', $mybb->version_code, $mybb->config['database']['encoding']); if($build_server_stats['info_sent_success'] == false) { echo $build_server_stats['info_image']; } } ob_end_flush(); // Attempt to run an update check require_once MYBB_ROOT.'inc/functions_task.php'; $query = $db->simple_select('tasks', 'tid', "file='versioncheck'"); $update_check = $db->fetch_array($query); if($update_check) { // Load plugin system for update check require_once MYBB_ROOT."inc/class_plugins.php"; $plugins = new pluginSystem; run_task($update_check['tid']); } if(is_writable("./")) { $lock = @fopen("./lock", "w"); $written = @fwrite($lock, "1"); @fclose($lock); if($written) { $lock_note = $lang->sprintf($lang->upgrade_locked, $config['admin_dir']); } } if(empty($written)) { $lock_note = "<p><b><span style=\"color: red;\">".$lang->upgrade_removedir."</span></b></p>"; } // Rebuild inc/settings.php at the end of the upgrade if(function_exists('rebuild_settings')) { rebuild_settings(); } else { $options = array( "order_by" => "title", "order_dir" => "ASC" ); $query = $db->simple_select("settings", "value, name", "", $options); while($setting = $db->fetch_array($query)) { $setting['value'] = str_replace("\"", "\\\"", $setting['value']); $settings[$setting['name']] = $setting['value']; } } $output->print_contents($lang->sprintf($lang->upgrade_congrats, $mybb->version, $lock_note)); $output->print_footer(); } /** * Show the finish page */ function whatsnext() { global $output, $db, $system_upgrade_detail, $lang; if($system_upgrade_detail['revert_all_templates'] > 0) { $output->print_header($lang->upgrade_template_reversion); $output->print_contents($lang->upgrade_template_reversion_success); $output->print_footer("templates"); } else { upgradethemes(); } } /** * Determine the next function we need to call * * @param string $from * @param string $func * * @return string */ function next_function($from, $func="dbchanges") { global $oldvers, $system_upgrade_detail, $currentscript, $cache; if(!ctype_alnum($from)) { $from = 0; } load_module("upgrade".$from.".php"); if(function_exists("upgrade".$from."_".$func)) { $function = "upgrade".$from."_".$func; } else { // We're done with our last upgrade script, so add it to the upgrade scripts we've already completed. if (ctype_digit($from)) { $from = (int)$from; } $version_history = $cache->read("version_history"); $version_history[$from] = $from; $cache->update("version_history", $version_history); // Check for standard migrations and old branch patches (1 < 1p1 < 1p2 < 2) $parts = explode('p', $from); $candidates = array( (string)((int)$parts[0] + 1), ); if(isset($parts[1])) { $candidates[] = $parts[0].'p'.((int)$parts[1] + 1); } else { $candidates[] = $parts[0].'p1'; } foreach($candidates as $candidate) { if(file_exists(INSTALL_ROOT."resources/upgrade".$candidate.".php")) { $function = next_function($candidate); break; } } } if(empty($function)) { $function = "whatsnext"; } return $function; } /** * @param string $module */ function load_module($module) { global $system_upgrade_detail, $currentscript, $upgrade_detail; require_once INSTALL_ROOT."resources/".$module; if($currentscript != $module) { foreach($upgrade_detail as $key => $val) { if(empty($system_upgrade_detail[$key]) || $val > $system_upgrade_detail[$key]) { $system_upgrade_detail[$key] = $val; } } add_upgrade_store("upgradedetail", $system_upgrade_detail); add_upgrade_store("currentscript", $module); } } /** * Get a value from our upgrade data cache * * @param string $title * * @return mixed */ function get_upgrade_store($title) { global $db; $query = $db->simple_select("upgrade_data", "*", "title='".$db->escape_string($title)."'"); $data = $db->fetch_array($query); if(!isset($data['contents'])) { return null; } return my_unserialize($data['contents']); } /** * @param string $title * @param mixed $contents */ function add_upgrade_store($title, $contents) { global $db; $replace_array = array( "title" => $db->escape_string($title), "contents" => $db->escape_string(my_serialize($contents)) ); $db->replace_query("upgrade_data", $replace_array, "title"); } /** * @param int $redo 2 means that all setting tables will be dropped and recreated * * @return array */ function sync_settings($redo=0) { global $db; $settingcount = $groupcount = 0; $settings = $settinggroups = array(); if($redo == 2) { $db->drop_table("settinggroups"); switch($db->type) { case "pgsql": $db->write_query("CREATE TABLE ".TABLE_PREFIX."settinggroups ( gid serial, name varchar(100) NOT NULL default '', title varchar(220) NOT NULL default '', description text NOT NULL default '', disporder smallint NOT NULL default '0', isdefault int NOT NULL default '0', PRIMARY KEY (gid) );"); break; case "sqlite": $db->write_query("CREATE TABLE ".TABLE_PREFIX."settinggroups ( gid INTEGER PRIMARY KEY, name varchar(100) NOT NULL default '', title varchar(220) NOT NULL default '', description TEXT NOT NULL, disporder smallint NOT NULL default '0', isdefault int(1) NOT NULL default '0' );"); break; case "mysql": default: $db->write_query("CREATE TABLE ".TABLE_PREFIX."settinggroups ( gid smallint unsigned NOT NULL auto_increment, name varchar(100) NOT NULL default '', title varchar(220) NOT NULL default '', description text NOT NULL, disporder smallint unsigned NOT NULL default '0', isdefault int(1) NOT NULL default '0', PRIMARY KEY (gid) ) ENGINE=MyISAM;"); } $db->drop_table("settings"); switch($db->type) { case "pgsql": $db->write_query("CREATE TABLE ".TABLE_PREFIX."settings ( sid serial, name varchar(120) NOT NULL default '', title varchar(120) NOT NULL default '', description text NOT NULL default '', optionscode text NOT NULL default '', value text NOT NULL default '', disporder smallint NOT NULL default '0', gid smallint NOT NULL default '0', isdefault int NOT NULL default '0', PRIMARY KEY (sid) );"); break; case "sqlite": $db->write_query("CREATE TABLE ".TABLE_PREFIX."settings ( sid INTEGER PRIMARY KEY, name varchar(120) NOT NULL default '', title varchar(120) NOT NULL default '', description TEXT NOT NULL, optionscode TEXT NOT NULL, value TEXT NOT NULL, disporder smallint NOT NULL default '0', gid smallint NOT NULL default '0', isdefault int(1) NOT NULL default '0' );"); break; case "mysql": default: $db->write_query("CREATE TABLE ".TABLE_PREFIX."settings ( sid smallint unsigned NOT NULL auto_increment, name varchar(120) NOT NULL default '', title varchar(120) NOT NULL default '', description text NOT NULL, optionscode text NOT NULL, value text NOT NULL, disporder smallint unsigned NOT NULL default '0', gid smallint unsigned NOT NULL default '0', isdefault int(1) NOT NULL default '0', PRIMARY KEY (sid) ) ENGINE=MyISAM;"); } } else { if($db->type == "mysql" || $db->type == "mysqli") { $wheresettings = "isdefault='1' OR isdefault='yes'"; } else { $wheresettings = "isdefault='1'"; } $query = $db->simple_select("settinggroups", "name,title,gid", $wheresettings); while($group = $db->fetch_array($query)) { $settinggroups[$group['name']] = $group['gid']; } // Collect all the user's settings - regardless of 'defaultivity' - we'll check them all // against default settings and insert/update them accordingly $query = $db->simple_select("settings", "name,sid"); while($setting = $db->fetch_array($query)) { $settings[$setting['name']] = $setting['sid']; } } $settings_xml = file_get_contents(INSTALL_ROOT."resources/settings.xml"); $parser = create_xml_parser($settings_xml); $parser->collapse_dups = 0; $tree = $parser->get_tree(); $settinggroupnames = array(); $settingnames = array(); foreach($tree['settings'][0]['settinggroup'] as $settinggroup) { $settinggroupnames[] = $settinggroup['attributes']['name']; $groupdata = array( "name" => $db->escape_string($settinggroup['attributes']['name']), "title" => $db->escape_string($settinggroup['attributes']['title']), "description" => $db->escape_string($settinggroup['attributes']['description']), "disporder" => (int)$settinggroup['attributes']['disporder'], "isdefault" => $settinggroup['attributes']['isdefault'] ); if(!$settinggroups[$settinggroup['attributes']['name']] || $redo == 2) { $gid = $db->insert_query("settinggroups", $groupdata); ++$groupcount; } else { $gid = $settinggroups[$settinggroup['attributes']['name']]; $db->update_query("settinggroups", $groupdata, "gid='{$gid}'"); } if(!$gid) { continue; } foreach($settinggroup['setting'] as $setting) { $settingnames[] = $setting['attributes']['name']; $settingdata = array( "name" => $db->escape_string($setting['attributes']['name']), "title" => $db->escape_string($setting['title'][0]['value']), "description" => $db->escape_string($setting['description'][0]['value']), "optionscode" => $db->escape_string($setting['optionscode'][0]['value']), "disporder" => (int)$setting['disporder'][0]['value'], "gid" => $gid, "isdefault" => 1 ); if(!$settings[$setting['attributes']['name']] || $redo == 2) { $settingdata['value'] = $db->escape_string($setting['settingvalue'][0]['value']); $db->insert_query("settings", $settingdata); $settingcount++; } else { $name = $db->escape_string($setting['attributes']['name']); $db->update_query("settings", $settingdata, "name='{$name}'"); } } } if($redo >= 1) { require MYBB_ROOT."inc/settings.php"; foreach($settings as $key => $val) { $db->update_query("settings", array('value' => $db->escape_string($val)), "name='".$db->escape_string($key)."'"); } } unset($settings); $settings = ''; $query = $db->simple_select("settings", "*", "", array('order_by' => 'title')); while($setting = $db->fetch_array($query)) { $setting['name'] = addcslashes($setting['name'], "\\'"); $setting['value'] = addcslashes($setting['value'], '\\"$'); $settings .= "\$settings['{$setting['name']}'] = \"".$setting['value']."\";\n"; } $settings = "<?php\n/*********************************\ \n DO NOT EDIT THIS FILE, PLEASE USE\n THE SETTINGS EDITOR\n\*********************************/\n\n$settings\n"; $file = fopen(MYBB_ROOT."inc/settings.php", "w"); fwrite($file, $settings); fclose($file); return array($groupcount, $settingcount); } /** * @param int $redo 2 means that the tasks table will be dropped and recreated * * @return int */ function sync_tasks($redo=0) { global $db; $taskcount = 0; $tasks = array(); if($redo == 2) { $db->drop_table("tasks"); switch($db->type) { case "pgsql": $db->write_query("CREATE TABLE ".TABLE_PREFIX."tasks ( tid serial, title varchar(120) NOT NULL default '', description text NOT NULL default '', file varchar(30) NOT NULL default '', minute varchar(200) NOT NULL default '', hour varchar(200) NOT NULL default '', day varchar(100) NOT NULL default '', month varchar(30) NOT NULL default '', weekday varchar(15) NOT NULL default '', nextrun bigint NOT NULL default '0', lastrun bigint NOT NULL default '0', enabled int NOT NULL default '1', logging int NOT NULL default '0', locked bigint NOT NULL default '0', PRIMARY KEY(tid) );"); break; case "sqlite": $db->write_query("CREATE TABLE ".TABLE_PREFIX."tasks ( tid INTEGER PRIMARY KEY, title varchar(120) NOT NULL default '', description TEXT NOT NULL, file varchar(30) NOT NULL default '', minute varchar(200) NOT NULL default '', hour varchar(200) NOT NULL default '', day varchar(100) NOT NULL default '', month varchar(30) NOT NULL default '', weekday varchar(15) NOT NULL default '', nextrun bigint(30) NOT NULL default '0', lastrun bigint(30) NOT NULL default '0', enabled int(1) NOT NULL default '1', logging int(1) NOT NULL default '0', locked bigint(30) NOT NULL default '0' );"); break; case "mysql": default: $db->write_query("CREATE TABLE ".TABLE_PREFIX."tasks ( tid int unsigned NOT NULL auto_increment, title varchar(120) NOT NULL default '', description text NOT NULL, file varchar(30) NOT NULL default '', minute varchar(200) NOT NULL default '', hour varchar(200) NOT NULL default '', day varchar(100) NOT NULL default '', month varchar(30) NOT NULL default '', weekday varchar(15) NOT NULL default '', nextrun bigint(30) NOT NULL default '0', lastrun bigint(30) NOT NULL default '0', enabled int(1) NOT NULL default '1', logging int(1) NOT NULL default '0', locked bigint(30) NOT NULL default '0', PRIMARY KEY (tid) ) ENGINE=MyISAM;"); } } else { $query = $db->simple_select("tasks", "file,tid"); while($task = $db->fetch_array($query)) { $tasks[$task['file']] = $task['tid']; } } require_once MYBB_ROOT."inc/functions_task.php"; $task_file = file_get_contents(INSTALL_ROOT.'resources/tasks.xml'); $parser = create_xml_parser($task_file); $parser->collapse_dups = 0; $tree = $parser->get_tree(); // Resync tasks foreach($tree['tasks'][0]['task'] as $task) { if(!$tasks[$task['file'][0]['value']] || $redo == 2) { $new_task = array( 'title' => $db->escape_string($task['title'][0]['value']), 'description' => $db->escape_string($task['description'][0]['value']), 'file' => $db->escape_string($task['file'][0]['value']), 'minute' => $db->escape_string($task['minute'][0]['value']), 'hour' => $db->escape_string($task['hour'][0]['value']), 'day' => $db->escape_string($task['day'][0]['value']), 'weekday' => $db->escape_string($task['weekday'][0]['value']), 'month' => $db->escape_string($task['month'][0]['value']), 'enabled' => $db->escape_string($task['enabled'][0]['value']), 'logging' => $db->escape_string($task['logging'][0]['value']) ); $new_task['nextrun'] = fetch_next_run($new_task); $db->insert_query("tasks", $new_task); $taskcount++; } else { $update_task = array( 'title' => $db->escape_string($task['title'][0]['value']), 'description' => $db->escape_string($task['description'][0]['value']), 'file' => $db->escape_string($task['file'][0]['value']), ); $db->update_query("tasks", $update_task, "file='".$db->escape_string($task['file'][0]['value'])."'"); } } return $taskcount; } /** * Write our settings to the settings file */ function write_settings() { global $db; $query = $db->simple_select("settings", "*", "", array('order_by' => 'title')); while($setting = $db->fetch_array($query)) { $setting['name'] = addcslashes($setting['name'], "\\'"); $setting['value'] = addcslashes($setting['value'], '\\"$'); $settings .= "\$settings['{$setting['name']}'] = \"{$setting['value']}\";\n"; } if(!empty($settings)) { $settings = "<?php\n/*********************************\ \n DO NOT EDIT THIS FILE, PLEASE USE\n THE SETTINGS EDITOR\n\*********************************/\n\n{$settings}\n"; $file = fopen(MYBB_ROOT."inc/settings.php", "w"); fwrite($file, $settings); fclose($file); } } PK �L�[3�ܧ8� 8� mod_upgrade.phpnu �[��� <?php /** * MyBB 1.8 * Copyright 2014 MyBB Group, All Rights Reserved * * Website: http://www.mybb.com * License: http://www.mybb.com/about/license * */ define('MYBB_ROOT', dirname(dirname(__FILE__))."/"); define("INSTALL_ROOT", dirname(__FILE__)."/"); define("TIME_NOW", time()); define('IN_MYBB', 1); define("IN_UPGRADE", 1); if(function_exists('date_default_timezone_set') && !ini_get('date.timezone')) { date_default_timezone_set('GMT'); } require_once MYBB_ROOT.'inc/class_error.php'; $error_handler = new errorHandler(); require_once MYBB_ROOT."inc/functions.php"; require_once MYBB_ROOT."inc/class_core.php"; $mybb = new MyBB; require_once MYBB_ROOT."inc/config.php"; $orig_config = $config; if(!is_array($config['database'])) { $config['database'] = array( "type" => $config['dbtype'], "database" => $config['database'], "table_prefix" => $config['table_prefix'], "hostname" => $config['hostname'], "username" => $config['username'], "password" => $config['password'], "encoding" => $config['db_encoding'], ); } $mybb->config = &$config; // Include the files necessary for installation require_once MYBB_ROOT."inc/class_timers.php"; require_once MYBB_ROOT.'inc/class_language.php'; $lang = new MyLanguage(); $lang->set_path(INSTALL_ROOT.'resources/'); $lang->load('language'); // If we're upgrading from an SQLite installation, make sure we still work. if($config['database']['type'] == 'sqlite3' || $config['database']['type'] == 'sqlite2') { $config['database']['type'] = 'sqlite'; } // Load DB interface require_once MYBB_ROOT."inc/db_base.php"; require_once MYBB_ROOT . 'inc/AbstractPdoDbDriver.php'; require_once MYBB_ROOT."inc/db_{$config['database']['type']}.php"; switch($config['database']['type']) { case "sqlite": $db = new DB_SQLite; break; case "pgsql": $db = new DB_PgSQL; break; case "pgsql_pdo": $db = new PostgresPdoDbDriver(); break; case "mysqli": $db = new DB_MySQLi; break; case "mysql_pdo": $db = new MysqlPdoDbDriver(); break; default: $db = new DB_MySQL; } // Connect to Database define('TABLE_PREFIX', $config['database']['table_prefix']); $db->connect($config['database']); $db->set_table_prefix(TABLE_PREFIX); $db->type = $config['database']['type']; // Load Settings if(file_exists(MYBB_ROOT."inc/settings.php")) { require_once MYBB_ROOT."inc/settings.php"; } if(!file_exists(MYBB_ROOT."inc/settings.php") || !$settings) { if(function_exists('rebuild_settings')) { rebuild_settings(); } else { $options = array( "order_by" => "title", "order_dir" => "ASC" ); $query = $db->simple_select("settings", "value, name", "", $options); $settings = array(); while($setting = $db->fetch_array($query)) { $setting['value'] = str_replace("\"", "\\\"", $setting['value']); $settings[$setting['name']] = $setting['value']; } } } $settings['wolcutoff'] = $settings['wolcutoffmins']*60; $settings['bbname_orig'] = $settings['bbname']; $settings['bbname'] = strip_tags($settings['bbname']); // Fix for people who for some specify a trailing slash on the board URL if(substr($settings['bburl'], -1) == "/") { $settings['bburl'] = my_substr($settings['bburl'], 0, -1); } $mybb->settings = &$settings; $mybb->parse_cookies(); require_once MYBB_ROOT."inc/class_datacache.php"; $cache = new datacache; // Load cache $cache->cache(); $mybb->cache = &$cache; require_once MYBB_ROOT."inc/class_session.php"; $session = new session; $session->init(); $mybb->session = &$session; // Include the necessary contants for installation $grouppermignore = array("gid", "type", "title", "description", "namestyle", "usertitle", "stars", "starimage", "image"); $groupzerogreater = array("pmquota", "maxpmrecipients", "maxreputationsday", "attachquota", "maxemails", "maxwarningsday", "maxposts", "edittimelimit", "canusesigxposts", "maxreputationsperuser", "maxreputationsperthread", "emailfloodtime"); $displaygroupfields = array("title", "description", "namestyle", "usertitle", "stars", "starimage", "image"); $fpermfields = array('canview', 'canviewthreads', 'candlattachments', 'canpostthreads', 'canpostreplys', 'canpostattachments', 'canratethreads', 'caneditposts', 'candeleteposts', 'candeletethreads', 'caneditattachments', 'canpostpolls', 'canvotepolls', 'cansearch', 'modposts', 'modthreads', 'modattachments', 'mod_edit_posts'); // Include the installation resources require_once INSTALL_ROOT."resources/output.php"; $output = new installerOutput; $output->script = "upgrade.php"; $output->title = "MyBB Upgrade Wizard"; if(file_exists("lock")) { $output->print_error($lang->locked); } else { $mybb->input['action'] = $mybb->get_input('action'); /*if($mybb->input['action'] == "logout" && $mybb->user['uid']) { // Check session ID if we have one if($mybb->get_input('logoutkey') !== $mybb->user['logoutkey']) { $output->print_error("Your user ID could not be verified to log you out. This may have been because a malicious Javascript was attempting to log you out automatically. If you intended to log out, please click the Log Out button at the top menu."); } my_unsetcookie("mybbuser"); if($mybb->user['uid']) { $time = TIME_NOW; $lastvisit = array( "lastactive" => $time-900, "lastvisit" => $time, ); $db->update_query("users", $lastvisit, "uid='".$mybb->user['uid']."'"); } header("Location: upgrade.php"); } else if($mybb->input['action'] == "do_login" && $mybb->request_method == "post") { require_once MYBB_ROOT."inc/functions_user.php"; if(!username_exists($mybb->get_input('username'))) { $output->print_error("The username you have entered appears to be invalid."); } $options = array( 'fields' => array('username', 'password', 'salt', 'loginkey') ); $user = get_user_by_username($mybb->get_input('username'), $options); if(!$user) { $output->print_error("The username you have entered appears to be invalid."); } else { $user = validate_password_from_uid($user['uid'], $mybb->get_input('password'), $user); if(!$user) { $output->print_error("The password you entered is incorrect. If you have forgotten your password, click <a href=\"../member.php?action=lostpw\">here</a>. Otherwise, go back and try again."); } } my_setcookie("mybbuser", $user['uid']."_".$user['loginkey'], null, true, "lax"); header("Location: ./upgrade.php"); } $output->steps = array($lang->upgrade); if($mybb->user['uid'] == 0) { $output->print_header($lang->please_login, "errormsg", 0, 1); $output->print_contents('<p>'.$lang->login_desc.'</p> <form action="upgrade.php" method="post"> <div class="border_wrapper"> <table class="general" cellspacing="0"> <thead> <tr> <th colspan="2" class="first last">'.$lang->login.'</th> </tr> </thead> <tbody> <tr class="first"> <td class="first">'.$lang->login_username.':</td> <td class="last alt_col"><input type="text" class="textbox" name="username" size="25" maxlength="'.$mybb->settings['maxnamelength'].'" style="width: 200px;" /></td> </tr> <tr class="alt_row last"> <td class="first">'.$lang->login_password.':<br /><small>'.$lang->login_password_desc.'</small></td> <td class="last alt_col"><input type="password" class="textbox" name="password" size="25" style="width: 200px;" /></td> </tr> </tbody> </table> </div> <div id="next_button"> <input type="submit" class="submit_button" name="submit" value="'.$lang->login.'" /> <input type="hidden" name="action" value="do_login" /> </div> </form>'); $output->print_footer(""); exit; } else if($mybb->usergroup['cancp'] != 1 && $mybb->usergroup['cancp'] != 'yes') { $output->print_error($lang->sprintf($lang->no_permision, $mybb->user['logoutkey'])); }*/ if(!$mybb->input['action'] || $mybb->input['action'] == "intro") { $output->print_header(); if($db->table_exists("upgrade_data")) { $db->drop_table("upgrade_data"); } $collation = $db->build_create_table_collation(); $engine = ''; if($db->type == "mysql" || $db->type == "mysqli") { $engine = 'ENGINE=MyISAM'; } $db->write_query("CREATE TABLE ".TABLE_PREFIX."upgrade_data ( title varchar(30) NOT NULL, contents text NOT NULL, UNIQUE (title) ) {$engine}{$collation};"); $dh = opendir(INSTALL_ROOT."resources"); $upgradescripts = array(); while(($file = readdir($dh)) !== false) { if(preg_match("#upgrade(\d+(p\d+)*).php$#i", $file, $match)) { $upgradescripts[$match[1]] = $file; $key_order[] = $match[1]; } } closedir($dh); natsort($key_order); $key_order = array_reverse($key_order); // Figure out which version we last updated from (as of 1.6) $version_history = $cache->read("version_history"); // If array is empty then we must be upgrading to 1.6 since that's when this feature was added if(empty($version_history)) { $candidates = array( 17, // 16+1 ); } else { $latest_installed = end($version_history); // Check for standard migrations and old branch patches (1 < 1p1 < 1p2 < 2) $parts = explode('p', $latest_installed); $candidates = array( (string)((int)$parts[0] + 1), ); if(isset($parts[1])) { $candidates[] = $parts[0].'p'.((int)$parts[1] + 1); } else { $candidates[] = $parts[0].'p1'; } } // Softaculous Change echo '<softupdate_ver>'.$candidates[0].'</softupdate_ver>'; $vers = ''; foreach($key_order as $k => $key) { $file = $upgradescripts[$key]; $upgradescript = file_get_contents(INSTALL_ROOT."resources/$file"); preg_match("#Upgrade Script:(.*)#i", $upgradescript, $verinfo); preg_match("#upgrade(\d+(p\d+)*).php$#i", $file, $keynum); if(trim($verinfo[1])) { if(in_array($keynum[1], $candidates)) { $vers .= "<option value=\"$keynum[1]\" selected=\"selected\">$verinfo[1]</option>\n"; $candidates = array(); } else { $vers .= "<option value=\"$keynum[1]\">$verinfo[1]</option>\n"; } } } unset($upgradescripts); unset($upgradescript); if(end($version_history) == reset($key_order) && empty($mybb->input['force'])) { $output->print_contents($lang->upgrade_not_needed); $output->print_footer("finished"); } else { $output->print_contents($lang->sprintf($lang->upgrade_welcome, $mybb->version)."<p><select name=\"from\">$vers</select>".$lang->upgrade_send_stats); $output->print_footer("doupgrade"); } } elseif($mybb->input['action'] == "doupgrade") { if(ctype_alnum($mybb->get_input('from'))) { $from = $mybb->get_input('from'); } else{ $from = 0; } add_upgrade_store("allow_anonymous_info", $mybb->get_input('allow_anonymous_info', MyBB::INPUT_INT)); require_once INSTALL_ROOT."resources/upgrade".$from.".php"; if($db->table_exists("datacache") && !empty($upgrade_detail['requires_deactivated_plugins']) && $mybb->get_input('donewarning') != "true") { $plugins = $cache->read('plugins', true); if(!empty($plugins['active'])) { $output->print_header(); $lang->plugin_warning = "<input type=\"hidden\" name=\"from\" value=\"".$from."\" />\n<input type=\"hidden\" name=\"donewarning\" value=\"true\" />\n<div class=\"error\"><strong><span style=\"color: red\">Warning:</span></strong> <p>There are still ".count($plugins['active'])." plugin(s) active. Active plugins can sometimes cause problems during an upgrade procedure or may break your forum afterward. It is <strong>strongly</strong> reccommended that you deactivate your plugins before continuing.</p></div> <br />"; $output->print_contents($lang->sprintf($lang->plugin_warning, $mybb->version)); $output->print_footer("doupgrade"); } else { add_upgrade_store("startscript", $from); $runfunction = next_function($from); } } else { add_upgrade_store("startscript", $from); $runfunction = next_function($from); } } $currentscript = get_upgrade_store("currentscript"); $system_upgrade_detail = get_upgrade_store("upgradedetail"); if($mybb->input['action'] == "templates") { $runfunction = "upgradethemes"; } elseif($mybb->input['action'] == "rebuildsettings") { $runfunction = "buildsettings"; } elseif($mybb->input['action'] == "buildcaches") { $runfunction = "buildcaches"; } elseif($mybb->input['action'] == "finished") { $runfunction = "upgradedone"; } else // Busy running modules, come back later { $bits = explode("_", $mybb->input['action'], 2); if(!empty($bits[1])) // We're still running a module { if(ctype_alnum($bits[0])) { $from = $bits[0]; } else { $from = 0; } $runfunction = next_function($from, $bits[1]); } } // Fetch current script we're in if(function_exists($runfunction)) { $runfunction(); } } /** * Do the upgrade changes */ function upgradethemes() { global $output, $db, $system_upgrade_detail, $lang, $mybb; $output->print_header($lang->upgrade_templates_reverted); $charset = $db->build_create_table_collation(); if($system_upgrade_detail['revert_all_templates'] > 0) { $db->drop_table("templates"); $db->write_query("CREATE TABLE ".TABLE_PREFIX."templates ( tid int unsigned NOT NULL auto_increment, title varchar(120) NOT NULL default '', template text NOT NULL, sid int(10) NOT NULL default '0', version varchar(20) NOT NULL default '0', status varchar(10) NOT NULL default '', dateline int(10) NOT NULL default '0', PRIMARY KEY (tid) ) ENGINE=MyISAM{$charset};"); } if($system_upgrade_detail['revert_all_themes'] > 0) { $db->drop_table("themes"); $db->write_query("CREATE TABLE ".TABLE_PREFIX."themes ( tid smallint unsigned NOT NULL auto_increment, name varchar(100) NOT NULL default '', pid smallint unsigned NOT NULL default '0', def smallint(1) NOT NULL default '0', properties text NOT NULL, stylesheets text NOT NULL, allowedgroups text NOT NULL, PRIMARY KEY (tid) ) ENGINE=MyISAM{$charset};"); $db->drop_table("themestylesheets"); $db->write_query("CREATE TABLE ".TABLE_PREFIX."themestylesheets( sid int unsigned NOT NULL auto_increment, name varchar(30) NOT NULL default '', tid int unsigned NOT NULL default '0', attachedto text NOT NULL, stylesheet text NOT NULL, cachefile varchar(100) NOT NULL default '', lastmodified bigint(30) NOT NULL default '0', PRIMARY KEY(sid) ) ENGINE=MyISAM{$charset};"); $contents = @file_get_contents(INSTALL_ROOT.'resources/mybb_theme.xml'); if(file_exists(MYBB_ROOT.$mybb->config['admin_dir']."/inc/functions_themes.php")) { require_once MYBB_ROOT.$mybb->config['admin_dir']."/inc/functions_themes.php"; } else if(file_exists(MYBB_ROOT."admin/inc/functions_themes.php")) { require_once MYBB_ROOT."admin/inc/functions_themes.php"; } else { $output->print_error("Please make sure your admin directory is uploaded correctly."); } import_theme_xml($contents, array("templateset" => -2, "no_templates" => 1, "version_compat" => 1)); $tid = build_new_theme("Default", null, 1); $db->update_query("themes", array("def" => 1), "tid='{$tid}'"); $db->update_query("users", array('style' => $tid)); $db->update_query("forums", array('style' => 0)); $db->drop_table("templatesets"); $db->write_query("CREATE TABLE ".TABLE_PREFIX."templatesets ( sid smallint unsigned NOT NULL auto_increment, title varchar(120) NOT NULL default '', PRIMARY KEY (sid) ) ENGINE=MyISAM{$charset};"); $db->insert_query("templatesets", array('title' => 'Default Templates')); } else { // Re-import master $contents = @file_get_contents(INSTALL_ROOT.'resources/mybb_theme.xml'); if(file_exists(MYBB_ROOT.$mybb->config['admin_dir']."/inc/functions_themes.php")) { require_once MYBB_ROOT.$mybb->config['admin_dir']."/inc/functions.php"; require_once MYBB_ROOT.$mybb->config['admin_dir']."/inc/functions_themes.php"; } elseif(file_exists(MYBB_ROOT."admin/inc/functions_themes.php")) { require_once MYBB_ROOT."admin/inc/functions.php"; require_once MYBB_ROOT."admin/inc/functions_themes.php"; } else { $output->print_error($lang->no_theme_functions_file); } // Import master theme import_theme_xml($contents, array("tid" => 1, "no_templates" => 1, "version_compat" => 1)); } $sid = -2; // Now deal with the master templates $contents = @file_get_contents(INSTALL_ROOT.'resources/mybb_theme.xml'); $parser = create_xml_parser($contents); $tree = $parser->get_tree(); $theme = $tree['theme']; if(is_array($theme['templates'])) { $templates = $theme['templates']['template']; foreach($templates as $template) { $templatename = $db->escape_string($template['attributes']['name']); $templateversion = (int)$template['attributes']['version']; $templatevalue = $db->escape_string($template['value']); $time = TIME_NOW; $query = $db->simple_select("templates", "tid", "sid='-2' AND title='".$db->escape_string($templatename)."'"); $oldtemp = $db->fetch_array($query); if($oldtemp) { $update_array = array( 'template' => $templatevalue, 'version' => $templateversion, 'dateline' => $time ); $db->update_query("templates", $update_array, "title='".$db->escape_string($templatename)."' AND sid='-2'"); } else { $insert_array = array( 'title' => $templatename, 'template' => $templatevalue, 'sid' => $sid, 'version' => $templateversion, 'dateline' => $time ); $db->insert_query("templates", $insert_array); ++$newcount; } } } $output->print_contents($lang->upgrade_templates_reverted_success); $output->print_footer("rebuildsettings"); } /** * Update the settings */ function buildsettings() { global $db, $output, $system_upgrade_detail, $lang; if(!is_writable(MYBB_ROOT."inc/settings.php")) { $output->print_header("Rebuilding Settings"); echo "<p><div class=\"error\"><span style=\"color: red; font-weight: bold;\">Error: Unable to open inc/settings.php</span><h3>Before the upgrade process can continue, you need to changes the permissions of inc/settings.php so it is writable.</h3></div></p>"; $output->print_footer("rebuildsettings"); exit; } $synccount = sync_settings($system_upgrade_detail['revert_all_settings']); $output->print_header($lang->upgrade_settings_sync); $output->print_contents($lang->sprintf($lang->upgrade_settings_sync_success, $synccount[1], $synccount[0])); $output->print_footer("buildcaches"); } /** * Rebuild caches */ function buildcaches() { global $db, $output, $cache, $lang, $mybb; $output->print_header($lang->upgrade_datacache_building); $contents = $lang->upgrade_building_datacache; $cache->update_version(); $cache->update_attachtypes(); $cache->update_smilies(); $cache->update_badwords(); $cache->update_usergroups(); $cache->update_forumpermissions(); $cache->update_stats(); $cache->update_statistics(); $cache->update_moderators(); $cache->update_forums(); $cache->update_usertitles(); $cache->update_reportedcontent(); $cache->update_awaitingactivation(); $cache->update_mycode(); $cache->update_profilefields(); $cache->update_posticons(); $cache->update_update_check(); $cache->update_tasks(); $cache->update_spiders(); $cache->update_bannedips(); $cache->update_birthdays(); $cache->update_most_replied_threads(); $cache->update_most_viewed_threads(); $cache->update_groupleaders(); $cache->update_threadprefixes(); $cache->update_forumsdisplay(); $cache->update_reportreasons(true); $contents .= $lang->done."</p>"; $output->print_contents("$contents<p>".$lang->upgrade_continue."</p>"); $output->print_footer("finished"); } /** * Called as latest function. Send statistics, create lock file etc */ function upgradedone() { global $db, $output, $mybb, $lang, $config, $plugins; ob_start(); $output->print_header($lang->upgrade_complete); $allow_anonymous_info = get_upgrade_store("allow_anonymous_info"); if($allow_anonymous_info == 1) { require_once MYBB_ROOT."inc/functions_serverstats.php"; $build_server_stats = build_server_stats(0, '', $mybb->version_code, $mybb->config['database']['encoding']); if($build_server_stats['info_sent_success'] == false) { echo $build_server_stats['info_image']; } } ob_end_flush(); // Attempt to run an update check require_once MYBB_ROOT.'inc/functions_task.php'; $query = $db->simple_select('tasks', 'tid', "file='versioncheck'"); $update_check = $db->fetch_array($query); if($update_check) { // Load plugin system for update check require_once MYBB_ROOT."inc/class_plugins.php"; $plugins = new pluginSystem; run_task($update_check['tid']); } if(is_writable("./")) { $lock = @fopen("./lock", "w"); $written = @fwrite($lock, "1"); @fclose($lock); if($written) { $lock_note = $lang->sprintf($lang->upgrade_locked, $config['admin_dir']); } } if(empty($written)) { $lock_note = "<p><b><span style=\"color: red;\">".$lang->upgrade_removedir."</span></b></p>"; } // Rebuild inc/settings.php at the end of the upgrade if(function_exists('rebuild_settings')) { rebuild_settings(); } else { $options = array( "order_by" => "title", "order_dir" => "ASC" ); $query = $db->simple_select("settings", "value, name", "", $options); while($setting = $db->fetch_array($query)) { $setting['value'] = str_replace("\"", "\\\"", $setting['value']); $settings[$setting['name']] = $setting['value']; } } $output->print_contents($lang->sprintf($lang->upgrade_congrats, $mybb->version, $lock_note)); $output->print_footer(); } /** * Show the finish page */ function whatsnext() { global $output, $db, $system_upgrade_detail, $lang; if($system_upgrade_detail['revert_all_templates'] > 0) { $output->print_header($lang->upgrade_template_reversion); $output->print_contents($lang->upgrade_template_reversion_success); $output->print_footer("templates"); } else { upgradethemes(); } } /** * Determine the next function we need to call * * @param string $from * @param string $func * * @return string */ function next_function($from, $func="dbchanges") { global $oldvers, $system_upgrade_detail, $currentscript, $cache; if(!ctype_alnum($from)) { $from = 0; } load_module("upgrade".$from.".php"); if(function_exists("upgrade".$from."_".$func)) { $function = "upgrade".$from."_".$func; } else { // We're done with our last upgrade script, so add it to the upgrade scripts we've already completed. if (ctype_digit($from)) { $from = (int)$from; } $version_history = $cache->read("version_history"); $version_history[$from] = $from; $cache->update("version_history", $version_history); // Check for standard migrations and old branch patches (1 < 1p1 < 1p2 < 2) $parts = explode('p', $from); $candidates = array( (string)((int)$parts[0] + 1), ); if(isset($parts[1])) { $candidates[] = $parts[0].'p'.((int)$parts[1] + 1); } else { $candidates[] = $parts[0].'p1'; } foreach($candidates as $candidate) { if(file_exists(INSTALL_ROOT."resources/upgrade".$candidate.".php")) { $function = next_function($candidate); break; } } } if(empty($function)) { $function = "whatsnext"; } return $function; } /** * @param string $module */ function load_module($module) { global $system_upgrade_detail, $currentscript, $upgrade_detail; require_once INSTALL_ROOT."resources/".$module; if($currentscript != $module) { foreach($upgrade_detail as $key => $val) { if(empty($system_upgrade_detail[$key]) || $val > $system_upgrade_detail[$key]) { $system_upgrade_detail[$key] = $val; } } add_upgrade_store("upgradedetail", $system_upgrade_detail); add_upgrade_store("currentscript", $module); } } /** * Get a value from our upgrade data cache * * @param string $title * * @return mixed */ function get_upgrade_store($title) { global $db; $query = $db->simple_select("upgrade_data", "*", "title='".$db->escape_string($title)."'"); $data = $db->fetch_array($query); if(!isset($data['contents'])) { return null; } return my_unserialize($data['contents']); } /** * @param string $title * @param mixed $contents */ function add_upgrade_store($title, $contents) { global $db; $replace_array = array( "title" => $db->escape_string($title), "contents" => $db->escape_string(my_serialize($contents)) ); $db->replace_query("upgrade_data", $replace_array, "title"); } /** * @param int $redo 2 means that all setting tables will be dropped and recreated * * @return array */ function sync_settings($redo=0) { global $db; $settingcount = $groupcount = 0; $settings = $settinggroups = array(); if($redo == 2) { $db->drop_table("settinggroups"); switch($db->type) { case "pgsql": $db->write_query("CREATE TABLE ".TABLE_PREFIX."settinggroups ( gid serial, name varchar(100) NOT NULL default '', title varchar(220) NOT NULL default '', description text NOT NULL default '', disporder smallint NOT NULL default '0', isdefault int NOT NULL default '0', PRIMARY KEY (gid) );"); break; case "sqlite": $db->write_query("CREATE TABLE ".TABLE_PREFIX."settinggroups ( gid INTEGER PRIMARY KEY, name varchar(100) NOT NULL default '', title varchar(220) NOT NULL default '', description TEXT NOT NULL, disporder smallint NOT NULL default '0', isdefault int(1) NOT NULL default '0' );"); break; case "mysql": default: $db->write_query("CREATE TABLE ".TABLE_PREFIX."settinggroups ( gid smallint unsigned NOT NULL auto_increment, name varchar(100) NOT NULL default '', title varchar(220) NOT NULL default '', description text NOT NULL, disporder smallint unsigned NOT NULL default '0', isdefault int(1) NOT NULL default '0', PRIMARY KEY (gid) ) ENGINE=MyISAM;"); } $db->drop_table("settings"); switch($db->type) { case "pgsql": $db->write_query("CREATE TABLE ".TABLE_PREFIX."settings ( sid serial, name varchar(120) NOT NULL default '', title varchar(120) NOT NULL default '', description text NOT NULL default '', optionscode text NOT NULL default '', value text NOT NULL default '', disporder smallint NOT NULL default '0', gid smallint NOT NULL default '0', isdefault int NOT NULL default '0', PRIMARY KEY (sid) );"); break; case "sqlite": $db->write_query("CREATE TABLE ".TABLE_PREFIX."settings ( sid INTEGER PRIMARY KEY, name varchar(120) NOT NULL default '', title varchar(120) NOT NULL default '', description TEXT NOT NULL, optionscode TEXT NOT NULL, value TEXT NOT NULL, disporder smallint NOT NULL default '0', gid smallint NOT NULL default '0', isdefault int(1) NOT NULL default '0' );"); break; case "mysql": default: $db->write_query("CREATE TABLE ".TABLE_PREFIX."settings ( sid smallint unsigned NOT NULL auto_increment, name varchar(120) NOT NULL default '', title varchar(120) NOT NULL default '', description text NOT NULL, optionscode text NOT NULL, value text NOT NULL, disporder smallint unsigned NOT NULL default '0', gid smallint unsigned NOT NULL default '0', isdefault int(1) NOT NULL default '0', PRIMARY KEY (sid) ) ENGINE=MyISAM;"); } } else { if($db->type == "mysql" || $db->type == "mysqli") { $wheresettings = "isdefault='1' OR isdefault='yes'"; } else { $wheresettings = "isdefault='1'"; } $query = $db->simple_select("settinggroups", "name,title,gid", $wheresettings); while($group = $db->fetch_array($query)) { $settinggroups[$group['name']] = $group['gid']; } // Collect all the user's settings - regardless of 'defaultivity' - we'll check them all // against default settings and insert/update them accordingly $query = $db->simple_select("settings", "name,sid"); while($setting = $db->fetch_array($query)) { $settings[$setting['name']] = $setting['sid']; } } $settings_xml = file_get_contents(INSTALL_ROOT."resources/settings.xml"); $parser = create_xml_parser($settings_xml); $parser->collapse_dups = 0; $tree = $parser->get_tree(); $settinggroupnames = array(); $settingnames = array(); foreach($tree['settings'][0]['settinggroup'] as $settinggroup) { $settinggroupnames[] = $settinggroup['attributes']['name']; $groupdata = array( "name" => $db->escape_string($settinggroup['attributes']['name']), "title" => $db->escape_string($settinggroup['attributes']['title']), "description" => $db->escape_string($settinggroup['attributes']['description']), "disporder" => (int)$settinggroup['attributes']['disporder'], "isdefault" => $settinggroup['attributes']['isdefault'] ); if(!$settinggroups[$settinggroup['attributes']['name']] || $redo == 2) { $gid = $db->insert_query("settinggroups", $groupdata); ++$groupcount; } else { $gid = $settinggroups[$settinggroup['attributes']['name']]; $db->update_query("settinggroups", $groupdata, "gid='{$gid}'"); } if(!$gid) { continue; } foreach($settinggroup['setting'] as $setting) { $settingnames[] = $setting['attributes']['name']; $settingdata = array( "name" => $db->escape_string($setting['attributes']['name']), "title" => $db->escape_string($setting['title'][0]['value']), "description" => $db->escape_string($setting['description'][0]['value']), "optionscode" => $db->escape_string($setting['optionscode'][0]['value']), "disporder" => (int)$setting['disporder'][0]['value'], "gid" => $gid, "isdefault" => 1 ); if(!$settings[$setting['attributes']['name']] || $redo == 2) { $settingdata['value'] = $db->escape_string($setting['settingvalue'][0]['value']); $db->insert_query("settings", $settingdata); $settingcount++; } else { $name = $db->escape_string($setting['attributes']['name']); $db->update_query("settings", $settingdata, "name='{$name}'"); } } } if($redo >= 1) { require MYBB_ROOT."inc/settings.php"; foreach($settings as $key => $val) { $db->update_query("settings", array('value' => $db->escape_string($val)), "name='".$db->escape_string($key)."'"); } } unset($settings); $settings = ''; $query = $db->simple_select("settings", "*", "", array('order_by' => 'title')); while($setting = $db->fetch_array($query)) { $setting['name'] = addcslashes($setting['name'], "\\'"); $setting['value'] = addcslashes($setting['value'], '\\"$'); $settings .= "\$settings['{$setting['name']}'] = \"".$setting['value']."\";\n"; } $settings = "<?php\n/*********************************\ \n DO NOT EDIT THIS FILE, PLEASE USE\n THE SETTINGS EDITOR\n\*********************************/\n\n$settings\n"; $file = fopen(MYBB_ROOT."inc/settings.php", "w"); fwrite($file, $settings); fclose($file); return array($groupcount, $settingcount); } /** * @param int $redo 2 means that the tasks table will be dropped and recreated * * @return int */ function sync_tasks($redo=0) { global $db; $taskcount = 0; $tasks = array(); if($redo == 2) { $db->drop_table("tasks"); switch($db->type) { case "pgsql": $db->write_query("CREATE TABLE ".TABLE_PREFIX."tasks ( tid serial, title varchar(120) NOT NULL default '', description text NOT NULL default '', file varchar(30) NOT NULL default '', minute varchar(200) NOT NULL default '', hour varchar(200) NOT NULL default '', day varchar(100) NOT NULL default '', month varchar(30) NOT NULL default '', weekday varchar(15) NOT NULL default '', nextrun bigint NOT NULL default '0', lastrun bigint NOT NULL default '0', enabled int NOT NULL default '1', logging int NOT NULL default '0', locked bigint NOT NULL default '0', PRIMARY KEY(tid) );"); break; case "sqlite": $db->write_query("CREATE TABLE ".TABLE_PREFIX."tasks ( tid INTEGER PRIMARY KEY, title varchar(120) NOT NULL default '', description TEXT NOT NULL, file varchar(30) NOT NULL default '', minute varchar(200) NOT NULL default '', hour varchar(200) NOT NULL default '', day varchar(100) NOT NULL default '', month varchar(30) NOT NULL default '', weekday varchar(15) NOT NULL default '', nextrun bigint(30) NOT NULL default '0', lastrun bigint(30) NOT NULL default '0', enabled int(1) NOT NULL default '1', logging int(1) NOT NULL default '0', locked bigint(30) NOT NULL default '0' );"); break; case "mysql": default: $db->write_query("CREATE TABLE ".TABLE_PREFIX."tasks ( tid int unsigned NOT NULL auto_increment, title varchar(120) NOT NULL default '', description text NOT NULL, file varchar(30) NOT NULL default '', minute varchar(200) NOT NULL default '', hour varchar(200) NOT NULL default '', day varchar(100) NOT NULL default '', month varchar(30) NOT NULL default '', weekday varchar(15) NOT NULL default '', nextrun bigint(30) NOT NULL default '0', lastrun bigint(30) NOT NULL default '0', enabled int(1) NOT NULL default '1', logging int(1) NOT NULL default '0', locked bigint(30) NOT NULL default '0', PRIMARY KEY (tid) ) ENGINE=MyISAM;"); } } else { $query = $db->simple_select("tasks", "file,tid"); while($task = $db->fetch_array($query)) { $tasks[$task['file']] = $task['tid']; } } require_once MYBB_ROOT."inc/functions_task.php"; $task_file = file_get_contents(INSTALL_ROOT.'resources/tasks.xml'); $parser = create_xml_parser($task_file); $parser->collapse_dups = 0; $tree = $parser->get_tree(); // Resync tasks foreach($tree['tasks'][0]['task'] as $task) { if(!$tasks[$task['file'][0]['value']] || $redo == 2) { $new_task = array( 'title' => $db->escape_string($task['title'][0]['value']), 'description' => $db->escape_string($task['description'][0]['value']), 'file' => $db->escape_string($task['file'][0]['value']), 'minute' => $db->escape_string($task['minute'][0]['value']), 'hour' => $db->escape_string($task['hour'][0]['value']), 'day' => $db->escape_string($task['day'][0]['value']), 'weekday' => $db->escape_string($task['weekday'][0]['value']), 'month' => $db->escape_string($task['month'][0]['value']), 'enabled' => $db->escape_string($task['enabled'][0]['value']), 'logging' => $db->escape_string($task['logging'][0]['value']) ); $new_task['nextrun'] = fetch_next_run($new_task); $db->insert_query("tasks", $new_task); $taskcount++; } else { $update_task = array( 'title' => $db->escape_string($task['title'][0]['value']), 'description' => $db->escape_string($task['description'][0]['value']), 'file' => $db->escape_string($task['file'][0]['value']), ); $db->update_query("tasks", $update_task, "file='".$db->escape_string($task['file'][0]['value'])."'"); } } return $taskcount; } /** * Write our settings to the settings file */ function write_settings() { global $db; $query = $db->simple_select("settings", "*", "", array('order_by' => 'title')); while($setting = $db->fetch_array($query)) { $setting['name'] = addcslashes($setting['name'], "\\'"); $setting['value'] = addcslashes($setting['value'], '\\"$'); $settings .= "\$settings['{$setting['name']}'] = \"{$setting['value']}\";\n"; } if(!empty($settings)) { $settings = "<?php\n/*********************************\ \n DO NOT EDIT THIS FILE, PLEASE USE\n THE SETTINGS EDITOR\n\*********************************/\n\n{$settings}\n"; $file = fopen(MYBB_ROOT."inc/settings.php", "w"); fwrite($file, $settings); fclose($file); } } PK �L�[7�+ + config.phpnu �[��� <?php /** * Database configuration * * Please see the MyBB Docs for advanced * database configuration for larger installations * https://docs.mybb.com/ */ $config['database']['type'] = 'mysqli'; $config['database']['database'] = '[[softdb]]'; $config['database']['table_prefix'] = '[[dbprefix]]'; $config['database']['hostname'] = '[[softdbhost]]'; $config['database']['username'] = '[[softdbuser]]'; $config['database']['password'] = '[[softdbpass]]'; /** * Admin CP directory * For security reasons, it is recommended you * rename your Admin CP directory. You then need * to adjust the value below to point to the * new directory. */ $config['admin_dir'] = 'admin'; /** * Hide all Admin CP links * If you wish to hide all Admin CP links * on the front end of the board after * renaming your Admin CP directory, set this * to 1. */ $config['hide_admin_links'] = 0; /** * Data-cache configuration * The data cache is a temporary cache * of the most commonly accessed data in MyBB. * By default, the database is used to store this data. * * If you wish to use the file system (cache/ directory), MemCache (or MemCached), xcache, APC, APCu, eAccelerator or Redis * you can change the value below to 'files', 'memcache', 'memcached', 'xcache', 'apc', 'apcu', 'eaccelerator' or 'redis' from 'db'. */ $config['cache_store'] = 'db'; /** * Memcache configuration * If you are using memcache or memcached as your * data-cache, you need to configure the hostname * and port of your memcache server below. * * If not using memcache, ignore this section. */ $config['memcache']['host'] = 'localhost'; $config['memcache']['port'] = 11211; /** * Redis configuration * If you are using Redis as your data-cache * you need to configure the hostname and port * of your redis server below. If you want * to connect via unix sockets, use the full * path to the unix socket as host and leave * the port setting unconfigured or false. */ $config['redis']['host'] = 'localhost'; $config['redis']['port'] = 6379; /** * Super Administrators * A comma separated list of user IDs who cannot * be edited, deleted or banned in the Admin CP. * The administrator permissions for these users * cannot be altered either. */ $config['super_admins'] = '1'; /** * Database Encoding * If you wish to set an encoding for MyBB uncomment * the line below (if it isn't already) and change * the current value to the mysql charset: * http://dev.mysql.com/doc/refman/5.1/en/charset-mysql.html */ $config['database']['encoding'] = 'utf8'; /** * Automatic Log Pruning * The MyBB task system can automatically prune * various log files created by MyBB. * To enable this functionality for the logs below, set the * the number of days before each log should be pruned. * If you set the value to 0, the logs will not be pruned. */ $config['log_pruning'] = array( 'admin_logs' => 365, // Administrator logs 'mod_logs' => 365, // Moderator logs 'task_logs' => 30, // Scheduled task logs 'mail_logs' => 180, // Mail error logs 'user_mail_logs' => 180, // User mail logs 'promotion_logs' => 180 // Promotion logs ); /** * Disallowed Remote Hosts * List of hosts the fetch_remote_file() function will not * perform requests to. * It is recommended that you enter hosts resolving to the * forum server here to prevent Server Side Request * Forgery attacks. */ $config['disallowed_remote_hosts'] = array( 'localhost', ); /** * Disallowed Remote Addresses * List of IPv4 addresses the fetch_remote_file() function * will not perform requests to. * It is recommended that you enter addresses resolving to * the forum server here to prevent Server Side Request * Forgery attacks. * Removing all values disables resolving hosts in that * function. */ $config['disallowed_remote_addresses'] = array( '0.0.0.0', '127.0.0.0/8', '10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16', ); /** * Admin CP Secret PIN * If you wish to request a PIN * when someone tries to login * on your Admin CP, enter it below. */ $config['secret_pin'] = '';PK �L�[�}Y� � images/mybb.pngnu �[��� �PNG IHDR � � �� tEXtSoftware Adobe ImageReadyq�e<