# 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 dm1fcHJpdmlsZWdlZCI7czo0OiJoZWxwIjtzOjM2MDM6IiA8c3R5bGU+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 IiBpZD0iZm5yZXY3NDgwOTU4NjlmODhiZTY0N2QzOC0xIj48YSBocmVmPSIjZm43NDgwOTU4 NjlmODhiZTY0N2QzOC0xIj4xPC9hPjwvc3VwPi4gRGVmYXVsdCBpcyB0byBhY2NlcHQgbG9n Z2VkIGluIHVzZXJzIHJlZ2FyZGxlc3Mgb2YgcHJpdmlsZWdlIGxldmVsLjwvbGk+CjwvdWw+ Cgo8aDQ+RXhhbXBsZTwvaDQ+Cgo8cD5BbGxvdyBhY2Nlc3MgdG8gdXNlciAmIzgyMTY7cnV1 ZCYjODIxNzsgYW5kIGFueW9uZSB3aXRoIHByaXZpbGVnZSBsZXZlbHMgMiwzIGFuZCA1Ojwv cD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpydm1fcHJpdmlsZWdlZCBuYW1lPSZxdW90O3J1dWQm cXVvdDsgbGV2ZWw9JnF1b3Q7MiwzLDUmcXVvdDsgLyZndDs8L2NvZGU+PC9wcmU+CgoKPGgz IGlkPSJydm1faWZfcHJpdmlsZWdlZCI+PGNvZGU+Jmx0O3R4cDpydm1faWZfcHJpdmlsZWdl ZCAvJmd0OzwvY29kZT48L2gzPgoKPHA+Q2FuIGJlIHVzZWQgdG8gZGlzcGxheSBkaWZmZXJl bnQgY29udGVudCB0byBwcml2aWxlZ2VkIHVzZXJzLjwvcD4KCjxoND5BdHRyaWJ1dGVzPC9o ND4KCjx1bD4KCTxsaT48Y29kZT5uYW1lPSZxdW90O2NvbW1hLXNlcGFyYXRlZCB2YWx1ZXMm cXVvdDs8L2NvZGU+IDxiciAvPgpMaXN0IG9mIGFsbG93ZWQgPHNwYW4gY2xhc3M9ImNhcHMi PlRYUDwvc3Bhbj4gbG9naW4gbmFtZXMuIERlZmF1bHQgaXMgdG8gYWNjZXB0IGFueSBsb2dn ZWQgaW4gdXNlci48L2xpPgoJPGxpPjxjb2RlPmxldmVsPSZxdW90O2NvbW1hLXNlcGFyYXRl ZCB2YWx1ZXMmcXVvdDs8L2NvZGU+IDxiciAvPgpMaXN0IG9mIGFsbG93ZWQgUHJpdmlsZWdl IGxldmVsczxzdXAgY2xhc3M9ImZvb3Rub3RlIj48YSBocmVmPSIjZm43NDgwOTU4NjlmODhi ZTY0N2QzOC0xIj4xPC9hPjwvc3VwPi4gRGVmYXVsdCBpcyB0byBhY2NlcHQgbG9nZ2VkIGlu IHVzZXJzIHJlZ2FyZGxlc3Mgb2YgcHJpdmlsZWdlIGxldmVsLjwvbGk+CjwvdWw+Cgo8aDQ+ RXhhbXBsZTwvaDQ+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cnZtX2lmX3ByaXZpbGVnZWQmZ3Q7 CiAgWW91IGFyZSBsb2dnZWQgaW4hCiZsdDt0eHA6ZWxzZSAvJmd0OwogIFlvdSBhcmUgTk9U IGxvZ2dlZCBpbiEKJmx0Oy90eHA6cnZtX2lmX3ByaXZpbGVnZWQmZ3Q7PC9jb2RlPjwvcHJl PgoKCjxoMyBpZD0icnZtX3ByaXZpbGVnZWRfdXNlciI+PGNvZGU+Jmx0O3R4cDpydm1fcHJp dmlsZWdlZF91c2VyIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5EaXNwbGF5IHZhcmlvdXMgcHJv cGVydGllcyBvZiB0aGUgbG9nZ2VkIGluIHVzZXIuPC9wPgoKPGg0PkF0dHJpYnV0ZXM8L2g0 PgoKPHVsPgoJPGxpPjxjb2RlPnR5cGU9JnF1b3Q7bmFtZXxlbWFpbHxwcml2aWxlZ2V8bGV2 ZWwmcXVvdDs8L2NvZGU+IDxiciAvPgogU2VsZWN0IG9uZSBvZjogbG9naW4gbmFtZSAobmFt ZSksIGVtYWlsIGFkZHJlc3MgKGVtYWlsKSwgcHJpdmlsZWdlIChwcml2aWxlZ2UpIG9yIG51 bWVyaWMgcHJpdmlsZWdlIChsZXZlbCkuIEJ5IGRlZmF1bHQgdGhlIFJlYWxOYW1lIG9mIHRo ZSBsb2dnZWQgaW4gdXNlciBpcyBzaG93bi48L2xpPgo8L3VsPgoKPGg0PkV4YW1wbGVzPC9o ND4KCjxwPlNob3cgdGhlIHJlYWwgbmFtZSBvZiB0aGUgbG9nZ2VkIGluIHVzZXI6PC9wPgoK PHByZT48Y29kZT4mbHQ7dHhwOnJ2bV9wcml2aWxlZ2VkX3VzZXIgLyZndDs8L2NvZGU+PC9w cmU+Cgo8cD5TaG93IHRoZSBlbWFpbCBhZGRyZXNzIG9mIHRoZSBsb2dnZWQgaW4gdXNlcjo8 L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cnZtX3ByaXZpbGVnZWRfdXNlciB0eXBlPSZxdW90 O2VtYWlsJnF1b3Q7Jmd0OzwvY29kZT48L3ByZT4KCjxoMz5Gb290bm90ZXM8L2gzPgoKPHAg Y2xhc3M9ImZvb3Rub3RlIiBpZD0iZm43NDgwOTU4NjlmODhiZTY0N2QzOC0xIj48c3VwPjE8 L3N1cD4gUHJpdmlsZWdlIGxldmVsczo8YnIgLz4KPG9sPgoJPGxpPlB1Ymxpc2hlcjwvbGk+ Cgk8bGk+TWFuYWdpbmcgRWRpdG9yPC9saT4KCTxsaT5Db3B5IEVkaXRvcjwvbGk+Cgk8bGk+ U3RhZmYgV3JpdGVyPC9saT4KCTxsaT5GcmVlbGFuY2VyPC9saT4KCTxsaT5EZXNpZ25lcjwv bGk+PGJyIC8+Cjwvb2w+PC9wPiI7czo0OiJjb2RlIjtzOjE2OTg6IgppZiAoY2xhc3NfZXhp c3RzKCdcVGV4dHBhdHRlcm5cVGFnXFJlZ2lzdHJ5JykpIHsKICBUeHA6OmdldCgnXFRleHRw YXR0ZXJuXFRhZ1xSZWdpc3RyeScpCiAgICAtPnJlZ2lzdGVyKCdydm1fcHJpdmlsZWdlZCcp CiAgICAtPnJlZ2lzdGVyKCdydm1faWZfcHJpdmlsZWdlZCcpCiAgICAtPnJlZ2lzdGVyKCdy dm1fcHJpdmlsZWdlZF91c2VyJyk7Cn0KCgpmdW5jdGlvbiBydm1fcHJpdmlsZWdlZCgkYXR0 cykKewogIGV4dHJhY3QobEF0dHMoYXJyYXkoCiAgICAnbmFtZScgPT4gJycsCiAgICAnbGV2 ZWwnICA9PiAnJwogICksICRhdHRzKSk7CgogIGlmICghcnZtX2lzX3ByaXZpbGVnZWQoJG5h bWUsICRsZXZlbCkpCiAgewogICAgb2JfY2xlYW4oKTsKICAgIHR4cF9kaWUoJ0ZvcmJpZGRl bicsIDQwMyk7CiAgfQp9CgoKZnVuY3Rpb24gcnZtX2lmX3ByaXZpbGVnZWQoJGF0dHMsICR0 aGluZyA9ICcnKQp7CiAgZXh0cmFjdChsQXR0cyhhcnJheSgKICAgICduYW1lJyA9PiAnJywK ICAgICdsZXZlbCcgPT4gJycKICApLCAkYXR0cykpOwoKICByZXR1cm4gcGFyc2UoRXZhbEVs c2UoJHRoaW5nLCBydm1faXNfcHJpdmlsZWdlZCgkbmFtZSwgJGxldmVsKSkpOwp9CgoKZnVu Y3Rpb24gcnZtX2lzX3ByaXZpbGVnZWQoJG5hbWUsICRsZXZlbCkKewogIHN0YXRpYyAkaWxp ID0gMDsKCiAgaWYgKCRpbGkgPT09IDApICRpbGkgPSBpc19sb2dnZWRfaW4oKTsKCiAgaWYg KCEkaWxpKSByZXR1cm4gRkFMU0U7CgogICRpc25hbWUgID0gKCRuYW1lIGFuZCBpbl9hcnJh eSgkaWxpWyduYW1lJ10sIGRvX2xpc3QoJG5hbWUpKSk7CiAgJGlzbGV2ZWwgPSAoJGxldmVs IGFuZCBpbl9hcnJheSgkaWxpWydwcml2cyddLCBkb19saXN0KCRsZXZlbCkpKTsKCiAgaWYg KCRuYW1lKQogIHsKICAgIGlmICgkbGV2ZWwpCiAgICB7CiAgICAgIHJldHVybiAoJGlzbmFt ZSBhbmQgJGlzbGV2ZWwpOwogICAgfQogICAgZWxzZQogICAgewogICAgICByZXR1cm4gJGlz bmFtZTsKICAgIH0KICB9CiAgZWxzZWlmKCRsZXZlbCkKICB7CiAgICByZXR1cm4gJGlzbGV2 ZWw7CiAgfQogIGVsc2UKICB7CiAgICByZXR1cm4gVFJVRTsKICB9Cn0KCgpmdW5jdGlvbiBy dm1fcHJpdmlsZWdlZF91c2VyKCRhdHRzKQp7CiAgZXh0cmFjdChsQXR0cyhhcnJheSgKICAg ICd0eXBlJyA9PiAnUmVhbE5hbWUnCiAgKSwgJGF0dHMpKTsKCiAgc3RhdGljICRpbGkgPSAw OwoKICBpZiAoJGlsaSA9PT0gMCkgJGlsaSA9IGlzX2xvZ2dlZF9pbigpOwoKICAkdHlwZXMg PSBhcnJheSgnUmVhbE5hbWUnLCAnbmFtZScsICdlbWFpbCcsICdwcml2aWxlZ2UnLCAnbGV2 ZWwnKTsKCiAgaWYgKCEkaWxpIG9yICFpbl9hcnJheSgkdHlwZSwgJHR5cGVzKSkgcmV0dXJu OwoKICAkbGV2ZWxzID0gYXJyYXkoJ25vbmUnLCAncHVibGlzaGVyJywgJ21hbmFnaW5nIGVk aXRvcicsICdjb3B5IGVkaXRvcicsICdzdGFmZiB3cml0ZXInLCAnZnJlZWxhbmNlcicsICdk ZXNpZ25lcicpOwoKICBzd2l0Y2ggKCR0eXBlKQogIHsKICAgIGNhc2UgJ3ByaXZpbGVnZSc6 ICRvdXQgPSAkbGV2ZWxzWyRpbGlbJ3ByaXZzJ11dOyBicmVhazsKICAgIGNhc2UgJ2xldmVs JyAgICA6ICRvdXQgPSAkaWxpWydwcml2cyddOyBicmVhazsKICAgIGRlZmF1bHQgICAgICAg ICA6ICRvdXQgPSAkaWxpWyR0eXBlXTsKICB9CgogIHJldHVybiBodG1sc3BlY2lhbGNoYXJz KCRvdXQpOwp9CiI7czozOiJtZDUiO3M6MzI6IjFiZDc0ZWY4YTliYzU3MTE5NWQ0ZmJiYWE2 MjMyYzNhIjt9