# rvm_privileged v0.3 # 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: # ...................................................................... YTo5OntzOjc6InZlcnNpb24iO3M6MzoiMC4zIjtzOjY6ImF1dGhvciI7czoxNToiUnV1ZCB2 YW4gTWVsaWNrIjtzOjEwOiJhdXRob3JfdXJpIjtzOjIxOiJodHRwOi8vdmFubWVsaWNrLmNv bS8iO3M6MTE6ImRlc2NyaXB0aW9uIjtzOjQ0OiJVc2UgVFhQIGFkbWluIHVzZXIgcHJpdmls ZWdlcyBvbiBwdWJsaWMgc2lkZSI7czo0OiJ0eXBlIjtpOjA7czo0OiJuYW1lIjtzOjE0OiJy dm1fcHJpdmlsZWdlZCI7czo0OiJoZWxwIjtzOjM2ODI6IiA8c3R5bGU+CiAgIGxpIGNvZGUg e2ZvbnQtd2VpZ2h0OiBib2xkO30KICAgcHJlIHtwYWRkaW5nOiAwLjVlbSAxZW07IGJhY2tn cm91bmQ6ICNlZWU7IGJvcmRlcjogMXB4IGRhc2hlZCAjY2NjO30KICAgaDEsIGgyLCBoMywg aDMgY29kZSB7Zm9udC1mYW1pbHk6IHNhbnMtc2VyaWY7IGZvbnQtd2VpZ2h0OiBib2xkO30K ICAgaDEsIGgyLCBoMyB7bWFyZ2luLWxlZnQ6IC0xZW07fQogICBoMiwgaDMge21hcmdpbi10 b3A6IDJlbTt9CiAgIGgxIHtmb250LXNpemU6IDNlbTt9CiAgIGgyIHtmb250LXNpemU6IDJl bTt9CiAgIGgzIHtmb250LXNpemU6IDEuNWVtO30KICAgbGkgYSBjb2RlIHtmb250LXdlaWdo dDogbm9ybWFsO30KICAgLnJlcXVpcmVkLCAud2FybmluZyB7Y29sb3I6cmVkO30KIDwvc3R5 bGU+CgoJPGgxPlByaXZpbGVnZWQ8L2gxPgoKCTxwPlJlcXVpcmVzIDxzcGFuIGNsYXNzPSJj YXBzIj5UWFA8L3NwYW4+IDQuMC42IG9yIGhpZ2hlci48L3A+CgoJPHA+VGhpcyBwbHVnaW4g cHJvdmlkZXMgdGhlIGZvbGxvd2luZyB0YWdzOgoJPHVsPgoJCTxsaT48YSBocmVmPSIjcnZt X3ByaXZpbGVnZWQiPiA8Y29kZT4mIzYwO3R4cDpydm1fcHJpdmlsZWdlZCAvJiM2Mjs8L2Nv ZGU+IDwvYT48L2xpPgoJCTxsaT48YSBocmVmPSIjcnZtX2lmX3ByaXZpbGVnZWQiPiA8Y29k ZT4mIzYwO3R4cDpydm1faWZfcHJpdmlsZWdlZCAvJiM2Mjs8L2NvZGU+IDwvYT48L2xpPgoJ CTxsaT48YSBocmVmPSIjcnZtX3ByaXZpbGVnZWRfdXNlciI+IDxjb2RlPiYjNjA7dHhwOnJ2 bV9wcml2aWxlZ2VkX3VzZXIgLyYjNjI7PC9jb2RlPiA8L2E+PC9saT4KCTwvdWw+PC9wPgoK CTxoMyBpZD0icnZtX3ByaXZpbGVnZWQiPjxjb2RlPiYjNjA7dHhwOnJ2bV9wcml2aWxlZ2Vk IC8mIzYyOzwvY29kZT48L2gzPgoKCTxwPldoZW4gYSBub24tcHJpdmlsZWdlZCB1c2VyIHZp c2l0cyBhIHBhZ2UgY29udGFpbmluZyB0aGlzIHRhZywgYSA8c3BhbiBjbGFzcz0iY2FwcyI+ SFRUUDwvc3Bhbj4gNDAzIEZvcmJpZGRlbiBlcnJvciBpcyBzaG93bi48L3A+CgoJPHA+VGhl IGVycm9yIHBhZ2UgY2FuIGJlIGN1c3RvbWl6ZWQgaW4gdHdvIHdheXM6Cgk8b2w+CgkJPGxp Pm1vZGlmeSB0aGUgPGNvZGU+ZXJyb3JfZGVmYXVsdDwvY29kZT4gdGVtcGxhdGUgcGFnZS48 L2xpPgoJCTxsaT5jcmVhdGUgYSBuZXcgdGVtcGxhdGUgcGFnZSBjYWxsZWQgPGNvZGU+ZXJy b3JfNDAzPC9jb2RlPiAocmVjb21tZW5kZWQhKTwvbGk+Cgk8L29sPjwvcD4KCgk8aDQ+QXR0 cmlidXRlczwvaDQ+CgoJPHVsPgoJCTxsaT48Y29kZT5uYW1lPSYjMzQ7Y29tbWEtc2VwYXJh dGVkIHZhbHVlcyYjMzQ7PC9jb2RlPiA8YnIgLz4KTGlzdCBvZiBhbGxvd2VkIDxzcGFuIGNs YXNzPSJjYXBzIj48c3BhbiBjbGFzcz0iY2FwcyI+VFhQPC9zcGFuPjwvc3Bhbj4gbG9naW4g bmFtZXMuIERlZmF1bHQgaXMgdG8gYWNjZXB0IGFueSBsb2dnZWQgaW4gdXNlci48L2xpPgoJ CTxsaT48Y29kZT5sZXZlbD0mIzM0O2NvbW1hLXNlcGFyYXRlZCB2YWx1ZXMmIzM0OzwvY29k ZT4gPGJyIC8+Ckxpc3Qgb2YgYWxsb3dlZCBQcml2aWxlZ2UgbGV2ZWxzPHN1cCBjbGFzcz0i Zm9vdG5vdGUiPjxhIGhyZWY9IiNmbjIxMzk1ODk3MDQ4ODc5MDJjMDBhN2QiPjE8L2E+PC9z dXA+LiBEZWZhdWx0IGlzIHRvIGFjY2VwdCBsb2dnZWQgaW4gdXNlcnMgcmVnYXJkbGVzcyBv ZiBwcml2aWxlZ2UgbGV2ZWwuPC9saT4KCTwvdWw+CgoJPGg0PkV4YW1wbGU8L2g0PgoKCTxw PkFsbG93IGFjY2VzcyB0byB1c2VyICYjODIxNjtydXVkJiM4MjE3OyBhbmQgYW55b25lIHdp dGggcHJpdmlsZWdlIGxldmVscyAyLDMgYW5kIDU6PC9wPgoKPHByZT48Y29kZT4mIzYwO3R4 cDpydm1fcHJpdmlsZWdlZCBuYW1lPSYjMzQ7cnV1ZCYjMzQ7IGxldmVsPSYjMzQ7MiwzLDUm IzM0OyAvJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxoMyBpZD0icnZtX2lmX3ByaXZpbGVnZWQi Pjxjb2RlPiYjNjA7dHhwOnJ2bV9pZl9wcml2aWxlZ2VkIC8mIzYyOzwvY29kZT48L2gzPgoK CTxwPkNhbiBiZSB1c2VkIHRvIGRpc3BsYXkgZGlmZmVyZW50IGNvbnRlbnQgdG8gcHJpdmls ZWdlZCB1c2Vycy48L3A+CgoJPGg0PkF0dHJpYnV0ZXM8L2g0PgoKCTx1bD4KCQk8bGk+PGNv ZGU+bmFtZT0mIzM0O2NvbW1hLXNlcGFyYXRlZCB2YWx1ZXMmIzM0OzwvY29kZT4gPGJyIC8+ Ckxpc3Qgb2YgYWxsb3dlZCA8c3BhbiBjbGFzcz0iY2FwcyI+PHNwYW4gY2xhc3M9ImNhcHMi PlRYUDwvc3Bhbj48L3NwYW4+IGxvZ2luIG5hbWVzLiBEZWZhdWx0IGlzIHRvIGFjY2VwdCBh bnkgbG9nZ2VkIGluIHVzZXIuPC9saT4KCQk8bGk+PGNvZGU+bGV2ZWw9JiMzNDtjb21tYS1z ZXBhcmF0ZWQgdmFsdWVzJiMzNDs8L2NvZGU+IDxiciAvPgpMaXN0IG9mIGFsbG93ZWQgUHJp dmlsZWdlIGxldmVsczxzdXAgY2xhc3M9ImZvb3Rub3RlIj48YSBocmVmPSIjZm4yMTM5NTg5 NzA0ODg3OTAyYzAwYTdkIj4xPC9hPjwvc3VwPi4gRGVmYXVsdCBpcyB0byBhY2NlcHQgbG9n Z2VkIGluIHVzZXJzIHJlZ2FyZGxlc3Mgb2YgcHJpdmlsZWdlIGxldmVsLjwvbGk+Cgk8L3Vs PgoKCTxoND5FeGFtcGxlPC9oND4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6cnZtX2lmX3ByaXZp bGVnZWQmIzYyOwogIFlvdSBhcmUgbG9nZ2VkIGluIQomIzYwO3R4cDplbHNlIC8mIzYyOwog IFlvdSBhcmUgTk9UIGxvZ2dlZCBpbiEKJiM2MDsvdHhwOnJ2bV9pZl9wcml2aWxlZ2VkJiM2 MjsKPC9jb2RlPjwvcHJlPgoKCTxoMyBpZD0icnZtX3ByaXZpbGVnZWRfdXNlciI+PGNvZGU+ JiM2MDt0eHA6cnZtX3ByaXZpbGVnZWRfdXNlciAvJiM2Mjs8L2NvZGU+PC9oMz4KCgk8cD5E aXNwbGF5IHZhcmlvdXMgcHJvcGVydGllcyBvZiB0aGUgbG9nZ2VkIGluIHVzZXIuPC9wPgoK CTxoND5BdHRyaWJ1dGVzPC9oND4KCgk8dWw+CgkJPGxpPjxjb2RlPnR5cGU9JiMzNDtuYW1l fGVtYWlsfHByaXZpbGVnZXxsZXZlbCYjMzQ7PC9jb2RlPiA8YnIgLz4KIFNlbGVjdCBvbmUg b2Y6IGxvZ2luIG5hbWUgKG5hbWUpLCBlbWFpbCBhZGRyZXNzIChlbWFpbCksIHByaXZpbGVn ZSAocHJpdmlsZWdlKSBvciBudW1lcmljIHByaXZpbGVnZSAobGV2ZWwpLiBCeSBkZWZhdWx0 IHRoZSBSZWFsTmFtZSBvZiB0aGUgbG9nZ2VkIGluIHVzZXIgaXMgc2hvd24uPC9saT4KCTwv dWw+CgoJPGg0PkV4YW1wbGVzPC9oND4KCgk8cD5TaG93IHRoZSByZWFsIG5hbWUgb2YgdGhl IGxvZ2dlZCBpbiB1c2VyOjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6cnZtX3ByaXZpbGVn ZWRfdXNlciAvJiM2MjsKPC9jb2RlPjwvcHJlPgoKCTxwPlNob3cgdGhlIGVtYWlsIGFkZHJl c3Mgb2YgdGhlIGxvZ2dlZCBpbiB1c2VyOjwvcD4KCjxwcmU+PGNvZGU+JiM2MDt0eHA6cnZt X3ByaXZpbGVnZWRfdXNlciB0eXBlPSYjMzQ7ZW1haWwmIzM0OyYjNjI7CjwvY29kZT48L3By ZT4KCgk8aDM+Rm9vdG5vdGVzPC9oMz4KCgk8cCBpZD0iZm4yMTM5NTg5NzA0ODg3OTAyYzAw YTdkIiBjbGFzcz0iZm9vdG5vdGUiPjxzdXA+MTwvc3VwPiBQcml2aWxlZ2UgbGV2ZWxzOgoJ PG9sPgoJCTxsaT5QdWJsaXNoZXI8L2xpPgoJCTxsaT5NYW5hZ2luZyBFZGl0b3I8L2xpPgoJ CTxsaT5Db3B5IEVkaXRvcjwvbGk+CgkJPGxpPlN0YWZmIFdyaXRlcjwvbGk+CgkJPGxpPkZy ZWVsYW5jZXI8L2xpPgoJCTxsaT5EZXNpZ25lcjwvbGk+Cgk8L29sPjwvcD4iO3M6NDoiY29k ZSI7czoxNDk0OiIKZnVuY3Rpb24gcnZtX3ByaXZpbGVnZWQoJGF0dHMpCnsKICBleHRyYWN0 KGxBdHRzKGFycmF5KAogICAgJ25hbWUnID0+ICcnLAogICAgJ2xldmVsJyAgPT4gJycKICAp LCAkYXR0cykpOwoKICBpZiAoIXJ2bV9pc19wcml2aWxlZ2VkKCRuYW1lLCAkbGV2ZWwpKQog IHsKICAgIG9iX2NsZWFuKCk7CiAgICB0eHBfZGllKCdGb3JiaWRkZW4nLCA0MDMpOwogIH0K fQoKCmZ1bmN0aW9uIHJ2bV9pZl9wcml2aWxlZ2VkKCRhdHRzLCAkdGhpbmcgPSAnJykKewog IGV4dHJhY3QobEF0dHMoYXJyYXkoCiAgICAnbmFtZScgPT4gJycsCiAgICAnbGV2ZWwnID0+ ICcnCiAgKSwgJGF0dHMpKTsKCiAgcmV0dXJuIHBhcnNlKEV2YWxFbHNlKCR0aGluZywgcnZt X2lzX3ByaXZpbGVnZWQoJG5hbWUsICRsZXZlbCkpKTsKfQoKCmZ1bmN0aW9uIHJ2bV9pc19w cml2aWxlZ2VkKCRuYW1lLCAkbGV2ZWwpCnsKICBzdGF0aWMgJGlsaSA9IDA7CgogIGlmICgk aWxpID09PSAwKSAkaWxpID0gaXNfbG9nZ2VkX2luKCk7CgogIGlmICghJGlsaSkgcmV0dXJu IEZBTFNFOwoKICAkaXNuYW1lICA9ICgkbmFtZSBhbmQgaW5fYXJyYXkoJGlsaVsnbmFtZSdd LCBkb19saXN0KCRuYW1lKSkpOwogICRpc2xldmVsID0gKCRsZXZlbCBhbmQgaW5fYXJyYXko JGlsaVsncHJpdnMnXSwgZG9fbGlzdCgkbGV2ZWwpKSk7CgogIGlmICgkbmFtZSkKICB7CiAg ICBpZiAoJGxldmVsKQogICAgewogICAgICByZXR1cm4gKCRpc25hbWUgYW5kICRpc2xldmVs KTsKICAgIH0KICAgIGVsc2UKICAgIHsKICAgICAgcmV0dXJuICRpc25hbWU7CiAgICB9CiAg fQogIGVsc2VpZigkbGV2ZWwpCiAgewogICAgcmV0dXJuICRpc2xldmVsOwogIH0KICBlbHNl CiAgewogICAgcmV0dXJuIFRSVUU7CiAgfQp9CgoKZnVuY3Rpb24gcnZtX3ByaXZpbGVnZWRf dXNlcigkYXR0cykKewogIGV4dHJhY3QobEF0dHMoYXJyYXkoCiAgICAndHlwZScgPT4gJ1Jl YWxOYW1lJwogICksICRhdHRzKSk7CgogIHN0YXRpYyAkaWxpID0gMDsKCiAgaWYgKCRpbGkg PT09IDApICRpbGkgPSBpc19sb2dnZWRfaW4oKTsKCiAgJHR5cGVzID0gYXJyYXkoJ1JlYWxO YW1lJywgJ25hbWUnLCAnZW1haWwnLCAncHJpdmlsZWdlJywgJ2xldmVsJyk7CgogIGlmICgh JGlsaSBvciAhaW5fYXJyYXkoJHR5cGUsICR0eXBlcykpIHJldHVybjsKCiAgJGxldmVscyA9 IGFycmF5KCdub25lJywgJ3B1Ymxpc2hlcicsICdtYW5hZ2luZyBlZGl0b3InLCAnY29weSBl ZGl0b3InLCAnc3RhZmYgd3JpdGVyJywgJ2ZyZWVsYW5jZXInLCAnZGVzaWduZXInKTsKCiAg c3dpdGNoICgkdHlwZSkKICB7CiAgICBjYXNlICdwcml2aWxlZ2UnOiAkb3V0ID0gJGxldmVs c1skaWxpWydwcml2cyddXTsgYnJlYWs7CiAgICBjYXNlICdsZXZlbCcgICAgOiAkb3V0ID0g JGlsaVsncHJpdnMnXTsgYnJlYWs7CiAgICBkZWZhdWx0ICAgICAgICAgOiAkb3V0ID0gJGls aVskdHlwZV07CiAgfQoKICByZXR1cm4gZXNjYXBlX291dHB1dCgkb3V0KTsKfQoiO3M6Mzoi bWQ1IjtzOjMyOiJkMWUxNzgyZGQyY2I2MjYwNGM3Njc0MGVlYjJlODgzMyI7fQ==