# 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 dm1fcHJpdmlsZWdlZCI7czo0OiJoZWxwIjtzOjM2MTE6IiA8c3R5bGU+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 IiBpZD0iZm5yZXY1MjY5MTYyNjg2NjNlZmZkMWVhMmE5LTEiPjxhIGhyZWY9IiNmbjUyNjkx NjI2ODY2M2VmZmQxZWEyYTktMSI+MTwvYT48L3N1cD4uIERlZmF1bHQgaXMgdG8gYWNjZXB0 IGxvZ2dlZCBpbiB1c2VycyByZWdhcmRsZXNzIG9mIHByaXZpbGVnZSBsZXZlbC48L2xpPgo8 L3VsPgoKPGg0PkV4YW1wbGU8L2g0PgoKPHA+QWxsb3cgYWNjZXNzIHRvIHVzZXIgJiM4MjE2 O3J1dWQmIzgyMTc7IGFuZCBhbnlvbmUgd2l0aCBwcml2aWxlZ2UgbGV2ZWxzIDIsMyBhbmQg NTo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cnZtX3ByaXZpbGVnZWQgbmFtZT0mcXVvdDty dXVkJnF1b3Q7IGxldmVsPSZxdW90OzIsMyw1JnF1b3Q7IC8mZ3Q7PC9jb2RlPjwvcHJlPgoK CjxoMyBpZD0icnZtX2lmX3ByaXZpbGVnZWQiPjxjb2RlPiZsdDt0eHA6cnZtX2lmX3ByaXZp bGVnZWQgLyZndDs8L2NvZGU+PC9oMz4KCjxwPkNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgZGlm ZmVyZW50IGNvbnRlbnQgdG8gcHJpdmlsZWdlZCB1c2Vycy48L3A+Cgo8aDQ+QXR0cmlidXRl czwvaDQ+Cgo8dWw+Cgk8bGk+PGNvZGU+bmFtZT0mcXVvdDtjb21tYS1zZXBhcmF0ZWQgdmFs dWVzJnF1b3Q7PC9jb2RlPiA8YnIgLz4KTGlzdCBvZiBhbGxvd2VkIDxzcGFuIGNsYXNzPSJj YXBzIj5UWFA8L3NwYW4+IGxvZ2luIG5hbWVzLiBEZWZhdWx0IGlzIHRvIGFjY2VwdCBhbnkg bG9nZ2VkIGluIHVzZXIuPC9saT4KCTxsaT48Y29kZT5sZXZlbD0mcXVvdDtjb21tYS1zZXBh cmF0ZWQgdmFsdWVzJnF1b3Q7PC9jb2RlPiA8YnIgLz4KTGlzdCBvZiBhbGxvd2VkIFByaXZp bGVnZSBsZXZlbHM8c3VwIGNsYXNzPSJmb290bm90ZSI+PGEgaHJlZj0iI2ZuNTI2OTE2MjY4 NjYzZWZmZDFlYTJhOS0xIj4xPC9hPjwvc3VwPi4gRGVmYXVsdCBpcyB0byBhY2NlcHQgbG9n Z2VkIGluIHVzZXJzIHJlZ2FyZGxlc3Mgb2YgcHJpdmlsZWdlIGxldmVsLjwvbGk+CjwvdWw+ Cgo8aDQ+RXhhbXBsZTwvaDQ+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cnZtX2lmX3ByaXZpbGVn ZWQmZ3Q7CiAgWW91IGFyZSBsb2dnZWQgaW4hCiZsdDt0eHA6ZWxzZSAvJmd0OwogIFlvdSBh cmUgTk9UIGxvZ2dlZCBpbiEKJmx0Oy90eHA6cnZtX2lmX3ByaXZpbGVnZWQmZ3Q7PC9jb2Rl PjwvcHJlPgoKCjxoMyBpZD0icnZtX3ByaXZpbGVnZWRfdXNlciI+PGNvZGU+Jmx0O3R4cDpy dm1fcHJpdmlsZWdlZF91c2VyIC8mZ3Q7PC9jb2RlPjwvaDM+Cgo8cD5EaXNwbGF5IHZhcmlv dXMgcHJvcGVydGllcyBvZiB0aGUgbG9nZ2VkIGluIHVzZXIuPC9wPgoKPGg0PkF0dHJpYnV0 ZXM8L2g0PgoKPHVsPgoJPGxpPjxjb2RlPnR5cGU9JnF1b3Q7bmFtZXxlbWFpbHxwcml2aWxl Z2V8bGV2ZWwmcXVvdDs8L2NvZGU+IDxiciAvPgogU2VsZWN0IG9uZSBvZjogbG9naW4gbmFt ZSAobmFtZSksIGVtYWlsIGFkZHJlc3MgKGVtYWlsKSwgcHJpdmlsZWdlIChwcml2aWxlZ2Up IG9yIG51bWVyaWMgcHJpdmlsZWdlIChsZXZlbCkuIEJ5IGRlZmF1bHQgdGhlIFJlYWxOYW1l IG9mIHRoZSBsb2dnZWQgaW4gdXNlciBpcyBzaG93bi48L2xpPgo8L3VsPgoKPGg0PkV4YW1w bGVzPC9oND4KCjxwPlNob3cgdGhlIHJlYWwgbmFtZSBvZiB0aGUgbG9nZ2VkIGluIHVzZXI6 PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnJ2bV9wcml2aWxlZ2VkX3VzZXIgLyZndDs8L2Nv ZGU+PC9wcmU+Cgo8cD5TaG93IHRoZSBlbWFpbCBhZGRyZXNzIG9mIHRoZSBsb2dnZWQgaW4g dXNlcjo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cnZtX3ByaXZpbGVnZWRfdXNlciB0eXBl PSZxdW90O2VtYWlsJnF1b3Q7Jmd0OzwvY29kZT48L3ByZT4KCjxoMz5Gb290bm90ZXM8L2gz PgoKPHAgY2xhc3M9ImZvb3Rub3RlIiBpZD0iZm41MjY5MTYyNjg2NjNlZmZkMWVhMmE5LTEi PjxzdXA+MTwvc3VwPiBQcml2aWxlZ2UgbGV2ZWxzOjxiciAvPgo8b2w+Cgk8bGk+UHVibGlz aGVyPC9saT4KCTxsaT5NYW5hZ2luZyBFZGl0b3I8L2xpPgoJPGxpPkNvcHkgRWRpdG9yPC9s aT4KCTxsaT5TdGFmZiBXcml0ZXI8L2xpPgoJPGxpPkZyZWVsYW5jZXI8L2xpPgoJPGxpPkRl c2lnbmVyPC9saT48YnIgLz4KPC9vbD48L3A+IjtzOjQ6ImNvZGUiO3M6MTY5ODoiCmlmIChj bGFzc19leGlzdHMoJ1xUZXh0cGF0dGVyblxUYWdcUmVnaXN0cnknKSkgewogIFR4cDo6Z2V0 KCdcVGV4dHBhdHRlcm5cVGFnXFJlZ2lzdHJ5JykKICAgIC0+cmVnaXN0ZXIoJ3J2bV9wcml2 aWxlZ2VkJykKICAgIC0+cmVnaXN0ZXIoJ3J2bV9pZl9wcml2aWxlZ2VkJykKICAgIC0+cmVn aXN0ZXIoJ3J2bV9wcml2aWxlZ2VkX3VzZXInKTsKfQoKCmZ1bmN0aW9uIHJ2bV9wcml2aWxl Z2VkKCRhdHRzKQp7CiAgZXh0cmFjdChsQXR0cyhhcnJheSgKICAgICduYW1lJyA9PiAnJywK ICAgICdsZXZlbCcgID0+ICcnCiAgKSwgJGF0dHMpKTsKCiAgaWYgKCFydm1faXNfcHJpdmls ZWdlZCgkbmFtZSwgJGxldmVsKSkKICB7CiAgICBvYl9jbGVhbigpOwogICAgdHhwX2RpZSgn Rm9yYmlkZGVuJywgNDAzKTsKICB9Cn0KCgpmdW5jdGlvbiBydm1faWZfcHJpdmlsZWdlZCgk YXR0cywgJHRoaW5nID0gJycpCnsKICBleHRyYWN0KGxBdHRzKGFycmF5KAogICAgJ25hbWUn ID0+ICcnLAogICAgJ2xldmVsJyA9PiAnJwogICksICRhdHRzKSk7CgogIHJldHVybiBwYXJz ZShFdmFsRWxzZSgkdGhpbmcsIHJ2bV9pc19wcml2aWxlZ2VkKCRuYW1lLCAkbGV2ZWwpKSk7 Cn0KCgpmdW5jdGlvbiBydm1faXNfcHJpdmlsZWdlZCgkbmFtZSwgJGxldmVsKQp7CiAgc3Rh dGljICRpbGkgPSAwOwoKICBpZiAoJGlsaSA9PT0gMCkgJGlsaSA9IGlzX2xvZ2dlZF9pbigp OwoKICBpZiAoISRpbGkpIHJldHVybiBGQUxTRTsKCiAgJGlzbmFtZSAgPSAoJG5hbWUgYW5k IGluX2FycmF5KCRpbGlbJ25hbWUnXSwgZG9fbGlzdCgkbmFtZSkpKTsKICAkaXNsZXZlbCA9 ICgkbGV2ZWwgYW5kIGluX2FycmF5KCRpbGlbJ3ByaXZzJ10sIGRvX2xpc3QoJGxldmVsKSkp OwoKICBpZiAoJG5hbWUpCiAgewogICAgaWYgKCRsZXZlbCkKICAgIHsKICAgICAgcmV0dXJu ICgkaXNuYW1lIGFuZCAkaXNsZXZlbCk7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgIHJl dHVybiAkaXNuYW1lOwogICAgfQogIH0KICBlbHNlaWYoJGxldmVsKQogIHsKICAgIHJldHVy biAkaXNsZXZlbDsKICB9CiAgZWxzZQogIHsKICAgIHJldHVybiBUUlVFOwogIH0KfQoKCmZ1 bmN0aW9uIHJ2bV9wcml2aWxlZ2VkX3VzZXIoJGF0dHMpCnsKICBleHRyYWN0KGxBdHRzKGFy cmF5KAogICAgJ3R5cGUnID0+ICdSZWFsTmFtZScKICApLCAkYXR0cykpOwoKICBzdGF0aWMg JGlsaSA9IDA7CgogIGlmICgkaWxpID09PSAwKSAkaWxpID0gaXNfbG9nZ2VkX2luKCk7Cgog ICR0eXBlcyA9IGFycmF5KCdSZWFsTmFtZScsICduYW1lJywgJ2VtYWlsJywgJ3ByaXZpbGVn ZScsICdsZXZlbCcpOwoKICBpZiAoISRpbGkgb3IgIWluX2FycmF5KCR0eXBlLCAkdHlwZXMp KSByZXR1cm47CgogICRsZXZlbHMgPSBhcnJheSgnbm9uZScsICdwdWJsaXNoZXInLCAnbWFu YWdpbmcgZWRpdG9yJywgJ2NvcHkgZWRpdG9yJywgJ3N0YWZmIHdyaXRlcicsICdmcmVlbGFu Y2VyJywgJ2Rlc2lnbmVyJyk7CgogIHN3aXRjaCAoJHR5cGUpCiAgewogICAgY2FzZSAncHJp dmlsZWdlJzogJG91dCA9ICRsZXZlbHNbJGlsaVsncHJpdnMnXV07IGJyZWFrOwogICAgY2Fz ZSAnbGV2ZWwnICAgIDogJG91dCA9ICRpbGlbJ3ByaXZzJ107IGJyZWFrOwogICAgZGVmYXVs dCAgICAgICAgIDogJG91dCA9ICRpbGlbJHR5cGVdOwogIH0KCiAgcmV0dXJuIGh0bWxzcGVj aWFsY2hhcnMoJG91dCk7Cn0KIjtzOjM6Im1kNSI7czozMjoiMWJkNzRlZjhhOWJjNTcxMTk1 ZDRmYmJhYTYyMzJjM2EiO30=