Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#61 2012-07-09 15:50:46

spyke584
New Member
Registered: 2012-07-01
Posts: 2

Re: [plugin] [ORPHAN] ajw_comments_feed

yes, but this is 0.5 version and i want latest version (0.6)

Offline

#62 2012-09-09 13:22:56

quicknquiet
Member
From: Moscow
Registered: 2012-07-02
Posts: 11

Re: [plugin] [ORPHAN] ajw_comments_feed

Anybody has the code?

Offline

#63 2012-09-09 15:48:28

Pat64
Plugin Author
From: France
Registered: 2005-12-12
Posts: 1,643
GitHub Twitter

Re: [plugin] [ORPHAN] ajw_comments_feed

Maybe that’s what you’re looking for:

# ajw_comments_feed v0.6
# Extends RSS & Atom to allow for comments feeds.
# http://compooter.org/
# ......................................................................
# This is a plugin for Textpattern - http://textpattern.com/
# To install: textpattern > admin > plugins
# Paste the following text into the 'Install plugin' box:
# ......................................................................
YToxMTp7czo0OiJuYW1lIjtzOjE3OiJhandfY29tbWVudHNfZmVlZCI7czo3OiJ2ZXJzaW9u
IjtzOjM6IjAuNiI7czo2OiJhdXRob3IiO3M6MTE6IkFuZHJldyBXYWVyIjtzOjEwOiJhdXRo
b3JfdXJpIjtzOjIxOiJodHRwOi8vY29tcG9vdGVyLm9yZy8iO3M6MTE6ImRlc2NyaXB0aW9u
IjtzOjQ3OiJFeHRlbmRzIFJTUyAmIEF0b20gdG8gYWxsb3cgZm9yIGNvbW1lbnRzIGZlZWRz
LiI7czo0OiJ0eXBlIjtpOjA7czo0OiJoZWxwIjtzOjE0NDQ6Igk8aDI+U3VtbWFyeTwvaDI+
Cgk8cD5FeHRlbmRzIFJTUyAmIzM4OyBBdG9tIGZ1bmN0aW9uYWxpdHkgdG8gYWxsb3cgZm9y
IHNpdGV3aWRlLCBwZXItc2VjdGlvbiwgcGVyLWNhdGVnb3J5LCBvciBwZXItYXJ0aWNsZSBj
b21tZW50cyBmZWVkcy4gIEl0IHdvcmtzIGV4YWN0bHkgbGlrZSBub3JtYWwgZmVlZCB1cmxz
LCBidXQgbGlzdGVucyBmb3IgPGNvZGU+JyYjMzg7YXJlYT1jb21tZW50cyc8L2NvZGU+LiBG
b3IgZXhhbXBsZSwgPGNvZGU+aHR0cDovL2RvbWFpbi50bGQvP3Jzcz0xJiMzODthcmVhPWNv
bW1lbnRzPC9jb2RlPiBPUiA8Y29kZT5odHRwOi8vZG9tYWluLnRsZC8/cnNzPTEmIzM4O2Fy
ZWE9Y29tbWVudHMmIzM4O2lkPTEyMzwvY29kZT4uPC9wPgoJPGgyPlNldHVwPC9oMj4KCTxw
Pk5vIHNldHVwIG5lZWRlZC4gIFNpbXBseSBpbnN0YWxsICYjMzg7IGFjdGl2YXRlIHRoZSBw
bHVnaW4gYW5kICYjODIxMjsgPGVtPnZvaWxhITwvZW0+ICYjODIxMjsgeW91ciBjb21tZW50
IGZlZWRzIGFyZSBnb29kIHRvIGdvLjwvcD4KCTxoMj5handfY29tbWVudHNfZmVlZF9saW5r
PC9oMj4KCTxwPkZ1bmN0aW9ucyBleGFjdGx5IGFzIDxjb2RlPiZsdDt0eHA6ZmVlZF9saW5r
IC8mZ3Q7PC9jb2RlPi4gIEFjY2VwYWJsZSBhdHRyaWJ1dGVzIGluY2x1ZGU6IDxjb2RlPnNp
dGV3aWRlPC9jb2RlPiwgPGNvZGU+d3JhcHRhZzwvY29kZT4sIDxjb2RlPmxpbWl0PC9jb2Rl
PiwgPGNvZGU+Zmxhdm9yPC9jb2RlPiwgPGNvZGU+bGFiZWw8L2NvZGU+LCAmIzM4OyA8Y29k
ZT50aXRsZTwvY29kZT48L3A+Cgk8cD5UaGUgPGNvZGU+c2l0ZXdpZGU8L2NvZGU+IGF0dHJp
YnV0ZSBhbGxvd3MgeW91IHRvIHVzZSBhIGNvbW1lbnRzIGZlZWQgbGluayBpbiBhIHRlbXBs
YXRlIHRoYXQgYWx3YXlzIHJlZmVycyB0byBhIHNpdGV3aWRlIGZlZWQgbGluaywgcmF0aGVy
IHRoYW4gYXJ0aWNsZS1zcGVjaWZpYy4gIEZvciBpbnN0YW5jZSwgPGNvZGU+c2l0ZXdpZGU9
InkiPC9jb2RlPiB3aWxsIGNhdXNlIGFuIFJTUyBmZWVkIGxpbmsgdXJsIHRvIGJlY29tZSA8
Y29kZT5odHRwOi8vc2l0ZS50bGQvP3Jzcz0xJiMzODthcmVhPWNvbW1lbnRzPC9jb2RlPiAo
bm8gPGNvZGU+aWQ8L2NvZGU+IHZhcmlhYmxlKS48L3A+Cgk8aDI+RGlzY2xhaW1lcjwvaDI+
Cgk8cD5UaGlzIGZ1bmN0aW9uIHVzZXMgZmVlZCBmb3JtYXR0aW5nIGNvZGUtYmFzZSBmcm9t
IFRleHRwYXR0ZXJuIDxhIGhyZWY9Imh0dHA6Ly9kZXYudGV4dHBhdHRlcm4uY29tL2Jyb3dz
ZXIvZGV2ZWxvcG1lbnQvNC4wLz9yZXY9MTY4MiI+djQuMC40IHIxNjgyPC9hPiwgdGh1cyA8
c3Ryb25nPmFueSBwcm9ibGVtcyBvciBidWdzIHRoYXQgZXhpc3QgaW4gVGV4dHBhdHRlcm4m
IzgyMTc7cyBSU1MvQXRvbSBvdXRwdXQgd2lsbCBiZSBjb250YWluZWQgd2l0aGluIHRoaXMg
cGx1Z2luPC9zdHJvbmc+LjwvcD4KCiAiO3M6NDoiY29kZSI7czoxMzE5ODoiCglAaW5jbHVk
ZV9wbHVnaW4oJ2Fqd19jbGVhbl9mZWVkJyk7CgoJaWYgKEB0eHBpbnRlcmZhY2UgPT0gJ3B1
YmxpYycpCgkJcmVnaXN0ZXJfY2FsbGJhY2soImFqd19jb21tZW50c19mZWVkIiwgJ3ByZXRl
eHQnKTsKCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KCWZ1bmN0aW9uIGFqd19jb21tZW50c19mZWVkKCkKCXsKCQlp
ZiAoZ3BzKCdyc3MnKSAmJiBncHMoJ2FyZWEnKSA9PSAnY29tbWVudHMnKQoJCQlleGl0KGFq
d19jb21tZW50c19mZWVkX3JzcygpKTsKCgkJaWYgKGdwcygnYXRvbScpICYmIGdwcygnYXJl
YScpID09ICdjb21tZW50cycpCgkJCWV4aXQoYWp3X2NvbW1lbnRzX2ZlZWRfYXRvbSgpKTsK
CX0KCi8vICB0ZW1wbGF0ZSB0YWcsIHdoaWNoIG91dHB1dHMgbGluayB0byBjb21tZW50cyBm
ZWVkCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KICAgIGZ1bmN0aW9uIGFqd19jb21tZW50c19mZWVkX2xpbmsoJGF0
dHMpCiAgICB7CgkJZ2xvYmFsICRpZDsKCgkJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkgICAg
J2xhYmVsJyAgICA9PiAnQ29tbWVudHMgWE1MIGZlZWQnLAoJCQknd3JhcHRhZycgID0+ICcn
LAoJCQknbGltaXQnICAgID0+ICcnLAoJCQknZmxhdm9yJyAgID0+ICdyc3MnLAoJCQkndGl0
bGUnICAgID0+ICdDb21tZW50cyBYTUwgZmVlZCcsCgkJCSdzaXRld2lkZScgPT4gJ24nCgkJ
KSwkYXR0cykpOwoKICAgICAgICAkYWlkICAgPSAoJGlkICYmICRzaXRld2lkZT09J24nKSA/
IGEuJ2lkPScuJGlkIDogJyc7CgkJJGxpbWl0ID0gKCRsaW1pdCkgPyBhLidsaW1pdD0nLnVy
bGVuY29kZSgkbGltaXQpIDogJyc7CgoJCSRvdXQgPSAnPGEgaHJlZj0iJy5odS4nPycuJGZs
YXZvci4nPTEnLmEuJ2FyZWE9Y29tbWVudHMnLiRhaWQuCgkJCSRsaW1pdC4nIiB0aXRsZT0i
Jy4kdGl0bGUuJyI+Jy4kbGFiZWwuJzwvYT4nOwoKCQlyZXR1cm4gKCR3cmFwdGFnKSA/IHRh
Zygkb3V0LCR3cmFwdGFnKSA6ICRvdXQ7CiAgICB9CgovLyAgYmFzZWQgb24gcnNzLnBocCAt
PiByc3MoKSByMTIyOAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCglmdW5jdGlvbiBhandfY29tbWVudHNfZmVlZF9y
c3MoKQoJewoJCWluY2x1ZGUgdHhwYXRoLicvcHVibGlzaC9yc3MucGhwJzsKCgkJZ2xvYmFs
ICRwcmVmcywkdGhpc2FydGljbGU7CgkJZXh0cmFjdCgkcHJlZnMpOwoKCQlleHRyYWN0KGRv
U2xhc2goZ3BzYShhcnJheSgnY2F0ZWdvcnknLCdzZWN0aW9uJywnbGltaXQnLCdpZCcpKSkp
OwoKCQkkY3RpdGxlID0gKCRpZCkgPyAnIC0gJy5mZXRjaCgnVGl0bGUnLCd0ZXh0cGF0dGVy
bicsJ0lEJywkaWQpIDogJyc7CgoJCSRzaXRlbmFtZSAuPSAnIENvbW1lbnRzJy4kY3RpdGxl
OwoJCSRzaXRlbmFtZSAuPSAoJHNlY3Rpb24pID8gJyAtICcuJHNlY3Rpb24gOiAnJzsKCQkk
c2l0ZW5hbWUgLj0gKCRjYXRlZ29yeSkgPyAnIC0gJy4kY2F0ZWdvcnkgOiAnJzsKCQkkZG4g
PSBleHBsb2RlKCcvJywkc2l0ZXVybCk7CgkJJG1haWxfb3JfZG9tYWluID0gKCR1c2VfbWFp
bF9vbl9mZWVkc19pZCk/IGVFKCRibG9nX21haWxfdWlkKTokZG5bMF07CgoJCSRvdXRbXSA9
IHRhZygnaHR0cDovL3RleHRwYXR0ZXJuLmNvbS8/dj0nLiR2ZXJzaW9uLCAnZ2VuZXJhdG9y
Jyk7CgkJJG91dFtdID0gdGFnKGRvU3BlY2lhbCgkc2l0ZW5hbWUpLCd0aXRsZScpOwoJCSRv
dXRbXSA9IHRhZyhodSwnbGluaycpOwoJCSRvdXRbXSA9IHRhZyhkb1NwZWNpYWwoJHNpdGVf
c2xvZ2FuKSwnZGVzY3JpcHRpb24nKTsKCQkkbGFzdCA9IGZldGNoKCd1bml4X3RpbWVzdGFt
cCh2YWwpJywndHhwX3ByZWZzJywnbmFtZScsJ2xhc3Rtb2QnKTsKCQkkb3V0W10gPSB0YWco
c2FmZV9zdHJmdGltZSgncmZjODIyJywkbGFzdCksJ3B1YkRhdGUnKTsKCgkJJGFydGljbGVz
ID0gYXJyYXkoKTsKCiAgICAgICAgJHNmaWx0ZXIgPSAoJHNlY3Rpb24pID8gImFuZCBTZWN0
aW9uPSciLiRzZWN0aW9uLiInIiA6ICcnOwoJCSRjZmlsdGVyID0gKCRjYXRlZ29yeSkKCQkJ
PyAiYW5kIChDYXRlZ29yeTE9JyIuJGNhdGVnb3J5LiInIG9yIENhdGVnb3J5Mj0nIi4kY2F0
ZWdvcnkuIicpICI6Jyc7CgkJJGxpbWl0ID0gKCRsaW1pdCkgPyAkbGltaXQgOiAkcnNzX2hv
d19tYW55OwoJCSRsaW1pdCA9IG1pbigkbGltaXQsbWF4KDEwMCwkcnNzX2hvd19tYW55KSk7
CgkJJHF1ZXJ5ID0gYXJyYXkoKTsKCgkJaWYgKCRpZCkgJHF1ZXJ5W10gPSAoJGlkKSA/ICJh
bmQgcGFyZW50aWQ9JyIuJGlkLiInICIgOiAnJzsKCiAgICAgICAgaWYgKCRzZWN0aW9uIHx8
ICRjYXRlZ29yeSkKCQl7CiAgICAJCSRmcnMgPSBzYWZlX2NvbHVtbigibmFtZSIsICJ0eHBf
c2VjdGlvbiIsICJpbl9yc3MgIT0gJzEnIik7CiAgICAJCWlmICgkZnJzKSBmb3JlYWNoKCRm
cnMgYXMgJGYpICRxdWVyeVtdID0gImFuZCBTZWN0aW9uIT0nIi5kb1NsYXNoKCRmKS4iJyI7
CiAgICAJCSRxdWVyeVtdID0gJHNmaWx0ZXI7CiAgICAJCSRxdWVyeVtdID0gJGNmaWx0ZXI7
CiAgICAgICAgICAgICRxID0KICAgICAgICAgICAgICAgICJTRUxFQ1QgdDEuKiwgdW5peF90
aW1lc3RhbXAodDEucG9zdGVkKSBhcyBwb3N0ZWQsIHQyLlNlY3Rpb24sIHQyLkNhdGVnb3J5
MSwgdDIuQ2F0ZWdvcnkyICIuCiAgICAJCQkiRlJPTSAiLgogICAgCQkJImAiLlBGWC4idHhw
X2Rpc2N1c3NgIEFTIHQxICIuCiAgICAJCSAgICAiTEVGVCBKT0lOIGAiLlBGWC4idGV4dHBh
dHRlcm5gIEFTIHQyICIuCiAgICAJCSAgICAiT04gdDEucGFyZW50aWQ9dDIuSUQgIi4KICAg
IAkJICAgICJXSEVSRSB2aXNpYmxlPScxJyAiLmpvaW4oJyAnLCRxdWVyeSkuCiAgICAJCQki
T1JERVIgQlkgcG9zdGVkIERFU0MgIi4KICAgIAkJCSJMSU1JVCAkbGltaXQiOwoJCX0gZWxz
ZQoJCXsKICAgICAgICAgICAgJHEgPQogICAgICAgICAgICAgICAgIlNFTEVDVCAqLCB1bml4
X3RpbWVzdGFtcChwb3N0ZWQpIGFzIHBvc3RlZCAiLgogICAgCQkJIkZST00gYCIuUEZYLiJ0
eHBfZGlzY3Vzc2AgIi4KICAgIAkJICAgICJXSEVSRSB2aXNpYmxlPScxJyAiLmpvaW4oJyAn
LCRxdWVyeSkuCiAgICAJCQkiT1JERVIgQlkgcG9zdGVkIERFU0MgIi4KICAgIAkJCSJMSU1J
VCAkbGltaXQiOwoJCX0KCgkJJHJzID0gc3RhcnRSb3dzKCRxKTsKCgkJaWYoJHJzKQoJCXsK
CQkJd2hpbGUgKCRhID0gbmV4dFJvdygkcnMpKQoJCQl7CgoJCQkJZXh0cmFjdCgkYSk7CgkJ
CQkkYXJ0aWNsZSA9IHNhZmVfcm93KCcqLCB1bml4X3RpbWVzdGFtcChQb3N0ZWQpIGFzIHBv
c3RlZCcsJ3RleHRwYXR0ZXJuJywiSUQ9JyRwYXJlbnRpZCciKTsKCgkJCQkkbmFtZSA9IGh0
bWxzcGVjaWFsY2hhcnMoJG5hbWUpOwoJCQkJJHRpdGxlID0gZXNjYXBlX291dHB1dChzdHJp
cF90YWdzKCRhcnRpY2xlWydUaXRsZSddKSk7CgkJCQkkcGVybWxpbmsgPSBwZXJtbGlua3Vy
bCgkYXJ0aWNsZSkuJyNjJy4kZGlzY3Vzc2lkOwoKCQkJCSRjb250ZW50ID0gdHJpbShyZXBs
YWNlX3JlbGF0aXZlX3VybHMoCgkJCQkJcGFyc2UoCgkJCQkJCWdyYWYodGFnKCR0aXRsZSwn
c3Ryb25nJykpIC4gJG1lc3NhZ2UKCQkJCQkpLAoJCQkJCSRwZXJtbGluawoJCQkJKSk7CgoJ
CQkJJGl0ZW0gPSB0YWcoImJ5OiAkbmFtZSAoJHRpdGxlKSIsJ3RpdGxlJykubi4KCQkJCQl0
YWcoJHBlcm1saW5rLCdsaW5rJykubi4KCQkJCQkodHJpbSgkY29udGVudCkgPyB0YWcobi5l
c2NhcGVfY2RhdGEoJGNvbnRlbnQpLm4sJ2NvbnRlbnQ6ZW5jb2RlZCcpLm4gOiAnJykuCgkJ
CQkJdGFnKHNhZmVfc3RyZnRpbWUoJ3JmYzgyMicsJHBvc3RlZCksJ3B1YkRhdGUnKS5uLgoJ
CQkJCXRhZygkbmFtZSwnZGM6Y3JlYXRvcicpLm4uCgkJCQkJdGFnKCd0YWc6Jy4kbWFpbF9v
cl9kb21haW4uJywnLnNhZmVfc3RyZnRpbWUoIlktbS1kIiwkcG9zdGVkKS4nOicuJGJsb2df
dWlkLicvJy4kZGlzY3Vzc2lkLCAnZ3VpZCcsICcgaXNQZXJtYUxpbms9ImZhbHNlIicpOwoK
CQkJCSRhcnRpY2xlc1skZGlzY3Vzc2lkXSA9IHRhZygkaXRlbSwnaXRlbScpOwoKCQkJCSRl
dGFnc1skZGlzY3Vzc2lkXSA9IHN0cnRvdXBwZXIoZGVjaGV4KGNyYzMyKCRhcnRpY2xlc1sk
ZGlzY3Vzc2lkXSkpKTsKCQkJCSRkYXRlc1skZGlzY3Vzc2lkXSA9ICRwb3N0ZWQ7CgoJCQl9
CgkJfQoKCQkgIC8vdHVybiBvbiBjb21wcmVzc2lvbiBpZiB3ZSBhcmVuJ3QgdXNpbmcgaXQg
YWxyZWFkeQoJCWlmIChleHRlbnNpb25fbG9hZGVkKCd6bGliJykgJiYgaW5pX2dldCgiemxp
Yi5vdXRwdXRfY29tcHJlc3Npb24iKSA9PSAwICYmIGluaV9nZXQoJ291dHB1dF9oYW5kbGVy
JykgIT0gJ29iX2d6aGFuZGxlcicgJiYgIWhlYWRlcnNfc2VudCgpKSB7CgkJICBAb2Jfc3Rh
cnQoIm9iX2d6aGFuZGxlciIpOwoJCX0KCgkJJGxhc3QgPSBmZXRjaCgndW5peF90aW1lc3Rh
bXAodmFsKScsJ3R4cF9wcmVmcycsJ25hbWUnLCdsYXN0bW9kJyk7CgkJJGV4cGlyZXMgPSBn
bWRhdGUoJ0QsIGQgTSBZIEg6aTpzIFxHXE1cVCcsIHRpbWUoKSsoMzYwMCoxKSk7CgkJaGVh
ZGVyKCJFeHBpcmVzOiAkZXhwaXJlcyIpOwoJCSRoaW1zID0gc2VydmVyc2V0KCdIVFRQX0lG
X01PRElGSUVEX1NJTkNFJyk7CgkJJGltc2QgPSAoJGhpbXMpID8gc3RydG90aW1lKCRoaW1z
KSA6IDA7CgoJCWlmICgkaW1zZCA+PSAkbGFzdCkgewoJCQkJdHhwX3N0YXR1c19oZWFkZXIo
IjMwNCBOb3QgTW9kaWZpZWQiKTsgZXhpdDsKCQl9CgoJCWhlYWRlcigiTGFzdC1Nb2RpZmll
ZDogIi5nbWRhdGUoJ0QsIGQgTSBZIEg6aTpzIFxHXE1cVCcsJGxhc3QpKTsKCgoJCWlmIChp
c19jYWxsYWJsZSgnYXBhY2hlX3JlcXVlc3RfaGVhZGVycycpKQoJCXsKCQ

Or this one:

YTo5OntzOjQ6Im5hbWUiO3M6MTc6ImFqd19jb21tZW50c19mZWVkIjtzOjY6ImF1dGhvciI7czoxMToiQW5kcmV3IFdhZXIiO3M6MTA6ImF1dGhvcl91cmkiO3M6MjE6Imh0dHA6Ly9jb21wb290ZXIub3JnLyI7czo3OiJ2ZXJzaW9uIjtzOjM6IjAuNiI7czoxMToiZGVzY3JpcHRpb24iO3M6NDc6IkV4dGVuZHMgUlNTICYgQXRvbSB0byBhbGxvdyBmb3IgY29tbWVudHMgZmVlZHMuIjtzOjQ6ImhlbHAiO3M6MTU0ODoiCTxoMj5TdW1tYXJ5PC9oMj4KCgk8cD5FeHRlbmRzIDxzcGFuIGNsYXNzPSJjYXBzIj5SU1M8L3NwYW4+ICYjMzg7IEF0b20gZnVuY3Rpb25hbGl0eSB0byBhbGxvdyBmb3Igc2l0ZXdpZGUsIHBlci1zZWN0aW9uLCBwZXItY2F0ZWdvcnksIG9yIHBlci1hcnRpY2xlIGNvbW1lbnRzIGZlZWRzLiAgSXQgd29ya3MgZXhhY3RseSBsaWtlIG5vcm1hbCBmZWVkIHVybHMsIGJ1dCBsaXN0ZW5zIGZvciA8Y29kZT4nJiMzODthcmVhPWNvbW1lbnRzJzwvY29kZT4uIEZvciBleGFtcGxlLCA8Y29kZT5odHRwOi8vZG9tYWluLnRsZC8/cnNzPTEmIzM4O2FyZWE9Y29tbWVudHM8L2NvZGU+IE9SIDxjb2RlPmh0dHA6Ly9kb21haW4udGxkLz9yc3M9MSYjMzg7YXJlYT1jb21tZW50cyYjMzg7aWQ9MTIzPC9jb2RlPi48L3A+CgoJPGgyPlNldHVwPC9oMj4KCgk8cD5ObyBzZXR1cCBuZWVkZWQuICBTaW1wbHkgaW5zdGFsbCAmIzM4OyBhY3RpdmF0ZSB0aGUgcGx1Z2luIGFuZCAgJiM4MjEyOyAgPGVtPnZvaWxhITwvZW0+ICAmIzgyMTI7ICB5b3VyIGNvbW1lbnQgZmVlZHMgYXJlIGdvb2QgdG8gZ28uPC9wPgoKCTxoMj5handfY29tbWVudHNfZmVlZF9saW5rPC9oMj4KCgk8cD5GdW5jdGlvbnMgZXhhY3RseSBhcyA8Y29kZT4mIzYwO3R4cDpmZWVkX2xpbmsgLyYjNjI7PC9jb2RlPi4gIEFjY2VwYWJsZSBhdHRyaWJ1dGVzIGluY2x1ZGU6IDxjb2RlPnNpdGV3aWRlPC9jb2RlPiwgPGNvZGU+d3JhcHRhZzwvY29kZT4sIDxjb2RlPmxpbWl0PC9jb2RlPiwgPGNvZGU+Zmxhdm9yPC9jb2RlPiwgPGNvZGU+bGFiZWw8L2NvZGU+LCAmIzM4OyA8Y29kZT50aXRsZTwvY29kZT48L3A+CgoJPHA+VGhlIDxjb2RlPnNpdGV3aWRlPC9jb2RlPiBhdHRyaWJ1dGUgYWxsb3dzIHlvdSB0byB1c2UgYSBjb21tZW50cyBmZWVkIGxpbmsgaW4gYSB0ZW1wbGF0ZSB0aGF0IGFsd2F5cyByZWZlcnMgdG8gYSBzaXRld2lkZSBmZWVkIGxpbmssIHJhdGhlciB0aGFuIGFydGljbGUtc3BlY2lmaWMuICBGb3IgaW5zdGFuY2UsIDxjb2RlPnNpdGV3aWRlPSJ5IjwvY29kZT4gd2lsbCBjYXVzZSBhbiA8c3BhbiBjbGFzcz0iY2FwcyI+UlNTPC9zcGFuPiBmZWVkIGxpbmsgdXJsIHRvIGJlY29tZSA8Y29kZT5odHRwOi8vc2l0ZS50bGQvP3Jzcz0xJiMzODthcmVhPWNvbW1lbnRzPC9jb2RlPiAobm8gPGNvZGU+aWQ8L2NvZGU+IHZhcmlhYmxlKS48L3A+CgoJPGgyPkRpc2NsYWltZXI8L2gyPgoKCTxwPlRoaXMgZnVuY3Rpb24gdXNlcyBmZWVkIGZvcm1hdHRpbmcgY29kZS1iYXNlIGZyb20gVGV4dHBhdHRlcm4gPGEgaHJlZj0iaHR0cDovL2Rldi50ZXh0cGF0dGVybi5jb20vYnJvd3Nlci9kZXZlbG9wbWVudC80LjAvP3Jldj0xNjgyIiByZWw9Im5vZm9sbG93Ij52NC4wLjQgcjE2ODI8L2E+LCB0aHVzIDxzdHJvbmc+YW55IHByb2JsZW1zIG9yIGJ1Z3MgdGhhdCBleGlzdCBpbiBUZXh0cGF0dGVybiYjODIxNztzIDxzcGFuIGNsYXNzPSJjYXBzIj5SU1M8L3NwYW4+L0F0b20gb3V0cHV0IHdpbGwgYmUgY29udGFpbmVkIHdpdGhpbiB0aGlzIHBsdWdpbjwvc3Ryb25nPi48L3A+IjtzOjQ6ImNvZGUiO3M6MTM1OTU6IglAaW5jbHVkZV9wbHVnaW4oJ2Fqd19jbGVhbl9mZWVkJyk7DQoNCglpZiAoQHR4cGludGVyZmFjZSA9PSAncHVibGljJykNCgkJcmVnaXN0ZXJfY2FsbGJhY2soImFqd19jb21tZW50c19mZWVkIiwgJ3ByZXRleHQnKTsNCg0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCWZ1bmN0aW9uIGFqd19jb21tZW50c19mZWVkKCkNCgl7DQoJCWlmIChncHMoJ3JzcycpICYmIGdwcygnYXJlYScpID09ICdjb21tZW50cycpDQoJCQlleGl0KGFqd19jb21tZW50c19mZWVkX3JzcygpKTsNCg0KCQlpZiAoZ3BzKCdhdG9tJykgJiYgZ3BzKCdhcmVhJykgPT0gJ2NvbW1lbnRzJykNCgkJCWV4aXQoYWp3X2NvbW1lbnRzX2ZlZWRfYXRvbSgpKTsNCgl9DQoNCi8vICB0ZW1wbGF0ZSB0YWcsIHdoaWNoIG91dHB1dHMgbGluayB0byBjb21tZW50cyBmZWVkDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICAgZnVuY3Rpb24gYWp3X2NvbW1lbnRzX2ZlZWRfbGluaygkYXR0cykNCiAgICB7DQoJCWdsb2JhbCAkaWQ7DQoNCgkJZXh0cmFjdChsQXR0cyhhcnJheSgNCgkJICAgICdsYWJlbCcgICAgPT4gJ0NvbW1lbnRzIFhNTCBmZWVkJywNCgkJCSd3cmFwdGFnJyAgPT4gJycsDQoJCQknbGltaXQnICAgID0+ICcnLA0KCQkJJ2ZsYXZvcicgICA9PiAncnNzJywNCgkJCSd0aXRsZScgICAgPT4gJ1JTUyBkZXMgQ29tbWVudGFpcmVzJywNCgkJCSdzaXRld2lkZScgPT4gJ24nDQoJCSksJGF0dHMpKTsNCg0KICAgICAgICAkYWlkICAgPSAoJGlkICYmICRzaXRld2lkZT09J24nKSA/IGEuJ2lkPScuJGlkIDogJyc7DQoJCSRsaW1pdCA9ICgkbGltaXQpID8gYS4nbGltaXQ9Jy51cmxlbmNvZGUoJGxpbWl0KSA6ICcnOw0KDQoJCSRvdXQgPSAnPGEgaHJlZj0iJy5odS4nPycuJGZsYXZvci4nPTEnLmEuJ2FyZWE9Y29tbWVudHMnLiRhaWQuDQoJCQkkbGltaXQuJyIgdGl0bGU9IicuJHRpdGxlLiciPicuJGxhYmVsLic8L2E+JzsNCg0KCQlyZXR1cm4gKCR3cmFwdGFnKSA/IHRhZygkb3V0LCR3cmFwdGFnKSA6ICRvdXQ7DQogICAgfQ0KDQovLyAgYmFzZWQgb24gcnNzLnBocCAtPiByc3MoKSByMTIyOA0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCWZ1bmN0aW9uIGFqd19jb21tZW50c19mZWVkX3JzcygpDQoJew0KCQlpbmNsdWRlIHR4cGF0aC4nL3B1Ymxpc2gvcnNzLnBocCc7DQoNCgkJZ2xvYmFsICRwcmVmcywkdGhpc2FydGljbGU7DQoJCWV4dHJhY3QoJHByZWZzKTsNCg0KCQlleHRyYWN0KGRvU2xhc2goZ3BzYShhcnJheSgnY2F0ZWdvcnknLCdzZWN0aW9uJywnbGltaXQnLCdpZCcpKSkpOw0KDQoJCSRjdGl0bGUgPSAoJGlkKSA/ICcgLSAnLmZldGNoKCdUaXRsZScsJ3RleHRwYXR0ZXJuJywnSUQnLCRpZCkgOiAnJzsNCg0KCQkkc2l0ZW5hbWUgLj0gJyBDb21tZW50YWlyZXMnLiRjdGl0bGU7DQoJCSRzaXRlbmFtZSAuPSAoJHNlY3Rpb24pID8gJyAtICcuJHNlY3Rpb24gOiAnJzsNCgkJJHNpdGVuYW1lIC49ICgkY2F0ZWdvcnkpID8gJyAtICcuJGNhdGVnb3J5IDogJyc7DQoJCSRkbiA9IGV4cGxvZGUoJy8nLCRzaXRldXJsKTsNCgkJJG1haWxfb3JfZG9tYWluID0gKCR1c2VfbWFpbF9vbl9mZWVkc19pZCk/IGVFKCRibG9nX21haWxfdWlkKTokZG5bMF07DQoNCgkJJG91dFtdID0gdGFnKCctJywgJ2dlbmVyYXRvcicpOw0KCQkkb3V0W10gPSB0YWcoZG9TcGVjaWFsKCRzaXRlbmFtZSksJ3RpdGxlJyk7DQoJCSRvdXRbXSA9IHRhZyhodSwnbGluaycpOw0KCQkkb3V0W10gPSB0YWcoZG9TcGVjaWFsKCRzaXRlX3Nsb2dhbiksJ2Rlc2NyaXB0aW9uJyk7DQoJCSRsYXN0ID0gZmV0Y2goJ3VuaXhfdGltZXN0YW1wKHZhbCknLCd0eHBfcHJlZnMnLCduYW1lJywnbGFzdG1vZCcpOw0KCQkkb3V0W10gPSB0YWcoc2FmZV9zdHJmdGltZSgncmZjODIyJywkbGFzdCksJ3B1YkRhdGUnKTsNCg0KCQkkYXJ0aWNsZXMgPSBhcnJheSgpOw0KDQogICAgICAgICRzZmlsdGVyID0gKCRzZWN0aW9uKSA/ICJhbmQgU2VjdGlvbj0nIi4kc2VjdGlvbi4iJyIgOiAnJzsNCgkJJGNmaWx0ZXIgPSAoJGNhdGVnb3J5KQ0KCQkJPyAiYW5kIChDYXRlZ29yeTE9JyIuJGNhdGVnb3J5LiInIG9yIENhdGVnb3J5Mj0nIi4kY2F0ZWdvcnkuIicpICI6Jyc7DQoJCSRsaW1pdCA9ICgkbGltaXQpID8gJGxpbWl0IDogJHJzc19ob3dfbWFueTsNCgkJJGxpbWl0ID0gbWluKCRsaW1pdCxtYXgoMTAwLCRyc3NfaG93X21hbnkpKTsNCgkJJHF1ZXJ5ID0gYXJyYXkoKTsNCg0KCQlpZiAoJGlkKSAkcXVlcnlbXSA9ICgkaWQpID8gImFuZCBwYXJlbnRpZD0nIi4kaWQuIicgIiA6ICcnOw0KDQogICAgICAgIGlmICgkc2VjdGlvbiB8fCAkY2F0ZWdvcnkpDQoJCXsNCiAgICAJCSRmcnMgPSBzYWZlX2NvbHVtbigibmFtZSIsICJ0eHBfc2VjdGlvbiIsICJpbl9yc3MgIT0gJzEnIik7DQogICAgCQlpZiAoJGZycykgZm9yZWFjaCgkZnJzIGFzICRmKSAkcXVlcnlbXSA9ICJhbmQgU2VjdGlvbiE9JyIuZG9TbGFzaCgkZikuIiciOw0KICAgIAkJJHF1ZXJ5W10gPSAkc2ZpbHRlcjsNCiAgICAJCSRxdWVyeVtdID0gJGNmaWx0ZXI7DQogICAgICAgICAgICAkcSA9DQogICAgICAgICAgICAgICAgIlNFTEVDVCB0MS4qLCB1bml4X3RpbWVzdGFtcCh0MS5wb3N0ZWQpIGFzIHBvc3RlZCwgdDIuU2VjdGlvbiwgdDIuQ2F0ZWdvcnkxLCB0Mi5DYXRlZ29yeTIgIi4NCiAgICAJCQkiRlJPTSAiLg0KICAgIAkJCSJgIi5QRlguInR4cF9kaXNjdXNzYCBBUyB0MSAiLg0KICAgIAkJICAgICJMRUZUIEpPSU4gYCIuUEZYLiJ0ZXh0cGF0dGVybmAgQVMgdDIgIi4NCiAgICAJCSAgICAiT04gdDEucGFyZW50aWQ9dDIuSUQgIi4NCiAgICAJCSAgICAiV0hFUkUgdmlzaWJsZT0nMScgIi5qb2luKCcgJywkcXVlcnkpLg0KICAgIAkJCSJPUkRFUiBCWSBwb3N0ZWQgREVTQyAiLg0KICAgIAkJCSJMSU1JVCAkbGltaXQiOw0KCQl9IGVsc2UNCgkJew0KICAgICAgICAgICAgJHEgPQ0KICAgICAgICAgICAgICAgICJTRUxFQ1QgKiwgdW5peF90aW1lc3RhbXAocG9zdGVkKSBhcyBwb3N0ZWQgIi4NCiAgICAJCQkiRlJPTSBgIi5QRlguInR4cF9kaXNjdXNzYCAiLg0KICAgIAkJICAgICJXSEVSRSB2aXNpYmxlPScxJyAiLmpvaW4oJyAnLCRxdWVyeSkuDQogICAgCQkJIk9SREVSIEJZIHBvc3RlZCBERVNDICIuDQogICAgCQkJIkxJTUlUICRsaW1pdCI7DQoJCX0NCg0KCQkkcnMgPSBzdGFydFJvd3MoJHEpOw0KDQoJCWlmKCRycykNCgkJew0KCQkJd2hpbGUgKCRhID0gbmV4dFJvdygkcnMpKQ0KCQkJew0KDQoJCQkJZXh0cmFjdCgkYSk7DQoJCQkJJGFydGljbGUgPSBzYWZlX3JvdygnKiwgdW5peF90aW1lc3RhbXAoUG9zdGVkKSBhcyBwb3N0ZWQnLCd0ZXh0cGF0dGVybicsIklEPSckcGFyZW50aWQnIik7DQoNCgkJCQkkbmFtZSA9IGh0bWxzcGVjaWFsY2hhcnMoJG5hbWUpOw0KCQkJCSR0aXRsZSA9IGVzY2FwZV9vdXRwdXQoc3RyaXBfdGFncygkYXJ0aWNsZVsnVGl0bGUnXSkpOw0KCQkJCSRwZXJtbGluayA9IHBlcm1saW5rdXJsKCRhcnRpY2xlKS4nI2MnLiRkaXNjdXNzaWQ7DQoNCgkJCQkkY29udGVudCA9IHRyaW0ocmVwbGFjZV9yZWxhdGl2ZV91cmxzKA0KCQkJCQlwYXJzZSgNCgkJCQkJCWdyYWYodGFnKCR0aXRsZSwnc3Ryb25nJykpIC4gJG1lc3NhZ2UNCgkJCQkJKSwNCgkJCQkJJHBlcm1saW5rDQoJCQkJKSk7DQoNCgkJCQkkaXRlbSA9IHRhZygicGFyOiAkbmFtZSAoJHRpdGxlKSIsJ3RpdGxlJykubi4NCgkJCQkJdGFnKCRwZXJtbGluaywnbGluaycpLm4uDQoJCQkJCSh0cmltKCRjb250ZW50KSA/IHRhZyhuLmVzY2FwZV9jZGF0YSgkY29udGVudCkubiwnY29udGVudDplbmNvZGVkJykubiA6ICcnKS4NCgkJCQkJdGFnKHNhZmVfc3RyZnRpbWUoJ3JmYzgyMicsJHBvc3RlZCksJ3B1YkRhdGUnKS5uLg0KCQkJCQl0YWcoJG5hbWUsJ2RjOmNyZWF0b3InKS5uLg0KCQkJCQl0YWcoJ3RhZzonLiRtYWlsX29yX2RvbWFpbi4nLCcuc2FmZV9zdHJmdGltZSgiWS1tLWQiLCRwb3N0ZWQpLic6Jy4kYmxvZ191aWQuJy8nLiRkaXNjdXNzaWQsICdndWlkJywgJyBpc1Blcm1hTGluaz0iZmFsc2UiJyk7DQoNCgkJCQkkYXJ0aWNsZXNbJGRpc2N1c3NpZF0gPSB0YWcoJGl0ZW0sJ2l0ZW0nKTsNCg0KCQkJCSRldGFnc1skZGlzY3Vzc2lkXSA9IHN0cnRvdXBwZXIoZGVjaGV4KGNyYzMyKCRhcnRpY2xlc1skZGlzY3Vzc2lkXSkpKTsNCgkJCQkkZGF0ZXNbJGRpc2N1c3NpZF0gPSAkcG9zdGVkOw0KDQoJCQl9DQoJCX0NCg0KCQkgIC8vdHVybiBvbiBjb21wcmVzc2lvbiBpZiB3ZSBhcmVuJ3QgdXNpbmcgaXQgYWxyZWFkeQ0KCQlpZiAoZXh0ZW5zaW9uX2xvYWRlZCgnemxpYicpICYmIGluaV9nZXQoInpsaWIub3V0cHV0X2NvbXByZXNzaW9uIikgPT0gMCAmJiBpbmlfZ2V0KCdvdXRwdXRfaGFuZGxlcicpICE9ICdvYl9nemhhbmRsZXInICYmICFoZWFkZXJzX3NlbnQoKSkgew0KCQkgIEBvYl9zdGFydCgib2JfZ3poYW5kbGVyIik7DQoJCX0NCg0KCQkkbGFzdCA9IGZldGNoKCd1bml4X3RpbWVzdGFtcCh2YWwpJywndHhwX3ByZWZzJywnbmFtZScsJ2xhc3Rtb2QnKTsNCgkJJGV4cGlyZXMgPSBnbWRhdGUoJ0QsIGQgTSBZIEg6aTpzIFxHXE1cVCcsIHRpbWUoKSsoMzYwMCoxKSk7DQoJCWhlYWRlcigiRXhwaXJlczogJGV4cGlyZXMiKTsNCgkJJGhpbXMgPSBzZXJ2ZXJzZXQoJ0hUVFBfSUZfTU9ESUZJRURfU0lOQ0UnKTsNCgkJJGltc2QgPSAoJGhpbXMpID8gc3RydG90aW1lKCRoaW1zKSA6IDA7DQoNCgkJaWYgKCRpbXNkID49ICRsYXN0KSB7DQoJCQkJdHhwX3N0YXR1c19oZWFkZXIoIjMwNCBOb3QgTW9kaWZpZWQiKTsgZXhpdDsNCgkJfQ0KDQoJCWhlYWRlcigiTGFzdC1Nb2RpZmllZDogIi5nbWRhdGUoJ0QsIGQgTSBZIEg6aTpzIFxHXE1cVCcsJGxhc3QpKTsNCg0KDQoJCWlmIChpc19jYWxsYWJsZSgnYXBhY2hlX3JlcXVlc3RfaGVhZGVycycpKQ0KCQl7DQoJCQkkaGVhZGVycyA9IGFwYWNoZV9yZXF1ZXN0X2hlYWRlcnMoKTsNCgkJCWlmIChpc3NldCgkaGVhZGVyc1siQS1JTSJdKSkgew0KCQkJCSRjYW5haW0gPSBzdHJwb3MoJGhlYWRlcnNbIkEtSU0iXSwgImZlZWQiKTsNCgkJCX0gZWxzZSB7DQoJCQkJJGNhbmFpbSA9IGZhbHNlOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJJGNhbmFpbSA9IGZhbHNlOw0KCQl9DQoNCgkJJGhpbm0gPSBzdHJpcHNsYXNoZXMoc2VydmVyc2V0KCdIVFRQX0lGX05PTkVfTUFUQ0gnKSk7DQoNCgkJJGN1dGFydGljbGVzID0gZmFsc2U7DQoNCgkJaWYgKCRjYW5haW0gIT09IGZhbHNlKQ0KCQl7DQoJCQlmb3JlYWNoKCRhcnRpY2xlcyBhcyAkaWQ9PiR0aGluZykgew0KCQkJCWlmIChzdHJwb3MoJGhpbm0sICRldGFnc1skaWRdKSAhPT0gZmFsc2UpIHsNCgkJCQkJdW5zZXQoJGFydGljbGVzWyRpZF0pOw0KCQkJCQkkY3V0YXJ0aWNsZXMgPSB0cnVlOw0KCQkJCQkkY3V0X2V0YWcgPSB0cnVlOw0KCQkJCX0NCg0KCQkJCWlmICgkZGF0ZXNbJGlkXSA8ICRpbXNkKSB7DQoJCQkJCXVuc2V0KCRhcnRpY2xlc1skaWRdKTsNCgkJCQkJJGN1dGFydGljbGVzID0gdHJ1ZTsNCgkJCQkJJGN1dF90aW1lID0gdHJ1ZTsNCgkJCQl9DQoJCQl9DQoJCX0NCg0KCQlpZiAoaXNzZXQoJGN1dF9ldGFnKSAmJiBpc3NldCgkY3V0X3RpbWUpKSB7DQoJCQloZWFkZXIoIlZhcnk6IElmLU5vbmUtTWF0Y2gsIElmLU1vZGlmaWVkLVNpbmNlIik7DQoJCX0gZWxzZSBpZiAoaXNzZXQoJGN1dF9ldGFnKSkgew0KCQkJaGVhZGVyKCJWYXJ5OiBJZi1Ob25lLU1hdGNoIik7DQoJCX0gZWxzZSBpZiAoaXNzZXQoJGN1dF90aW1lKSkgew0KCQkJaGVhZGVyKCJWYXJ5OiBJZi1Nb2RpZmllZC1TaW5jZSIpOw0KCQl9DQoNCg0KCQkkZXRhZyA9IEBqb2luKCItIiwkZXRhZ3MpOw0KDQoJCWlmIChzdHJzdHIoJGhpbm0sICRldGFnKSkgew0KCQkJaGVhZGVyKCJIVFRQLzEuMSAzMDQgTm90IE1vZGlmaWVkIik7IGV4aXQ7DQoJCX0NCg0KDQoJCWlmICgkY3V0YXJ0aWNsZXMpIHsNCgkJCS8vaGVhZGVyKCJIVFRQLzEuMSAyMjYgSU0gVXNlZCIpOw0KCQkJLy9UaGlzIHNob3VsZCBiZSB1c2VkIGFzIG9wcG9zZWQgdG8gMjAwLCBidXQgQXBhY2hlIGRvZXNuJ3QgbGlrZSBpdC4NCgkJCS8vaHR0cDovL2ludGVydHdpbmdseS5uZXQvYmxvZy8yMDA0LzA5LzExL1ZhcnktRVRhZy8gc2F5cyB0aGF0IHRoZSBzdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLg0KCQkJaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgaW0iKTsNCgkJCWhlYWRlcigiSU06IGZlZWQiKTsNCgkJfQ0KDQoJCSRvdXQgPSBhcnJheV9tZXJnZSgkb3V0LCAkYXJ0aWNsZXMpOw0KDQoJCWhlYWRlcigiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9yc3MreG1sOyBjaGFyc2V0PXV0Zi04Iik7DQoJCWlmICgkZXRhZykgaGVhZGVyKCdFVGFnOiAiJy4kZXRhZy4nIicpOw0KCQlyZXR1cm4NCgkJCSc8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/Picubi4NCgkJCSc8cnNzIHZlcnNpb249IjIuMCIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpjb250ZW50PSJodHRwOi8vcHVybC5vcmcvcnNzLzEuMC9tb2R1bGVzL2NvbnRlbnQvIj4nLm4uDQoJCQl0YWcoam9pbihuLCRvdXQpLCdjaGFubmVsJykubi4NCgkJCSc8L3Jzcz4nOw0KCX0NCg0KLy8gIGJhc2VkIG9uIGF0b20ucGhwIC0+IGF0b20oKSByMTIyOA0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KCWZ1bmN0aW9uIGFqd19jb21tZW50c19mZWVkX2F0b20oKQ0KCXsNCiAgICAgICAgaW5jbHVkZSB0eHBhdGguJy9wdWJsaXNoL2F0b20ucGhwJzsNCg0KCQlnbG9iYWwgJHRoaXNhcnRpY2xlOw0KCQlleHRyYWN0KCRHTE9CQUxTWydwcmVmcyddKTsNCgkJZGVmaW5lKCJ0X3RleHRodG1sIiwnIHR5cGU9InRleHQvaHRtbCInKTsNCgkJZGVmaW5lKCJ0X3RleHQiLCcgdHlwZT0idGV4dCInKTsNCgkJZGVmaW5lKCJ0X2h0bWwiLCcgdHlwZT0iaHRtbCInKTsNCgkJZGVmaW5lKCJ0X3hodG1sIiwnIHR5cGU9InhodG1sIicpOw0KCQlkZWZpbmUoJ3RfYXBweGh0bWwnLCcgdHlwZT0ieGh0bWwiJyk7DQoJCWRlZmluZSgicl9yZWxhbHQiLCcgcmVsPSJhbHRlcm5hdGUiJyk7DQoJCWRlZmluZSgicl9yZWxzZWxmIiwnIHJlbD0ic2VsZiInKTsNCg0KCQlleHRyYWN0KGRvU2xhc2goZ3BzYShhcnJheSgnY2F0ZWdvcnknLCdzZWN0aW9uJywnbGltaXQnLCdpZCcpKSkpOw0KDQoJCSRsYXN0ID0gZmV0Y2goJ3VuaXhfdGltZXN0YW1wKHZhbCknLCd0eHBfcHJlZnMnLCduYW1lJywnbGFzdG1vZCcpOw0KDQoJCSRjdGl0bGUgPSAoJGlkKSA/ICcgLSAnLmZldGNoKCdUaXRsZScsJ3RleHRwYXR0ZXJuJywnSUQnLCRpZCkgOiAnJzsNCg0KCQkkc2l0ZW5hbWUgLj0gJyBDb21tZW50YWlyZXMnLiRjdGl0bGU7DQoJCSRzaXRlbmFtZSAuPSAoJHNlY3Rpb24pID8gJyAtICcuJHNlY3Rpb24gOiAnJzsNCgkJJHNpdGVuYW1lIC49ICgkY2F0ZWdvcnkpID8gJyAtICcuJGNhdGVnb3J5IDogJyc7DQoNCgkJJHB1YiA9IHNhZmVfcm93KCJSZWFsTmFtZSwgZW1haWwiLCAidHhwX3VzZXJzIiwgInByaXZzPTEiKTsNCg0KCQkkb3V0W10gPSB0YWcoJHNpdGVuYW1lLCd0aXRsZScsdF90ZXh0KTsNCgkJJG91dFtdID0gdGFnKCRzaXRlX3Nsb2dhbiwnc3VidGl0bGUnLHRfdGV4dCk7DQoJCSRvdXRbXSA9ICc8bGluaycucl9yZWxzZWxmLicgaHJlZj0iJy5wYWdlbGlua3VybChhcnJheSgnYXRvbSc9PjEsJ2lkJz0+JGlkLCdzZWN0aW9uJz0+JHNlY3Rpb24sJ2NhdGVnb3J5Jz0+JGNhdGVnb3J5LCdsaW1pdCc9PiRsaW1pdCkpLiciIC8+JzsNCgkJJG91dFtdID0gJzxsaW5rJy5yX3JlbGFsdC50X3RleHRodG1sLicgaHJlZj0iJy5odS4nIiAvPic7DQoJCSRhcnRpY2xlcyA9IGFycmF5KCk7DQoNCgkJLy9BdG9tIGZlZWRzIHdpdGggbWFpbCBvciBkb21haW4gbmFtZQ0KCQkkZG4gPSBleHBsb2RlKCcvJywkc2l0ZXVybCk7DQoJCSRtYWlsX29yX2RvbWFpbiA9ICgkdXNlX21haWxfb25fZmVlZHNfaWQpPyBlRSgkYmxvZ19tYWlsX3VpZCk6JGRuWzBdOw0KCQkkb3V0W10gPSB0YWcoJ3RhZzonLiRtYWlsX29yX2RvbWFpbi4nLCcuJGJsb2dfdGltZV91aWQuJzonLiRibG9nX3VpZC4oKCRzZWN0aW9uKT8gJy8nLiRzZWN0aW9uOicnKS4oKCRjYXRlZ29yeSk/ICcvJy4kY2F0ZWdvcnk6JycpLCdpZCcpOw0KDQoJCSRvdXRbXSA9IHRhZygnLScsJ2dlbmVyYXRvcicsDQoJCQknIHVyaT0iaHR0cDovL3d3dy5jYXJhLXRtLmNvbS8iIHZlcnNpb249IicuJHZlcnNpb24uJyInKTsNCgkJJG91dFtdID0gdGFnKHNhZmVfc3RyZnRpbWUoInczY2R0ZiIsJGxhc3QpLCd1cGRhdGVkJyk7DQoNCg0KCQkkYXV0aFtdID0gdGFnKCRwdWJbJ1JlYWxOYW1lJ10sJ25hbWUnKTsNCgkJJGF1dGhbXSA9ICgkaW5jbHVkZV9lbWFpbF9hdG9tKSA/IHRhZyhlRSgkcHViWydlbWFpbCddKSwnZW1haWwnKSA6ICcnOw0KCQkkYXV0aFtdID0gdGFnKGh1LCd1cmknKTsNCg0KCQkkb3V0W10gPSB0YWcobi50LnQuam9pbihuLnQudCwkYXV0aCkubiwnYXV0aG9yJyk7DQoJCSRsaW1pdCA9ICgkbGltaXQpID8gJGxpbWl0IDogJHJzc19ob3dfbWFueTsNCgkJJGxpbWl0ID0gbWluKCRsaW1pdCxtYXgoMTAwLCRyc3NfaG93X21hbnkpKTsNCg0KICAgICAgICAkc2ZpbHRlciA9ICgkc2VjdGlvbikgPyAiYW5kIFNlY3Rpb249JyIuJHNlY3Rpb24uIiciIDogJyc7DQoJCSRjZmlsdGVyID0gKCRjYXRlZ29yeSkNCgkJCT8gImFuZCAoQ2F0ZWdvcnkxPSciLiRjYXRlZ29yeS4iJyBvciBDYXRlZ29yeTI9JyIuJGNhdGVnb3J5LiInKSAiOicnOw0KCQkkbGltaXQgPSAoJGxpbWl0KSA/ICRsaW1pdCA6ICRyc3NfaG93X21hbnk7DQoJCSRsaW1pdCA9IG1pbigkbGltaXQsbWF4KDEwMCwkcnNzX2hvd19tYW55KSk7DQoJCSRxdWVyeSA9IGFycmF5KCk7DQoNCgkJaWYgKCRpZCkgJHF1ZXJ5W10gPSAoJGlkKSA/ICJhbmQgcGFyZW50aWQ9JyIuJGlkLiInICIgOiAnJzsNCg0KICAgICAgICBpZiAoJHNlY3Rpb24gfHwgJGNhdGVnb3J5KQ0KCQl7DQogICAgCQkkZnJzID0gc2FmZV9jb2x1bW4oIm5hbWUiLCAidHhwX3NlY3Rpb24iLCAiaW5fcnNzICE9ICcxJyIpOw0KICAgIAkJZm9yZWFjaCgkZnJzIGFzICRmKSAkcXVlcnlbXSA9ICJhbmQgU2VjdGlvbiE9JyIuZG9TbGFzaCgkZikuIiciOw0KICAgIAkJJHF1ZXJ5W10gPSAkc2ZpbHRlcjsNCiAgICAJCSRxdWVyeVtdID0gJGNmaWx0ZXI7DQogICAgICAgICAgICAkcSA9DQogICAgICAgICAgICAgICAgIlNFTEVDVCB0MS4qLCB1bml4X3RpbWVzdGFtcCh0MS5wb3N0ZWQpIGFzIHBvc3RlZCwgdDIuU2VjdGlvbiwgdDIuQ2F0ZWdvcnkxLCB0Mi5DYXRlZ29yeTIgIi4NCiAgICAJCQkiRlJPTSAiLg0KICAgIAkJCSJgIi5QRlguInR4cF9kaXNjdXNzYCBBUyB0MSAiLg0KICAgIAkJICAgICJMRUZUIEpPSU4gYCIuUEZYLiJ0ZXh0cGF0dGVybmAgQVMgdDIgIi4NCiAgICAJCSAgICAiT04gdDEucGFyZW50aWQ9dDIuSUQgIi4NCiAgICAJCSAgICAiV0hFUkUgdmlzaWJsZT0nMScgIi5qb2luKCcgJywkcXVlcnkpLg0KICAgIAkJCSJPUkRFUiBCWSBwb3N0ZWQgREVTQyAiLg0KICAgIAkJCSJMSU1JVCAkbGltaXQiOw0KCQl9IGVsc2UNCgkJew0KICAgICAgICAgICAgJHEgPQ0KICAgICAgICAgICAgICAgICJTRUxFQ1QgKiwgdW5peF90aW1lc3RhbXAocG9zdGVkKSBhcyBwb3N0ZWQgIi4NCiAgICAJCQkiRlJPTSBgIi5QRlguInR4cF9kaXNjdXNzYCAiLg0KICAgIAkJICAgICJXSEVSRSB2aXNpYmxlPScxJyAiLmpvaW4oJyAnLCRxdWVyeSkuDQogICAgCQkJIk9SREVSIEJZIHBvc3RlZCBERVNDICIuDQogICAgCQkJIkxJTUlUICRsaW1pdCI7DQoJCX0NCg0KCQkkcnMgPSBzdGFydFJvd3MoJHEpOw0KDQoNCgkJaWYoJHJzKSB7DQoJCQl3aGlsZSAoJGEgPSBuZXh0Um93KCRycykpDQoJCQl7DQoNCgkJCQlleHRyYWN0KCRhKTsNCg0KCQkJCSRlWyd0aGlzYXV0aG9yJ10gPSB0YWcobi50LnQudC50YWcoaHRtbHNwZWNpYWxjaGFycygkbmFtZSksJ25hbWUnKS5uLnQudCwnYXV0aG9yJyk7DQoJCQkJJGVbJ2lzc3VlZCddID0gdGFnKHNhZmVfc3RyZnRpbWUoJ3czY2R0ZicsJHBvc3RlZCksJ3B1Ymxpc2hlZCcpOw0KCQkJCSRlWydtb2RpZmllZCddID0gdGFnKHNhZmVfc3RyZnRpbWUoJ3czY2R0ZicsJHBvc3RlZCksJ3VwZGF0ZWQnKTsNCg0KCQkJCSRhcnRpY2xlID0gc2FmZV9yb3coJyosIHVuaXhfdGltZXN0YW1wKFBvc3RlZCkgYXMgcG9zdGVkJywndGV4dHBhdHRlcm4nLCJJRD0nJHBhcmVudGlkJyIpOw0KDQoJCQkJJHRpdGxlID0gJGFydGljbGVbJ1RpdGxlJ107DQoJCQkJJGVzY2FwZWRfdGl0bGUgPSBlc2NhcGVfdGl0bGUoJHRpdGxlKTsNCgkJCQkkZVsndGl0bGUnXSA9IHRhZygicGFyOiAkbmFtZSAoJGVzY2FwZWRfdGl0bGUpIiwndGl0bGUnLHRfaHRtbCk7DQoNCgkJCQkkcGVybWxpbmsgPSBwZXJtbGlua3VybCgkYXJ0aWNsZSkuJyNjJy4kZGlzY3Vzc2lkOw0KCQkJCSRlWydsaW5rJ10gPSAnPGxpbmsnLnJfcmVsYWx0LnRfdGV4dGh0bWwuJyBocmVmPSInLiRwZXJtbGluay4nIiAvPic7DQoNCgkJCQkkY29tbWVudF90aW1lID0gc2FmZV9zdHJmdGltZSgnWS1tLWQnLCRwb3N0ZWQpOw0KCQkJCSRlWydpZCddID0gdGFnKCd0YWc6Jy4kbWFpbF9vcl9kb21haW4uJywnLiRjb21tZW50X3RpbWUuJzonLiRibG9nX3VpZC4nLycuJGRpc2N1c3NpZCwnaWQnLCAnIGlzUGVybWFMaW5rPSJmYWxzZSInKTsNCg0KCQkJCSRzdW1tYXJ5ID0gdHJpbShyZXBsYWNlX3JlbGF0aXZlX3VybHMoDQoJCQkJCXBhcnNlKA0KCQkJCQkJZ3JhZih0YWcoJHRpdGxlLCdzdHJvbmcnKSkgLiAkbWVzc2FnZQ0KCQkJCQkpLA0KCQkJCQkkcGVybWxpbmsNCgkJCQkpKTsNCgkJCQkkZVsnc3VtbWFyeSddID0gdGFnKG4uZXNjYXBlX2NkYXRhKCRzdW1tYXJ5KS5uLCdzdW1tYXJ5Jyx0X2h0bWwpOw0KDQoJCQkJJGFydGljbGVzWyRkaXNjdXNzaWRdID0gdGFnKG4udC50LmpvaW4obi50LnQsJGUpLm4sJ2VudHJ5Jyk7DQoNCgkJCQkkZXRhZ3NbJGRpc2N1c3NpZF0gPSBzdHJ0b3VwcGVyKGRlY2hleChjcmMzMigkYXJ0aWNsZXNbJGRpc2N1c3NpZF0pKSk7DQoJCQkJJGRhdGVzWyRkaXNjdXNzaWRdID0gJHBvc3RlZDsNCgkJCX0NCgkJfQ0KDQoJCWlmICghZW1wdHkoJGFydGljbGVzKSkgew0KDQoJCQkvL3R1cm4gb24gY29tcHJlc3Npb24gaWYgd2UgYXJlbid0IHVzaW5nIGl0IGFscmVhZHkNCgkJCWlmIChleHRlbnNpb25fbG9hZGVkKCd6bGliJykgJiYgaW5pX2dldCgiemxpYi5vdXRwdXRfY29tcHJlc3Npb24iKSA9PSAwICYmIGluaV9nZXQoJ291dHB1dF9oYW5kbGVyJykgIT0gJ29iX2d6aGFuZGxlcicgJiYgIWhlYWRlcnNfc2VudCgpKSB7DQoJCQkJQG9iX3N0YXJ0KCJvYl9nemhhbmRsZXIiKTsNCgkJCX0NCg0KCQkJJGV4cGlyZXMgPSBnbWRhdGUoJ0QsIGQgTSBZIEg6aTpzIFxHXE1cVCcsIHRpbWUoKSsoMzYwMCoxKSk7DQoJCQloZWFkZXIoIkV4cGlyZXM6ICRleHBpcmVzIik7DQoJCQkkaGltcyA9IHNlcnZlcnNldCgnSFRUUF9JRl9NT0RJRklFRF9TSU5DRScpOw0KCQkJJGltc2QgPSAoJGhpbXMpID8gc3RydG90aW1lKCRoaW1zKSA6IDA7DQoNCgkJCWlmICgkaW1zZCA+PSAkbGFzdCkgew0KCQkJCXR4cF9zdGF0dXNfaGVhZGVyKCIzMDQgTm90IE1vZGlmaWVkIik7IGV4aXQ7DQoJCQl9DQoJCQloZWFkZXIoIkxhc3QtTW9kaWZpZWQ6ICIuZ21kYXRlKCdELCBkIE0gWSBIOmk6cyBcR1xNXFQnLCRsYXN0KSk7DQoNCgkJCWlmIChpc19jYWxsYWJsZSgnYXBhY2hlX3JlcXVlc3RfaGVhZGVycycpKSB7DQoJCQkJJGhlYWRlcnMgPSBhcGFjaGVfcmVxdWVzdF9oZWFkZXJzKCk7DQoJCQkJaWYgKGlzc2V0KCRoZWFkZXJzWyJBLUlNIl0pKSB7DQoJCQkJCSRjYW5haW0gPSBzdHJwb3MoJGhlYWRlcnNbIkEtSU0iXSwgImZlZWQiKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkY2FuYWltID0gZmFsc2U7DQoJCQkJfQ0KCQkJfSBlbHNlIHsNCgkJCQkkY2FuYWltID0gZmFsc2U7DQoJCQl9DQoNCgkJCSRoaW5tID0gc3RyaXBzbGFzaGVzKHNlcnZlcnNldCgnSFRUUF9JRl9OT05FX01BVENIJykpOw0KDQoJCQkkY3V0YXJ0aWNsZXMgPSBmYWxzZTsNCg0KCQkJaWYgKCRjYW5haW0gIT09IGZhbHNlKSB7DQoJCQkJZm9yZWFjaCgkYXJ0aWNsZXMgYXMgJGlkPT4kdGhpbmcpIHsNCgkJCQkJaWYgKHN0cnBvcygkaGlubSwgJGV0YWdzWyRpZF0pKSB7DQoJCQkJCQl1bnNldCgkYXJ0aWNsZXNbJGlkXSk7DQoJCQkJCQkkY3V0YXJ0aWNsZXMgPSB0cnVlOw0KCQkJCQkJJGN1dF9ldGFnID0gdHJ1ZTsNCgkJCQkJfQ0KDQoJCQkJCWlmICgkZGF0ZXNbJGlkXSA8ICRpbXNkKSB7DQoJCQkJCQl1bnNldCgkYXJ0aWNsZXNbJGlkXSk7DQoJCQkJCQkkY3V0YXJ0aWNsZXMgPSB0cnVlOw0KCQkJCQkJJGN1dF90aW1lID0gdHJ1ZTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCg0KCQkJaWYgKGlzc2V0KCRjdXRfZXRhZykgJiYgaXNzZXQoJGN1dF90aW1lKSkgew0KCQkJCWhlYWRlcigiVmFyeTogSWYtTm9uZS1NYXRjaCwgSWYtTW9kaWZpZWQtU2luY2UiKTsNCgkJCX0gZWxzZSBpZiAoaXNzZXQoJGN1dF9ldGFnKSkgew0KCQkJCWhlYWRlcigiVmFyeTogSWYtTm9uZS1NYXRjaCIpOw0KCQkJfSBlbHNlIGlmIChpc3NldCgkY3V0X3RpbWUpKSB7DQoJCQkJaGVhZGVyKCJWYXJ5OiBJZi1Nb2RpZmllZC1TaW5jZSIpOw0KCQkJfQ0KDQoJCQkkZXRhZyA9IEBqb2luKCItIiwkZXRhZ3MpOw0KDQoJCQlpZiAoc3Ryc3RyKCRoaW5tLCAkZXRhZykpIHsNCgkJCQloZWFkZXIoIkhUVFAvMS4xIDMwNCBOb3QgTW9kaWZpZWQiKTsgZXhpdDsNCgkJCX0NCg0KCQkJaWYgKCRldGFnKSBoZWFkZXIoJ0VUYWc6ICInLiRldGFnLiciJyk7DQoNCgkJCWlmICgkY3V0YXJ0aWNsZXMpIHsNCgkJCQkvL2hlYWRlcigiSFRUUC8xLjEgMjI2IElNIFVzZWQiKTsNCgkJCQkvL1RoaXMgc2hvdWxkIGJlIHVzZWQgYXMgb3Bwb3NlZCB0byAyMDAsIGJ1dCBBcGFjaGUgZG9lc24ndCBsaWtlIGl0Lg0KCQkJCS8vaHR0cDovL2ludGVydHdpbmdseS5uZXQvYmxvZy8yMDA0LzA5LzExL1ZhcnktRVRhZy8gc2F5cyB0aGF0IHRoZSBzdGF0dXMgY29kZSBzaG91bGQgYmUgMjAwLg0KCQkJCWhlYWRlcigiQ2FjaGUtQ29udHJvbDogbm8tc3RvcmUsIGltIik7DQoJCQkJaGVhZGVyKCJJTTogZmVlZCIpOw0KCQkJfQ0KDQoJCQkkb3V0ID0gYXJyYXlfbWVyZ2UoJG91dCwgJGFydGljbGVzKTsNCg0KCQl9DQoJCWhlYWRlcignQ29udGVudC10eXBlOiBhcHBsaWNhdGlvbi9hdG9tK3htbDsgY2hhcnNldD11dGYtOCcpOw0KCQlyZXR1cm4gY2hyKDYwKS4nP3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Jy5jaHIoNjIpLm4uDQoJCSc8ZmVlZCB4bWw6bGFuZz0iJy4kbGFuZ3VhZ2UuJyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvQXRvbSI+Jy5qb2luKG4sJG91dCkuJzwvZmVlZD4nOw0KCX0NCg0KIjtzOjQ6InR5cGUiO3M6MToiMCI7czozOiJtZDUiO3M6MzI6ImVlYzJlODY3YzA0MGUzOTg0NmNhODMzMzYyZjliOTE4Ijt9

Perhaps you’ll need this one too: http://textpattern.net/wiki/images/Ajw_clean_feed-0.2.txt

Last edited by Pat64 (2012-09-09 16:05:56)


Patrick.

Github | CodePen | Codier | Simplr theme | Wait Me: a maintenance theme | [\a mi.ni.ma]: a “Low Tech” simple Blog theme.

Offline

#64 2013-11-23 13:28:22

uli
Moderator
From: Cologne
Registered: 2006-08-15
Posts: 4,311

Re: [plugin] [ORPHAN] ajw_comments_feed

Before including a comment feed in the quote for our client: Does this plugin work with a 4.5 version of TXP?


In bad weather I never leave home without wet_plugout, smd_where_used and adi_form_links

Offline

#65 2013-11-25 15:01:50

uli
Moderator
From: Cologne
Registered: 2006-08-15
Posts: 4,311

Re: [plugin] [ORPHAN] ajw_comments_feed

Can anyone confirm this is still functional, please?


In bad weather I never leave home without wet_plugout, smd_where_used and adi_form_links

Offline

#66 2013-11-25 16:25:11

etc
Developer
Registered: 2010-11-11
Posts: 5,257
Website GitHub

Re: [plugin] [ORPHAN] ajw_comments_feed

Hi Uli,

no idea if it works, but you can easily create the feed with the following rah_external_output snippet, accessible at ?rah_external_output=your_comments_rss:

; Content-type: text/xml
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
 <generator>http://textpattern.com/</generator>
 <title><txp:site_name /></title>
 <description><txp:site_name /> - comments</description>
 <link><txp:site_url /></link>
 <atom:link href="<txp:site_url />?rah_external_output=your_comments_rss" rel="self" type="application/rss+xml" />
 <pubDate><txp:php>echo safe_strftime('rfc822', get_lastmod());</txp:php></pubDate>

 <txp:recent_comments break="item">
     <title>Comment on <txp:title no_widow="0" /> by <txp:comment_name link="0" /></title>
     <link><txp:comment_permlink /></link>
     <guid><txp:comment_permlink /></guid>
     <pubDate><txp:comment_time format="rfc822" /></pubDate>
     <description><![CDATA[<txp:comment_message />]]></description>
     <content:encoded><![CDATA[<txp:comment_message />]]></content:encoded>
     <dc:creator><txp:comment_name /></dc:creator>
 </txp:recent_comments>

</channel>
</rss>

Offline

#67 2013-11-25 16:50:34

uli
Moderator
From: Cologne
Registered: 2006-08-15
Posts: 4,311

Re: [plugin] [ORPHAN] ajw_comments_feed

Thanks, Oleg, nice! :)

For changing the home base of such a feed link, e.g. for subscribing to articles or categories, the crucial points will be these two lines:

<link><txp:site_url /></link>
 <atom:link href="<txp:site_url />?rah_external_output=your_comments_rss" rel="self" type="application/rss+xml" />

The rest could remain, I guess?

[Edit: typo]

Last edited by uli (2013-11-25 16:51:05)


In bad weather I never leave home without wet_plugout, smd_where_used and adi_form_links

Offline

#68 2013-11-25 18:14:50

etc
Developer
Registered: 2010-11-11
Posts: 5,257
Website GitHub

Re: [plugin] [ORPHAN] ajw_comments_feed

uli wrote:

For changing the home base of such a feed link, e.g. for subscribing to articles or categories, the crucial points will be these two lines: … The rest could remain, I guess?

No idea, I have done it few years ago and forgot about it, maybe it’s nonsense nowadays… go for some trial and error? :)

You can also add the following link to <head>:

<link rel="alternate" type="application/rss+xml" title="Comments" href='<txp:site_url />?rah_external_output=your_comments_rss' />

Offline

#69 2013-11-26 20:32:39

uli
Moderator
From: Cologne
Registered: 2006-08-15
Posts: 4,311

Re: [plugin] [ORPHAN] ajw_comments_feed

etc wrote:

You can also add the following link to <head>

Thanks, something seemed incomplete, but I couldn’t check.

go for some trial and error? :)

That’s what I usually do. And I will do once we have the job.


In bad weather I never leave home without wet_plugout, smd_where_used and adi_form_links

Offline

#70 2019-10-27 09:53:09

jakob
Admin
From: Germany
Registered: 2005-01-20
Posts: 4,754
Website

Re: [plugin] [ORPHAN] ajw_comments_feed

Apologies for resurrecting this old thread …

etc wrote #276924:

… but you can easily create the feed with the following rah_external_output snippet, accessible at ?rah_external_output=your_comments_rss:

; Content-type: text/xml...

The above code is a general rss feed for recent comments to an entire site.

If I want to provide a comments feed for a specific article – which is what the original plugin did, I believe – am I right in assuming I could do something like this:

1. Replace txp:recent_comments in the above with txp:comments and wrap the entire code block in txp:article.

2. Adjust <atom:link href="<txp:permlink />?feed=rss" rel="self" type="application/rss+xml" />.

3. Adjust pubDate entry as the last_mod will be the comment time of the newest comment of that article, not of the entire site? Perhaps:

<txp:comments sort="posted desc" limit="1"><txp:comment_time format="rfc822" /></txp:comments>

4. Add a detection mechanism for the url variable in my page template for an article. Perhaps:

<txp:evaluate query='<txp:page_url type="feed" /> = "rss"'>
    <txp:output_form form="article_comment_feed" />
<txp:else />
    ... regular page template ...
</txp:evaluate>

(BTW: Have I got the syntax of txp:evaluate correct or does page_url also have to be in quotes? Or is that done better with variable / if_variable?)

And then in the form article_comment_feed, put the entire code block above with the modifications, starting with:

<txp:header value="text_xml" />

Will that use txp:header work at all? i.e. can processing of the urlvar begin before the page header is set?

5. Reference the feed via a link in my article to <txp:permlink />?feed=rss.

Or is there perhaps a better way altogether? Thanks for any feedback!


TXP Builders – finely-crafted code, design and txp

Offline

#71 2019-10-27 13:26:12

etc
Developer
Registered: 2010-11-11
Posts: 5,257
Website GitHub

Re: [plugin] [ORPHAN] ajw_comments_feed

jakob wrote #319847:

<txp:evaluate query='<txp:page_url type="feed" /> = "rss"'>...

(BTW: Have I got the syntax of txp:evaluate correct or does page_url also have to be in quotes? Or is that done better with variable / if_variable?)

You have to enclose it in quotes, either directly or via escape="quote" attribute.

And then in the form article_comment_feed, put the entire code block above with the modifications, starting with:

<txp:header value="text_xml" />...

Will that use txp:header work at all? i.e. can processing of the urlvar begin before the page header is set?

It would work if the parser had a chance to get there. But, afair, feed requests are handled by atom.php / rss.php scripts. Not sure they parse any page by default, you have to use a callback.

Offline

#72 2019-10-27 21:19:44

jakob
Admin
From: Germany
Registered: 2005-01-20
Posts: 4,754
Website

Re: [plugin] [ORPHAN] ajw_comments_feed

etc wrote #319851:

You have to enclose it in quotes, either directly or via escape="quote" attribute.

It would work if the parser had a chance to get there. But, afair, feed requests are handled by atom.php / rss.php scripts. Not sure they parse any page by default, you have to use a callback.

Had to read that a few times but I think I have it: I made an unfortunate choice by proposing feed as the url parameter when that’s already used by txp itself.

I think I have it working now with a different url parameter as follows:

A misc form called article_comment_feed:

<txp:header value="text_xml" /><txp:article escape="trim">
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
 <generator>http://textpattern.com/</generator>
 <title><txp:site_name /> – <txp:title no_widow="0" /></title>
 <description><txp:title no_widow="0" /> - comments</description>
 <link><txp:permlink /></link>
 <atom:link href="<txp:permlink />?comment-feed=rss" rel="self" type="application/rss+xml" />
 <pubDate><txp:comments break="" sort="posted desc" limit="1" escape="trim"><txp:comment_time format="rfc822" /></txp:comments></pubDate>

 <txp:comments break="item">
     <title>Comment on <txp:title no_widow="0" /> by <txp:comment_name link="0" /></title>
     <link><txp:comment_permlink /></link>
     <guid><txp:comment_permlink /></guid>
     <pubDate><txp:comment_time format="rfc822" /></pubDate>
     <description><![CDATA[<txp:comment_message />]]></description>
     <content:encoded><![CDATA[<txp:comment_message />]]></content:encoded>
     <dc:creator><txp:comment_name /></dc:creator>
 </txp:comments>

</channel>
</rss>
</txp:article>

and then this in my page template:

<txp:evaluate query='<txp:page_url type="comment-feed" escape="quote" /> = "rss"'>
    <txp:output_form form="article_comment_feed" />
<txp:else />
    ... the regular page template ...
</txp:evaluate>

(It seems that both escape="quote" like above or <txp:evaluate query='"<txp:page_url type="comment-feed" />" = "rss"'> both work. I was expecting the latter to cause it to stumble over the double quotes in the double quotes in the single quotes.)

And then in the article form:

<a href="<txp:permlink />?comment-feed=rss">Comment feed for this article</a>

to link to the feed.

Can that be improved on, especially the evaluate around the page template?


TXP Builders – finely-crafted code, design and txp

Offline

Board footer

Powered by FluxBB