# wyn_comment_sofa v0.3 # Comment Sofa for Textpattern. Generate a commentor cloud or a list of most commentors. Have fun! # wayne # http://www.gopherwood.info/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTY6Ind5bl9jb21tZW50X3NvZmEiO3M6NzoidmVyc2lvbiI7 czozOiIwLjMiO3M6NjoiYXV0aG9yIjtzOjU6IndheW5lIjtzOjEwOiJhdXRob3JfdXJpIjtz OjI3OiJodHRwOi8vd3d3LmdvcGhlcndvb2QuaW5mby8iO3M6MTE6ImRlc2NyaXB0aW9uIjtz Ojk2OiJDb21tZW50IFNvZmEgZm9yIFRleHRwYXR0ZXJuLiBHZW5lcmF0ZSBhIGNvbW1lbnRv ciBjbG91ZCBvciBhIGxpc3Qgb2YgbW9zdCBjb21tZW50b3JzLiBIYXZlIGZ1biEiO3M6NDoi dHlwZSI7aTowO3M6NDoiaGVscCI7czoyNjc5OiIKPHA+PHN0cm9uZz5Db21tZW50IFNvZmEg cGx1Z2luIGZvciBUZXh0cGF0dGVybjwvc3Ryb25nPjwvcD4KCjxwPkl0IGNhbiBnZW5lcmF0 ZSBhIGNsb3VkIG9yIGEgbGlzdCBmb3IgY29tbWVudGVycyB3aG8gY29tbWVudGVkIHRoZSBt b3N0LiBPUiBnZW5lcmF0ZSB0aGVtIGZvciB1c2VycyB3aG8gZ290IHRoZSBzb2ZhIChmaXJz dCBjb21tZW50IHRvIGEgcG9zdCkgbW9zdCA6RDwvcD4KCjxwPjxzdHJvbmc+SGlzdG9yeTwv c3Ryb25nPjwvcD4KCjx1bD4KICA8bGk+MC4zIDogQWRkIFJlc3RyaWN0IDxzcGFuIGNsYXNz PSJjYXBzIj5TT0ZBPC9zcGFuPiBtb2RlLCB3aGljaCBnZW5lcmF0b3IgYSBjbG91ZCBvciBh IGxpc3QgZm9yIHRoZSB1c2VycyB3aG8gZ290IHNvZmEgKHRoZSBmaXJzdCBvbmUgd2hvIGNv bW1lbnQgdG8gYSBwb3N0KSBtb3N0LjwvbGk+CiAgPGxpPjAuMiA6IEFkZCBrZXl3b3JkIGF0 dHJpYnV0ZSB0byBpZGVudGlmeSB1c2VyIGJ5IG5hbWUgb3IgZW1haWwgYW5kIGdldCBza2lw IHZhbHVlIGFjY2VwdGVkIGEgbGlzdCB3aXRoICYjODIxNjs7JiM4MjE3OyBkZWxpbWl0ZWQu PC9saT4KICA8bGk+MC4xIDogSW5pdGlhbGl6ZSBSZWxlYXNlPC9saT4KPC91bD4KCjxwPjxz dHJvbmc+VXNhZ2U8L3N0cm9uZz48L3A+Cgo8b2w+CiAgPGxpPjxzdHJvbmc+d3luX2NvbW1l bnRfc29mYV9jbG91ZDwvc3Ryb25nPgogICAgPHVsPgogICAgICA8bGk+d3JhcHRhZzogd3Jh cCB5b3VyIGNsb3VkIHdpdGggYSB0YWc8L2xpPgogICAgICA8bGk+a2V5d29yZDogVGhlIGtl eXdvcmQgdG8gaWRlbnRpZnkgdXNlciwgYXZhaWxhYmxlIHZhbHVlcyBhcmUgbmFtZSBhbmQg ZW1haWwsIGRlZmF1bHQgaXMgbmFtZTwvbGk+CiAgICAgIDxsaT5za2lwOiBza2lwIHRoZSB1 c2VyIGJ5IGluZGljYXRlZCB0aGluZywgZGVmYXVsdCBpcyBub3RoaW5nIChsb3RzIG9mIGJs b2dzIGp1c3QgaGF2ZSBvbmUgYWRtaW4gdXNlciB0byBkbyBldmVyeXRoaW5nIDpEKSBZb3Ug Y2FuIHNldCB2YWx1ZXMgbW9yZSB0aGFuIG9uZSwganVzdCB1c2UgYSAmIzgyMTY7OyYjODIx NzsgdG8gc2VwYXJhdGUuPC9saT4KICAgICAgPGxpPmxhYmVsOiB0aGUgbGFiZWwgIDwvbGk+ CiAgICAgIDxsaT5sYWJlbHRhZzogdGFnIG9mIHRoZSBsYWJlbDwvbGk+CiAgICAgIDxsaT5s aW1pdDogdGhlIGxpbWl0IG9mIGNvbW1lbnRlcnMsIGRlZmF1bHQgaXMgMTA8L2xpPgogICAg ICA8bGk+Y2xhc3M6IHRoZSBjbGFzcyBvZiB3cmFwPC9saT4KICAgICAgPGxpPm1heHNpemUg LyBtaW5zaXplOiB0aGUgbWF4IC8gbWluIGZvbnQgc2l6ZSBvZiB0aGUgbW9zdCAvIGxlYXN0 IGNvbW1lbnRlciYjODIxNztzIGxpbmsuIChQZXJjZW50LCBkZWZhdWx0IGlzIDIwMCBhbmQg NTApPC9saT4KICAgICAgPGxpPmJyZWFrOiB0aGUgYnJlYWsgYmV0d2VlbiBsaW5rcywgZGVm YXVsdCBpcyBhIHNwYWNlPC9saT4KICAgICAgPGxpPnNob3djb3VudDogd2hldGhlciB0byBz aG93IHRoZSBjb3VudCBvZiBjb21tZW50cyBieSBlYWNoIGNvbW1lbnRlciwgZGVmYXVsdCBp cyAxPC9saT4KICAgICAgPGxpPnJlc3RyaWN0ZWQ6IHdoZXRoZXIgdG8gZ2V0IDxzcGFuIGNs YXNzPSJjYXBzIj5SRVNUUklDVEVEPC9zcGFuPiA8c3BhbiBjbGFzcz0iY2FwcyI+U09GQTwv c3Bhbj4gPHNwYW4gY2xhc3M9ImNhcHMiPk1PREU8L3NwYW4+IChHZW5lcmF0ZSBjbG91ZCBi eSByYW5rIG9mIGZpcnN0IGNvbW1lbnRlZCB0byBwb3N0cyksIGRlZmF1bHQgaXMgMDwvbGk+ CiAgICA8L3VsPgogIDwvbGk+CiAgPGxpPjxzdHJvbmc+d3luX2NvbW1lbnRfc29mYV9saXN0 PC9zdHJvbmc+CiAgICA8dWw+CiAgICAgPGxpPndyYXB0YWc6IHdyYXAgeW91ciBsaXN0IHdp dGggYSB0YWc8L2xpPgogICAgIDxsaT5rZXl3b3JkOiBUaGUga2V5d29yZCB0byBpZGVudGlm eSB1c2VyLCBhdmFpbGFibGUgdmFsdWVzIGFyZSBuYW1lIGFuZCBlbWFpbCBhbmQgZGVmYXVs dCBpcyBuYW1lPC9saT4KICAgICA8bGk+c2tpcDogc2tpcCB0aGUgdXNlciBieSBpbmRpY2F0 ZWQgdGhpbmcsIGRlZmF1bHQgaXMgbm90aGluZyAobG90cyBvZiBibG9ncyBqdXN0IGhhdmUg b25lIGFkbWluIHVzZXIgdG8gZG8gZXZlcnl0aGluZyA6RCk8L2xpPgogICAgIDxsaT5sYWJl bDogdGhlIGxhYmVsPC9saT4KICAgICA8bGk+bGFiZWx0YWc6IHRhZyBvZiB0aGUgbGFiZWw8 L2xpPgogICAgIDxsaT5saW1pdDogdGhlIGxpbWl0IG9mIGNvbW1lbnRlcnMsIGRlZmF1bHQg aXMgMTA8L2xpPgogICAgIDxsaT5jbGFzczogdGhlIGNsYXNzIG9mIHdyYXA8L2xpPgogICAg IDxsaT5icmVhazogdGhlIGJyZWFrIGJldHdlZW4gbGlua3MsIGRlZmF1bHQgaXMgYSBzcGFj ZTwvbGk+CiAgICAgPGxpPnNob3djb3VudDogd2hldGhlciB0byBzaG93IHRoZSBjb3VudCBv ZiBjb21tZW50cyBieSBlYWNoIGNvbW1lbnRlciwgZGVmYXVsdCBpcyAxPC9saT4KICAgICA8 bGk+cmVzdHJpY3RlZDogd2hldGhlciB0byBnZXQgPHNwYW4gY2xhc3M9ImNhcHMiPlJFU1RS SUNURUQ8L3NwYW4+IDxzcGFuIGNsYXNzPSJjYXBzIj5TT0ZBPC9zcGFuPiA8c3BhbiBjbGFz cz0iY2FwcyI+TU9ERTwvc3Bhbj4gKEdlbmVyYXRlIGxpc3QgYnkgcmFuayBvZiBmaXJzdCBj b21tZW50ZWQgdG8gcG9zdHMpLCBkZWZhdWx0IGlzIDA8L2xpPgogICAgPC91bD4KICA8L2xp Pgo8L29sPgoiO3M6NDoiY29kZSI7czo0NzIxOiIKLyogUGx1Z2luIE5hbWU6IFRleHRwYXR0 ZXJuIENvbW1lbnQgU29mYQogICBQbHVnaW4gVmVyc2lvbjogMC4zCiAgIFBsdWdpbiBBdXRo b3I6IHdheW5lCiAgIEF1dGhvciBIb21lcGFnZTogaHR0cDovL2dvcGhlcndvb2QuaW5mbwog ICBHb29nbGUgQ29kZXM6IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC93eW4tdHhwLXBsdWdp bnMvCiAqLwoKZnVuY3Rpb24gd3luX2NvbW1lbnRfc29mYV9maXhfd2ViICgkd2ViKSB7Cgkk b3V0ID0gJyMnOwoJaWYgKGlzc2V0ICgkd2ViKSAmJiAkd2ViICE9ICcnKSB7CgkJaWYgKHBy ZWdfbWF0Y2ggKCcvaHR0cDpcL1wvLycsICR3ZWIpKSB7CgkJCSRvdXQgPSAkd2ViOwoJfSBl bHNlIHsKCQkkb3V0ID0gJ2h0dHA6Ly8nIC4gJHdlYjsKCX0KCX0KCglyZXR1cm4gJG91dDsK fQoKZnVuY3Rpb24gd3luX2NvbW1lbnRfc29mYSAoJGtleXdvcmQsICRza2lwLCAkbGltaXQp IHsKCSRvdXQgPSBhcnJheSAoKTsKCgkkc3MgPSBzcGxpdCAoJzsnLCAkc2tpcCk7CgoJaWYg KCduYW1lJyAhPSAka2V5d29yZCAmJiAnZW1haWwnICE9ICRrZXl3b3JkKSB7CgkJcmV0dXJu OwoJfQoKCSRjb25kID0gJGtleXdvcmQgLiAiPD4nJyBhbmQgdmlzaWJsZT0nMScgIjsKCWZv cmVhY2ggKCRzcyBhcyAkcykgewoJCSRjb25kIC49ICIgYW5kICgiIC4gJGtleXdvcmQgLiAi PD4nIiAuIHRyaW0gKCRzKSAuICInKSAiOwoJfQoKCSRzcWwgPSAiU0VMRUNUIG5hbWUsIHdl YiwgQ09VTlQoICogKSBhcyBjb3VudAoJCQlGUk9NIHR4cF9kaXNjdXNzICIgLiBzYWZlX3Bm eCgndHhwX2Rpc2N1c3MnKSAuICIKCQkJV0hFUkUgIiAuICRjb25kIC4gIgoJCQlHUk9VUCBC WSAiIC4gJGtleXdvcmQgLiAiCgkJCU9SREVSIEJZIGNvdW50IERFU0MKCQkJTElNSVQgMCAs ICIgLiAkbGltaXQgLiAiOyI7CgoJJHJzID0gc3RhcnRSb3dzICgkc3FsKTsKCglpZiAoJHJz KSB7CgkJd2hpbGUgKCRjID0gbmV4dFJvdygkcnMpKSB7CgkJCSRvdXRbXSA9ICRjOwoJCX0K CX0KCglyZXR1cm4gJG91dDsKfQoKZnVuY3Rpb24gd3luX2NvbW1lbnRfc29mYV9saXN0ICgk YXR0cywgJG5vdGhpbmcgPSAiIikgewoJZXh0cmFjdCAobEF0dHMgKGFycmF5ICgKCSd3cmFw dGFnJyA9PiAndWwnLAoJJ2JyZWFrJyAgPT4gJ2xpJywKCSdza2lwJyA9PiAnJywKCSdsYWJl bCcgPT4gJycsCgknbGFiZWx0YWcnID0+ICcnLAoJJ2xpbWl0JyAgICA9PiAxMCwKCSdzaG93 Y291bnQnID0+IDEsCgknY2xhc3MnICAgID0+IF9fRlVOQ1RJT05fXywKCSdrZXl3b3JkJyAg ICA9PiAnbmFtZScsCgkncmVzdHJpY3RlZCcgPT4gMCwKCSksICRhdHRzKSk7CgogICRvdXQg PSBOVUxMOwogIGlmICgkcmVzdHJpY3RlZCkgewogIAkkb3V0ID0gd3luX2NvbW1lbnRfc29m YV9yZXN0cmljdCAoJGtleXdvcmQsICRza2lwLCAkbGltaXQpOwogIH0gZWxzZSB7CiAgICAk b3V0ID0gd3luX2NvbW1lbnRfc29mYSAoJGtleXdvcmQsICRza2lwLCAkbGltaXQpOwoJfQoJ aWYgKCRvdXQpIHsKCQkkaHRtbCA9IGFycmF5ICgpOwoJCWZvcmVhY2ggKCRvdXQgYXMgJHNv ZmEpIHsKCQkJJHdlYiA9IHd5bl9jb21tZW50X3NvZmFfZml4X3dlYiAoJHNvZmFbJ3dlYidd KTsKCQkJJGh0bWxbXSA9ICc8YSBocmVmPSInIC4gJHdlYiAuICciPicgLiAkc29mYVsnbmFt ZSddIC4gKCRzaG93Y291bnQgPyAnICgnIC4gJHNvZmFbJ2NvdW50J10gLiAnKScgOiAnJykg LiAnPC9hPic7CgkJfQoKCQlyZXR1cm4gZG9MYWJlbCAoJGxhYmVsLCAkbGFiZWx0YWcpIC4g ZG9XcmFwICgkaHRtbCwgJHdyYXB0YWcsICRicmVhaywgJGNsYXNzKTsKCX0KfQoKZnVuY3Rp b24gd3luX2NvbW1lbnRfc29mYV9jbG91ZCAoJGF0dHMsICRub3RoaW5nID0gIiIpIHsKCWV4 dHJhY3QgKGxBdHRzIChhcnJheSAoCgknd3JhcHRhZycgPT4gJycsCgknc2tpcCcgPT4gJycs CgknbGFiZWwnID0+ICcnLAoJJ2xhYmVsdGFnJyA9PiAnJywKCSdsaW1pdCcgICAgPT4gMTAs CgknY2xhc3MnICAgID0+IF9fRlVOQ1RJT05fXywKCSdtYXhzaXplJyA9PiAyMDAsCgknbWlu c2l6ZScgPT4gNTAsCgknYnJlYWsnID0+ICcgJywKCSdzaG93Y291bnQnID0+IDEsCgkna2V5 d29yZCcgICAgPT4gJ25hbWUnLAoJJ3Jlc3RyaWN0ZWQnID0+IDAsCgkpLCAkYXR0cykpOwoK ICAkb3V0ID0gTlVMTDsKICBpZiAoJHJlc3RyaWN0ZWQpIHsKICAJJG91dCA9IHd5bl9jb21t ZW50X3NvZmFfcmVzdHJpY3QgKCRrZXl3b3JkLCAkc2tpcCwgJGxpbWl0KTsKICB9IGVsc2Ug ewogICAgJG91dCA9IHd5bl9jb21tZW50X3NvZmEgKCRrZXl3b3JkLCAkc2tpcCwgJGxpbWl0 KTsKCX0KCglpZiAoJG91dCkgewoJCXJldHVybiBkb0xhYmVsICgkbGFiZWwsICRsYWJlbHRh ZykgLiBkb0Nsb3VkICgkb3V0LCAkd3JhcHRhZywgJGNsYXNzLCAkbWF4c2l6ZSwgJG1pbnNp emUsICRicmVhaywgJHNob3djb3VudCk7Cgl9Cn0KCgpmdW5jdGlvbiBkb0Nsb3VkICgkb3V0 LCAkd3JhcHRhZywgJGNsYXNzLCAkbWF4c2l6ZSwgJG1pbnNpemUsICRicmVhaywgJHNob3dj b3VudCkgewoJJGh0bWwgPSAiIjsKCgkkZmlyc3QgPSBhcnJheV9zaGlmdCAoJG91dCk7Cgkk bWF4Y291bnQgPSAoaW50KSAkZmlyc3RbJ2NvdW50J107CglhcnJheV91bnNoaWZ0ICgkb3V0 LCAkZmlyc3QpOwoKCSRlbmQgPSBlbmQgKCRvdXQpOwoJJG1pbmNvdW50ID0gKGludCkgJGVu ZFsnY291bnQnXTsKCgkkY291bnRyYW5nZSA9ICRtYXhjb3VudCAtICRtaW5jb3VudDsKCSRz aXplcmFuZ2UgPSAkbWF4c2l6ZSAtICRtaW5zaXplOwoKCSRyYW5rID0gJHNpemVyYW5nZSAv ICRjb3VudHJhbmdlOwoKCSRzaXplID0gY291bnQgKCRvdXQpOwoJZm9yICgkaSA9IDA7ICRp IDwgJHNpemU7ICRpKyspIHsKCQkkc29mYV9rZXkgPSBhcnJheV9yYW5kICgkb3V0KTsKCQkk c29mYSA9ICRvdXRbJHNvZmFfa2V5XTsKCQkkZm9udHNpemUgPSAoKGludCkgJHNvZmFbJ2Nv dW50J10gLSAkbWluY291bnQpICogJHJhbmsgKyAkbWluc2l6ZTsKCQkkd2ViID0gd3luX2Nv bW1lbnRfc29mYV9maXhfd2ViICgkc29mYVsnd2ViJ10pOwoKCQkkaHRtbCAuPSAoJGkgPyAk YnJlYWsgOiAnJykgLiAnPGEgaHJlZj0iJyAuICR3ZWIgLiAnIiBzdHlsZT0iZm9udC1zaXpl OicgLiAkZm9udHNpemUgLiAnJTsiPicgLiAkc29mYVsnbmFtZSddIC4gKCRzaG93Y291bnQg PyAnPHN1cD4nIC4gJHNvZmFbJ2NvdW50J10gLiAnPC9zdXA+JyA6ICcnKSAuICc8L2E+JzsK CgkJdW5zZXQgKCRvdXRbJHNvZmFfa2V5XSk7Cgl9CgoJcmV0dXJuICR3cmFwdGFnICE9ICcn ID8gJzwnIC4gJHdyYXB0YWcgLiAnIGNsYXNzPSInIC4gJGNsYXNzIC4gJyI+JyAuICRodG1s IC4gJzwvJyAuICR3cmFwdGFnIC4gJz4nIDogJGh0bWw7Cn0KCmZ1bmN0aW9uIHd5bl9jb21t ZW50X3NvZmFfcmVzdHJpY3QgKCRrZXl3b3JkLCAkc2tpcCwgJGxpbWl0KSB7Cgkkb3V0ID0g YXJyYXkgKCk7CgoJJHNzID0gc3BsaXQgKCc7JywgJHNraXApOwoKCWlmICgnbmFtZScgIT0g JGtleXdvcmQgJiYgJ2VtYWlsJyAhPSAka2V5d29yZCkgewoJCXJldHVybjsKCX0KCgoJJHNx bF9pZCA9ICJTRUxFQ1QgSUQKCQkJRlJPTSAiIC4gc2FmZV9wZngoJ3RleHRwYXR0ZXJuJykg LiAiCgkJCVdIRVJFIGNvbW1lbnRzX2NvdW50PD4nMCc7IjsKCgkkcnNfaWQgPSBzdGFydFJv d3MgKCRzcWxfaWQpOwoJaWYgKCRyc19pZCkgewoJCSRjb25kID0gJGtleXdvcmQgLiAiPD4n JyBhbmQgdmlzaWJsZT0nMScgIjsKCQlmb3JlYWNoICgkc3MgYXMgJHMpIHsKCQkJJGNvbmQg Lj0gIiBhbmQgKCIgLiAka2V5d29yZCAuICI8PiciIC4gdHJpbSAoJHMpIC4gIicpICI7CgkJ fQoKCQkkY29tbWVudG9ycyA9IGFycmF5ICgpOwoJCSRzb2ZhcyA9IGFycmF5ICgpOwoKCQl3 aGlsZSAoJHIgPSBuZXh0Um93ICgkcnNfaWQpKSB7CgkJCSRzcWwgPSAiU0VMRUNUIG5hbWUs IHdlYiwgZW1haWwKCQkJCUZST00gIiAuIHNhZmVfcGZ4ICgndHhwX2Rpc2N1c3MnKSAuICIK CQkJCVdIRVJFICIgLiAkY29uZCAuICIgYW5kIChwYXJlbnRpZD0nIiAuICRyWydJRCddIC4g IicpCgkJCQlPUkRFUiBCWSBwb3N0ZWQKCQkJCWxpbWl0IDE7IjsKCgkJCSRycyA9IHN0YXJ0 Um93cyAoJHNxbCk7CgkJCWlmICgkcnMpIHsKCQkJCWlmICgkYyA9IG5leHRSb3coJHJzKSkg ewoJCQkJCSRrZXkgPSAkY1ska2V5d29yZF07CgkJCQkJYXJyYXlfcHVzaCAoJHNvZmFzLCAk a2V5KTsKCQkJCQlpZiAoIWlzc2V0ICgkY29tbWVudG9yc1ska2V5XSkpIHsKCQkJCQkJJGNv bW1lbnRvcnNbJGtleV0gPSAkYzsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgoJCSRzb2ZhcyA9 IGFycmF5X2NvdW50X3ZhbHVlcyAoJHNvZmFzKTsKCQlhcnNvcnQgKCRzb2Zhcyk7CgoJCSRv dXQgPSBhcnJheSAoKTsKCQkkY291bnQgPSAwOwoJCSRzb2ZhX3VzcnMgPSBhcnJheV9rZXlz ICgkc29mYXMpOwoJCWZvcmVhY2ggKCRzb2ZhX3VzcnMgYXMgJHNvZmFfdXNyKSB7CgkJCWlm ICgkY291bnQrKyA+ICRsaW1pdCkgewoJCQkJYnJlYWs7CgkJCX0KCgkJCSRvdXRbXSA9IGFy cmF5ICgKCQkJCQknbmFtZScgPT4gJGNvbW1lbnRvcnNbJHNvZmFfdXNyXVsnbmFtZSddLAoJ CQkJCSd3ZWInID0+ICRjb21tZW50b3JzWyRzb2ZhX3Vzcl1bJ3dlYiddLAoJCQkJCSdlbWFp bCcgPT4gJGNvbW1lbnRvcnNbJHNvZmFfdXNyXVsnZW1haWwnXSwKCQkJCQknY291bnQnID0+ ICRzb2Zhc1skc29mYV91c3JdCgkJCQkpOwoJCQl9CgoJCXJldHVybiAkb3V0OwoJfQp9CiI7 czozOiJtZDUiO3M6MzI6IjUxZjFhOGZlMWNhNTQwNDMyY2ZhMWU0Njg5MWM1ZDU4Ijt9