# rvm_privileged v0.4 # 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: # ...................................................................... YTo5OntzOjc6InZlcnNpb24iO3M6MzoiMC40IjtzOjY6ImF1dGhvciI7czoxNToiUnV1ZCB2 YW4gTWVsaWNrIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIxOiJodHRwOi8vdmFubWVsaWNrLmNv bS8iO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjQ0OiJVc2UgVFhQIGFkbWluIHVzZXIgcHJpdmls ZWdlcyBvbiBwdWJsaWMgc2lkZSI7czo0OiJ0eXBlIjtpOjA7czo0OiJuYW1lIjtzOjE0OiJy dm1fcHJpdmlsZWdlZCI7czo0OiJoZWxwIjtzOjM2MjU6IiA8c3R5bGU+CiAgIGxpIGNvZGUg e2ZvbnQtd2VpZ2h0OiBib2xkO30KICAgcHJlIHtwYWRkaW5nOiAwLjVlbSAxZW07IGJhY2tn cm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IGRhc2hlZCAjY2NjO30KICAgaDEsIGgyLCBoMywg aDMgY29kZSB7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OiBib2xkO30K ICAgaDEsIGgyLCBoMyB7bWFyZ2luLWxlZnQ6IC0xZW07fQogICBoMiwgaDMge21hcmdpbi10 b3A6IDJlbTt9CiAgIGgxIHtmb250LXNpemU6IDNlbTt9CiAgIGgyIHtmb250LXNpemU6IDJl bTt9CiAgIGgzIHtmb250LXNpemU6IDEuNWVtO30KICAgbGkgYSBjb2RlIHtmb250LXdlaWdo dDogbm9ybWFsO30KICAgLnJlcXVpcmVkLCAud2FybmluZyB7Y29sb3I6cmVkO30KIDwvc3R5 bGU+CgoJPGgxPlByaXZpbGVnZWQ8L2gxPgoKCTxwPlJlcXVpcmVzIDxzcGFuIGNsYXNzPSJj YXBzIj5UWFA8L3NwYW4+IDQuMC42IG9yIGhpZ2hlci48L3A+CgoJPHA+VGhpcyBwbHVnaW4g cHJvdmlkZXMgdGhlIGZvbGxvd2luZyB0YWdzOgoJPHVsPgoJCTxsaT48YSBocmVmPSIjcnZt X3ByaXZpbGVnZWQiPiA8Y29kZT4mbHQ7dHhwOnJ2bV9wcml2aWxlZ2VkIC8mZ3Q7PC9jb2Rl PiA8L2E+PC9saT4KCQk8bGk+PGEgaHJlZj0iI3J2bV9pZl9wcml2aWxlZ2VkIj4gPGNvZGU+ Jmx0O3R4cDpydm1faWZfcHJpdmlsZWdlZCAvJmd0OzwvY29kZT4gPC9hPjwvbGk+CgkJPGxp PjxhIGhyZWY9IiNydm1fcHJpdmlsZWdlZF91c2VyIj4gPGNvZGU+Jmx0O3R4cDpydm1fcHJp dmlsZWdlZF91c2VyIC8mZ3Q7PC9jb2RlPiA8L2E+PC9saT4KCTwvdWw+PC9wPgoKCTxoMyBp ZD0icnZtX3ByaXZpbGVnZWQiPjxjb2RlPiZsdDt0eHA6cnZtX3ByaXZpbGVnZWQgLyZndDs8 L2NvZGU+PC9oMz4KCgk8cD5XaGVuIGEgbm9uLXByaXZpbGVnZWQgdXNlciB2aXNpdHMgYSBw YWdlIGNvbnRhaW5pbmcgdGhpcyB0YWcsIGEgPHNwYW4gY2xhc3M9ImNhcHMiPkhUVFA8L3Nw YW4+IDQwMyBGb3JiaWRkZW4gZXJyb3IgaXMgc2hvd24uPC9wPgoKCTxwPlRoZSBlcnJvciBw YWdlIGNhbiBiZSBjdXN0b21pemVkIGluIHR3byB3YXlzOgoJPG9sPgoJCTxsaT5tb2RpZnkg dGhlIDxjb2RlPmVycm9yX2RlZmF1bHQ8L2NvZGU+IHRlbXBsYXRlIHBhZ2UuPC9saT4KCQk8 bGk+Y3JlYXRlIGEgbmV3IHRlbXBsYXRlIHBhZ2UgY2FsbGVkIDxjb2RlPmVycm9yXzQwMzwv Y29kZT4gKHJlY29tbWVuZGVkISk8L2xpPgoJPC9vbD48L3A+CgoJPGg0PkF0dHJpYnV0ZXM8 L2g0PgoKCTx1bD4KCQk8bGk+PGNvZGU+bmFtZT0mcXVvdDtjb21tYS1zZXBhcmF0ZWQgdmFs dWVzJnF1b3Q7PC9jb2RlPiA8YnIgLz4KTGlzdCBvZiBhbGxvd2VkIDxzcGFuIGNsYXNzPSJj YXBzIj5UWFA8L3NwYW4+IGxvZ2luIG5hbWVzLiBEZWZhdWx0IGlzIHRvIGFjY2VwdCBhbnkg bG9nZ2VkIGluIHVzZXIuPC9saT4KCQk8bGk+PGNvZGU+bGV2ZWw9JnF1b3Q7Y29tbWEtc2Vw YXJhdGVkIHZhbHVlcyZxdW90OzwvY29kZT4gPGJyIC8+Ckxpc3Qgb2YgYWxsb3dlZCBQcml2 aWxlZ2UgbGV2ZWxzPHN1cCBjbGFzcz0iZm9vdG5vdGUiPjxhIGhyZWY9IiNmbjE5MTYwNDcz MjI0YzU0MjMwZWNjMzE4Ij4xPC9hPjwvc3VwPi4gRGVmYXVsdCBpcyB0byBhY2NlcHQgbG9n Z2VkIGluIHVzZXJzIHJlZ2FyZGxlc3Mgb2YgcHJpdmlsZWdlIGxldmVsLjwvbGk+Cgk8L3Vs PgoKCTxoND5FeGFtcGxlPC9oND4KCgk8cD5BbGxvdyBhY2Nlc3MgdG8gdXNlciAmIzgyMTY7 cnV1ZCYjODIxNzsgYW5kIGFueW9uZSB3aXRoIHByaXZpbGVnZSBsZXZlbHMgMiwzIGFuZCA1 OjwvcD4KCjxwcmU+PGNvZGU+Jmx0O3R4cDpydm1fcHJpdmlsZWdlZCBuYW1lPSZxdW90O3J1 dWQmcXVvdDsgbGV2ZWw9JnF1b3Q7MiwzLDUmcXVvdDsgLyZndDsKPC9jb2RlPjwvcHJlPgoK CTxoMyBpZD0icnZtX2lmX3ByaXZpbGVnZWQiPjxjb2RlPiZsdDt0eHA6cnZtX2lmX3ByaXZp bGVnZWQgLyZndDs8L2NvZGU+PC9oMz4KCgk8cD5DYW4gYmUgdXNlZCB0byBkaXNwbGF5IGRp ZmZlcmVudCBjb250ZW50IHRvIHByaXZpbGVnZWQgdXNlcnMuPC9wPgoKCTxoND5BdHRyaWJ1 dGVzPC9oND4KCgk8dWw+CgkJPGxpPjxjb2RlPm5hbWU9JnF1b3Q7Y29tbWEtc2VwYXJhdGVk IHZhbHVlcyZxdW90OzwvY29kZT4gPGJyIC8+Ckxpc3Qgb2YgYWxsb3dlZCA8c3BhbiBjbGFz cz0iY2FwcyI+VFhQPC9zcGFuPiBsb2dpbiBuYW1lcy4gRGVmYXVsdCBpcyB0byBhY2NlcHQg YW55IGxvZ2dlZCBpbiB1c2VyLjwvbGk+CgkJPGxpPjxjb2RlPmxldmVsPSZxdW90O2NvbW1h LXNlcGFyYXRlZCB2YWx1ZXMmcXVvdDs8L2NvZGU+IDxiciAvPgpMaXN0IG9mIGFsbG93ZWQg UHJpdmlsZWdlIGxldmVsczxzdXAgY2xhc3M9ImZvb3Rub3RlIj48YSBocmVmPSIjZm4xOTE2 MDQ3MzIyNGM1NDIzMGVjYzMxOCI+MTwvYT48L3N1cD4uIERlZmF1bHQgaXMgdG8gYWNjZXB0 IGxvZ2dlZCBpbiB1c2VycyByZWdhcmRsZXNzIG9mIHByaXZpbGVnZSBsZXZlbC48L2xpPgoJ PC91bD4KCgk8aDQ+RXhhbXBsZTwvaDQ+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cnZtX2lmX3By aXZpbGVnZWQmZ3Q7CiAgWW91IGFyZSBsb2dnZWQgaW4hCiZsdDt0eHA6ZWxzZSAvJmd0Owog IFlvdSBhcmUgTk9UIGxvZ2dlZCBpbiEKJmx0Oy90eHA6cnZtX2lmX3ByaXZpbGVnZWQmZ3Q7 CjwvY29kZT48L3ByZT4KCgk8aDMgaWQ9InJ2bV9wcml2aWxlZ2VkX3VzZXIiPjxjb2RlPiZs dDt0eHA6cnZtX3ByaXZpbGVnZWRfdXNlciAvJmd0OzwvY29kZT48L2gzPgoKCTxwPkRpc3Bs YXkgdmFyaW91cyBwcm9wZXJ0aWVzIG9mIHRoZSBsb2dnZWQgaW4gdXNlci48L3A+CgoJPGg0 PkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PGNvZGU+dHlwZT0mcXVvdDtuYW1lfGVt YWlsfHByaXZpbGVnZXxsZXZlbCZxdW90OzwvY29kZT4gPGJyIC8+CiBTZWxlY3Qgb25lIG9m OiBsb2dpbiBuYW1lIChuYW1lKSwgZW1haWwgYWRkcmVzcyAoZW1haWwpLCBwcml2aWxlZ2Ug KHByaXZpbGVnZSkgb3IgbnVtZXJpYyBwcml2aWxlZ2UgKGxldmVsKS4gQnkgZGVmYXVsdCB0 aGUgUmVhbE5hbWUgb2YgdGhlIGxvZ2dlZCBpbiB1c2VyIGlzIHNob3duLjwvbGk+Cgk8L3Vs PgoKCTxoND5FeGFtcGxlczwvaDQ+CgoJPHA+U2hvdyB0aGUgcmVhbCBuYW1lIG9mIHRoZSBs b2dnZWQgaW4gdXNlcjo8L3A+Cgo8cHJlPjxjb2RlPiZsdDt0eHA6cnZtX3ByaXZpbGVnZWRf dXNlciAvJmd0Owo8L2NvZGU+PC9wcmU+CgoJPHA+U2hvdyB0aGUgZW1haWwgYWRkcmVzcyBv ZiB0aGUgbG9nZ2VkIGluIHVzZXI6PC9wPgoKPHByZT48Y29kZT4mbHQ7dHhwOnJ2bV9wcml2 aWxlZ2VkX3VzZXIgdHlwZT0mcXVvdDtlbWFpbCZxdW90OyZndDsKPC9jb2RlPjwvcHJlPgoK CTxoMz5Gb290bm90ZXM8L2gzPgoKCTxwIGlkPSJmbjE5MTYwNDczMjI0YzU0MjMwZWNjMzE4 IiBjbGFzcz0iZm9vdG5vdGUiPjxzdXA+MTwvc3VwPiBQcml2aWxlZ2UgbGV2ZWxzOgoJPG9s PgoJCTxsaT5QdWJsaXNoZXI8L2xpPgoJCTxsaT5NYW5hZ2luZyBFZGl0b3I8L2xpPgoJCTxs aT5Db3B5IEVkaXRvcjwvbGk+CgkJPGxpPlN0YWZmIFdyaXRlcjwvbGk+CgkJPGxpPkZyZWVs YW5jZXI8L2xpPgoJCTxsaT5EZXNpZ25lcjwvbGk+Cgk8L29sPjwvcD4iO3M6NDoiY29kZSI7 czoxNDk3OiIKZnVuY3Rpb24gcnZtX3ByaXZpbGVnZWQoJGF0dHMpCnsKICBleHRyYWN0KGxB dHRzKGFycmF5KAogICAgJ25hbWUnID0+ICcnLAogICAgJ2xldmVsJyAgPT4gJycKICApLCAk YXR0cykpOwoKICBpZiAoIXJ2bV9pc19wcml2aWxlZ2VkKCRuYW1lLCAkbGV2ZWwpKQogIHsK ICAgIG9iX2NsZWFuKCk7CiAgICB0eHBfZGllKCdGb3JiaWRkZW4nLCA0MDMpOwogIH0KfQoK CmZ1bmN0aW9uIHJ2bV9pZl9wcml2aWxlZ2VkKCRhdHRzLCAkdGhpbmcgPSAnJykKewogIGV4 dHJhY3QobEF0dHMoYXJyYXkoCiAgICAnbmFtZScgPT4gJycsCiAgICAnbGV2ZWwnID0+ICcn CiAgKSwgJGF0dHMpKTsKCiAgcmV0dXJuIHBhcnNlKEV2YWxFbHNlKCR0aGluZywgcnZtX2lz X3ByaXZpbGVnZWQoJG5hbWUsICRsZXZlbCkpKTsKfQoKCmZ1bmN0aW9uIHJ2bV9pc19wcml2 aWxlZ2VkKCRuYW1lLCAkbGV2ZWwpCnsKICBzdGF0aWMgJGlsaSA9IDA7CgogIGlmICgkaWxp ID09PSAwKSAkaWxpID0gaXNfbG9nZ2VkX2luKCk7CgogIGlmICghJGlsaSkgcmV0dXJuIEZB TFNFOwoKICAkaXNuYW1lICA9ICgkbmFtZSBhbmQgaW5fYXJyYXkoJGlsaVsnbmFtZSddLCBk b19saXN0KCRuYW1lKSkpOwogICRpc2xldmVsID0gKCRsZXZlbCBhbmQgaW5fYXJyYXkoJGls aVsncHJpdnMnXSwgZG9fbGlzdCgkbGV2ZWwpKSk7CgogIGlmICgkbmFtZSkKICB7CiAgICBp ZiAoJGxldmVsKQogICAgewogICAgICByZXR1cm4gKCRpc25hbWUgYW5kICRpc2xldmVsKTsK ICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgcmV0dXJuICRpc25hbWU7CiAgICB9CiAgfQog IGVsc2VpZigkbGV2ZWwpCiAgewogICAgcmV0dXJuICRpc2xldmVsOwogIH0KICBlbHNlCiAg ewogICAgcmV0dXJuIFRSVUU7CiAgfQp9CgoKZnVuY3Rpb24gcnZtX3ByaXZpbGVnZWRfdXNl cigkYXR0cykKewogIGV4dHJhY3QobEF0dHMoYXJyYXkoCiAgICAndHlwZScgPT4gJ1JlYWxO YW1lJwogICksICRhdHRzKSk7CgogIHN0YXRpYyAkaWxpID0gMDsKCiAgaWYgKCRpbGkgPT09 IDApICRpbGkgPSBpc19sb2dnZWRfaW4oKTsKCiAgJHR5cGVzID0gYXJyYXkoJ1JlYWxOYW1l JywgJ25hbWUnLCAnZW1haWwnLCAncHJpdmlsZWdlJywgJ2xldmVsJyk7CgogIGlmICghJGls aSBvciAhaW5fYXJyYXkoJHR5cGUsICR0eXBlcykpIHJldHVybjsKCiAgJGxldmVscyA9IGFy cmF5KCdub25lJywgJ3B1Ymxpc2hlcicsICdtYW5hZ2luZyBlZGl0b3InLCAnY29weSBlZGl0 b3InLCAnc3RhZmYgd3JpdGVyJywgJ2ZyZWVsYW5jZXInLCAnZGVzaWduZXInKTsKCiAgc3dp dGNoICgkdHlwZSkKICB7CiAgICBjYXNlICdwcml2aWxlZ2UnOiAkb3V0ID0gJGxldmVsc1sk aWxpWydwcml2cyddXTsgYnJlYWs7CiAgICBjYXNlICdsZXZlbCcgICAgOiAkb3V0ID0gJGls aVsncHJpdnMnXTsgYnJlYWs7CiAgICBkZWZhdWx0ICAgICAgICAgOiAkb3V0ID0gJGlsaVsk dHlwZV07CiAgfQoKICByZXR1cm4gaHRtbHNwZWNpYWxjaGFycygkb3V0KTsKfQoiO3M6Mzoi bWQ1IjtzOjMyOiJiMmU5ZjFlMDYwOWQ1Y2NlYzhmOWI0NTM5YjcxYjhjZSI7fQ==