# rvm_privileged v0.5 # Use TXP admin user privileges on public side # # License: GNU GPLv2 or later # # Ruud van Melick # http://vanmelick.com/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjc6InZlcnNpb24iO3M6MzoiMC41IjtzOjY6ImF1dGhvciI7czoxNToiUnV1ZCB2 YW4gTWVsaWNrIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIxOiJodHRwOi8vdmFubWVsaWNrLmNv bS8iO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjQ0OiJVc2UgVFhQIGFkbWluIHVzZXIgcHJpdmls ZWdlcyBvbiBwdWJsaWMgc2lkZSI7czo0OiJ0eXBlIjtpOjA7czo0OiJuYW1lIjtzOjE0OiJy dm1fcHJpdmlsZWdlZCI7czo0OiJoZWxwIjtzOjM2NDk6IiA8c3R5bGU+CiAgIGxpIGNvZGUg e2ZvbnQtd2VpZ2h0OiBib2xkO30KICAgcHJlIHtwYWRkaW5nOiAwLjVlbSAxZW07IGJhY2tn cm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IGRhc2hlZCAjY2NjO30KICAgaDEsIGgyLCBoMywg aDMgY29kZSB7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OiBib2xkO30K ICAgaDEsIGgyLCBoMyB7bWFyZ2luLWxlZnQ6IC0xZW07fQogICBoMiwgaDMge21hcmdpbi10 b3A6IDJlbTt9CiAgIGgxIHtmb250LXNpemU6IDNlbTt9CiAgIGgyIHtmb250LXNpemU6IDJl bTt9CiAgIGgzIHtmb250LXNpemU6IDEuNWVtO30KICAgbGkgYSBjb2RlIHtmb250LXdlaWdo dDogbm9ybWFsO30KICAgLnJlcXVpcmVkLCAud2FybmluZyB7Y29sb3I6cmVkO30KIDwvc3R5 bGU+Cgo8aDE+UHJpdmlsZWdlZDwvaDE+Cgo8cD5SZXF1aXJlcyA8c3BhbiBjbGFzcz0iY2Fw cyI+VFhQPC9zcGFuPiA0LjAuNiBvciBoaWdoZXIuPC9wPgoKPHA+VGhpcyBwbHVnaW4gcHJv dmlkZXMgdGhlIGZvbGxvd2luZyB0YWdzOjxiciAvPgo8dWw+Cgk8bGk+PGEgaHJlZj0iI3J2 bV9wcml2aWxlZ2VkIj4gPGNvZGU+Jmx0O3R4cDpydm1fcHJpdmlsZWdlZCAvJmd0OzwvY29k ZT4gPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0iI3J2bV9pZl9wcml2aWxlZ2VkIj4gPGNvZGU+ Jmx0O3R4cDpydm1faWZfcHJpdmlsZWdlZCAvJmd0OzwvY29kZT4gPC9hPjwvbGk+Cgk8bGk+ PGEgaHJlZj0iI3J2bV9wcml2aWxlZ2VkX3VzZXIiPiA8Y29kZT4mbHQ7dHhwOnJ2bV9wcml2 aWxlZ2VkX3VzZXIgLyZndDs8L2NvZGU+IDwvYT48L2xpPjxiciAvPgo8L3VsPjwvcD4KCgo8 aDMgaWQ9InJ2bV9wcml2aWxlZ2VkIj48Y29kZT4mbHQ7dHhwOnJ2bV9wcml2aWxlZ2VkIC8m Z3Q7PC9jb2RlPjwvaDM+Cgo8cD5XaGVuIGEgbm9uLXByaXZpbGVnZWQgdXNlciB2aXNpdHMg YSBwYWdlIGNvbnRhaW5pbmcgdGhpcyB0YWcsIGEgPHNwYW4gY2xhc3M9ImNhcHMiPkhUVFA8 L3NwYW4+IDQwMyBGb3JiaWRkZW4gZXJyb3IgaXMgc2hvd24uPC9wPgoKPHA+VGhlIGVycm9y IHBhZ2UgY2FuIGJlIGN1c3RvbWl6ZWQgaW4gdHdvIHdheXM6PGJyIC8+CjxvbD4KCTxsaT5t b2RpZnkgdGhlIDxjb2RlPmVycm9yX2RlZmF1bHQ8L2NvZGU+IHRlbXBsYXRlIHBhZ2UuPC9s aT4KCTxsaT5jcmVhdGUgYSBuZXcgdGVtcGxhdGUgcGFnZSBjYWxsZWQgPGNvZGU+ZXJyb3Jf NDAzPC9jb2RlPiAocmVjb21tZW5kZWQhKTwvbGk+PGJyIC8+Cjwvb2w+PC9wPgoKPGg0PkF0 dHJpYnV0ZXM8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPm5hbWU9JnF1b3Q7Y29tbWEtc2VwYXJh dGVkIHZhbHVlcyZxdW90OzwvY29kZT4gPGJyIC8+Ckxpc3Qgb2YgYWxsb3dlZCA8c3BhbiBj bGFzcz0iY2FwcyI+VFhQPC9zcGFuPiBsb2dpbiBuYW1lcy4gRGVmYXVsdCBpcyB0byBhY2Nl cHQgYW55IGxvZ2dlZCBpbiB1c2VyLjwvbGk+Cgk8bGk+PGNvZGU+bGV2ZWw9JnF1b3Q7Y29t bWEtc2VwYXJhdGVkIHZhbHVlcyZxdW90OzwvY29kZT4gPGJyIC8+Ckxpc3Qgb2YgYWxsb3dl ZCBQcml2aWxlZ2UgbGV2ZWxzPHN1cCBjbGFzcz0iZm9vdG5vdGUiIGlkPSJmbnJldjczOTgz MzQzNDYzZDZiYjdkNDk1MDUtMSI+PGEgaHJlZj0iI2ZuNzM5ODMzNDM0NjNkNmJiN2Q0OTUw NS0xIj4xPC9hPjwvc3VwPi4gRGVmYXVsdCBpcyB0byBhY2NlcHQgbG9nZ2VkIGluIHVzZXJz IHJlZ2FyZGxlc3Mgb2YgcHJpdmlsZWdlIGxldmVsLjwvbGk+CjwvdWw+Cgo8aDQ+RXhhbXBs ZTwvaDQ+Cgo8cD5BbGxvdyBhY2Nlc3MgdG8gdXNlciAmIzgyMTY7cnV1ZCYjODIxNzsgYW5k IGFueW9uZSB3aXRoIHByaXZpbGVnZSBsZXZlbHMgMiwzIGFuZCA1OjwvcD4KCjxwcmU+PGNv ZGU+Jmx0O3R4cDpydm1fcHJpdmlsZWdlZCBuYW1lPSZxdW90O3J1dWQmcXVvdDsgbGV2ZWw9 JnF1b3Q7MiwzLDUmcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+CgoKPGgzIGlkPSJydm1faWZf cHJpdmlsZWdlZCI+PGNvZGU+Jmx0O3R4cDpydm1faWZfcHJpdmlsZWdlZCAvJmd0OzwvY29k ZT48L2gzPgoKPHA+Q2FuIGJlIHVzZWQgdG8gZGlzcGxheSBkaWZmZXJlbnQgY29udGVudCB0 byBwcml2aWxlZ2VkIHVzZXJzLjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4KCTxs aT48Y29kZT5uYW1lPSZxdW90O2NvbW1hLXNlcGFyYXRlZCB2YWx1ZXMmcXVvdDs8L2NvZGU+ IDxiciAvPgpMaXN0IG9mIGFsbG93ZWQgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4g bG9naW4gbmFtZXMuIERlZmF1bHQgaXMgdG8gYWNjZXB0IGFueSBsb2dnZWQgaW4gdXNlci48 L2xpPgoJPGxpPjxjb2RlPmxldmVsPSZxdW90O2NvbW1hLXNlcGFyYXRlZCB2YWx1ZXMmcXVv dDs8L2NvZGU+IDxiciAvPgpMaXN0IG9mIGFsbG93ZWQgUHJpdmlsZWdlIGxldmVsczxzdXAg Y2xhc3M9ImZvb3Rub3RlIj48YSBocmVmPSIjZm43Mzk4MzM0MzQ2M2Q2YmI3ZDQ5NTA1LTEi PjE8L2E+PC9zdXA+LiBEZWZhdWx0IGlzIHRvIGFjY2VwdCBsb2dnZWQgaW4gdXNlcnMgcmVn YXJkbGVzcyBvZiBwcml2aWxlZ2UgbGV2ZWwuPC9saT4KPC91bD4KCjxoND5FeGFtcGxlPC9o ND4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpydm1faWZfcHJpdmlsZWdlZCZndDsKICBZb3UgYXJl IGxvZ2dlZCBpbiEKJmx0O3R4cDplbHNlIC8mZ3Q7CiAgWW91IGFyZSBOT1QgbG9nZ2VkIGlu IQombHQ7L3R4cDpydm1faWZfcHJpdmlsZWdlZCZndDs8L2NvZGU+PC9wcmU+CgoKPGgzIGlk PSJydm1fcHJpdmlsZWdlZF91c2VyIj48Y29kZT4mbHQ7dHhwOnJ2bV9wcml2aWxlZ2VkX3Vz ZXIgLyZndDs8L2NvZGU+PC9oMz4KCjxwPkRpc3BsYXkgdmFyaW91cyBwcm9wZXJ0aWVzIG9m IHRoZSBsb2dnZWQgaW4gdXNlci48L3A+Cgo8aDQ+QXR0cmlidXRlczwvaDQ+Cgo8dWw+Cgk8 bGk+PGNvZGU+dHlwZT0mcXVvdDtuYW1lfGVtYWlsfHByaXZpbGVnZXxsZXZlbCZxdW90Ozwv Y29kZT4gPGJyIC8+CiBTZWxlY3Qgb25lIG9mOiBsb2dpbiBuYW1lIChuYW1lKSwgZW1haWwg YWRkcmVzcyAoZW1haWwpLCBwcml2aWxlZ2UgKHByaXZpbGVnZSkgb3IgbnVtZXJpYyBwcml2 aWxlZ2UgKGxldmVsKS4gQnkgZGVmYXVsdCB0aGUgUmVhbE5hbWUgb2YgdGhlIGxvZ2dlZCBp biB1c2VyIGlzIHNob3duLjwvbGk+CjwvdWw+Cgo8aDQ+RXhhbXBsZXM8L2g0PgoKPHA+U2hv dyB0aGUgcmVhbCBuYW1lIG9mIHRoZSBsb2dnZWQgaW4gdXNlcjo8L3A+Cgo8cHJlPjxjb2Rl PiZsdDt0eHA6cnZtX3ByaXZpbGVnZWRfdXNlciAvJmd0OzwvY29kZT48L3ByZT4KCjxwPlNo b3cgdGhlIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIGxvZ2dlZCBpbiB1c2VyOjwvcD4KCjxwcmU+ PGNvZGU+Jmx0O3R4cDpydm1fcHJpdmlsZWdlZF91c2VyIHR5cGU9JnF1b3Q7ZW1haWwmcXVv dDsmZ3Q7PC9jb2RlPjwvcHJlPgoKPGgzPkZvb3Rub3RlczwvaDM+Cgo8cCBjbGFzcz0iZm9v dG5vdGUiIGlkPSJmbjczOTgzMzQzNDYzZDZiYjdkNDk1MDUtMSI+PHN1cD4xPC9zdXA+IFBy aXZpbGVnZSBsZXZlbHM6PGJyIC8+CjxvbD4KCTxsaT5QdWJsaXNoZXI8L2xpPgoJPGxpPk1h bmFnaW5nIEVkaXRvcjwvbGk+Cgk8bGk+Q29weSBFZGl0b3I8L2xpPgoJPGxpPlN0YWZmIFdy aXRlcjwvbGk+Cgk8bGk+RnJlZWxhbmNlcjwvbGk+Cgk8bGk+RGVzaWduZXI8L2xpPjxiciAv Pgo8L29sPjwvcD4iO3M6NDoiY29kZSI7czoxNjk4OiIKaWYgKGNsYXNzX2V4aXN0cygnXFRl eHRwYXR0ZXJuXFRhZ1xSZWdpc3RyeScpKSB7CiAgVHhwOjpnZXQoJ1xUZXh0cGF0dGVyblxU YWdcUmVnaXN0cnknKQogICAgLT5yZWdpc3RlcigncnZtX3ByaXZpbGVnZWQnKQogICAgLT5y ZWdpc3RlcigncnZtX2lmX3ByaXZpbGVnZWQnKQogICAgLT5yZWdpc3RlcigncnZtX3ByaXZp bGVnZWRfdXNlcicpOwp9CgoKZnVuY3Rpb24gcnZtX3ByaXZpbGVnZWQoJGF0dHMpCnsKICBl eHRyYWN0KGxBdHRzKGFycmF5KAogICAgJ25hbWUnID0+ICcnLAogICAgJ2xldmVsJyAgPT4g JycKICApLCAkYXR0cykpOwoKICBpZiAoIXJ2bV9pc19wcml2aWxlZ2VkKCRuYW1lLCAkbGV2 ZWwpKQogIHsKICAgIG9iX2NsZWFuKCk7CiAgICB0eHBfZGllKCdGb3JiaWRkZW4nLCA0MDMp OwogIH0KfQoKCmZ1bmN0aW9uIHJ2bV9pZl9wcml2aWxlZ2VkKCRhdHRzLCAkdGhpbmcgPSAn JykKewogIGV4dHJhY3QobEF0dHMoYXJyYXkoCiAgICAnbmFtZScgPT4gJycsCiAgICAnbGV2 ZWwnID0+ICcnCiAgKSwgJGF0dHMpKTsKCiAgcmV0dXJuIHBhcnNlKEV2YWxFbHNlKCR0aGlu ZywgcnZtX2lzX3ByaXZpbGVnZWQoJG5hbWUsICRsZXZlbCkpKTsKfQoKCmZ1bmN0aW9uIHJ2 bV9pc19wcml2aWxlZ2VkKCRuYW1lLCAkbGV2ZWwpCnsKICBzdGF0aWMgJGlsaSA9IDA7Cgog IGlmICgkaWxpID09PSAwKSAkaWxpID0gaXNfbG9nZ2VkX2luKCk7CgogIGlmICghJGlsaSkg cmV0dXJuIEZBTFNFOwoKICAkaXNuYW1lICA9ICgkbmFtZSBhbmQgaW5fYXJyYXkoJGlsaVsn bmFtZSddLCBkb19saXN0KCRuYW1lKSkpOwogICRpc2xldmVsID0gKCRsZXZlbCBhbmQgaW5f YXJyYXkoJGlsaVsncHJpdnMnXSwgZG9fbGlzdCgkbGV2ZWwpKSk7CgogIGlmICgkbmFtZSkK ICB7CiAgICBpZiAoJGxldmVsKQogICAgewogICAgICByZXR1cm4gKCRpc25hbWUgYW5kICRp c2xldmVsKTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgcmV0dXJuICRpc25hbWU7CiAg ICB9CiAgfQogIGVsc2VpZigkbGV2ZWwpCiAgewogICAgcmV0dXJuICRpc2xldmVsOwogIH0K ICBlbHNlCiAgewogICAgcmV0dXJuIFRSVUU7CiAgfQp9CgoKZnVuY3Rpb24gcnZtX3ByaXZp bGVnZWRfdXNlcigkYXR0cykKewogIGV4dHJhY3QobEF0dHMoYXJyYXkoCiAgICAndHlwZScg PT4gJ1JlYWxOYW1lJwogICksICRhdHRzKSk7CgogIHN0YXRpYyAkaWxpID0gMDsKCiAgaWYg KCRpbGkgPT09IDApICRpbGkgPSBpc19sb2dnZWRfaW4oKTsKCiAgJHR5cGVzID0gYXJyYXko J1JlYWxOYW1lJywgJ25hbWUnLCAnZW1haWwnLCAncHJpdmlsZWdlJywgJ2xldmVsJyk7Cgog IGlmICghJGlsaSBvciAhaW5fYXJyYXkoJHR5cGUsICR0eXBlcykpIHJldHVybjsKCiAgJGxl dmVscyA9IGFycmF5KCdub25lJywgJ3B1Ymxpc2hlcicsICdtYW5hZ2luZyBlZGl0b3InLCAn Y29weSBlZGl0b3InLCAnc3RhZmYgd3JpdGVyJywgJ2ZyZWVsYW5jZXInLCAnZGVzaWduZXIn KTsKCiAgc3dpdGNoICgkdHlwZSkKICB7CiAgICBjYXNlICdwcml2aWxlZ2UnOiAkb3V0ID0g JGxldmVsc1skaWxpWydwcml2cyddXTsgYnJlYWs7CiAgICBjYXNlICdsZXZlbCcgICAgOiAk b3V0ID0gJGlsaVsncHJpdnMnXTsgYnJlYWs7CiAgICBkZWZhdWx0ICAgICAgICAgOiAkb3V0 ID0gJGlsaVskdHlwZV07CiAgfQoKICByZXR1cm4gaHRtbHNwZWNpYWxjaGFycygkb3V0KTsK fQoiO3M6MzoibWQ1IjtzOjMyOiIxYmQ3NGVmOGE5YmM1NzExOTVkNGZiYmFhNjIzMmMzYSI7 fQ==