# 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 dm1fcHJpdmlsZWdlZCI7czo0OiJoZWxwIjtzOjM2MTU6IiA8c3R5bGU+CiAgIGxpIGNvZGUg e2ZvbnQtd2VpZ2h0OiBib2xkO30KICAgcHJlIHtwYWRkaW5nOiAwLjVlbSAxZW07IGJhY2tn cm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IGRhc2hlZCAjY2NjO30KICAgaDEsIGgyLCBoMywg aDMgY29kZSB7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OiBib2xkO30K ICAgaDEsIGgyLCBoMyB7bWFyZ2luLWxlZnQ6IC0xZW07fQogICBoMiwgaDMge21hcmdpbi10 b3A6IDJlbTt9CiAgIGgxIHtmb250LXNpemU6IDNlbTt9CiAgIGgyIHtmb250LXNpemU6IDJl bTt9CiAgIGgzIHtmb250LXNpemU6IDEuNWVtO30KICAgbGkgYSBjb2RlIHtmb250LXdlaWdo dDogbm9ybWFsO30KICAgLnJlcXVpcmVkLCAud2FybmluZyB7Y29sb3I6cmVkO30KIDwvc3R5 bGU+Cgo8aDE+UHJpdmlsZWdlZDwvaDE+Cgo8cD5SZXF1aXJlcyA8c3BhbiBjbGFzcz0iY2Fw cyI+VFhQPC9zcGFuPiA0LjAuNiBvciBoaWdoZXIuPC9wPgoKVGhpcyBwbHVnaW4gcHJvdmlk ZXMgdGhlIGZvbGxvd2luZyB0YWdzOgo8dWw+Cgk8bGk+PGEgaHJlZj0iI3J2bV9wcml2aWxl Z2VkIj4gPGNvZGU+Jmx0O3R4cDpydm1fcHJpdmlsZWdlZCAvJmd0OzwvY29kZT4gPC9hPjwv bGk+Cgk8bGk+PGEgaHJlZj0iI3J2bV9pZl9wcml2aWxlZ2VkIj4gPGNvZGU+Jmx0O3R4cDpy dm1faWZfcHJpdmlsZWdlZCAvJmd0OzwvY29kZT4gPC9hPjwvbGk+Cgk8bGk+PGEgaHJlZj0i I3J2bV9wcml2aWxlZ2VkX3VzZXIiPiA8Y29kZT4mbHQ7dHhwOnJ2bV9wcml2aWxlZ2VkX3Vz ZXIgLyZndDs8L2NvZGU+IDwvYT48L2xpPgo8L3VsPgoKCjxoMyBpZD0icnZtX3ByaXZpbGVn ZWQiPjxjb2RlPiZsdDt0eHA6cnZtX3ByaXZpbGVnZWQgLyZndDs8L2NvZGU+PC9oMz4KCjxw PldoZW4gYSBub24tcHJpdmlsZWdlZCB1c2VyIHZpc2l0cyBhIHBhZ2UgY29udGFpbmluZyB0 aGlzIHRhZywgYSA8c3BhbiBjbGFzcz0iY2FwcyI+SFRUUDwvc3Bhbj4gNDAzIEZvcmJpZGRl biBlcnJvciBpcyBzaG93bi48L3A+CgpUaGUgZXJyb3IgcGFnZSBjYW4gYmUgY3VzdG9taXpl ZCBpbiB0d28gd2F5czoKPG9sPgoJPGxpPm1vZGlmeSB0aGUgPGNvZGU+ZXJyb3JfZGVmYXVs dDwvY29kZT4gdGVtcGxhdGUgcGFnZS48L2xpPgoJPGxpPmNyZWF0ZSBhIG5ldyB0ZW1wbGF0 ZSBwYWdlIGNhbGxlZCA8Y29kZT5lcnJvcl80MDM8L2NvZGU+IChyZWNvbW1lbmRlZCEpPC9s aT4KPC9vbD4KCjxoND5BdHRyaWJ1dGVzPC9oND4KCjx1bD4KCTxsaT48Y29kZT5uYW1lPSZx dW90O2NvbW1hLXNlcGFyYXRlZCB2YWx1ZXMmcXVvdDs8L2NvZGU+IDxiciAvPgpMaXN0IG9m IGFsbG93ZWQgPHNwYW4gY2xhc3M9ImNhcHMiPlRYUDwvc3Bhbj4gbG9naW4gbmFtZXMuIERl ZmF1bHQgaXMgdG8gYWNjZXB0IGFueSBsb2dnZWQgaW4gdXNlci48L2xpPgoJPGxpPjxjb2Rl PmxldmVsPSZxdW90O2NvbW1hLXNlcGFyYXRlZCB2YWx1ZXMmcXVvdDs8L2NvZGU+IDxiciAv PgpMaXN0IG9mIGFsbG93ZWQgUHJpdmlsZWdlIGxldmVsczxzdXAgY2xhc3M9ImZvb3Rub3Rl IiBpZD0iZm5yZXYxOTg4Njg2ODI2NjYwNjliOWNlMTA5ZC0xIj48YSBocmVmPSIjZm4xOTg4 Njg2ODI2NjYwNjliOWNlMTA5ZC0xIj4xPC9hPjwvc3VwPi4gRGVmYXVsdCBpcyB0byBhY2Nl cHQgbG9nZ2VkIGluIHVzZXJzIHJlZ2FyZGxlc3Mgb2YgcHJpdmlsZWdlIGxldmVsLjwvbGk+ CjwvdWw+Cgo8aDQ+RXhhbXBsZTwvaDQ+Cgo8cD5BbGxvdyBhY2Nlc3MgdG8gdXNlciAmIzgy MTY7cnV1ZCYjODIxNzsgYW5kIGFueW9uZSB3aXRoIHByaXZpbGVnZSBsZXZlbHMgMiwzIGFu ZCA1OjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpydm1fcHJpdmlsZWdlZCBuYW1lPSZxdW90 O3J1dWQmcXVvdDsgbGV2ZWw9JnF1b3Q7MiwzLDUmcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+ CgoKPGgzIGlkPSJydm1faWZfcHJpdmlsZWdlZCI+PGNvZGU+Jmx0O3R4cDpydm1faWZfcHJp dmlsZWdlZCAvJmd0OzwvY29kZT48L2gzPgoKPHA+Q2FuIGJlIHVzZWQgdG8gZGlzcGxheSBk aWZmZXJlbnQgY29udGVudCB0byBwcml2aWxlZ2VkIHVzZXJzLjwvcD4KCjxoND5BdHRyaWJ1 dGVzPC9oND4KCjx1bD4KCTxsaT48Y29kZT5uYW1lPSZxdW90O2NvbW1hLXNlcGFyYXRlZCB2 YWx1ZXMmcXVvdDs8L2NvZGU+IDxiciAvPgpMaXN0IG9mIGFsbG93ZWQgPHNwYW4gY2xhc3M9 ImNhcHMiPlRYUDwvc3Bhbj4gbG9naW4gbmFtZXMuIERlZmF1bHQgaXMgdG8gYWNjZXB0IGFu eSBsb2dnZWQgaW4gdXNlci48L2xpPgoJPGxpPjxjb2RlPmxldmVsPSZxdW90O2NvbW1hLXNl cGFyYXRlZCB2YWx1ZXMmcXVvdDs8L2NvZGU+IDxiciAvPgpMaXN0IG9mIGFsbG93ZWQgUHJp dmlsZWdlIGxldmVsczxzdXAgY2xhc3M9ImZvb3Rub3RlIj48YSBocmVmPSIjZm4xOTg4Njg2 ODI2NjYwNjliOWNlMTA5ZC0xIj4xPC9hPjwvc3VwPi4gRGVmYXVsdCBpcyB0byBhY2NlcHQg bG9nZ2VkIGluIHVzZXJzIHJlZ2FyZGxlc3Mgb2YgcHJpdmlsZWdlIGxldmVsLjwvbGk+Cjwv dWw+Cgo8aDQ+RXhhbXBsZTwvaDQ+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cnZtX2lmX3ByaXZp bGVnZWQmZ3Q7CiAgWW91IGFyZSBsb2dnZWQgaW4hCiZsdDt0eHA6ZWxzZSAvJmd0OwogIFlv dSBhcmUgTk9UIGxvZ2dlZCBpbiEKJmx0Oy90eHA6cnZtX2lmX3ByaXZpbGVnZWQmZ3Q7PC9j b2RlPjwvcHJlPgoKCjxoMyBpZD0icnZtX3ByaXZpbGVnZWRfdXNlciI+PGNvZGU+Jmx0O3R4 cDpydm1fcHJpdmlsZWdlZF91c2VyIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5EaXNwbGF5IHZh cmlvdXMgcHJvcGVydGllcyBvZiB0aGUgbG9nZ2VkIGluIHVzZXIuPC9wPgoKPGg0PkF0dHJp YnV0ZXM8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPnR5cGU9JnF1b3Q7bmFtZXxlbWFpbHxwcml2 aWxlZ2V8bGV2ZWwmcXVvdDs8L2NvZGU+IDxiciAvPgogU2VsZWN0IG9uZSBvZjogbG9naW4g bmFtZSAobmFtZSksIGVtYWlsIGFkZHJlc3MgKGVtYWlsKSwgcHJpdmlsZWdlIChwcml2aWxl Z2UpIG9yIG51bWVyaWMgcHJpdmlsZWdlIChsZXZlbCkuIEJ5IGRlZmF1bHQgdGhlIFJlYWxO YW1lIG9mIHRoZSBsb2dnZWQgaW4gdXNlciBpcyBzaG93bi48L2xpPgo8L3VsPgoKPGg0PkV4 YW1wbGVzPC9oND4KCjxwPlNob3cgdGhlIHJlYWwgbmFtZSBvZiB0aGUgbG9nZ2VkIGluIHVz ZXI6PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnJ2bV9wcml2aWxlZ2VkX3VzZXIgLyZndDs8 L2NvZGU+PC9wcmU+Cgo8cD5TaG93IHRoZSBlbWFpbCBhZGRyZXNzIG9mIHRoZSBsb2dnZWQg aW4gdXNlcjo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cnZtX3ByaXZpbGVnZWRfdXNlciB0 eXBlPSZxdW90O2VtYWlsJnF1b3Q7Jmd0OzwvY29kZT48L3ByZT4KCjxoMz5Gb290bm90ZXM8 L2gzPgoKPHAgY2xhc3M9ImZvb3Rub3RlIiBpZD0iZm4xOTg4Njg2ODI2NjYwNjliOWNlMTA5 ZC0xIj48c3VwPjE8L3N1cD4gUHJpdmlsZWdlIGxldmVsczo8YnIgLz4KPG9sPgoJPGxpPlB1 Ymxpc2hlcjwvbGk+Cgk8bGk+TWFuYWdpbmcgRWRpdG9yPC9saT4KCTxsaT5Db3B5IEVkaXRv cjwvbGk+Cgk8bGk+U3RhZmYgV3JpdGVyPC9saT4KCTxsaT5GcmVlbGFuY2VyPC9saT4KCTxs aT5EZXNpZ25lcjwvbGk+PGJyIC8+Cjwvb2w+PC9wPiI7czo0OiJjb2RlIjtzOjE2OTg6Igpp ZiAoY2xhc3NfZXhpc3RzKCdcVGV4dHBhdHRlcm5cVGFnXFJlZ2lzdHJ5JykpIHsKICBUeHA6 OmdldCgnXFRleHRwYXR0ZXJuXFRhZ1xSZWdpc3RyeScpCiAgICAtPnJlZ2lzdGVyKCdydm1f cHJpdmlsZWdlZCcpCiAgICAtPnJlZ2lzdGVyKCdydm1faWZfcHJpdmlsZWdlZCcpCiAgICAt PnJlZ2lzdGVyKCdydm1fcHJpdmlsZWdlZF91c2VyJyk7Cn0KCgpmdW5jdGlvbiBydm1fcHJp dmlsZWdlZCgkYXR0cykKewogIGV4dHJhY3QobEF0dHMoYXJyYXkoCiAgICAnbmFtZScgPT4g JycsCiAgICAnbGV2ZWwnICA9PiAnJwogICksICRhdHRzKSk7CgogIGlmICghcnZtX2lzX3By aXZpbGVnZWQoJG5hbWUsICRsZXZlbCkpCiAgewogICAgb2JfY2xlYW4oKTsKICAgIHR4cF9k aWUoJ0ZvcmJpZGRlbicsIDQwMyk7CiAgfQp9CgoKZnVuY3Rpb24gcnZtX2lmX3ByaXZpbGVn ZWQoJGF0dHMsICR0aGluZyA9ICcnKQp7CiAgZXh0cmFjdChsQXR0cyhhcnJheSgKICAgICdu YW1lJyA9PiAnJywKICAgICdsZXZlbCcgPT4gJycKICApLCAkYXR0cykpOwoKICByZXR1cm4g cGFyc2UoRXZhbEVsc2UoJHRoaW5nLCBydm1faXNfcHJpdmlsZWdlZCgkbmFtZSwgJGxldmVs KSkpOwp9CgoKZnVuY3Rpb24gcnZtX2lzX3ByaXZpbGVnZWQoJG5hbWUsICRsZXZlbCkKewog IHN0YXRpYyAkaWxpID0gMDsKCiAgaWYgKCRpbGkgPT09IDApICRpbGkgPSBpc19sb2dnZWRf aW4oKTsKCiAgaWYgKCEkaWxpKSByZXR1cm4gRkFMU0U7CgogICRpc25hbWUgID0gKCRuYW1l IGFuZCBpbl9hcnJheSgkaWxpWyduYW1lJ10sIGRvX2xpc3QoJG5hbWUpKSk7CiAgJGlzbGV2 ZWwgPSAoJGxldmVsIGFuZCBpbl9hcnJheSgkaWxpWydwcml2cyddLCBkb19saXN0KCRsZXZl bCkpKTsKCiAgaWYgKCRuYW1lKQogIHsKICAgIGlmICgkbGV2ZWwpCiAgICB7CiAgICAgIHJl dHVybiAoJGlzbmFtZSBhbmQgJGlzbGV2ZWwpOwogICAgfQogICAgZWxzZQogICAgewogICAg ICByZXR1cm4gJGlzbmFtZTsKICAgIH0KICB9CiAgZWxzZWlmKCRsZXZlbCkKICB7CiAgICBy ZXR1cm4gJGlzbGV2ZWw7CiAgfQogIGVsc2UKICB7CiAgICByZXR1cm4gVFJVRTsKICB9Cn0K CgpmdW5jdGlvbiBydm1fcHJpdmlsZWdlZF91c2VyKCRhdHRzKQp7CiAgZXh0cmFjdChsQXR0 cyhhcnJheSgKICAgICd0eXBlJyA9PiAnUmVhbE5hbWUnCiAgKSwgJGF0dHMpKTsKCiAgc3Rh dGljICRpbGkgPSAwOwoKICBpZiAoJGlsaSA9PT0gMCkgJGlsaSA9IGlzX2xvZ2dlZF9pbigp OwoKICAkdHlwZXMgPSBhcnJheSgnUmVhbE5hbWUnLCAnbmFtZScsICdlbWFpbCcsICdwcml2 aWxlZ2UnLCAnbGV2ZWwnKTsKCiAgaWYgKCEkaWxpIG9yICFpbl9hcnJheSgkdHlwZSwgJHR5 cGVzKSkgcmV0dXJuOwoKICAkbGV2ZWxzID0gYXJyYXkoJ25vbmUnLCAncHVibGlzaGVyJywg J21hbmFnaW5nIGVkaXRvcicsICdjb3B5IGVkaXRvcicsICdzdGFmZiB3cml0ZXInLCAnZnJl ZWxhbmNlcicsICdkZXNpZ25lcicpOwoKICBzd2l0Y2ggKCR0eXBlKQogIHsKICAgIGNhc2Ug J3ByaXZpbGVnZSc6ICRvdXQgPSAkbGV2ZWxzWyRpbGlbJ3ByaXZzJ11dOyBicmVhazsKICAg IGNhc2UgJ2xldmVsJyAgICA6ICRvdXQgPSAkaWxpWydwcml2cyddOyBicmVhazsKICAgIGRl ZmF1bHQgICAgICAgICA6ICRvdXQgPSAkaWxpWyR0eXBlXTsKICB9CgogIHJldHVybiBodG1s c3BlY2lhbGNoYXJzKCRvdXQpOwp9CiI7czozOiJtZDUiO3M6MzI6IjFiZDc0ZWY4YTliYzU3 MTE5NWQ0ZmJiYWE2MjMyYzNhIjt9