# peg_nested_comments v0.1 # Nested comments ala Livejournal # Egypt Urnash # http://egypt.urnash.com/ # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTk6InBlZ19uZXN0ZWRfY29tbWVudHMiO3M6NzoidmVyc2lv biI7czozOiIwLjEiO3M6NjoiYXV0aG9yIjtzOjEyOiJFZ3lwdCBVcm5hc2giO3M6MTA6ImF1 dGhvcl91cmkiO3M6MjQ6Imh0dHA6Ly9lZ3lwdC51cm5hc2guY29tLyI7czoxMToiZGVzY3Jp cHRpb24iO3M6MzE6Ik5lc3RlZCBjb21tZW50cyBhbGEgTGl2ZWpvdXJuYWwiO3M6NDoidHlw ZSI7aToxO3M6NDoiaGVscCI7czoxMjcxOiIJPGgxPk5lc3RlZCBDb21tZW50czwvaDE+CgoJ PHA+VGhpcyBpcyBhIHF1aWNrIGFuZCBkaXJ0eSBndWlkZSBhcyB0aGlzIHBsdWdpbiBpcyBz dGlsbCBpbiBkZXZlbG9wbWVudC48L3A+CgoJPHA+WW91JiM4MjE3O2xsIGhhdmUgdG8gdHdl YWsgdGhyZWUgZm9ybXM6PC9wPgoKCTxwPjEuIGluIGNvbW1lbnRzX2Rpc3BsYXksIHJlcGxh Y2UgeW91ciA8dHhwOmNvbW1lbnRzPiB3aXRoIDx0eHA6cGVnX2NvbW1lbnRzPiAmIzgyMTE7 IHRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lLjxiciAvPgoyLiBpbiBjb21tZW50cywgYWRk IDx0eHA6cGVnX2NoaWxkX2NvbW1lbnRzPiBhdCB0aGUgZW5kLiBEdXBsaWNhdGUgd2hhdGV2 ZXIgYXJndW1lbnRzIHlvdSB1c2VkIGZvciA8dHhwOnBlZ19jb21tZW50cz4uPGJyIC8+CkFs c28gYWRkIDx0eHA6cGVnX3JlcGx5X2xpbms+IHdoZXJldmVyIHlvdSBzZWUgZml0OyB0aGlz IGdlbmVyYXRlcyB0aGUgbGluayB0byByZXBseSB0byB0aGUgY29tbWVudC48YnIgLz4KMy4g ZmluYWxseSwgaW5zZXJ0IDx0eHA6cGVnX3JlcGx5X3RvIC8+IGFueXdoZXJlIGluIGNvbW1l bnRfZm9ybS4gSXQgZ2VuZXJhdGVzIGEgaGlkZGVuIGZpZWxkOyBJIHB1dCBpdCByaWdodCBh Ym92ZSA8dHhwOmNvbW1lbnRfcHJldmlldz4gYnV0IGl0IHJlYWxseSBkb2VzbiYjODIxNzt0 IG1hdHRlci48L3A+CgoJPHA+VGhpcyBidWlsZHMgdXBvbiBzZXZlcmFsIGNodW5rcyBvZiBj b2RlIGZyb20gY2hhX2NvbW1lbnRfcmVwbHkuPC9wPgoKCTxwPjxzcGFuIGNsYXNzPSJjYXBz Ij5UT0RPPC9zcGFuPjoKCTx1bD4KCQk8bGk+ZmlndXJlIG91dCBob3cgdG8gZWxlZ2FudGx5 IGluc2VydCB0aGUgcGFyZW50IHBvaW50ZXIgaW50byB0aGUgY29tbWVudCB3aGVuIGl0JiM4 MjE3O3Mgc2F2ZWQgdG8gdGhlIGRiPC9saT4KCQk8bGk+Y2xlYW4gdXAgdGhlIGphdmFzY3Jp cHQgaW5zZXJ0aW9uPC9saT4KCQk8bGk+bW92ZSB0aGUgY29tbWVudCBib3ggdG8gYmVuZWF0 aCB0aGUgY29tbWVudCB5b3UmIzgyMTc7cmUgcmVwbHlpbmcgdG88L2xpPgoJCTxsaT5kZWFs IGdyYWNlZnVsbHkgd2l0aCBkZWxldGluZyBhIGNvbW1lbnQgdGhhdCBoYXMgY2hpbGRyZW48 L2xpPgoJCTxsaT51bmxpbmsgYSBjaGlsZCBjb21tZW50IGZyb20gaXRzIHBhcmVudCB3aGVu IGl0JiM4MjE3O3MgZGVsZXRlZDwvbGk+CgkJPGxpPmRlYWwgd2l0aCBpbnN0YWxsYXRpb25z IHdob3NlIHByZWZpeCBpcyBub3QgJiM4MjE2O3R4cF8mIzgyMTc7PC9saT4KCTwvdWw+PC9w PiI7czo0OiJjb2RlIjtzOjUzNTM6IgpyZWdpc3Rlcl9jYWxsYmFjaygncGVnX3NhdmVDb21t ZW50TGlua3MnLCdjb21tZW50LnNhdmUnKTsKCi8vIGNyZWF0ZSB0YWJsZSBpZiBub3QgYWxy ZWFkeSB0aGVyZQokcnMgPSBzYWZlX3F1ZXJ5KCJzaG93IGNvbHVtbnMgZnJvbSB0eHBfZGlz Y3VzcyBsaWtlICdwZWdfY2hpbGRyZW4nIikgb3IgZGllKCJFcnJvciBjaGVja2luZyB0YWJs ZXMuIik7CmlmIChudW1Sb3dzKCRycykgPT0gMCkgewoJJHJzID0gc2FmZV9hbHRlciAoJ3R4 cF9kaXNjdXNzJywiQUREIHBlZ19jaGlsZHJlbiB0ZXh0IG5vdCBudWxsIikgb3IgZGllKCJF cnJvciBhbHRlcmluZyB0YWJsZXMuIik7Cn0KCmlmIChAdHhwaW50ZXJmYWNlID09ICdwdWJs aWMnKSB7CgkvLyBqYXZhc2NyaXB0IGhhY2tlcnkgcHJldHR5IG11Y2ggc3RyYWlnaHQgZnJv bSBjaGFfY29tbWVudF9yZXBseQoJLy8gQ29kZSBzb21lIGphdmFzY3JpcHQgdG8gZ2V0IHRo ZSBpbmRleCBvZiB0aGUgY29tbWVudCB3ZSB3YW50IGluIHJlcGx5X3RvIHNlbGVjdC4KCSRq cyA9ICI8c2NyaXB0IGxhbmd1YWdlPVwiamF2YXNjcmlwdFwiIHR5cGU9XCJ0ZXh0L2phdmFz Y3JpcHRcIj4KCTwhLS0KCWZ1bmN0aW9uIHBlZ19zZWxlY3RDb21tZW50KGRpc2N1c3NpZCkg ewoJCS8vdmFyIG15U2VsZWN0ID0gZG9jdW1lbnQuZm9ybXNbMl0ucGVnX3JlcGx5dG87CgkJ dmFyIG15U2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3BlZ19yZXBseXRvJyk7 CgoJCW15U2VsZWN0LnZhbHVlID0gZGlzY3Vzc2lkOwoJfQoJLy8gLS0+Cgk8L3NjcmlwdD4i OwoKCSAgLy8gcHJpbnQgaXQgb3V0IHRvIGdldCBpdCBpbiB0aGUgcGFnZS4uIEkgZ3Vlc3Mg d2UgY291bGQgcHV0IHRoaXMgd2hlcmUgaXQgbWFrZXMgbW9yZSBzZW5zZS4uCgkgIC8vIGJ1 dCB0aGlzIHdvcmtzIGZvciBub3cuCglwcmludCAkanM7Cn0vLyBlbHNlIHsKCgkvLyBhZG1p biBwYWdlIHN0dWZmIHdvdWxkIGdvIGhlcmUKLy99CgoJLy8gY3V0IGFuZCBwYXN0ZSBmcm9t IHR4cCdzIHBhcnNlX2Zvcm0KCS8vIHdpdGggdGhlIGFudGktcmVjdXJzaW9uIGJpdHMgcmVt b3ZlZAoJZnVuY3Rpb24gcGVnX3BhcnNlX2Zvcm1fcmVjdXJzaXZlbHkoJG5hbWUpCgl7CgkJ JGYgPSBmZXRjaF9mb3JtKCRuYW1lKTsKCQlpZiAoJGYpIHsKCQkJLy8gYXJyYXlfcHVzaCgk c3RhY2ssICRuYW1lKTsKCQkJJG91dCA9IHBhcnNlKCRmKTsKCQkJLy8gYXJyYXlfcG9wKCRz dGFjayk7CgkJCXJldHVybiAkb3V0OwoJCX0KCX0KCgkvLyBwcm92aWRlcyBhIG5lc3RlZCBs aXN0IG9mIGNvbW1lbnRzCgkvLyB0aGlzIHN0YXJ0ZWQgYXMgYSBkaXJlY3QgY3V0LWFuZC1w YXN0ZSBvZiB0eHAncyAnY29tbWVudHMnIGZ1bmN0aW9uLi4uCglmdW5jdGlvbiBwZWdfY29t bWVudHMoJGF0dHMpCgl7CgkJZ2xvYmFsICR0aGlzYXJ0aWNsZSwgJHByZWZzLCAkcGVnX2Nv bW1lbnRzdGFjaywgJHBlZ19jb21tZW50czsKCQkvLyAkcGVnX2NvbW1lbnRzdGFjayBpcyBm b3IgcHVzaGluZyBhbmQgcG9wcGluZyB3aGVuIHdlIHJlY3Vyc2UKCQkvLyAkcGVnX2NvbW1l bnRzIGxldHMgdGhlIHJlY3Vyc2l2ZSBmdW5jdGlvbiBoYXZlIGFjY2VzcyB0byB0aGUgY29t bWVudHMKCQlleHRyYWN0KCRwcmVmcyk7CgoJCWV4dHJhY3QobEF0dHMoYXJyYXkoCgkJCSdm b3JtJyAgICAgICA9PiAnY29tbWVudHMnLAoJCQknd3JhcHRhZycgICAgPT4gKCRjb21tZW50 c19hcmVfb2wgPyAnb2wnIDogJycpLAoJCQknYnJlYWsnICAgICAgPT4gKCRjb21tZW50c19h cmVfb2wgPyAnbGknIDogJ2RpdicpLAoJCQknY2xhc3MnICAgICAgPT4gJ2NvbW1lbnRzJywK CQkJJ2JyZWFrY2xhc3MnID0+ICcnLAoJCQknbGltaXQnICAgICAgPT4gMCwKCQkJJ29mZnNl dCcgICAgID0+IDAsCgkJCSdzb3J0JyAgICAgICA9PiAncG9zdGVkIEFTQycsCgkJKSwkYXR0 cykpOwoKCQlhc3NlcnRfYXJ0aWNsZSgpOwoKCQlleHRyYWN0KCR0aGlzYXJ0aWNsZSk7CgoJ CWlmICghJGNvbW1lbnRzX2NvdW50KSByZXR1cm4gJyc7CgoJCSRxcGFydHMgPSBhcnJheSgK CQkJJ3BhcmVudGlkPScuaW50dmFsKCR0aGlzaWQpLicgYW5kIHZpc2libGU9Jy5WSVNJQkxF LAoJCQknb3JkZXIgYnkgJy5kb1NsYXNoKCRzb3J0KSwKCQkJKCRsaW1pdCkgPyAnbGltaXQg Jy5pbnR2YWwoJG9mZnNldCkuJywgJy5pbnR2YWwoJGxpbWl0KSA6ICcnCgkJKTsKCgkJJHJz ID0gc2FmZV9yb3dzX3N0YXJ0KCcqLCB1bml4X3RpbWVzdGFtcChwb3N0ZWQpIGFzIHRpbWUn LCAndHhwX2Rpc2N1c3MnLCBqb2luKCcgJywgJHFwYXJ0cykpOwoKCQkkb3V0ID0gJyc7CgoJ CWlmICgkcnMpIHsKCQkJJHBlZ19jb21tZW50c3RhY2sgPSBhcnJheSgpOwoJCQkkY29tbWVu dHMgPSBhcnJheSgpOwoJCQkkcGVnX2NvbW1lbnRzID0gYXJyYXkoKTsKCgkJCS8vIHN1Y2sg YWxsIHRoZSBjb21tZW50cyBpbnRvIGFuIGFycmF5CgkJCXdoaWxlICgkdmFycyA9IG5leHRS b3coJHJzKSkgewoJCQkJJHBlZ19jb21tZW50c1skdmFyc1snZGlzY3Vzc2lkJ11dID0gJHZh cnM7CgkJCX0KCgkJCWZvcmVhY2ggKCRwZWdfY29tbWVudHMgYXMgJHZhcnMpIHsKCQkJCWlm IChpc3NldCgkdmFyc1sncGVnX21vdGhlcmlkJ10pKSBjb250aW51ZTsKCQkJCSRHTE9CQUxT Wyd0aGlzY29tbWVudCddID0gJHZhcnM7CgkJCQkkY29tbWVudHNbXSA9IHBhcnNlX2Zvcm0o JGZvcm0pLm47CgkJCQl1bnNldCgkR0xPQkFMU1sndGhpc2NvbW1lbnQnXSk7CgkJCX0KCgkJ CSRvdXQgLj0gZG9XcmFwKCRjb21tZW50cywkd3JhcHRhZywkYnJlYWssJGNsYXNzLCRicmVh a2NsYXNzKTsKCQl9CgoJCXJldHVybiAkb3V0OwoJfQoKCWZ1bmN0aW9uIHBlZ19jaGlsZF9j b21tZW50cygkYXR0cykgewoJCWdsb2JhbCAkcHJlZnMsICR0aGlzY29tbWVudCwgJHBlZ19j b21tZW50cywgJHBlZ19jb21tZW50c3RhY2s7CgoJCWlmICghaXNzZXQoJHRoaXNjb21tZW50 WydwZWdfY2hpbGRyZW4nXSkpIHJldHVybjsKCgkJJHBlZ19jaGlsZHJlbiA9IGV4cGxvZGUo JywnLCR0aGlzY29tbWVudFsncGVnX2NoaWxkcmVuJ10pOwoKCS8vIEkgcmVhbGx5IGhhdGUg dG8gZG8gc28gbXVjaCBjb2RlIGR1cGxpY2F0aW9uLCBidXQgdHhQIGlzIG5vdCB2ZXJ5IE9P LgoJCWV4dHJhY3QoJHByZWZzKTsKCgkJZXh0cmFjdChsQXR0cyhhcnJheSgKCQkJJ2Zvcm0n ICAgICAgID0+ICdjb21tZW50cycsCgkJCSd3cmFwdGFnJyAgICA9PiAoJGNvbW1lbnRzX2Fy ZV9vbCA/ICdvbCcgOiAnJyksCgkJCSdicmVhaycgICAgICA9PiAoJGNvbW1lbnRzX2FyZV9v bCA/ICdsaScgOiAnZGl2JyksCgkJCSdjbGFzcycgICAgICA9PiAnY29tbWVudHMnLAoJCQkn YnJlYWtjbGFzcycgPT4gJycsCgkJCSdsaW1pdCcgICAgICA9PiAwLAoJCQknb2Zmc2V0JyAg ICAgPT4gMCwKCQkJJ3NvcnQnICAgICAgID0+ICdwb3N0ZWQgQVNDJywKCQkpLCRhdHRzKSk7 CgoJCWFycmF5X3B1c2goJHBlZ19jb21tZW50c3RhY2ssJHRoaXNjb21tZW50KTsKCQkkbXlJ RCA9ICR0aGlzY29tbWVudFsnZGlzY3Vzc2lkJ107CgoJCSRjb21tZW50cyA9IGFycmF5KCk7 CgkJZm9yZWFjaCAoJHBlZ19jaGlsZHJlbiBhcyAkY2hpbGQpIHsKCQkJaWYgKCFpc3NldCgk cGVnX2NvbW1lbnRzWyRjaGlsZF1bJ2Rpc2N1c3NpZCddKSkgY29udGludWU7IC8vIHNraXAg ZGVsZXRlZC9ub25leGlzdGFudCBjb21tZW50cwoJCQkkcGVnX2NvbW1lbnRzWyRjaGlsZF1b J3BlZ19tb3RoZXJpZCddID0gJG15SUQ7CgkJCSR0aGlzY29tbWVudCA9ICRwZWdfY29tbWVu dHNbJGNoaWxkXTsKCQkJJGNvbW1lbnRzW10gPSBwZWdfcGFyc2VfZm9ybV9yZWN1cnNpdmVs eSgkZm9ybSkubjsKCQl9CgoJCXJldHVybiBkb1dyYXAoJGNvbW1lbnRzLCR3cmFwdGFnLCRi cmVhaywkY2xhc3MsJGJyZWFrY2xhc3MpOwoJfQoKCWZ1bmN0aW9uIHBlZ19zYXZlQ29tbWVu dExpbmtzKCRldmVudCwgJHN0ZXA9JycpIHsKCQkkcmVwbHlfdG8gPSBwcygncGVnX3JlcGx5 dG8nKTsKCQllY2hvICRyZXBseV90bzsKCQlpZiAoJHJlcGx5X3RvICE9ICdBcnRpY2xlJyAm JiAkcmVwbHlfdG8gIT0gJycpIHsKCQkJJG5leHRJRCA9ICdscGFkKCInLnBlZ19nZXROZXh0 QXV0b0lEKCd0eHBfZGlzY3VzcycpLiciLDYsIjAiKSc7CgkJCSRycyA9IHNhZmVfdXBkYXRl KCd0eHBfZGlzY3VzcycsJ3BlZ19jaGlsZHJlbiA9IGlmIChwZWdfY2hpbGRyZW4gPSAiIiwg Jy4kbmV4dElELicsICBjb25jYXRfd3MoIiwiLHBlZ19jaGlsZHJlbiwnLiRuZXh0SUQuJykp JywnZGlzY3Vzc2lkPScuJHJlcGx5X3RvKTsKCQl9Cgl9CgoJLy8gdGhpcyBvbmUgaXMgc3Ry YWlnaHQgb3V0IG9mIGNoYV9jb21tZW50X3JlcGx5CglmdW5jdGlvbiBwZWdfZ2V0TmV4dEF1 dG9JRCgkdG5hbWUpIHsKCQkvKgoJCSAqIFJldHVybiB0aGUgbmV4dCBpZCB0byBiZSB1c2Vk IG9uIGF1dG9faW5jcmVtZW50IGluIHRhYmxlICR0bmFtZQoJCSAqLwoKCQkkc3RhdHVzID0g Z2V0Um93KCdzaG93IHRhYmxlIHN0YXR1cyBsaWtlIFwnJy4kdG5hbWUuJ1wnJyk7CgkJaWYg KGlzX2FycmF5KCRzdGF0dXMpKSB7CgkJCSRyZXQgPSAkc3RhdHVzWydBdXRvX2luY3JlbWVu dCddOwoJCX0gZWxzZSB7CgkJCSRyZXQgPSBGYWxzZTsKCQl9CgoJCXJldHVybiAkcmV0OwoJ fQoKCS8vIGFkZHMgYW4gaW52aXNpYmxlIHZhbHVlIHRvIHRoZSByZXBseSBmb3JtCgkvLyB0 ZWxsaW5nIHVzIHdoYXQgY29tbWVudCBpcyBiZWluZyByZXBsaWVkIHRvCgkvLyBwcmV0dHkg bXVjaCBzd2lwZWQgZnJvbSBjaGFfY29tbWVudF9yZXBseQoJZnVuY3Rpb24gcGVnX3JlcGx5 X3RvKCRhdHRzKSB7CgkJJHJlcGx5X3RvID0gcHMoJ3BlZ19yZXBseXRvJyk7CgoJCXJldHVy biAnPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InBlZ19yZXBseXRvIiBpZD0icGVnX3JlcGx5 dG8iIHZhbHVlPSInLiRyZXBseV90by4nIi8+JzsKCX0KCglmdW5jdGlvbiBwZWdfcmVwbHlf bGluaygkYXR0cykgewoJCS8vIG91ciBjdXJyZW50IGNvbW1lbnQKCQlnbG9iYWwgJHRoaXNj b21tZW50OwoKCQkvLyBpZiBwYXNzZWQgYSBsYWJlbCwgcHJpbnQgaXQsIG90aGVyd2lzZSwg dGhlIGRlZmF1bHQgaXMgJ1JlcGx5JwoJCSRyZXBseV92YWx1ZSA9IChpc3NldCgkYXR0c1sn bGFiZWwnXSkpID8gJGF0dHNbJ2xhYmVsJ10gOiAnUmVwbHknOwoKCQkkaHJlZiA9ICIjcGVn X3JlcGx5dG8iOwoJCSRvbmNsaWNrID0gInBlZ19zZWxlY3RDb21tZW50KCciLiR0aGlzY29t bWVudFsnZGlzY3Vzc2lkJ10uIicpIjsKCgkJJG91dCA9ICI8YSBjbGFzcz1cInBlZ19yZXBs eXRvXCIgaHJlZj1cIiRocmVmXCIgb25DbGljaz1cIiRvbmNsaWNrO1wiPiAkcmVwbHlfdmFs dWUgPC9hPiI7CgoJCXJldHVybiAkb3V0OwoJfQoiO3M6MzoibWQ1IjtzOjMyOiI0ZmM0YTcy ZWEwNzE0ZDBmNzAxMmE5NDdjY2E1MWJhMCI7fQ==