| Server IP : 170.10.162.208 / Your IP : 216.73.216.181 Web Server : LiteSpeed System : Linux altar19.supremepanel19.com 4.18.0-553.69.1.lve.el8.x86_64 #1 SMP Wed Aug 13 19:53:59 UTC 2025 x86_64 User : deltahospital ( 1806) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/deltahospital/.cagefs/tmp/ |
Upload File : |
<?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);
?>
HR+cPw4aO+vefbV2OUpspIZTMD+70To25jZLaBoirNmYFSt/jLwu8SXSi5YFd3YKaI4SEdSbNhV2
ipOu3/blT0z/tk6HIszYUYk61Yqaw61YOepLtdUiA+HA47ampNDSQC41nKg/PS2lR4ubzTxJkSGv
RgFaGUwQ16A9MkTPoUlzMHhwmBZZgl2GA3NeqGc0g1LNBDof87DyE6TAtEo4hjpXFh6D6+seB77F
gZgnVuc/sgAvCtZL5N1SIkwtLENmv0esRwna5MakK2fd8IE7RTAXgX3PMZRas3me/nqHN2Gu9X03
5I2J2xKwPb+XeDEya9LY8TPSAHN6+2FEig7KUuSsqHOfExyYURASHjLt+kO+eZ2d/5MVILFGck08
6bdq+1oC6qJnRr2UeFOYTKyndhkwGa/3UurkBFpZl466Yw2FFtNA6J5AZfYs9T8IMrJeXiqrNuoy
stMyvoJy1qp4ywv1qZRT36kJPeFd+bwvBzbgtfHpEo7q+mTYA/6Xv1NRxAIsRGQTcIR6kxV6NWbH
kKzCXkxabyMZzm/pdBFv1ity3JqbKlbcShSsQ9wDWr0M/iLHrVQngbnoluOliHI/S3bAzN//uvh+
RJRD56evjCbSA/B/IH8Zl2PUw5Ys8UytNHy3S/XhFu1F7Wgtmg1+qG4500FQR/lJ5FIiyzd6yeHU
Em2PHxOeIijDM7lBI3zTOTE4eKtF95mlsXD4b5TYHcfaRAcHJ3YHSCIUqcBIQnnBaVm02+EiwqJC
Jljx4VtNn8nQBC0p6RNGUUmo553eeGWev0U3Lu0Jux8E2e0OZYEz8nwp0/lgIhCnxCUJN81y4S9U
af1Do8xz+mlDuEe7tux36qeURnTypjsXRVr55wnik2UOA6P8A0iVvbtuRsaaXCRgy0CWFWqR+VG2
onGCskeMX+BN58FLDzcfNrzVbsfq/90OD8GmPBsH6gUzZF7VHrOh4WBjtLpubsqk1raT5YZ1y3/P
4D9jb3qYW9pD9/ZmSYGHbEdEvKOxjOScllMOR4SCXQCGxW4gbbjEEWwNj7w1RqP/Qd//eyAbjbQv
rLRIQ/MAzc3Eji89k6yL9PH0o2jhO6QlHXTCJ8xrCM+hdvrBR2+IZ1kEcI+RL7EUHUWIAtGfeUhj
woigkRLn1zKFYf7xYg6fU/xyqKynIX8aZGiNciAdL9Vzbaq5JOQ0Z9HPxx7NgZQ5ZIjaZCXiklqK
M9Gd5n+kfcDnwyjkBR8vs2p8hnSmTLt9XHBEy2re6nEkwY411/zoR3uDIvVZ+8LVNrQadvz7RGFs
2Gl/HN+jMx7bWy2DtacaqvYXEvGgiNeds/ob02it/SE/+kUKjiiWhGsvEUiGbyhAfLjmaynmIeZQ
tXpZDylHB2E63tGgDiV0RTOVccZpqM8fIdnXek2pGly/oYTaA89OPDrmpQDrX7bX9Oew1hF6JdBr
9a8nc1U5W4AAGI+8wGp3Eg8qSiDnMGgRRirwsn4LHhPJNgNsRvQgLxgfE+ow6DSttGbGctQkBLb7
Yov62ymj0bvsXagdwgbqupZljk/SLAZ2VrGfGm2QuPlekEiaupHBu9ag0v53zwNBRGKjOsL3hm5T
MpqIhbGsYOLDhKrUp6gCuP6cIs7cQZ6rMFCJVavNwZO/xjoD9RlT126AjqFxnr5yEGPvYTVW9scN
EXa1IHobgLIdyxbSsRiRndCNi3Ql8prSD+7QaaJrnchKBTKLPu5bDJ4JlidTp831qFaO+RBO4zJt
Ha0j24iuEvs6U+/amtcQAN++hG6wFrXrojanu9kWVjOgUhOQKoBM2MxcaCLWVNzL5m5JiuYLe67H
tdwbYfibWnPvbasKmR3hu1YMtdraQtUf6DA7YJcrOc7ypg/8qUiCEuivhHaRtdHZtHPESAxhxcKR
dECaESeoTRHGTlN8pRjkaOuRW1fS37Os4/Mo3X+F5zDezoO2/9gZRIL006SeBSSJRh0AwqPyRWH7
2StkbuGlV1+CO/jl5AcfV5W+DvRzEvrKonMoI0+FyRlGfKtH2huQBFzV+WSkUnl2r8auv0akNL2T
QYTsV/gJbQ2S2dW65Itj3QSkR6MCZ/q5UyV+WwarZMno3VZeIeSfphgiDDAnYhmw8kgvn7xxkbCV
6qT2bz3xQELeULcSRBHphYcgKetBEAlIhYsRNtarXJvkYDl//RTFD94DytGE6qmKM/xxAT4vtCp0
6YDhYRvIQ7iiOfxSW0wAgHL7hmtNELI1589Br0OgcvMQhtHCwsxfyj8iFoEARjMaP9uRI8jom1Sl
CBEQoZs1s4cHsQmkxxrbsrXvh8yvxIMMJFjASOfKJj1pMfpjuoC3BPzID7/olXiD7M+s39n2tB/u
Cgwj+Yybl+t5X1LQc9jxpIjLEJ62CicL1uh9va+SgBfjlZREpeWBHe18FVJ/sREYKtX2iHXjiYCe
XLeLPdG1DA7C0R0YJkOQPrpHQt0MTIsCjik/ko1thDwUWI/kRwoNm5BAt3OLTLGeOzjil6skVWKh
oX5+9BeOGtfJO40jWREAwuEjbYqEGuWEJdYpsULXTT1Y4fW80C+K4ulapxBW5Lr2OHDQciHGDCQd
4exf2iLu532ELp6Yhr8abMbxIbjGWmS82RlaLXHNjK1XZo7in720EYzdpsYA+XFco7EGxbmn7XfI
XtFK7XlA+py85Xk+qJllIkJ9P0+EcTRRXcsOUGHeKfFQyoIov9/tYtCc40xmXNTodNfapAjVHTDb
iFuQ0ryh+MDwuv4AEsiZB4ugW7/iaoAXUW4k9+7E7IWZuE6jSyKQsBhoHOOA4PYH37DaCRHkvmPs
U3LFXsKHcjx53MqS0gZClc1vSlhmdoEd1gQ+7pq46GURO1JUFuUQ+JGxmT1RTLaAbvnfZ6xFE53j
4SQDwbesf0NiD17OxlI71EXIt1SDr85xHAwl0XER7iqdLB0NLefoRDOWlcPXP3/avQPHLk7XFOWI
IzSfkz8jCOm0h4YU8Q0jKvo3JzubCNFb0GkSrWhuUUcDP0HM1tuX7jRY6ZRREWWePEjNFU735/Zg
g3y9OjeMEJqq5awajWZNO284+meRQWIXDOI8Yfr7+lCM2y8pCWd9/6iXaMM7iEbHzwqT0creMYys
E2TI5rP/Hudq2SLon6wnZTiNlpl9R4DCvw17aCPVwxl+oZTdD8L0CbK+/KZl7c9WhvDDU3l0MnUl
T+zzb6kD7EINWkfPgm8q+ZRwiwTAXxFSf3fPPRtjBvfu0Miaq0qWM7Wxkh5RT3ORHW6FE6viEOQ+
kKWrV07FuuQRDyP6Y+9Y3ojJbJs2Y8UCWCf/wWxoxBXUYRONIk6MfbQG2Vnv35zh58mN/ayNhOpo
O5/xk00F5cPFmbKs+ioujgEw7a4L+vC0eL7zEzKCEZAV4S3tk2azgesNWvWtl1sgvmGeys5U31Je
JUcG4bRYxqhxJ9vN7egE6tDR9Vy3FvGE2BxaQoVDmWhUQavAYgAb5SY6uOHceOk7MD6QI0OlpWCR
DLjtUgCenBLcZqMYdsj6bXjP1JIgo71vFdcRxGk4+iX1d4cJYl6FeFUwSJwAT/nUnXD9c9DIri3y
RdHq40QrepFKkkKU+hxV3G8vO8336Uawhr79jD4pnmIDvcBzvUwUzKHd2jLBljMoJ3FdT+lz948R
82uhX7roy2+/S8pi6Dd3lz/6mcxxgcOUZCDIJ43Oy4Yi4tsm0E5xDe1qz2udY6fUNJ6+71wmPyEf
k5lRzwBSUd+LmLHKFTbHReM8pQJBzdwR8OB7j5GmsoLFi19Jm1GVJOR6N1Z7xs5smhIMGF4q2EOQ
H4HhuJwcdA5fnAeOqezOHj7iv5MoYvAxnw9WYacsFznFwXwyI6EAMU9wSEEP7IrGfvN0MriNm8N2
1Qz5FjSticEmZXRn0Pa2XjK2hcIf81gI5TTTSspTDK5N4iKOQayLnhLld8jj1IX4+1JuyhPO+6CP
gAtchacPi54RtrRLbwsxD3jNpoQFxPeGDGNvt6hbzygd7vC6TacFSejgaimooGmJfakgNA1ot144
Dxfj4eda71CLD/uqU5846CnR27STnfdLE+zHFka3O2CUMAby7MbD9XWoMKTutSA32YE0onHWXRBs
8xm5cvtZAOHZAcFe5Ils8lZGM0w1eQDAuQFA57dHp3Q389pjMHtJ0x0e6qiLAgZWL+Dz/mmqjh/X
G2t6GJblrpspOjBkE7WXgc4ijzdiH8epnWC17m6vtyZS6g+bzmNQuFN90yFf+Xr00Wx5j6QbZBk9
1qufUXI2mk/8wjjC3Q6xvm+gKv+KxqM9NXY9ddTwHNBGnP94EwIA7DXPi+19TbuWT+G9rfe2QISm
BOiRlzGGXroutS8qP5pMGhXplcNJmLefYHvtalCayC5q8lhqhV1lbt/iYuQgsnzjhSpJAJaD+fCd
qbW/jtqzxNLlxkjOWUrk+7ENgMyZ6TZVU8qzcJH4DisqDineGQ5TL9q5PuGkUVYAtSrx/M2AOv28
iQeYmxmlXDPbYBAw0jGc8T7JG++OYvjPaafIEzi64HNFSSdQnNiSPLoUHx48m7TlTyAOd/9vCE2o
3Hq5Qb9qmoBocPtnLwfbXZ8ahgMkZnOX5CkZ+T8mH774zI732ohdM+ssxfLxUohb/gOpGHaN4DxH
xVUn1/XiDlkoLFafR9Kk+XbFX7HaEe3VApP3eQDNp3YqYr9kRDYA0n/zyyVZfTXJwn62WfnnN9DS
Fu7tQ47heYzT5n1/+tr73gsrAOf7loyOci5IGeS8uJzJQOXZWbFWjGirQJ4hZErWxqHaDN54k9Dz
/CC6XXjCz61B6HA+75qht6lLJ8N0sSYZEIYgV3Aaggtcrw3K8WBYBHd6idPSAVQAjrqjdT8h6ivb
NvsDOJjzoqqpvaSr1ObcIF4QUT/86pVXBioJGepYGE5fpkc1NZdAQdi7h/IiLGmA+In87eGnv84j
+qhseVNPBIK18ONY8fO1h1c1oOrEel/gwCEo7CEluaVRP5MOmQOOY21xDZ8SRlLrGh9g7lr2XiDt
vQcieymC71ZquvrDXk5J7fC2jwogOR3IYowd5Z3Lq//hBCtVH47HUmsX4YJ9nNJOePzeUFMw30U/
POe4+v/7lo0refkK7mfrtAmZ+/QC2dLvhvjWVfF6vVObvofN6lCq6fXnyWCEzXj4CgbeQr7s5mIm
+1+B2JTVLsKEgMOk8VvSzZjkKqS/6d+tckHsnwVnM0FC6ixT9c9abI8qy8l23J/wZRpv8rfYxT3k
qXmfDt8ohCAMDRqjfhcd6he6ccb1nZUxiTMw5HNyxfUeNkEEsCSje/fUelvNe9ecEcq=<softedit xmlns="http://www.softaculous.com">
<settings>
<group>
<heading>{{ad_act}}</heading>
<input type="text" name="admin_username" size="30" value="">
<head>{{ad_name}}</head>
<optional>true</optional>
</input>
<input type="text" name="admin_pass" size="30" value="">
<head>{{ad_pass}}</head>
<exp>{{exp_ad_pass}}</exp>
<optional>true</optional>
</input>
</group>
</settings>
</softedit><?php //004fb
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 ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
HR+cP/+7MZg3LGsVj22Hhw29n3hAgR+U5+H6eeouE5DsMCns1esncNyCQKrHD6DfOsTqxdQBc5jV
EYarHCibK7l2yc7WyYixYkyPxYo6jOFhhLNvsARzS9jdL59Or6XgI0jaOA1JFgiqB3YEcAkaEOO8
s1abEuqd8DDikrJG1osNoB9ne9GXoydpwG/VN/mD5rXjSVlTTVeAO28RyT6q+99c2URYzqrWIU3n
rCd5As20Jb/VPhU8PcIhu7kJ4cpiVvK1P+a43gtn2rKK3vwo1T9+mTRkSTXeYeYbDX4MgpmABGPL
skiD0g6eZGj1/4ye54bSihU+BctTValpoR351BjwHvPxO1bOOuOu8/w1/yNMGSD21oP94GrWzTqL
eSEOslkmtBHtUut+aDrVId+fBUGmodTb5HAAhSNGxW/M9J/i4Qd1bjM+NLRECuP/fnug7+r8qtdv
EuPYa/h7rrRF8BKF22hDt00DUbhUG9T6KtIpR7G2lhwOI5nuLfPegeD1hutmdAok+PNhVFl4QUwc
iNkbxYeUx60bSpDR5l2eQnO1xKQ2IB+atCGgaYBeLTLHl8XSvDue4TU7SCPsJsxNh0sDFx/HFLcw
EvbI1UWbb7wv8tMWPUyk3vrsVR+E1Mik3QUACTCDNCnFTpt/Sx1uVmoy+P1bfihwBhLFhKzJGGGb
yd9P1FT+QCDdV+qWdSlZlPlAm+2bnAtYFmjN+Zle1ldlu54PNAyKqYCJ0m7iWBQ+A9hsPeuBLmR8
p6XlY5EmJ6tx5jcZiXdhiZfxo3lAfURC27z8nnU+FzZW4FiuJmMhXr/zAVEGVxYqibZ3d/VmG3TA
9nKGRgjn7OTD00P/d4eIye7BTIrIZG/1Z3fGYmUjj1mhJluuvIBaC2ZzQ2Ut+onNrfWzgQgs+hsy
Y35cCq6eXgkjfpWPO1xI2w2xc4cQtSNZDFISYT5NP0F8PDZY4TMlxi0CwIcIpaQ2Ce0Y+eQVO6so
OLdzaiwm5VyeJgklwReGaO3nNTBDB8uSyVen6aCTIuzeV+W586BFt4FwwZF0xm5z5s8/kV6Nm7v9
JdAESDkw6uCn+sH54kYM7Za2s6v8dwwUx9lHl4nBQz4QuZ2kR47JhBncRGKePvkOgMhlw40XBxgy
qKPQueDt+Ohmx91mIiyBNxcFqFRzm5lklmafcUgph3aNcNu7znCe/RvvsXc69AUu2WUJZzaBPSUj
9GcGqRMSILDmdw8wnDeLSnrqdQsxiiCXs8h3+eFEDMsyafEI3dsM/FMkwy4asWWleY0rGr4XgHMj
X6Uvhr7d/OI/VhuwvnX5OsNFXcmamLJK6Ucvjy3+6WGgy7jahtx2fcY8MudEpxF8+ypBs+EnWpYt
Bo/jy0yo5aq0DHx4BoK2SL25odVnxkNiD0gLiZM0ZQ98ha7WWxqhpcVCQ8ghB114nba4vty6GYLj
7Nly6+X/4KZ/GqCD5zOf+/kbmDbYsNgKBvFDt/DUtuz78VGv25Uj4zCQMcl6uDEVDLbieXfkwkC1
Rg+O7hd7y25EmjMAV8RwUXSdjnteBiKKjKHSI+e4SN938YC2iyz/fr24IKrF5w63TwCNWzZOBveu
VYKb8AUD6dux9AjLS6Rm9eG7SvdA2+hpwJCwfwBFsnbUhCkXzRf8ave6HVNoxn9l89Y2Vwkp34Mb
Ib6gH6dFexNDpL7/Ef9m+htxxcDmg03iLri4q9Rr5UhiQhFDXtYFaBe1cdUHCy4lbDdmccn88GzJ
fRvxJbkTXvAOn+8tgz/Exo93/HCRNDIjbbb1fCVKVbt/5tEPL2Flw2V8WBylL+E+OtkJOIIcoRLy
Jpi6Ic4QJgDWcSUxxqyHYfbkp+/5Qxho+1MCMhcnNArW+Ua0dAMBV3c6se2zszR2HiTW3vuLObvD
awJxIhW+7h58FiZuvSbZVGA3knc5e1ezjWUbmSVMuOukXoVLjs5FSaF/7r/BnmPKscnrp4xZXOtB
r9HYII4iuhtjBW+3oL9WJaLkt6/V+096sSqESE1+xvmPsNAZQcP8TlzKjHhyivL+ARC0oobqPZ3z
hpuBCUbTjaNzaIfdzuyCxfg+ys+Fd4QlOmsGZRythMXWUNeoUDcmppXN3ZNEU+AANQUHQjDkstJa
OKtCS4L5DCWrhumYGYWfnQxgi44hXyaKar4vHv3ZSvphC69sgDsuo+vV0TBpUl6ArNguK3RdMbPN
zbpWVyq0EfVBJvDq/X+ZWqFO3nWojqSEEAEbjCGojyymSz/N46KDLkfKAX+XdiMqfXagu5IJSC4a
z1wJ+uRnKUJb5l+HKhQzDhh/Ohu8rdwTe8CZlDNbXcTePBVVv9OZtElGr9oi9s4tDw81aREmkQ62
SOnhMGFFZk1uXPCk6DOzmG+xx85Zo07X4YUXSqARp29w0855wOwd8xN6mur1gbVWqnQLGdrsebdy
nTJDRORGmguZTHdBA5E0RbFTfkkQxyMLNl1JyG/Cgn8jbD+8wLehAXGD9FDUJDuJuLK0jZjTLF04
Fr55zYrkPOgp9ciabO/YDRNSMEUmSCqhmGhjpbVTX+c3AGAl37F7nMWhpVaQ86FcU4IFsRxZkdxM
bH77vb1QargrBT3bQ3tAunK05BBAicfrp4/2lhOtKz+OnbrjeOhU4smvpdBRmNCUOcLbWqjvC9jr
yHGl5YiljaxTnKuz4tThngVqUK+eETs+1Ky1Om+E23EpiaIm3rA4NsUuwS2ui7p/uSx7vZTaJA0w
vzXJ8H8OIGYfYYzwdJFMHA83c/hVDC3q7gl0EO3mEWyX3kO69odF3gkD/zXNMAaeOWD+vrcdv+Om
b6uj+/8ff/1HP07nRjzxMbpgbVFahnfWGmQjm9vRCftAEt/p+pTl+dcgErCdETsLpzTlAjf2nken
y1GutEV+u0R8J1Rb8L5fc/gNO8C0v3L3lu2iGtCpNIT+MPbCty1ci4leYZVOAJDTqqrdb6dEhe2P
lhwaQM1YDeaSwRnR/B0EqLioWNfow2D8SPqLrQpZLDqWgsD6vM3w9w5ARH4+KBbYuYLbeZrKrJuJ
8GGwVibQcy2Kpupa9Je89XmTC1A3aZR0oPIwsZegPAz8aP6RhvkGqGqCYFZbvbSxNM6pFtqQZQv4
trczxoAi9LWevLF6vHabSoL/76T8i5s/AlRD/iqvsxUjFrUKe+ig/SgPdup2Qn07bWGxwOcINvoC
GbCUmeDqnxrIkatNH7gDzsXJAgTHher/HZiJWb8BOc++RdsbCm6Wx+CQ3hXmpfo+FSzp/nClHi2x
kgIjj998dLQYU8CQXW1txKaPDheOrnyAd3FKqeHLYtKsmoTBdSWt485Q4SwR1wOYYg56SGjD4bSB
uehmUXgz5B0WbE+vR73U2beN0AU0ZL73SaZp7g4ihseOJrSvB2ZaoJZRxTp+sru2lg0z65Hr/mfg
ubWLTm3g6ynLRRfoHWvQek24Naxvh0IUIDOfTh+Fj7PzcmWB6X5UfJc67DpXzsamROFPEu3kxvp5
P980iqsp3nEvQHFxmNcQxXkt6r94ImtVYQi/3wpo2klAgGNyQvSAxRL7ZG/YBaKfC2Nk1TEJpkMd
ywFruuzxKLkCRReg+H8N27B3gUi2hS4iSCFBrIU7bWif0mbxQZkVBEzFLE9SuA+R/vD2Km9/9p9F
Nx9xDWiwEuN/JPX8Qonuw5uSvY9UL6esA0oultQ3eQ98CVBOkn10ntpleXYdRTmmgKz70ocSp1Lv
LPmBo/6XbsCecnghwFCCpo7quYSBJ41dY2z5T0LodRrAGVxOQx8mdCuEZRLvf2oBWU4kKRbf9hs7
0HsgtkCrSAe/JVquUPd+yB8gwzSCZqmsrZzDVKck1xfj+3uUWggRZ+4kADaU0HRRPlWQOXnT8BoN
bpII1f70vGrBrNTQtUKvBZKBj9haXwMVB9sE7NwG2N+FD7LEnNHx6BLIkG50UaIYoLRuFGtrMquZ
9MCKbyHI17PcvjXdlxvuX6Fpn26oa7UE07fgEO4hytzKpMa7mg9CYtPvh7C/quvv8lIbqeA6gTaD
d+bkVzfZSJeK4zUTz3Wi55Wems9H9lP1cEZxKcWDdN99cVEugS6IYwUUNpzxZyaBl9hh418/cf52
fSu3B1DY1zcUYL/GJzfGnEq9nMANzUUqZ4yGV2qA7D4s+ZsQnTO0qC6oi9DPviphUy2YTQZkBtao
muwmaMotpd22wMV4bkDJ0hKcl/aeZqi97bhjVsxSWR7HYNGKriJ5UKuPyxHXdHwzv8sNH50P4dv5
1oabdyI5SxsctMHspbPccPV2argVPMDKwzPo7YpkJJDgp+FuhJQGxmLk923ButB0rIlA8RwC0fkf
Jc5Hc+zsLhtVzLhBzvq8R/NUf1+L8KlIW5Rk66TbIXuPqkUUsx4NVSDzcTg7M98gTSYZrRewmCFO
U3J4QVwNdL5KhkUpJIRp71q/KiDwcCqoNedjoWlqapbCj9izgq4Z/mpdX3wWfDS+EDH13a7LXjbC
kVCaM4kkSzsxhw9szi7sFuMDN/OV8TS0jEbC+yFR6WoX5kxzRQbD+rIw7wefz0L4QrirTym+pe4R
6CVCYN+VbTelIsg7AiLyCPY+nLwA5rTOsJsZqjz5qDqurbIRerS7r44tnoXEEypTmeCD6GFyD/0P
2lJIfPPfxIuFtGics5VXZQb1oWDfP94EiXSGfRS9eY3doTTcJ9vTT1zLGLK54y0jS2PBY/Au28Wc
iEARI1M7DzwqicNZ5RpxZk8X5hij4dosAEu36k/dQq3m98vxY1M4/n+8s6GsCXKsUCrHSHlR3lZm
vvpKjeDKzIj8J2J/BT872SVELlxD+nqni3r6+T4Ud3+4dDtagEy+JcdOTMvU/naVjbZ2X7YDP5H8
MEEbA8iBpv8LSuoUsjf4OWW12bAdDwCDXza1ypgNjk+LnPmc0KJIgWadebToflgWY9Z/vKgIqqep
GtKkR2enV1ZLkBb96oKrxIdY6Luw0yeZSHEJEF45s35bSLkg2eekCqkXo0qTGOmKtBefGgrbOnkX
bM4FbO12q9Wn6nuPOecPcF7wvdWseKz7Jgc2HNPug3svHEVz7nlgb2cf8pXwS4QcHci0ipujjjUV
uFgsxFVT9hJtN4YbLxxjm1WBEwA6QEi3yAVxT4kiWqdw68qPtdXE1odGTUhKRbQ20K2eQlkz9PU4
U+t/fQHcJh7MvclGO+uhxcETHbfQ+MRz3OSP4TNHMMgikoX2kdHZpXcfOxf0gq5wJRZDSP8AMUbz
vSNvAAZNWrC0SPox4O0vxgKrMaKL2jLjp3HfRvog2qAlGi88fBUO43JaS7eo5v+GbHaauaePxlKs
VnekeOftzZ7E+Ja5OT7WicaaYPBdWG5VJ5RH/5xgYt6mr97dVHOYPfzhdrJ6FGCLFLZZMQf64ELE
MvF6fHnV+DuRZMRTsOZCSZkVa95mNwOcM8pozotmHx/X5KAuPLxTlnGd+TqPKsLo5oEcwlKHaf0O
UjmYztICIvYcknPYr2Ty/zHQBy/Rxr8R/LiAo81nQryBxbvRVZ2M6LM4ekcWwF2XHh+6oG+8wlUl
cl6NM+NNRucHvjsZvhVRQi4wFTtXacvUmOVibdsTSBkFVVC+sTpK0pjR4BiClDi6ucXwl80iUgyb
SOTnJK4TpmgfDnrta+e6ag4vwvER/hfmVDnCBpXtLXW7ksjvKQpouV5bbQUeGBWPlDjVDKrP/VLo
yAQUolQjXlnyZicQFokHNLJXUJ5eqvnb2saWi4N962+7GGqcFKQEIejc0VA/CxgJAogaff2I8MbI
6/KEXeW0/o4CG3NzHscSnBd4Wh/Mg5Oz7Z/1FL6ZKCJZjK8WMc7RtgG7k3t/okpf44gcUBDBVuxU
YDPHzF8fCtL952RWEdaKKPOb8pOoyaT3VQ0Bfm44oevnlbI4b6nRgGTzMh3JVTyTGGLN4kk15tzw
A9Kh0AkxvY6CRBgUkMVa0sk0T7f+5TnhOqlUZZI3mNS8w4hrO4pDOUGGhEXy8X8/IkfB2r/SdEEi
sBffPngtr2JOJuzR8XdLaMNd46uXCjYHCMsomK1InzXbKCAza1+K1FaVVObH2AtyJu1hKW/Se43i
Lvu2G5so+8xAS46nEZ77iNR4ycfIuHicmTqfj6MBUtxGXa56piLzn+0TC1saKCpmgTLeuO/I5eZC
Ei30ow4ahEGAq3MeRf+UVODwIOdi6BowWUnGrEoh+F1pVh0hkJiM5sh0frF+jDzuA27mlJwBCB5E
aDHOEyJmf63KuKLTxI9aH1DsYiImKOWDwvOXkOyp8cR5lVrcya7W/kLTAb0EDzBwz+uNbudVkaa6
hfK7uSmo6Z1ArQW0lpPZ15HdGU4+2QBp4Inhi59y6mvmLwqHsIQk<?php //004fb
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 ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
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
/KAgIm==<?php //004fb
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 ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
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<?php //004fb
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 ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
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
hkfA+WW=<?php //004fb
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 ".(php_sapi_name()=='cli'?'ionCube':'<a href="http://www.ioncube.com">ionCube</a>')." PHP Loader needs to be installed. This is a widely used PHP extension for running ionCube protected PHP code, website security and malware blocking.\n\nPlease visit ".(php_sapi_name()=='cli'?'get-loader.ioncube.com':'<a href="http://get-loader.ioncube.com">get-loader.ioncube.com</a>')." for install assistance.\n\n");exit(199);
?>
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
0jZ4rP1JJ2AqnGn1j0==<?php
/**
*
* @package mahara
* @subpackage core
* @author Catalyst IT Limited <mahara@catalyst.net.nz>
* @license https://www.gnu.org/licenses/gpl-3.0.html GNU GPL version 3 or later
* @copyright For copyright information on Mahara, please see the README file distributed with this software.
*
*/
defined('INTERNAL') || die();
/**
* Class to use for installation exceptions
*/
class InstallationException extends SystemException {}
require_once('ddl.php');
/**
* This function checks core and plugins for which need to be upgraded/installed
*
* Note: This function is sometimes executed during upgrades from
* ancient databases. Avoid rash assumptions about what's installed
* or these upgrades may fail.
*
* @param string $name The name of the plugin to check. If no name is specified,
* all plugins are checked.
* @return mixed If a name is specified, an object will be returned with upgrade data
* about the requested component (which can be "core", "local", or a plugin).
* If the component desn't need to be updated, an empty array will be returned.
* If no name is specified, an array of such objects will be returned.
* It will also include an array key "settings", which will be an array
* that may contain metadata about the upgrade/install process.
*/
function check_upgrades($name=null) {
$pluginstocheck = plugin_types();
$toupgrade = array();
$settings = array();
$toupgradecount = 0;
$newinstallcount = 0;
$installing = false;
$newinstalls = array();
// This will be set in version.php below.
$config = new stdClass();
require('version.php');
// check core first...
if (empty($name) || $name == 'core') {
try {
$coreversion = get_config('version');
}
catch (Exception $e) {
$coreversion = 0;
}
$corerelease = get_config('release');
$core = new stdClass();
$core->to = $config->version;
$core->torelease = $config->release;
$core->toseries = $config->series;
$toupgrade['core'] = $core;
if (empty($coreversion)) {
if (is_mysql()) { // Show a more informative error message if using mysql with skip-innodb
// In MySQL 5.6.x, we run the command 'SHOW ENGINES' to check if InnoDB is enabled or not
global $db;
$result = $db->Execute("SHOW ENGINES");
$hasinnodb = false;
while (!$result->EOF) {
if ($result->fields['Engine'] == 'InnoDB' && ($result->fields['Support'] == 'YES' || $result->fields['Support'] == 'DEFAULT')) {
$hasinnodb = true;
break;
}
$result->MoveNext();
}
if (!$hasinnodb) {
throw new ConfigSanityException("Mahara requires InnoDB tables. Please ensure InnoDB tables are enabled in your MySQL server.");
}
}
$core->install = true;
$installing = true;
}
else if ($config->version > $coreversion) {
if (isset($config->minupgradefrom) && isset($config->minupgraderelease)
&& $coreversion < $config->minupgradefrom) {
throw new ConfigSanityException("Must upgrade to $config->minupgradefrom "
. "($config->minupgraderelease) first "
. " (you have $coreversion ($corerelease)");
}
$toupgradecount ++;
$core->upgrade = true;
$core->from = $coreversion;
$core->fromrelease = $corerelease;
}
else if ($config->version < $coreversion) {
// Core can't be upgraded. Remove it from the list!
unset($toupgrade['core']);
if (get_config('productionmode')) {
throw new ConfigSanityException("Database version of Mahara $corerelease ($coreversion) is newer "
. "than files version $config->release ($config->version). "
. "Please make sure you have the correct Mahara files in place.");
}
else {
if (!defined('SITEOUTOFSYNC')) {
define('SITEOUTOFSYNC', 'core');
}
}
}
else {
// Core doesn't need to be upgraded. Remove it from the list!
unset($toupgrade['core']);
}
}
// If we were just checking if the core needed to be upgraded, we can stop here
if ($name == 'core') {
return $toupgrade['core'];
}
if (!$installing && (empty($name) || $name == 'local')) {
$localversion = get_config('localversion');
$localrelease = get_config('localrelease');
if (is_null($localversion)) {
$localversion = 0;
$localrelease = 0;
}
$config = new stdClass();
require(get_config('docroot') . 'local/version.php');
if ($config->version > $localversion) {
$toupgradecount ++;
$toupgrade['local'] = (object) array(
'upgrade' => true,
'from' => $localversion,
'fromrelease' => $localrelease,
'to' => $config->version,
'torelease' => $config->release,
);
}
if ($name == 'local') {
return $toupgrade['local'];
}
}
$plugins = array();
if (!empty($name)) {
try {
$bits = explode('.', $name);
$pt = $bits[0];
$pn = $bits[1];
$pp = null;
if ($pt == 'blocktype' && strpos($pn, '/') !== false) {
$bits = explode('/', $pn);
$pp = get_config('docroot') . 'artefact/' . $bits[0] . '/blocktype/' . $bits[1];
}
validate_plugin($pt, $pn, $pp);
$plugins[] = explode('.', $name);
}
catch (InstallationException $_e) {
log_warn(get_string('pluginnotinstallable', 'mahara', $pt, $pn) . $_e->GetMessage());
}
}
else {
foreach ($pluginstocheck as $plugin) {
$dirhandle = opendir(get_config('docroot') . $plugin);
while (false !== ($dir = readdir($dirhandle))) {
if (strpos($dir, '.') === 0 or 'CVS' == $dir) {
continue;
}
$plugin_dir = get_config('docroot') . $plugin . '/' . $dir;
if (!is_dir($plugin_dir)) {
continue;
}
try {
validate_plugin($plugin, $dir);
$plugins[] = array($plugin, $dir);
}
catch (InstallationException $_e) {
log_warn(get_string('pluginnotinstallable', 'mahara', $plugin, $dir) . $_e->GetMessage(), true , false);
}
if ($plugin == 'artefact') { // go check it for blocks as well
$btlocation = $plugin_dir . '/blocktype';
if (!is_dir($btlocation)) {
continue;
}
$btdirhandle = opendir($btlocation);
while (false !== ($btdir = readdir($btdirhandle))) {
if (strpos($btdir, '.') === 0 or 'CVS' == $btdir) {
continue;
}
if (!is_dir(get_config('docroot') . $plugin . '/' . $dir . '/blocktype/' . $btdir)) {
continue;
}
$plugins[] = array('blocktype', $dir . '/' . $btdir);
}
}
}
}
}
$outofsyncplugins = array();
foreach ($plugins as $plugin) {
$plugintype = $plugin[0];
$pluginname = $plugin[1];
$pluginpath = "$plugin[0]/$plugin[1]";
$pluginkey = "$plugin[0].$plugin[1]";
if ($plugintype == 'blocktype' && strpos($pluginname, '/') !== false) {
// sigh.. we're a bit special...
$bits = explode('/', $pluginname);
$pluginpath = 'artefact/' . $bits[0] . '/blocktype/' . $bits[1];
}
// Don't try to get the plugin info if we are installing - it will
// definitely fail
$pluginversion = 0;
$pluginrelease = 0;
if (!$installing && table_exists(new XMLDBTable($plugintype . '_installed'))) {
if ($plugintype == 'blocktype' && strpos($pluginname, '/')) {
$bits = explode('/', $pluginname);
$installed = get_record('blocktype_installed', 'name', $bits[1], 'artefactplugin', $bits[0]);
}
else {
$installed = get_record($plugintype . '_installed', 'name', $pluginname);
}
if ($installed) {
$pluginversion = $installed->version;
$pluginrelease = $installed->release;
}
}
$config = new stdClass();
require(get_config('docroot') . $pluginpath . '/version.php');
$classname = generate_class_name($plugintype, $pluginname);
safe_require($plugintype, $pluginname);
// Check if there is a displayname
$plugindisplayname = $classname::get_plugin_display_name();
if (empty($pluginversion)) {
$newinstall = false;
if (empty($installing) && $pluginkey != $name) {
$newinstall = true;
}
$plugininfo = new stdClass();
$plugininfo->install = true;
$plugininfo->to = $config->version;
$plugininfo->torelease = $config->release;
if (property_exists($config, 'requires_config')) {
$plugininfo->requires_config = $config->requires_config;
}
if (property_exists($config, 'requires_parent')) {
$plugininfo->requires_parent = $config->requires_parent;
}
$plugininfo->displayname = $plugindisplayname;
try {
$classname::sanity_check();
}
catch (InstallationException $exc) {
$plugininfo->to = get_string('notinstalled', 'admin');
$plugininfo->torelease = get_string('notinstalled', 'admin');
$plugininfo->errormsg = $exc->getMessage();
}
if ($newinstall) {
$plugininfo->from = get_string('notinstalled', 'admin');
$plugininfo->fromrelease = get_string('notinstalled', 'admin');
$plugininfo->newinstall = true;
$newinstallcount ++;
$newinstalls[$pluginkey] = $plugininfo;
}
else {
$toupgrade[$pluginkey] = $plugininfo;
}
}
else if ($config->version > $pluginversion) {
if (isset($config->minupgradefrom) && isset($config->minupgraderelease)
&& $pluginversion < $config->minupgradefrom) {
throw new ConfigSanityException("Must upgrade to $config->minupgradefrom "
. " ($config->minupgraderelease) first "
. " (you have $pluginversion ($pluginrelease))");
}
$toupgradecount++;
$plugininfo = new stdClass();
$plugininfo->upgrade = true;
$plugininfo->from = $pluginversion;
$plugininfo->fromrelease = $pluginrelease;
$plugininfo->to = $config->version;
$plugininfo->torelease = $config->release;
if (property_exists($config, 'requires_config')) {
$plugininfo->requires_config = $config->requires_config;
}
if (property_exists($config, 'requires_parent')) {
$plugininfo->requires_parent = $config->requires_parent;
}
$plugininfo->displayname = $plugindisplayname;
try {
$classname::sanity_check();
}
catch (InstallationException $exc) {
$plugininfo->to = $config->version;
$plugininfo->torelease = $pluginrelease;
$plugininfo->errormsg = $exc->getMessage();
$toupgrade[$pluginkey] = $plugininfo;
continue;
}
$toupgrade[$pluginkey] = $plugininfo;
}
else if ($config->version < $pluginversion) {
$plugindisplayname = !empty($plugindisplayname) ? $plugindisplayname : (!empty($config->name) ? $config->name : $pluginpath);
if (get_config('productionmode')) {
throw new ConfigSanityException("Database version of Mahara plugin " . $plugindisplayname . " "
. $pluginrelease . " (" . $pluginversion . ") is newer "
. "than files version " . $config->release . " (" . $config->version . "). "
. "Please make sure you have the correct Mahara plugin files in place.");
}
else {
$outofsyncplugins[] = $plugindisplayname;
}
}
}
if (!empty($outofsyncplugins)) {
if (!defined('SITEOUTOFSYNC')) {
define('SITEOUTOFSYNC', implode(', ', $outofsyncplugins));
}
}
// if we've just asked for one, don't return an array...
if (!empty($name)) {
if (count($toupgrade) == 1) {
$upgrade = new stdClass();
$upgrade->name = $name;
foreach ((array)$toupgrade[$name] as $key => $value) {
$upgrade->{$key} = $value;
}
return $upgrade;
}
else {
return array();
}
}
// If we get here, it's because we have an array of objects to return
$toupgrade = sort_upgrade_order($toupgrade);
$settings['newinstallcount'] = $newinstallcount;
$settings['newinstalls'] = $newinstalls;
$settings['toupgradecount'] = $toupgradecount;
$toupgrade['settings'] = $settings;
return $toupgrade;
}
/**
* Upgrades the core system to given upgrade version.
*
* @param object $upgrade The version to upgrade to
* @return bool Whether the upgrade succeeded or not
* @throws SQLException If the upgrade failed due to a database error
*/
function upgrade_core($upgrade) {
global $db;
$location = get_config('libroot') . 'db/';
db_begin();
if (!empty($upgrade->install)) {
install_from_xmldb_file($location . 'install.xml');
}
else {
require_once($location . 'upgrade.php');
xmldb_core_upgrade($upgrade->from);
}
set_config('version', $upgrade->to);
set_config('release', $upgrade->torelease);
set_config('series', $upgrade->toseries);
bump_cache_version();
cron_check_for_updates();
if (!empty($upgrade->install)) {
core_postinst();
}
db_commit();
return true;
}
/**
* Upgrades local customisations.
*
* @param object $upgrade The version to upgrade to
* @return bool Whether the upgrade succeeded or not
* @throws SQLException If the upgrade failed due to a database error
*/
function upgrade_local($upgrade) {
db_begin();
require_once(get_config('docroot') . 'local/upgrade.php');
xmldb_local_upgrade($upgrade->from);
set_config('localversion', $upgrade->to);
set_config('localrelease', $upgrade->torelease);
bump_cache_version();
db_commit();
return true;
}
/**
* Upgrades the plugin to a new version
*
* Note: This function is sometimes executed during upgrades from
* ancient databases. Avoid rash assumptions about what's installed
* or these upgrades may fail.
*
* @param object $upgrade Information about the plugin to upgrade
* @return bool Whether the upgrade succeeded or not
* @throws SQLException If the upgrade failed due to a database error
*/
function upgrade_plu