Textpattern CMS support forum
You are not logged in. Register | Login | Help
- Topics: Active | Unanswered
[plugin] [ORPHAN] fha_time_diff: A Time Since generator
Notice: This plugin is no longer available by the author but it can be copied from this thread.
For txp version 4.8.7+ see forum.textpattern.com/viewtopic.php?pid=331111#p331111
**********************************************************
Hi,
this is my first plugin ever, so be kind to me. Download it here (it’s the new plugin syntax, so simply copy and paste the code into your TXP plugin admin). The old, pre-RC (1.19 and older) format plugin is still there.
It takes a certain date in parts (i. e. year, month, hour etc.) and spills out a ‘time since’ information. If some units are not provided, no values for these units are returned either. Some examples:
<txp:fha_time_diff year="2004" month="3" day="23" hour="2" minute="40" />
Returns a complete time information, from years to minutes.<txp:fha_time_diff year="2000" month="10" />
Returns months and years since October 2000.<txp:fha_time_diff year="1980" month="5" day="1" />
Returns years, months and days since May 1, 1980.<txp:fha_time_diff year="1975" />
Only returns years since 1975.
Additionally, these arguments can be passed to the plugin. (You don’t need them for basic use with English language.)
lang=""
Sets a language (two chars) for unit words; see plugin source for languages provided (sofar Czech and English only) and hints on how to add others. If not set, the plugin tries the site wide language setting, otherwise ‘en’ is assumed.simpleplurals=""
If set to a non-zero number, it indicates which amount triggers the plural form (e. g. ‘years’ instead of ‘year’). If set to zero, it turns on special word forms handling that always follows the last digit (e. g. necessary for Czech dates). If not set, it defaults to a language-specific value (2 for English, 0 for Czech).delimiter=""
Sets characters that should separate individual values. If not set, a comma with a space are assumed.
The plugin is based upon a script written by Mark H. Kathmann.
Copy Paste Plugin
YToxMDp7czo0OiJuYW1lIjtzOjEzOiJmaGFfdGltZV9kaWZmIjtzOjY6ImF1dGhvciI7czoxMToiRmlsaXAgSGFqbnkiO3M6MTA6ImF1dGhvcl91cmkiO3M6MjI6Imh0dHA6Ly9maWxpcC5oYWpueS5uZXQiO3M6NzoidmVyc2lvbiI7czo0OiIwLjIzIjtzOjExOiJkZXNjcmlwdGlvbiI7czo1NjoiUmV0dXJucyB0aW1lIGRpZmZlcmVuY2UgZnJvbSB0aGUgZGF0ZSBzZXQgdmlhIGFyZ3VtZW50cy4iO3M6NDoiaGVscCI7czo1MTA5OiI8cD5UaGUgcGx1Z2luIHRha2VzIGluIGluZGl2aWR1YWwgcGFydHMgb2YgZGF0ZSBhbmQgdGltZSwgaS4gZS4geWVhciwgbW9udGgsIGhvdXIgZXRjLiBhbmQgcmV0dXJuIHRoZSB0aW1lIGVsYXBzZWQvcmVtYWluaW5nIHNpbmNlL3VudGlsIG5vdy4gQm90aCBwYXN0IGFuZCBmdXR1cmUgZGF0ZXMgYXJlIGFsbG93ZWQgYW5kIHByb2Nlc3NlZCBwcm9wZXJseS4gSWYgc29tZSB1bml0cyBhcmUgbm90IHByb3ZpZGVkLCBubyB2YWx1ZXMgZm9yIHRoZXNlIHVuaXRzIGFyZSByZXR1cm5lZCBlaXRoZXIgLSBwcm92aWRlZCB0aGF0IHlvdSAndHJpbScgdGhlIHZhbHVlcyBsaXN0IGZyb20gdGhlIHJpZ2h0LCBpLiBlLiBhdCBsZWFzdCB0aGUgeWVhciBuZWVkcyB0byBiZSBzcGVjaWZpZWQuIEFsc28sIHRoZXJlIHNob3VsZG4ndCBiZSBhbnkgZ2FwcyBpbiB0aGUgc2VxdWVuY2UgbG9naWMsIGkuIGUuIGlmIHlvdSB3YW50IG1pbnV0ZXMgY2FsY3VsYXRlZCwgeW91IG11c3Qgc3BlY2lmeSBob3VycyBhcyB3ZWxsIChhbmQgcHJvdmlkZSBhIDxjb2RlPmhvdXI9IjAiPC9jb2RlPiBpZiB0aGUgaG91ciB3YXMgemVybykuPC9wPgoJPHA+U29tZSBleGFtcGxlczo8L3A+CgogICAgPGRsPgoJICAgIDxkdD48Y29kZT4mbHQ7dHhwOmZoYV90aW1lX2RpZmYgeWVhcj0iMjAwNCIgbW9udGg9IjMiIGRheT0iMjMiIGhvdXI9IjIiIG1pbnV0ZT0iNDAiIC8mZ3Q7PC9jb2RlPjwvZHQ+CgkJPGRkPlJldHVybnMgYSBjb21wbGV0ZSB0aW1lIGluZm9ybWF0aW9uLjwvZGQ+CiAgICAgICAgPGR0Pjxjb2RlPiZsdDt0eHA6ZmhhX3RpbWVfZGlmZiB5ZWFyPSIyMDAwIiBtb250aD0iMTAiIC8mZ3Q7PC9jb2RlPjwvZHQ+CgkJPGRkPlJldHVybnMgbW9udGhzIGFuZCB5ZWFycyBzaW5jZSBPY3RvYmVyIDIwMDAuPC9kZD4KICAgICAgICA8ZHQ+PGNvZGU+Jmx0O3R4cDpmaGFfdGltZV9kaWZmIHllYXI9IjE5ODAiIG1vbnRoPSI1IiBkYXk9IjEiIC8mZ3Q7PC9jb2RlPjwvZHQ+CgkJPGRkPlJldHVybnMgeWVhcnMsIG1vbnRocyBhbmQgZGF5cyBzaW5jZSBNYXkgMSwgMTk4MC48L2RkPgogICAgICAgIDxkdD48Y29kZT4mbHQ7dHhwOmZoYV90aW1lX2RpZmYgeWVhcj0iMTk3NSIgLyZndDs8L2NvZGU+PC9kdD4KCQk8ZGQ+T25seSByZXR1cm5zIHllYXJzIHNpbmNlIDE5NzUuPC9kZD4KICAgIDwvZGw+CgoJPHA+RnVydGhlcm1vcmUsIHRoZXJlIHR3byBzcGVjaWFsIGFyZ3VtZW50cywgd2hpY2ggY2hhbmdlIHRoZSB3YXkgdGltZSBpcyBjYWxjdWxhdGVkLjwvcD4KCTxkbD4KCQk8ZHQ+PGNvZGU+cG9zdGVkPSIiPC9jb2RlPjwvZHQ+CgkJPGRkPkNhbiBiZSBzcGVjaWZpZWQgaW5zdGVhZCBvZiB0aGUgZGF0ZS90aW1lIHZhbHVlcyBhYm92ZS4gSWYgc2V0IHRvIGFueSB2YWx1ZSAoYXMgaW4gcG9zdGVkPSJ5ZXMiKSwgaXQgdGFrZXMgaW4gdGhlIGN1cnJlbnQgYXJ0aWNsZSdzIHBvc3RlZCBkYXRlIChwcm92aWRlZCB0aGVyZSBpcyBzdWNoIGEgY29udGV4dCkuIEN1cnJlbnRseSBpdCB3b3JrcyBpbiBhcnRpY2xlIGZvcm1zLCBOT1QgaW4gYXJ0aWNsZSBib2RpZXMuIChUaGUgb3JpZ2luYWwgaW50ZW50aW9uIGlzIHRvIHVzZSB0aGlzIHBsdWdpbiBpbnN0ZWFkIG9mIHRoZSA8Y29kZT4mbHQ7dHhwOnBvc3RlZCAvJmd0OzwvY29kZT4gdGFnIGZvciBiZXR0ZXIgZGF0ZS90aW1lIGhhbmRsaW5nIHRoYW4gdGhlIGJ1aWx0LWluICJzaW5jZSIgZnVuY3Rpb24uKTwvZGQ+CgkJPGR0Pjxjb2RlPmJhc2VkYXRlPSIiPC9jb2RlPjwvZHQ+CgkJPGRkPkFsbG93cyB0byBzZXQgYSBkYXRlL3RpbWUsIHdoaWNoIHdpbGwgYmUgdGFrZW4gYXMgYSBiYXNlIHRvIHJ1biBjYWxjdWxhdGlvbnMgYWdhaW5zdCAoaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCA8ZW0+bm93PC9lbT4pLiBUaGUgZGF0ZS90aW1lIGZvcm1hdCBzaG91bGQgYWRoZXJlIHRvIHRoZSB1c3VhbCBzeW50YXggKGZvciBleGFtcGxlcyBzZWUgY29ycmVzcG9uZGluZyBkYXRlIGFuZCB0aW1lIHNlY3Rpb24gb24gdGhpcyA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGFyL21hbnVhbC9odG1sX2NoYXB0ZXIvdGFyXzcuaHRtbCNTRUMxMDAiPkdOVSBtYW51YWwgcGFnZTwvYT4pLjwvZGQ+Cgk8L2RsPgoKICAgIDxwPkFkZGl0aW9uYWxseSwgdGhlc2UgYXJndW1lbnRzIGNhbiBiZSBwYXNzZWQgdG8gdGhlIHBsdWdpbi4gKFRoZXkncmUgbm90IG5lY2Vzc2FyeSBmb3IgYmFzaWMgdXNlIHdpdGggRW5nbGlzaCBsYW5ndWFnZS4pPC9wPgoKICAgIDxkbD4KICAgICAgICA8ZHQ+PGNvZGU+bGFuZz0iIjwvY29kZT48L2R0PgoJCTxkZD5TZXRzIGEgbGFuZ3VhZ2UgKHR3byBjaGFycykgZm9yIHVuaXQgd29yZHM7IHNlZSBwbHVnaW4gc291cmNlIGZvciBsYW5ndWFnZXMgcHJvdmlkZWQgYW5kIGhpbnRzIG9uIGhvdyB0byBhZGQgb3RoZXJzLiBJZiBub3Qgc2V0LCB0aGUgcGx1Z2luIHRyaWVzIHRoZSBzaXRlIHdpZGUgbGFuZ3VhZ2Ugc2V0dGluZywgb3RoZXJ3aXNlICYjODIxNjtlbiYjODIxNzsgaXMgYXNzdW1lZC48L2RkPgogICAgICAgIDxkdD48Y29kZT5zaW1wbGVwbHVyYWxzPSIiPC9jb2RlPjwvZHQ+CgkJPGRkPklmIHNldCB0byBhIG5vbi16ZXJvIG51bWJlciwgaW5kaWNhdGVzIHdoaWNoIGFtb3VudCB0cmlnZ2VycyB0aGUgcGx1cmFsIGZvcm0gKGUuIGcuICYjODIxNjt5ZWFycyYjODIxNzsgaW5zdGVhZCBvZiAmIzgyMTY7eWVhciYjODIxNzspLiBJZiBzZXQgdG8gemVybywgdHVybnMgb24gc3BlY2lhbCB3b3JkIGZvcm1zIGhhbmRsaW5nIHRoYXQgYWx3YXlzIGZvbGxvd3MgdGhlIGxhc3QgZGlnaXQgKGUuIGcuIG5lY2Vzc2FyeSBmb3IgQ3plY2ggZGF0ZXMpLiBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byBhIGxhbmd1YWdlLXNwZWNpZmljIHZhbHVlICgyIGZvciBFbmdsaXNoLCAwIGZvciBDemVjaCkuPC9kZD4KICAgICAgICA8ZHQ+PGNvZGU+ZGVsaW1pdGVyPSIiPC9jb2RlPjwvZHQ+CgkJPGRkPlNldHMgc3RyaW5nIHRoYXQgc2hvdWxkIHNlcGFyYXRlIGluZGl2aWR1YWwgdmFsdWVzLiBJZiBub3Qgc2V0LCBhIGNvbW1hIHdpdGggYSBzcGFjZSBhcmUgYXNzdW1lZC48L2RkPgogICAgICAgIDxkdD48Y29kZT5sYXN0PSIiPC9jb2RlPjwvZHQ+CgkJPGRkPlNldHMgc3RyaW5nIHRoYXQgc2hvdWxkIGJlIHVzZWQgYXMgYSBmaW5hbCBkZWxpbWl0ZXIsIGkuIGUuIHRvIGdvIGJlZm9yZSB0aGUgbGFzdCB1c2VkIGRhdGUvdGltZSBpdGVtLiBJZiBub3Qgc3BlY2lmaWVkIChhbmQgbm8gZGVsaW1pdGVyIGlzIHNldCksIGRlZmF1bHRzIHRvIGxhbmd1YWdlIHNwZWNpZmljIHZhbHVlLCBlLiBnLiAiIGFuZCAiIGluIEVuZ2xpc2guPC9kZD4KCQk8ZHQ+PGNvZGU+bGltaXQ9IiI8L2NvZGU+PC9kdD4KCQk8ZGQ+TGltaXRzIG51bWJlciBvZiBkYXRlL3RpbWUgZW50aXRpZXMgcmV0dXJuZWQgdG8gdGhlIGZpcnN0IDxzdHJvbmc+bjwvc3Ryb25nPiBvZiB0aGVtLiBFLiBnLiBpZiB0aGUgZW50aXJlIHNldCBvZiB5ZWFyL21vbnRoL2RheS9ob3VyL21pbnV0ZSB2YWx1ZXMgd2FzIHRvIGJlIG91dHB1dHRlZCwgc2V0dGluZyB0aGlzIHByb3BlcnR5IHRvIDIgd291bGQgb25seSBvdXRwdXQgeWVhcnMgYW5kIG1vbnRocyAob3IgeWVhcnMgYW5kIGRheXMsIGlmIG1vbnRocyBhcmUgemVybyBhbmQgc28gb24pLjwvZGQ+CgkJPGR0Pjxjb2RlPnNpbmNlPSIiPC9jb2RlPjwvZHQ+CgkJPGRkPlRoZSB3b3JkIGF0dGFjaGVkIHRvIHRoZSByZXN1bHQgaW4gY2FzZSB0aGUgZXZlbnQgZGF0ZSBpcyBpbiB0aGUgcGFzdC4gVGhlcmUgaXMgbm8gZGVmYXVsdCB2YWx1ZS4gSWYgYm90aCA8ZW0+c2luY2U8L2VtPiBhbmQgPGVtPnVudGlsPC9lbT4gYXJlIHNwZWNpZmllZCwgdGhlIHBsdWdpbiB1c2Ugb25lIG9mIHRoZW0gYWNjb3JkaW5nIHRoZSBmaW5hbCByZXN1bHQuIERlZmF1bHRzIHRvIGxhbmd1YWdlIHNwZWNpZmljIHZhbHVlcyAocHJvdmlkZWQgdGhlIDxjb2RlPmF0dGFjaDwvY29kZT4gYXJndW1lbnQgaXMgc2V0KS48L2RkPgoJCTxkdD48Y29kZT51bnRpbD0iIjwvY29kZT48L2R0PgoJCTxkZD5UaGUgd29yZCBhdHRhY2hlZCB0byB0aGUgcmVzdWx0IGluIGNhc2UgdGhlIGV2ZW50IGRhdGUgaXMgaW4gdGhlIGZ1dHVyZS4gVGhlcmUgaXMgbm8gZGVmYXVsdCB2YWx1ZS4gSWYgYm90aCA8ZW0+c2luY2U8L2VtPiBhbmQgPGVtPnVudGlsPC9lbT4gYXJlIHNwZWNpZmllZCwgdGhlIHBsdWdpbiB1c2Ugb25lIG9mIHRoZW0gYWNjb3JkaW5nIHRoZSBmaW5hbCByZXN1bHQuIERlZmF1bHRzIHRvIGxhbmd1YWdlIHNwZWNpZmljIHZhbHVlcyAocHJvdmlkZWQgdGhlIDxjb2RlPmF0dGFjaDwvY29kZT4gYXJndW1lbnQgaXMgc2V0KS48L2RkPgoJCTxkdD48Y29kZT5hdHRhY2g9IiI8L2NvZGU+PC9kdD4KCQk8ZGQ+QSBzd2l0Y2ggdGhhdCB0dXJucyBvbiBhdHRhY2hpbmcgb2Ygc2luY2UvdW50aWwgd29yZHMgYW5kIGFsc28gc3BlY2lmaWVzIHdoZXRoZXIgdGhleSBhcmUgdG8gYmUgYXR0YWNoZWQgYmVmb3JlIG9yIGFmdGVyIHRoZSByZXN1bHQuIFZhbGlkIHZhbHVlcyBhcmUgImJlZm9yZSIsICJhZnRlciIgYW5kICJhdXRvIiAod2hpY2ggd2lsbCB1c2UgdGhlIGxhbmd1YWdlIHNwZWNpZmljIHBvc2l0aW9uKS4gVGhlcmUgaXMgbm8gZGVmYXVsdCB2YWx1ZSwgc28geW91IGhhdmUgdG8gcHJvdmlkZSB0aGlzIGFyZ3VtZW50IHRvIHVzZSB0aGlzIGZlYXR1cmUuPC9kZD4KCQk8ZHQ+PGNvZGU+d3JhcHRhZz0iIjwvY29kZT48L2R0PgoJCTxkZD5TZXRzIHRoZSB0YWcgdG8gd3JhcCB0aGUgcmVzdWx0IHdpdGggKGUuIGcuICJzcGFuIikuIFVzZSBvbmx5IHRoZSB0YWcgbmFtZSwgbm90IHRoZSBicmFja2V0cyBvciBhbnl0aGluZy48L2RkPgoJCTxkdD48Y29kZT5jbGFzcz0iIjwvY29kZT48L2R0PgoJCTxkZD5TZXRzIHRoZSBDU1MgY2xhc3MgZm9yIHRoZSB3cmFwdGFnIChlLiBnLiAiYXJ0aWNsZURhdGUiKSBmb3Igc3R5bGluZyBwdXJwb3Nlcy48L2RkPgogICAgPC9kbD4KCiAgICA8cD5UaGUgcGx1Z2luIGlzIGJhc2VkIHVwb24gYSBzY3JpcHQgd3JpdHRlbiBieSA8YSBocmVmPSJodHRwOi8vd3d3LmthdGhtYW5uLmNvbS91cC8iPk1hcmsgSC4gS2F0aG1hbm48L2E+LjwvcD4iO3M6NDoiY29kZSI7czoxMTA2MToiZnVuY3Rpb24gZmhhX3RpbWVfZGlmZigkYXR0cykgew0KDQoJaWYgKGlzX2FycmF5KCRhdHRzKSkgZXh0cmFjdCgkYXR0cyk7DQoNCi8qDQoJLy8gZGVjbGFyZSB5b3VyIGxhbmd1YWdlIGhlcmUgKGUuIGcuICdkZScgZm9yIEdlcm1hbiBldGMuKQ0KCSRsID0gJ2VuJzsNCgkkd29yZHNbXSA9ICRsOw0KCSR3b3Jkc1skbF0gPSBhcnJheSgnc2ltcGxlcGx1cmFscycsJ3llYXInLCdtb250aCcsJ2RheScsJ2hvdXInLCdtaW51dGUnLCdvdmVycmlkZScsJ3NpbmNlJywndW50aWwnLCdhdHRhY2gnLCdsYXN0Jyk7DQoJLy8gYW4gaW50ZWdlciBmb3Igc2ltcGxlIHBsdXJhbHMgLSBlbnRlciB0aGUgZmlyc3QgbnVtYmVyIHRoYXQgdXNlcyBhIHBsdXJhbCBmb3JtICh1c3VhbGx5IDIpDQoJLy8gb3IgemVybyB0byBhY3RpdmF0ZSBsYXN0LWRpZ2l0IHNwZWNpZmljIGZvcm1zIChlLiBnLiBmb3IgQ3plY2ggbGFuZ3VhZ2UpDQoJJHdvcmRzWyRsXVsnc2ltcGxlcGx1cmFscyddID0gMjsNCgkvLyByZXBsYWNlIG51bWJlcnMgd2l0aCBhcHByb3ByaWF0ZSB3b3JkIGZvcm1zIGZvciB0aGVzZSBhbW91bnRzIChlLiBnLiAneWVhcnMnLCAneWVhcicgZXRjLikNCgkvLyBpZiB1c2luZyBzaW1wbGVwbHVyYWxzLCBvbmx5IGZpcnN0IHR3byBlbnRyaWVzIG5lZWQgdG8gYmUgZW50ZXJlZCAoMCBpcyBwbHVyYWwgZm9ybSwgMSBpcyBzaW5ndWxhciBmb3JtKQ0KCSR3b3Jkc1skbF1bJ3llYXInXSAgID0gYXJyYXkoJzAnLCcxJywnMicsJzMnLCc0JywnNScsJzYnLCc3JywnOCcsJzknKTsNCgkkd29yZHNbJGxdWydtb250aCddICA9IGFycmF5KCcwJywnMScsJzInLCczJywnNCcsJzUnLCc2JywnNycsJzgnLCc5Jyk7DQoJJHdvcmRzWyRsXVsnZGF5J10gICAgPSBhcnJheSgnMCcsJzEnLCcyJywnMycsJzQnLCc1JywnNicsJzcnLCc4JywnOScpOw0KCSR3b3Jkc1skbF1bJ2hvdXInXSAgID0gYXJyYXkoJzAnLCcxJywnMicsJzMnLCc0JywnNScsJzYnLCc3JywnOCcsJzknKTsNCgkkd29yZHNbJGxdWydtaW51dGUnXSA9IGFycmF5KCcwJywnMScsJzInLCczJywnNCcsJzUnLCc2JywnNycsJzgnLCc5Jyk7DQoJLy8gaWYgTk9UIHVzaW5nIHNpbXBsZXBsdXJhbHMsIGZpbGwgYXJyYXkgd2l0aCBudW1iZXJzLCB3aGljaCBBTFdBWVMgZ2V0IGEgcGx1cmFsIGZvcm0gKGlnbm9yaW5nIHRoZSBlbmRpbmcgZGlnaXQpDQoJJHdvcmRzWyRsXVsnb3ZlcnJpZGUnXSA9IGFycmF5KDExLDEyLDEzLDE0KTsNCgkvLyB3b3JkcyB0byBhdHRhY2ggdG8gdGhlIGZpbmFsIHJlc3VsdCBpbiBjYXNlIG9mIGEgcGFzdC9mdXR1cmUgZXZlbnQgZGF0ZQ0KCSR3b3Jkc1skbF1bJ3NpbmNlJ10gPSAnJzsNCgkkd29yZHNbJGxdWyd1bnRpbCddID0gJyc7DQoJLy8gcG9zaXRpb24gd2hlcmUgdG8gYXR0YWNoIHRoZSBhYm92ZSB3b3JkcywgdmFsaWQgdmFsdWVzIGFyZSAnYmVmb3JlJyBhbmQgJ2FmdGVyJw0KCSR3b3Jkc1skbF1bJ2F0dGFjaCddID0gJyc7DQoJLy8gd29yZCB0byB1c2UgYXMgYSBmaW5hbCBkZWxpbWl0ZXIgKGJlZm9yZSB0aGUgbGFzdCB1c2VkIGRhdGUvaXRlbSBpdGVtKQ0KCSR3b3Jkc1skbF1bJ2xhc3QnXSA9ICcnOw0KKi8NCgkNCgkkbCA9ICdlbic7DQoJJHdvcmRzW10gPSAkbDsNCgkkd29yZHNbJGxdID0gYXJyYXkoJ3NpbXBsZXBsdXJhbHMnLCd5ZWFyJywnbW9udGgnLCdkYXknLCdob3VyJywnbWludXRlJywnb3ZlcnJpZGUnLCdzaW5jZScsJ3VudGlsJywnYXR0YWNoJywnbGFzdCcpOw0KCSR3b3Jkc1skbF1bJ3NpbXBsZXBsdXJhbHMnXSA9IDI7DQoJJHdvcmRzWyRsXVsneWVhciddICAgPSBhcnJheSgneWVhcnMnLCd5ZWFyJyk7DQoJJHdvcmRzWyRsXVsnbW9udGgnXSAgPSBhcnJheSgnbW9udGhzJywnbW9udGgnKTsNCgkkd29yZHNbJGxdWydkYXknXSAgICA9IGFycmF5KCdkYXlzJywnZGF5Jyk7DQoJJHdvcmRzWyRsXVsnaG91ciddICAgPSBhcnJheSgnaG91cnMnLCdob3VyJyk7DQoJJHdvcmRzWyRsXVsnbWludXRlJ10gPSBhcnJheSgnbWludXRlcycsJ21pbnV0ZScpOw0KCSR3b3Jkc1skbF1bJ292ZXJyaWRlJ10gPSBhcnJheSgwKTsNCgkkd29yZHNbJGxdWydzaW5jZSddID0gJ3NpbmNlJzsNCgkkd29yZHNbJGxdWyd1bnRpbCddID0gJ3VudGlsJzsNCgkkd29yZHNbJGxdWydhdHRhY2gnXSA9ICdhZnRlcic7DQoJJHdvcmRzWyRsXVsnbGFzdCddID0gJyBhbmQgJzsNCg0KCSRsID0gJ2RlJzsNCgkkd29yZHNbXSA9ICRsOw0KCSR3b3Jkc1skbF0gPSBhcnJheSgnc2ltcGxlcGx1cmFscycsJ3llYXInLCdtb250aCcsJ2RheScsJ2hvdXInLCdtaW51dGUnLCdvdmVycmlkZScsJ3NpbmNlJywndW50aWwnLCdhdHRhY2gnLCdsYXN0Jyk7DQoJJHdvcmRzWyRsXVsnc2ltcGxlcGx1cmFscyddID0gMjsNCgkkd29yZHNbJGxdWyd5ZWFyJ10gICA9IGFycmF5KCdKYWhyZScsJ0phaHInKTsNCgkkd29yZHNbJGxdWydtb250aCddICA9IGFycmF5KCdNb25hdGUnLCdNb25hdCcpOw0KCSR3b3Jkc1skbF1bJ2RheSddICAgID0gYXJyYXkoJ1RhZ2UnLCdUYWcnKTsNCgkkd29yZHNbJGxdWydob3VyJ10gICA9IGFycmF5KCdTdHVuZGVuJywnU3R1bmRlJyk7DQoJJHdvcmRzWyRsXVsnbWludXRlJ10gPSBhcnJheSgnTWludXRlbicsJ01pbnV0ZScpOw0KCSR3b3Jkc1skbF1bJ292ZXJyaWRlJ10gPSBhcnJheSgwKTsNCgkkd29yZHNbJGxdWydzaW5jZSddID0gJ3NjaG9uJzsNCgkkd29yZHNbJGxdWyd1bnRpbCddID0gJ25vY2gnOw0KCSR3b3Jkc1skbF1bJ2F0dGFjaCddID0gJ2JlZm9yZSc7DQoJJHdvcmRzWyRsXVsnbGFzdCddID0gJyB1bmQgJzsNCg0KCSRsID0gJ2N6JzsNCgkkd29yZHNbXSA9ICRsOw0KCSR3b3Jkc1skbF0gPSBhcnJheSgnc2ltcGxlcGx1cmFscycsJ3llYXInLCdtb250aCcsJ2RheScsJ2hvdXInLCdtaW51dGUnLCdvdmVycmlkZScsJ3NpbmNlJywndW50aWwnLCdhdHRhY2gnLCdsYXN0Jyk7DQoJJHdvcmRzWyRsXVsnc2ltcGxlcGx1cmFscyddID0gMDsNCgkkd29yZHNbJGxdWyd5ZWFyJ10gICA9IGFycmF5KCdsZXQnLCdyb2snLCdyb2t5Jywncm9reScsJ3Jva3knLCdsZXQnLCdsZXQnLCdsZXQnLCdsZXQnLCdsZXQnKTsNCgkkd29yZHNbJGxdWydtb250aCddICA9IGFycmF5KCdtP3PDrWM/JywnbT9zw61jJywnbT9zw61jZScsJ20/c8OtY2UnLCdtP3PDrWNlJywnbT9zw61jPycsJ20/c8OtYz8nLCdtP3PDrWM/JywnbT9zw61jPycsJ20/c8OtYz8nKTsNCgkkd29yZHNbJGxdWydkYXknXSAgICA9IGFycmF5KCdkbj8nLCdkZW4nLCdkbnknLCdkbnknLCdkbnknLCdkbj8nLCdkbj8nLCdkbj8nLCdkbj8nLCdkbj8nKTsNCgkkd29yZHNbJGxdWydob3VyJ10gICA9IGFycmF5KCdob2RpbicsJ2hvZGluYScsJ2hvZGlueScsJ2hvZGlueScsJ2hvZGlueScsJ2hvZGluJywnaG9kaW4nLCdob2RpbicsJ2hvZGluJywnaG9kaW4nKTsNCgkkd29yZHNbJGxdWydtaW51dGUnXSA9IGFycmF5KCdtaW51dCcsJ21pbnV0YScsJ21pbnV0eScsJ21pbnV0eScsJ21pbnV0eScsJ21pbnV0JywnbWludXQnLCdtaW51dCcsJ21pbnV0JywnbWludXQnKTsNCgkkd29yZHNbJGxdWydvdmVycmlkZSddID0gYXJyYXkoMTEsMTIsMTMsMTQpOw0KCSR3b3Jkc1skbF1bJ3NpbmNlJ10gPSAnamk/JzsNCgkkd29yZHNbJGxdWyd1bnRpbCddID0gJ2plP3Q/JzsNCgkkd29yZHNbJGxdWydhdHRhY2gnXSA9ICdiZWZvcmUnOw0KCSR3b3Jkc1skbF1bJ2xhc3QnXSA9ICcgYSAnOw0KCQ0KCSRsID0gJ25sJzsNCgkkd29yZHNbXSA9ICRsOw0KCSR3b3Jkc1skbF0gPSBhcnJheSgnc2ltcGxlcGx1cmFscycsJ3llYXInLCdtb250aCcsJ2RheScsJ2hvdXInLCdtaW51dGUnLCdvdmVycmlkZScsJ3NpbmNlJywndW50aWwnLCdhdHRhY2gnLCdsYXN0Jyk7DQoJJHdvcmRzWyRsXVsnc2ltcGxlcGx1cmFscyddID0gMjsNCgkkd29yZHNbJGxdWyd5ZWFyJ10gICA9IGFycmF5KCdqYWFyJywnamFhcicpOw0KCSR3b3Jkc1skbF1bJ21vbnRoJ10gID0gYXJyYXkoJ21hYW5kZW4nLCdtYWFuZCcpOw0KCSR3b3Jkc1skbF1bJ2RheSddICAgID0gYXJyYXkoJ2RhZ2VuJywnZGFnJyk7DQoJJHdvcmRzWyRsXVsnaG91ciddICAgPSBhcnJheSgndXVyJywndXVyJyk7DQoJJHdvcmRzWyRsXVsnbWludXRlJ10gPSBhcnJheSgnbWludXRlbicsJ21pbnV1dCcpOw0KCSR3b3Jkc1skbF1bJ292ZXJyaWRlJ10gPSBhcnJheSgwKTsNCgkkd29yZHNbJGxdWydzaW5jZSddID0gJyc7DQoJJHdvcmRzWyRsXVsndW50aWwnXSA9ICcnOw0KCSR3b3Jkc1skbF1bJ2F0dGFjaCddID0gJ2JlZm9yZSc7DQoJJHdvcmRzWyRsXVsnbGFzdCddID0gJyc7DQoNCg0KCWlmIChlbXB0eSgkbGFuZykpICRsYW5nID0gTEFORzsNCglpZiAoIWluX2FycmF5KHN0cnRvbG93ZXIoJGxhbmcpLCAkd29yZHMpKSAkbGFuZyA9ICdlbic7DQoJCWVsc2UgJGxhbmcgPSBzdHJ0b2xvd2VyKCRsYW5nKTsNCglpZiAoZW1wdHkoJHNpbXBsZXBsdXJhbHMpKSAkc2ltcGxlcGx1cmFscyA9ICR3b3Jkc1skbGFuZ11bJ3NpbXBsZXBsdXJhbHMnXTsNCglpZiAoZW1wdHkoJGxhc3QpKSAkbGFzdCA9IChlbXB0eSgkZGVsaW1pdGVyKSkgPyAkd29yZHNbJGxhbmddWydsYXN0J10gOiAkZGVsaW1pdGVyOw0KCWlmIChlbXB0eSgkZGVsaW1pdGVyKSkgJGRlbGltaXRlciA9ICcsICc7DQoJaWYgKGVtcHR5KCRjbGFzcykpICRjbGFzc1dvcmQgPSAnJzsNCgkJZWxzZSAkY2xhc3NXb3JkID0gIiBjbGFzcz1cIiRjbGFzc1wiIjsNCglpZiAoZW1wdHkoJHdyYXB0YWcpKSB7DQoJCSR3cmFwT3BlbiA9ICcnOw0KCQkkd3JhcENsb3NlID0gJyc7DQoJfQ0KCWVsc2Ugew0KCQkkd3JhcE9wZW4gPSAiPCR3cmFwdGFnJGNsYXNzV29yZD4iOw0KCQkkd3JhcENsb3NlID0gIjwvJHdyYXB0YWc+IjsNCgl9DQoJaWYgKGVtcHR5KCRhdHRhY2gpKSAkYXR0YWNoID0gJ25vJzsNCgkgIGVsc2VpZiAoJGF0dGFjaCA9PSAnYXV0bycpICRhdHRhY2ggPSAkd29yZHNbJGxhbmddWydhdHRhY2gnXTsNCglpZiAoZW1wdHkoJHNpbmNlKSkgJHNpbmNlID0gJHdvcmRzWyRsYW5nXVsnc2luY2UnXTsNCglpZiAoZW1wdHkoJHVudGlsKSkgJHVudGlsID0gJHdvcmRzWyRsYW5nXVsndW50aWwnXTsNCglpZiAoZW1wdHkoJGxpbWl0KSB8fCAkbGltaXQgPCAxKSAkbGltaXQgPSA1Ow0KDQoJaWYgKCFlbXB0eSgkcG9zdGVkKSkgew0KCQlnbG9iYWwgJHRoaXNhcnRpY2xlOw0KCQkkeWVhciA9IGRhdGUoJ1knLCAkdGhpc2FydGljbGVbJ3Bvc3RlZCddKTsNCgkJJG1vbnRoID0gZGF0ZSgnbicsICR0aGlzYXJ0aWNsZVsncG9zdGVkJ10pOw0KCQkkZGF5ID0gZGF0ZSgnaicsICR0aGlzYXJ0aWNsZVsncG9zdGVkJ10pOw0KCQkkaG91ciA9IGRhdGUoJ0cnLCAkdGhpc2FydGljbGVbJ3Bvc3RlZCddKTsNCgkJJG1pbnV0ZSA9IGRhdGUoJ2knLCAkdGhpc2FydGljbGVbJ3Bvc3RlZCddKTsNCgl9DQoNCgkkdG9kYXkgPSAoIWVtcHR5KCRmcm9tKSkgPyBzdHJ0b3RpbWUoJGZyb20pIDogdGltZSgpOw0KCSR0b2RheVllYXIgICAgPSBkYXRlKCdZJywgJHRvZGF5KTsNCgkkdG9kYXlNb250aCAgPSBkYXRlKCduJywgJHRvZGF5KTsNCgkkdG9kYXlEYXkgICAgPSBkYXRlKCdqJywgJHRvZGF5KTsNCgkkdG9kYXlIb3VyICAgPSBkYXRlKCdHJywgJHRvZGF5KTsNCgkkdG9kYXlNaW51dGUgPSBkYXRlKCdpJywgJHRvZGF5KTsNCgkkbW9udGhkYXkgICAgPSBkYXRlKCdtZCcsICR0b2RheSk7DQoNCglpZiAoaXNzZXQoJG1vbnRoKSkgJG1vbnRoID0gc3RyX3BhZCgkbW9udGgsMiwnMCcsU1RSX1BBRF9MRUZUKTsNCglpZiAoaXNzZXQoJGRheSkpICRkYXkgPSBzdHJfcGFkKCRkYXksMiwnMCcsU1RSX1BBRF9MRUZUKTsNCglpZiAoaXNzZXQoJGhvdXIpKSAkaG91ciA9IHN0cl9wYWQoJGhvdXIsMiwnMCcsU1RSX1BBRF9MRUZUKTsNCglpZiAoaXNzZXQoJG1pbnV0ZSkpICRtaW51dGUgPSBzdHJfcGFkKCRtaW51dGUsMiwnMCcsU1RSX1BBRF9MRUZUKTsNCgkkbSA9IChpc3NldCgkbWludXRlKT8kbWludXRlOicwMCcpOw0KCSRobSA9IChpc3NldCgkaG91cik/JGhvdXI6JzAwJykuJG07DQoJJGRobSA9IChpc3NldCgkZGF5KT8kZGF5OicwMScpLiRobTsNCgkkbWRobSA9IChpc3NldCgkbW9udGgpPyRtb250aDonMDEnKS4kZGhtOw0KCSRwYXN0ID0gKHN0cnRvdGltZSgoaXNzZXQoJHllYXIpPyR5ZWFyOicwMCcpLictJy4oaXNzZXQoJG1vbnRoKT8kbW9udGg6JzAxJykuJy0nLihpc3NldCgkZGF5KT8kZGF5OicwMScpLicgJy4oaXNzZXQoJGhvdXIpPyRob3VyOicwMCcpLic6Jy4oaXNzZXQoJG1pbnV0ZSk/JG1pbnV0ZTonMDAnKSkgPCB0aW1lKCkpID8gKHRydWUpIDogKGZhbHNlKTsNCg0KCWlmIChpc3NldCgkeWVhcikgJiYgJGxpbWl0ID4gMCkgew0KDQoJCSR5ZWFycyA9IGFicygkdG9kYXlZZWFyIC0gJHllYXIpOw0KCQlpZiAoKCRwYXN0ICYmIGRhdGUoJ21kSGknLCAkdG9kYXkpIDwgJG1kaG0pIHx8ICghJHBhc3QgJiYgZGF0ZSgnbWRIaScsICR0b2RheSkgPiAkbWRobSkpICR5ZWFycy0tOw0KDQoJCWlmICghJHNpbXBsZXBsdXJhbHMpIHsNCgkJCSR5ZWFyV29yZCA9ICgkeWVhcnMgPiAwKSA/ICR3b3Jkc1skbGFuZ11bJ3llYXInXVtzdWJzdHIoJHllYXJzLC0xKV0gOiAnJzsNCgkJCWlmIChpbl9hcnJheShzdWJzdHIoJHllYXJzLC0yKSwkd29yZHNbJGxhbmddWydvdmVycmlkZSddKSAhPT0gZmFsc2UpICR5ZWFyV29yZCA9ICR3b3Jkc1skbGFuZ11bJ3llYXInXVswXTsNCgkJfQ0KCQllbHNlICR5ZWFyV29yZCA9ICgkeWVhcnMgPCAkc2ltcGxlcGx1cmFscykgPyAkd29yZHNbJGxhbmddWyd5ZWFyJ11bMV0gOiAkd29yZHNbJGxhbmddWyd5ZWFyJ11bMF07DQoNCgkJaWYgKCR5ZWFycyA+IDApICRsaW1pdC0tOw0KDQoNCgkJaWYgKGlzc2V0KCRtb250aCkgJiYgJGxpbWl0ID4gMCkgew0KDQoJCQlpZiAoJHBhc3QpICRtb250aHMgPSAoJHRvZGF5TW9udGggPiAkbW9udGgpID8gKCR0b2RheU1vbnRoIC0gJG1vbnRoKSA6ICgxMiAtICRtb250aCArICR0b2RheU1vbnRoKTsNCgkJCWVsc2UgICAgICAgJG1vbnRocyA9ICgkdG9kYXlNb250aCA8ICRtb250aCkgPyAoJG1vbnRoIC0gJHRvZGF5TW9udGgpIDogKDEyIC0gJHRvZGF5TW9udGggKyAkbW9udGgpOw0KDQoJCQlpZiAoKCRwYXN0ICYmIGRhdGUoJ2RIaScsICR0b2RheSkgPCAkZGhtKSB8fCAoISRwYXN0ICYmIGRhdGUoJ2RIaScsICR0b2RheSkgPiAkZGhtKSkgJG1vbnRocy0tOw0KCQkJaWYgKCRtb250aHMgPT0gMTIpICRtb250aHMgPSAwOw0KDQoJCQlpZiAoISRzaW1wbGVwbHVyYWxzKSB7DQoJCQkJJG1vbnRoV29yZCA9ICgkbW9udGhzID4gMCkgPyAkd29yZHNbJGxhbmddWydtb250aCddW3N1YnN0cigkbW9udGhzLC0xKV0gOiAnJzsNCgkJCQlpZiAoaW5fYXJyYXkoc3Vic3RyKCRtb250aHMsLTIpLCR3b3Jkc1skbGFuZ11bJ292ZXJyaWRlJ10pICE9PSBmYWxzZSkgJG1vbnRoV29yZCA9ICR3b3Jkc1skbGFuZ11bJ21vbnRoJ11bMF07DQoJCQl9DQoJCQllbHNlICRtb250aFdvcmQgPSAoJG1vbnRocyA8ICRzaW1wbGVwbHVyYWxzKSA/ICR3b3Jkc1skbGFuZ11bJ21vbnRoJ11bMV0gOiAkd29yZHNbJGxhbmddWydtb250aCddWzBdOw0KDQoJCQlpZiAoJG1vbnRocyA+IDApICRsaW1pdC0tOw0KDQoNCgkJCWlmIChpc3NldCgkZGF5KSAmJiAkbGltaXQgPiAwKSB7DQoNCgkJCQlpZiAoJHBhc3QpICRkYXlzID0gKCR0b2RheURheSA+ICRkYXkpID8gKCR0b2RheURheSAtICRkYXkpIDogKGRhdGUoJ3QnLCBzdHJ0b3RpbWUoIiR5ZWFyLyRtb250aC8kZGF5IikpIC0gJGRheSArICR0b2RheURheSk7DQoJCQkJZWxzZSAgICAgICAkZGF5cyA9ICgkdG9kYXlEYXkgPCAkZGF5KSA/ICgkZGF5IC0gJHRvZGF5RGF5KSA6IChkYXRlKCd0Jywgc3RydG90aW1lKCgkbW9udGg9PTEpPygkeWVhci0xKTooJHllYXIpLicvJy4oJG1vbnRoPT0xKT8oMTIpOigkbW9udGgtMSkuJy8nLiRkYXkpKSAtICR0b2RheURheSArICRkYXkpOw0KCQkJCWlmICgoJHBhc3QgJiYgZGF0ZSgnSGknLCAkdG9kYXkpIDwgJGhtKSB8fCAoISRwYXN0ICYmIGRhdGUoJ0hpJywgJHRvZGF5KSA+ICRobSkpICRkYXlzLS07DQoJCQkJJGNvbXBEYXRlID0gKCRwYXN0KSA/IGRhdGUoJ3QnLCBzdHJ0b3RpbWUoIiR5ZWFyLyRtb250aC8kZGF5IikpIDogZGF0ZSgndCcsIHN0cnRvdGltZSgoJG1vbnRoPT0xKT8oJHllYXItMSk6KCR5ZWFyKS4nLycuKCRtb250aD09MSk/KDEyKTooJG1vbnRoLTEpLicvJy4kZGF5KSk7DQoJCQkJaWYgKCRkYXlzID09ICRjb21wRGF0ZSkgJGRheXMgPSAwOw0KDQoJCQkJaWYgKCEkc2ltcGxlcGx1cmFscykgew0KCQkJCQkkZGF5V29yZCA9ICgkZGF5cyA+IDApID8gJHdvcmRzWyRsYW5nXVsnZGF5J11bc3Vic3RyKCRkYXlzLC0xKV0gOiAnJzsNCgkJCQkJaWYgKGluX2FycmF5KHN1YnN0cigkZGF5cywtMiksJHdvcmRzWyRsYW5nXVsnb3ZlcnJpZGUnXSkgIT09IGZhbHNlKSAkZGF5V29yZCA9ICR3b3Jkc1skbGFuZ11bJ2RheSddWzBdOw0KCQkJCX0NCgkJCQllbHNlICRkYXlXb3JkID0gKCRkYXlzIDwgJHNpbXBsZXBsdXJhbHMpID8gJHdvcmRzWyRsYW5nXVsnZGF5J11bMV0gOiAkd29yZHNbJGxhbmddWydkYXknXVswXTsNCg0KCQkJCWlmICgkZGF5cyA+IDApICRsaW1pdC0tOw0KDQoNCgkJCQlpZiAoaXNzZXQoJGhvdXIpICYmICRsaW1pdCA+IDApIHsNCg0KCQkJCQlpZiAoJHBhc3QpICRob3VycyA9ICgkdG9kYXlIb3VyID4gJGhvdXIpID8gKCR0b2RheUhvdXIgLSAkaG91cikgOiAoMjQgLSAkaG91ciArICR0b2RheUhvdXIpOw0KCQkJCQllbHNlICAgICAgICRob3VycyA9ICgkdG9kYXlIb3VyIDwgJGhvdXIpID8gKCRob3VyIC0gJHRvZGF5SG91cikgOiAoMjQgLSAkdG9kYXlIb3VyICsgJGhvdXIpOw0KDQoJCQkJCWlmICgoJHBhc3QgJiYgZGF0ZSgnaScsICR0b2RheSkgPCAkbWludXRlKSB8fCAoISRwYXN0ICYmIGRhdGUoJ2knLCAkdG9kYXkpID4gJG1pbnV0ZSkpICRob3Vycy0tOw0KCQkJCQlpZiAoJGhvdXJzID09IDI0KSAkaG91cnMgPSAwOw0KDQoJCQkJCWlmICghJHNpbXBsZXBsdXJhbHMpIHsNCgkJCQkJCSRob3VyV29yZCA9ICgkaG91cnMgPiAwKSA/ICR3b3Jkc1skbGFuZ11bJ2hvdXInXVtzdWJzdHIoJGhvdXJzLC0xKV0gOiAnJzsNCgkJCQkJCWlmIChpbl9hcnJheShzdWJzdHIoJGhvdXJzLC0yKSwkd29yZHNbJGxhbmddWydvdmVycmlkZSddKSAhPT0gZmFsc2UpICRob3VyV29yZCA9ICR3b3Jkc1skbGFuZ11bJ2hvdXInXVswXTsNCgkJCQkJfQ0KCQkJCQllbHNlICRob3VyV29yZCA9ICgkaG91cnMgPCAkc2ltcGxlcGx1cmFscykgPyAkd29yZHNbJGxhbmddWydob3VyJ11bMV0gOiAkd29yZHNbJGxhbmddWydob3VyJ11bMF07DQoNCgkJCQkJaWYgKCRob3VycyA+IDApICRsaW1pdC0tOw0KDQoNCgkJCQkJaWYgKGlzc2V0KCRtaW51dGUpICYmICRsaW1pdCA+IDApIHsNCg0KCQkJCQkJaWYgKCRwYXN0KSAkbWludXRlcyA9ICgkdG9kYXlNaW51dGUgPiAkbWludXRlKSA/ICgkdG9kYXlNaW51dGUgLSAkbWludXRlKSA6ICg2MCAtICRtaW51dGUgKyAkdG9kYXlNaW51dGUpOw0KCQkJCQkJZWxzZSAgICAgICAkbWludXRlcyA9ICgkdG9kYXlNaW51dGUgPCAkbWludXRlKSA/ICgkbWludXRlIC0gJHRvZGF5TWludXRlKSA6ICg2MCAtICR0b2RheU1pbnV0ZSArICRtaW51dGUpOw0KCQkJCQkJaWYgKCRtaW51dGVzID09IDYwKSAkbWludXRlcyA9IDA7DQoNCgkJCQkJCWlmICghJHNpbXBsZXBsdXJhbHMpIHsNCgkJCQkJCQkkbWludXRlV29yZCA9ICgkbWludXRlcyA+IDApID8gJHdvcmRzWyRsYW5nXVsnbWludXRlJ11bc3Vic3RyKCRtaW51dGVzLC0xKV0gOiAnJzsNCgkJCQkJCQlpZiAoaW5fYXJyYXkoc3Vic3RyKCRtaW51dGVzLC0yKSwkd29yZHNbJGxhbmddWydvdmVycmlkZSddKSAhPT0gZmFsc2UpICRtaW51dGVXb3JkID0gJHdvcmRzWyRsYW5nXVsnbWludXRlJ11bMF07DQoJCQkJCQl9DQoJCQkJCQllbHNlICRtaW51dGVXb3JkID0gKCRtaW51dGVzIDwgJHNpbXBsZXBsdXJhbHMpID8gJHdvcmRzWyRsYW5nXVsnbWludXRlJ11bMV0gOiAkd29yZHNbJGxhbmddWydtaW51dGUnXVswXTsNCg0KCQkJCQl9DQoJCQkJfQ0KCQkJfQ0KCQl9DQoJfQ0KDQoJaWYgKCFlbXB0eSgkbWludXRlcykpICRvdXQgPSAoZW1wdHkoJG91dCkpID8gKCIkbGFzdCRtaW51dGVzICRtaW51dGVXb3JkIikgOiAoIiRkZWxpbWl0ZXIkbWludXRlcyAkbWludXRlV29yZCRvdXQiKTsNCglpZiAoIWVtcHR5KCRob3VycykpICRvdXQgPSAoZW1wdHkoJG91dCkpID8gKCIkbGFzdCRob3VycyAkaG91cldvcmQiKSA6ICgiJGRlbGltaXRlciRob3VycyAkaG91cldvcmQkb3V0Iik7DQoJaWYgKCFlbXB0eSgkZGF5cykpICRvdXQgPSAoZW1wdHkoJG91dCkpID8gKCIkbGFzdCRkYXlzICRkYXlXb3JkIikgOiAoIiRkZWxpbWl0ZXIkZGF5cyAkZGF5V29yZCRvdXQiKTsNCglpZiAoIWVtcHR5KCRtb250aHMpKSAkb3V0ID0gKGVtcHR5KCRvdXQpKSA/ICgiJGxhc3QkbW9udGhzICRtb250aFdvcmQiKSA6ICgiJGRlbGltaXRlciRtb250aHMgJG1vbnRoV29yZCRvdXQiKTsNCglpZiAoIWVtcHR5KCR5ZWFycykpICRvdXQgPSAoZW1wdHkoJG91dCkpID8gKCIkeWVhcnMgJHllYXJXb3JkIikgOiAoIiR5ZWFycyAkeWVhcldvcmQkb3V0Iik7DQoNCgkkdGVzdE91dCA9IHN0cnN0cigkb3V0LCAkZGVsaW1pdGVyKTsNCglpZiAoc3RybGVuKCR0ZXN0T3V0KSA9PSBzdHJsZW4oJG91dCkpICRvdXQgPSBzdWJzdHIoJG91dCwgc3RybGVuKCRkZWxpbWl0ZXIpKTsNCgkkdGVzdE91dCA9IHN0cnN0cigkb3V0LCAkbGFzdCk7DQoJaWYgKHN0cmxlbigkdGVzdE91dCkgPT0gc3RybGVuKCRvdXQpKSAkb3V0ID0gc3Vic3RyKCRvdXQsIHN0cmxlbigkbGFzdCkpOw0KDQoJaWYgKCRhdHRhY2ggPT0gJ2JlZm9yZScpICRvdXQgPSAoJHBhc3QpID8gKCIkc2luY2UgJG91dCIpIDogKCIkdW50aWwgJG91dCIpOw0KCWVsc2VpZiAoJGF0dGFjaCA9PSAnYWZ0ZXInKSAkb3V0ID0gKCRwYXN0KSA/ICgiJG91dCAkc2luY2UiKSA6ICgiJG91dCAkdW50aWwiKTsNCg0KCXJldHVybiAkd3JhcE9wZW4udHJpbSgkb3V0KS4kd3JhcENsb3NlOw0KfQ0KIjtzOjQ6InR5cGUiO3M6MToiMCI7czo1OiJvcmRlciI7czoxOiI1IjtzOjM6Im1kNSI7czozMjoiNzVjMmNjZTVlMmFhYWMwN2FkOGZjMDIyZDFjYjFiZjgiO30=
Last edited by mamash (2004-10-30 08:57:17)
Who’s gonna textdrive you home tonight?
Offline
#2 2004-04-17 16:49:21
- Ray
- Member
- Registered: 2004-03-02
- Posts: 154
Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator
Now that’s a allot of fun.
I set it up for all our family birthdates. My ten year old thinks it’s the coolest thing going ; )
Nice plugin mamash. Thanks 8 )
Offline
Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator
Glad I could be of <del>help</del> fun. ;)
Edit: It shouldn’t be hard to turn it the other way around and make it output ‘time till’ information. Some other day…
Last edited by mamash (2004-04-17 16:58:26)
Who’s gonna textdrive you home tonight?
Offline
#4 2004-04-17 17:02:02
- Ray
- Member
- Registered: 2004-03-02
- Posts: 154
Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator
Now that would be handy.
XX day’s, XX hours, XX minutes, XX seconds until Txp is outta Gamma.
<i>(i couldn’t resist…all in good fun)</i>
@ )
Last edited by Ray (2004-04-17 17:03:35)
Offline
#5 2004-04-17 17:13:21
- Ray
- Member
- Registered: 2004-03-02
- Posts: 154
Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator
mamash,
where is the general plugin information stored on the server? file/folder…?
Offline
Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator
“general plugin information”?
If you mean the description and the short help, it’s all stored in the installation file, which inserts it into your database.
Who’s gonna textdrive you home tonight?
Offline
#7 2004-04-17 19:26:02
- Ray
- Member
- Registered: 2004-03-02
- Posts: 154
Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator
Once it’s in the database….how can I access it to make alterations.
Specifically I’m thinking about adding an ID so that the style of the date can be changed via CSS. Set one rule in the style sheet and it changes the date (output) whenever/wherever it’s used.
Right now I have a span around your code.
<code><span style=“color:#c00;”><txp:fha_time_diff year=“2004” month=“3” day=“23” hour=“2” minute=“40” /></span></code>
To have an ID already embedded in the tag would be a nice touch.
Last edited by Ray (2004-04-17 19:26:36)
Offline
Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator
Ray, you can edit the code for the plugin on the plugin tab (in admin) in the Textpattern backend. The code itself is stored in your mysql database.
Offline
Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator
Now I understand. Well, I was conceiving this as a ‘content’ plugin, and didn’t want to introduce any infrastructure. But maybe I could simply add ‘wraptag’ and ‘class’ tags as well.
For now, you can always go to your plugin admin area. Clicking on the plugin’s name will get you a source editing page. The outputting line is the last one on the bottom. Is that enough? :)
Who’s gonna textdrive you home tonight?
Offline
#10 2004-04-17 19:43:23
- Ray
- Member
- Registered: 2004-03-02
- Posts: 154
Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator
I was just thinking….a “class” would be better since the code could/would be used several times on the same page.
class=“timedif” (or some such)
“The outputting line is the last one on the bottom. Is that enough?”
Yes sir.
Thanks.
Offline
Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator
Version 0.11:
- The plugin now accepts a
wraptag=""
and aclass=""
parameter (e.g.wraptag="span" class="timeSince"
).
Re-download if you feel like.
Last edited by mamash (2004-04-17 21:31:12)
Who’s gonna textdrive you home tonight?
Offline
Re: [plugin] [ORPHAN] fha_time_diff: A Time Since generator
Version 0.12
- German language added (
lang="de"
).
Last edited by mamash (2004-04-17 21:31:20)
Who’s gonna textdrive you home tonight?
Offline