# cno_replace_file v0.1 # Replace file plugin # Christian Nowak # http://www.cnowak.de # ...................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ...................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTY6ImNub19yZXBsYWNlX2ZpbGUiO3M6NzoidmVyc2lvbiI7 czozOiIwLjEiO3M6NjoiYXV0aG9yIjtzOjE1OiJDaHJpc3RpYW4gTm93YWsiO3M6MTA6ImF1 dGhvcl91cmkiO3M6MjA6Imh0dHA6Ly93d3cuY25vd2FrLmRlIjtzOjExOiJkZXNjcmlwdGlv biI7czoxOToiUmVwbGFjZSBmaWxlIHBsdWdpbiI7czo0OiJ0eXBlIjtpOjE7czo0OiJoZWxw IjtzOjI0NToiCgk8cD5UaGUgcGx1Z2luIGV4dGVuZHMgdGhlIGZpbGUgZWRpdCBzY3JlZW4g d2l0aCBhbiBvcHRpb24gdG8gdXBsb2FkIGEgbmV3IHZlcnNpb24uPC9wPgoKCTxwPkp1c3Qg c2VsZWN0IGEgbmV3IGZpbGUgYW5kIHByZXNzIDxzdHJvbmc+cmVwbGFjZTwvc3Ryb25nPi4g VGhlIG9yaWdpbmFsIGZpbGUgd2lsbCB0aGVuIGJlIHJlcGxhY2VkIHdpdGggdGhlIG5ldyBv bmUuPC9wPgoKCTxwPlRoYXQmIzgyMTc7cyBpdCE8L3A+CgoKCiAiO3M6NDoiY29kZSI7czoy MTg0OiIKCS8qKgoJICogQ29uZmlndXJlIHBsdWdpbgoJICovCglpZiAoQHR4cGludGVyZmFj ZSA9PSAnYWRtaW4nKSB7CgoJCS8vIFJlZ2lzdGVyIGZpbGUgZWRpdGluZyBjYWxsYmFjawoJ CXJlZ2lzdGVyX2NhbGxiYWNrKCJjbm9fZmlsZV9lZGl0IiwgImZpbGUiLCAiZmlsZV9lZGl0 IiwgMCk7CgoJCS8vIFJlZ2lzdGVyIG5ldyBldmVudCBmb3IgcmVwbGFjaW5nIGZpbGUKCQly ZWdpc3Rlcl9jYWxsYmFjaygiY25vX2ZpbGVfcmVwbGFjZSIsICJmaWxlIiwgImZpbGVfbGlz dCIsIDApOwoKCX0KCgkvKioKCSAqIEVuaGFuY2UgZmlsZSBlZGl0IHBhZ2UKCSAqLwoJZnVu Y3Rpb24gY25vX2ZpbGVfZWRpdCgpIHsKCgkJZ2xvYmFsICRmaWxlX21heF91cGxvYWRfc2l6 ZTsKCgkJJGlkID0gZ3BzKCdpZCcpOwoKCQlpZiAoISRmaWxlX21heF91cGxvYWRfc2l6ZSB8 fCBpbnR2YWwoJGZpbGVfbWF4X3VwbG9hZF9zaXplKT09MCkgJGZpbGVfbWF4X3VwbG9hZF9z aXplID0gMiooMTAyNCoxMDI0KTsKCQkkZm9ybSA9CgkJCSc8Zm9ybSBlbmN0eXBlPSJtdWx0 aXBhcnQvZm9ybS1kYXRhIiBhY3Rpb249ImluZGV4LnBocCIgbWV0aG9kPSJwb3N0Ij4nLgoJ CQkoaW50dmFsKCRmaWxlX21heF91cGxvYWRfc2l6ZSk9PTA/Jyc6aElucHV0KCdtYXhfZmls ZV9zaXplJywkZmlsZV9tYXhfdXBsb2FkX3NpemUpKS4KCQkJZ3JhZignUmVwbGFjZSBmaWxl IHdpdGg6ICcuCgkJCXNJbnB1dCgnZmlsZV9saXN0JykuCgkJCWVJbnB1dCgnZmlsZScpLgoJ CQloSW5wdXQoJ2lkJywkaWQpLgoJCQlmSW5wdXQoJ2ZpbGUnLCdmaWxlJywnJywnZWRpdCcp LnNwLgoJCQlmSW5wdXQoJ3N1Ym1pdCcsJycsZ1R4dCgncmVwbGFjZScpLCdzbWFsbGVyYm94 JykpLgoJCQknPC9mb3JtPic7CgoJCS8vIFJlYWQgdGhlIGJ1ZmZlciBhbmQgZW5kIGJ1ZmZl cmluZwoJCSRidWZmZXIgPSBvYl9nZXRfY2xlYW4oKTsKCgkJLy8gUmVzdGFydCBidWZmZXJp bmcsIHRvIG1ha2Ugc3VyZSwgdGhhdCBvdGhlciBwbHVnaW5zIGNhbiB1c2UgdGhlIGJ1ZmZl ciB0b28KCQlvYl9zdGFydCgpOwoKCQkvLyBUaGUgUGx1Z2luIHNob3VsZCBiZSBkaXNwbGF5 ZWQgYmVmb3JlIHRoZSB1cGRhdGUgZm9ybQoJCSRpbnNlcnRQbHVnaW4gPSAnPGZvcm0gYWN0 aW9uPSJpbmRleC5waHAiIG1ldGhvZD0icG9zdCI+JzsKCQkkcGx1Z2luQ29kZSA9ICRmb3Jt LiRpbnNlcnRQbHVnaW47CgkJJGJ1ZmZlciA9IHN0cl9yZXBsYWNlKCRpbnNlcnRQbHVnaW4s JHBsdWdpbkNvZGUsJGJ1ZmZlcik7CgoJCWVjaG8gJGJ1ZmZlcjsKCgl9CgoJLyoqCgkgKiBS ZXBsYWNlIG9sZCBmaWxlIHdpdGggbmV3IG9uZQoJICovCglmdW5jdGlvbiBjbm9fZmlsZV9y ZXBsYWNlKCkgewoKCQlvYl9lbmRfY2xlYW4oKTsKCQlvYl9zdGFydCgpOwoKCQlnbG9iYWwg JHR4cGNmZywkZXh0ZW5zaW9ucywkdHhwX3VzZXIsJGZpbGVfYmFzZV9wYXRoOwoJCWV4dHJh Y3QoJHR4cGNmZyk7CgkJZXh0cmFjdChkb1NsYXNoKGdwc2EoYXJyYXkoJ2NhdGVnb3J5Jywn cGVybWlzc2lvbnMnLCdkZXNjcmlwdGlvbicpKSkpOwogICAgICAgCQkkaWQgPSBwcygnaWQn KTsKCQkkcnMgPSBzYWZlX3JvdygiZmlsZW5hbWUiLCAidHhwX2ZpbGUiLCAiaWQ9JyRpZCci KTsKCQlleHRyYWN0KCRycyk7CgkJJGZpbGUgPSBnZXRfdXBsb2FkZWRfZmlsZSgkX0ZJTEVT WydmaWxlJ11bJ3RtcF9uYW1lJ10pOwoKCQlpZiAoJGZpbGUgPT09IGZhbHNlKSB7CgoJCQkv LyBjb3VsZCBub3QgZ2V0IHVwbG9hZGVkIGZpbGUKCQkJZmlsZV9lZGl0KGdUeHQoJ2ZpbGVf dXBsb2FkX2ZhaWxlZCcpIC4iICRmaWxlbmFtZSAtICIudXBsb2FkX2dldF9lcnJvcm1zZygk X0ZJTEVTWydmaWxlJ11bJ2Vycm9yJ10pLCAkaWQpOwoKCQl9IGVsc2UgewoKCQkJJG5ld3Bh dGggPSBidWlsZF9maWxlX3BhdGgoJGZpbGVfYmFzZV9wYXRoLHRyaW0oJGZpbGVuYW1lKSk7 CgoJCQlpZighc2hpZnRfdXBsb2FkZWRfZmlsZSgkZmlsZSwgJG5ld3BhdGgpKSB7CgoJCQkJ ZmlsZV9lZGl0KCRuZXdwYXRoLicgJy5nVHh0KCd1cGxvYWRfZGlyX3Blcm1zJyksJGlkKTsK CgkJCX0gZWxzZSB7CgoJCQkJZmlsZV9zZXRfcGVybSgkbmV3cGF0aCk7CgkJCQlmaWxlX2Vk aXQobWVzc2VuZ2VyKCdmaWxlJywkZmlsZW5hbWUsJ3VwbG9hZGVkJyksJGlkKTsKCgkJCX0K CgkJfQoKCQljbm9fZmlsZV9lZGl0KCk7CgoJfQoiO3M6MzoibWQ1IjtzOjMyOiJkMjQ2MmU5 ODlkZGE3MjQyYjMxYzRhNGYzNDY1MjA3MCI7fQ==