From jmichlik@avertis.pl Tue Jan 8 13:41:49 2013 From: AVERTIS - Jan Michlik To: dev@lists.roundcube.net Subject: [RCD] Import address book in LDIF format - solved Date: Tue, 08 Jan 2013 13:41:44 +0100 Message-ID: <50EC1408.5050900@avertis.pl> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0461046611652206061==" --===============0461046611652206061== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Hello all. Please find attachment and diffs with the possibility of importing an address book in ldif format. You can import books directly from Thunderbird! The file ldiftovcard.php is litte improved. It may be useful to someone. ALEC may be able to throw it into the main branch of the program. Best regards Jan Michlik diff import.inc import.inc~orig 146,154c146,148 < < //convert ldif to vcard - Jasiu < if (end(explode('.', $_FILES['_file']['name'])) == 'ldif'){ < require_once 'ldiftovcard.php'; < $cardsprocessed = string_convert_ldif_to_vcard(file_get_contents($_FILES['_file']['tmp_name']), $vcard_file_string); < $vcards = $vcard_o->import($vcard_file_string); < }else{ < $vcards = $vcard_o->import(file_get_contents($_FILES['_file']['tmp_name'])); < } --- > > $vcards = $vcard_o->import(file_get_contents($_FILES['_file']['tmp_name'])); > diff labels.inc labels.inc~orig 301c301 < $labels['importtext'] = 'Możesz dodać kontakty z istniejącej książki adresowej.
Aktualnie możliwy jest import kontaktów w formacie vCard lub LDIF.'; --- > $labels['importtext'] = 'Możesz dodać kontakty z istniejącej książki adresowej.
Aktualnie możliwy jest import kontaktów w formacie vCard.'; -- Pozdrawiam / Best regards P.H.U. "AVERTIS" Jan Michlik Os. Zamkowe 25b/19 63-500 Ostrzeszów (woj. wielkopolskie) POLAND NIP: 622-189-51-80 tel. 0 602 836 733 biuro(a)avertis.pl www.avertis.pl --===============0461046611652206061== Content-Type: application/x-php Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ldiftovcard.php" MIME-Version: 1.0 PD9waHANCi8qIE1vemlsbGEgTERJRiB0byB2Q2FyZCBDb252ZXJzdGlvbiBUb29sDQogKiBDb3B5 cmlnaHQgKGMpIDIwMDYgYnkgSm9uYXRoYW4gUmVhbXMNCiAqDQogKiBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQogKiBtb2RpZnkg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljDQogKiBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXINCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLg0KICoNCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiAqIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQog KiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KDQogKiBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwg UHVibGljDQogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRl IHRvIHRoZSBGcmVlIFNvZnR3YXJlDQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT dHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0ENCiAqIA0KICog WW91IG1heSBjb250YWN0IHRoZSBBdXRob3IgYXQganJlYW1zQGRyZXcuZWR1Lg0KICoNCiAqIFRo ZSBwcmltYXJ5IGZ1bmN0aW9uIGluIHRoaXMgbGlicmFyeSBpcyBjb252ZXJ0X2xkaWZfdG9fdmNh cmQoJGZpbGVpbiwgJGZpbGVvdXQpLg0KICogSnVzdCBjYWxsIGl0IGFuZCBzcGVjaWZ5IHRoZSBp bnB1dCBmaWxlIGFuZCB0aGUgb3V0cHV0IGZpbGUuIEl0IGFzc3VtZXMgdGhhdCB0aGUNCiAqIGZp bGVuYW1lIHlvdSBwYXNzIGl0IGlzIGEgdmFsaWQgTERJRiBmaWxlIGV4cG9ydGVkIGZyb20gYSBN b3ppbGxhIGFkZHJlc3MNCiAqIGJvb2suIEl0IHdvbid0IGRvIHN5bnRheCBjaGVja2luZyBvbiB0 aGUgb2lnaW5hbCBMRElGLiANCiAqDQogKiBPcHRpb25hbGx5LCB0aGVyZSBpcyBhbHNvIHN0cmlu Z19jb252ZXJ0X2xkaWZfdG9fdmNhcmQoJHN0cmluZ2luLCAmICRzdHJpbmdvdXQpLg0KICogVGhp cyBmdW5jdGlvbiBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSBvdGhlciBmdW5jdGlvbiwgZXhj ZXB0IHRoYXQgaXQgd29ya3Mgb24NCiAqIHN0cmluZ3MgaW5zdGVhZCBvZiBmaWxlcy4gTm90ZSB0 aGF0IHRoZSBzZWNvbmQgdmFyaWFibGUgaXMgYSByZWZlcmVuY2UgdG8gYSBzdHJpbmcuDQogKg0K ICogQm90aCBmdW5jdGlvbnMgcmV0dXJuIGEgY291bnQgb2YgdGhlIG51bWJlciBvZiBMRElGIGNh cmRzIHRoYXQgd2VyZSBjb252ZXJ0ZWQgDQogKiB1cG9uIHN1Y2Nlc3MuDQogKg0KICogVGhpcyBz Y3JpcHQgY2FuIGFsc28gYmUgdXNlZCBhcyBhIGNvbW1hbmQtbGluZSBjb252ZXJ0ZXIgd2hpY2gg c3BlY2lmaWVzIHRoZQ0KICogaW5wdXQgYW5kIG91dHB1dCBmaWxlcyBhcyBhcmd1bWVudHMgb24g dGhlIGNvbW1hbmRsaW5lLiBTdXBwb3J0IGZvciBwcmUtZGVmaW5lZA0KICogYXJndiwgYXJnYyB2 YXJpYWJsZXMgbXVzdCBiZSB0dXJuZWQgb24gaW4gcGhwLmluaS4NCiAqIA0KICogVGhpcyBsaWJy YXJ5IHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gZm9yIFBIUCA1LCBidXQgaGFzIHN1YnNlcXVlbnRs eSBiZWVuIGZpeGVkDQogKiB0byBydW4gb24gUEhQIDQuMi4gQWxsIG9mIGl0J3MgZnVuY3Rpb25z IHNob3VsZCBiZSBwcmVkZWZpbmVkIGJ5IFBIUCBhbmQgZG9uJ3QNCiAqIHJlcXVpcmUgYW55IGxv YWRhYmxlIG1vZHVsZXMuDQogKi8NCg0KZnVuY3Rpb24gZW5jb2RlKCRzdHJpbmcpIHsNCglyZXR1 cm4gZXNjYXBlKHF1b3RlZF9wcmludGFibGVfZW5jb2RlKCRzdHJpbmcpKTsNCn0NCg0KZnVuY3Rp b24gZXNjYXBlKCRzdHJpbmcpIHsNCglyZXR1cm4gc3RyX3JlcGxhY2UoIjsiLCJcXDsiLCRzdHJp bmcpOw0KfQ0KDQpmdW5jdGlvbiBmb29sX3Byb29mX2FkZHJlc3MoJHZhbCkNCnsNCgkkbGluZW5h bWVzID0gYXJyYXkoJ2FkZHJlc3MxJywgJ2FkZHJlc3MyJywgJ2NpdHknLCAnc3RhdGUnLCAnemlw JywgJ2NvdW50cnknKTsNCglmb3JlYWNoKCRsaW5lbmFtZXMgYXMgJG5hbWUpDQoJew0KCQlpZigh aXNzZXQoJHZhbFskbmFtZV0pKQ0KCQkJJHZhbFskbmFtZV0gPSAnJzsNCgl9DQoJcmV0dXJuICR2 YWw7DQp9DQoNCmZ1bmN0aW9uIHBhcnNlX3BlcnNvbl9sZGlmKCRlbnRyeSkNCnsNCglmb3JlYWNo KCRlbnRyeSBhcyAkYXR0cmliX3BhaXIpDQoJew0KCQkvL2VjaG8gIkFQICI7DQoJCWlmKCRhdHRy aWJfcGFpclswXSA9PSAnZG4nKQ0KCQl7DQoJCQkkZG5zID0gZXhwbG9kZSgiLCIsICRhdHRyaWJf cGFpclsxXSk7DQoJCQlmb3JlYWNoKCRkbnMgYXMgJGRuX2F0dHJpYikNCgkJCXsNCgkJCQkkZG5f cGFpciA9IGV4cGxvZGUoIj0iLCAkZG5fYXR0cmliLCAyKTsNCgkJCQlpZigkZG5fcGFpclswXSA9 PSAnY24nKQ0KCQkJCXsNCgkJCQkJJGNuID0gJGRuX3BhaXJbMV07DQoJCQkJCSRwcm9wZXJ0aWVz Wydmb3JtYXR0ZWROYW1lJ10gPSAkY247DQoJCQkJCXVuc2V0KCRjbik7DQoJCQkJfQ0KCQkJCWlm KCRkbl9wYWlyWzBdID09ICdtYWlsJykNCgkJCQl7DQoJCQkJCSRwcm9wZXJ0aWVzWydwcmltYXJ5 RW1haWwnXSA9ICRkbl9wYWlyWzFdOw0KCQkJCX0NCgkJCX0NCgkJfQ0KCQlpZigkYXR0cmliX3Bh aXJbMF0gPT0gJ2dpdmVuTmFtZScpDQoJCSRwcm9wZXJ0aWVzWydmdWxsTmFtZSddWzBdID0gJGF0 dHJpYl9wYWlyWzFdOw0KCQlpZigkYXR0cmliX3BhaXJbMF0gPT0gJ3NuJykNCgkJJHByb3BlcnRp ZXNbJ2Z1bGxOYW1lJ11bMV0gPSAkYXR0cmliX3BhaXJbMV07DQoJCQkNCgkJaWYoJGF0dHJpYl9w YWlyWzBdID09ICd4bW96aWxsYW5pY2tuYW1lJykNCgkJJHByb3BlcnRpZXNbJ2Zvcm1hdHRlZE5h bWUnXSA9ICRhdHRyaWJfcGFpclsxXTsNCg0KCQlpZigkYXR0cmliX3BhaXJbMF0gPT0gJ21haWwn KQ0KCQkkcHJvcGVydGllc1sncHJpbWFyeUVtYWlsJ10gPSAkYXR0cmliX3BhaXJbMV07DQoJCWlm KCRhdHRyaWJfcGFpclswXSA9PSAnbW96aWxsYVNlY29uZEVtYWlsJykNCgkJJHByb3BlcnRpZXNb J3NlY29uZEVtYWlsJ10gPSAkYXR0cmliX3BhaXJbMV07DQoJCQ0KCQlpZighaXNzZXQoJHByb3Bl cnRpZXNbJ2Z1bGxOYW1lJ10pICYmIGlzc2V0KCRwcm9wZXJ0aWVzWydwcmltYXJ5RW1haWwnXSkp DQoJCQkkcHJvcGVydGllc1snZnVsbE5hbWUnXSA9IGFycmF5KCRwcm9wZXJ0aWVzWydwcmltYXJ5 RW1haWwnXSwgJycpOw0KDQoJCXN3aXRjaCgkYXR0cmliX3BhaXJbMF0pDQoJCXsNCgkJCWNhc2Ug InBvc3RhbEFkZHJlc3MiOg0KCQkJCSRwcm9wZXJ0aWVzWyd3b3JrQWRkcmVzcyddWydhZGRyZXNz MSddID0gJGF0dHJpYl9wYWlyWzFdOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAnbW96aWxsYVBvc3Rh bEFkZHJlc3MyJzoNCgkJCQkkcHJvcGVydGllc1snd29ya0FkZHJlc3MnXVsnYWRkcmVzczInXSA9 ICRhdHRyaWJfcGFpclsxXTsNCgkJCQlicmVhazsNCgkJCWNhc2UgJ2wnOg0KCQkJCSRwcm9wZXJ0 aWVzWyd3b3JrQWRkcmVzcyddWydjaXR5J10gPSAkYXR0cmliX3BhaXJbMV07DQoJCQkJYnJlYWs7 DQoJCQljYXNlICdzdCc6DQoJCQkJJHByb3BlcnRpZXNbJ3dvcmtBZGRyZXNzJ11bJ3N0YXRlJ10g PSAkYXR0cmliX3BhaXJbMV07DQoJCQkJYnJlYWs7DQoJCQljYXNlICdwb3N0YWxDb2RlJzoNCgkJ CQkkcHJvcGVydGllc1snd29ya0FkZHJlc3MnXVsnemlwJ10gPSAkYXR0cmliX3BhaXJbMV07DQoJ CQkJYnJlYWs7DQoJCQljYXNlICdjJzoNCgkJCQkkcHJvcGVydGllc1snd29ya0FkZHJlc3MnXVsn Y291bnRyeSddID0gJGF0dHJpYl9wYWlyWzFdOw0KCQkJCWJyZWFrOw0KDQoJCQljYXNlICdob21l UG9zdGFsQWRkcmVzcyc6DQoJCQkJJHByb3BlcnRpZXNbJ2hvbWVBZGRyZXNzJ11bJ2FkZHJlc3Mx J10gPSAkYXR0cmliX3BhaXJbMV07DQoJCQkJYnJlYWs7DQoJCQljYXNlICdtb3ppbGxhSG9tZVBv c3RhbEFkZHJlc3MyJzoNCgkJCQkkcHJvcGVydGllc1snaG9tZUFkZHJlc3MnXVsnYWRkcmVzczIn XSA9ICRhdHRyaWJfcGFpclsxXTsNCgkJCQlicmVhazsNCgkJCWNhc2UgJ21vemlsbGFIb21lTG9j YWxpdHlOYW1lJzoNCgkJCQkkcHJvcGVydGllc1snaG9tZUFkZHJlc3MnXVsnY2l0eSddID0gJGF0 dHJpYl9wYWlyWzFdOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAnbW96aWxsYUhvbWVTdGF0ZSc6DQoJ CQkJJHByb3BlcnRpZXNbJ2hvbWVBZGRyZXNzJ11bJ3N0YXRlJ10gPSAkYXR0cmliX3BhaXJbMV07 DQoJCQkJYnJlYWs7DQoJCQljYXNlICdtb3ppbGxhSG9tZVBvc3RhbENvZGUnOg0KCQkJCSRwcm9w ZXJ0aWVzWydob21lQWRkcmVzcyddWyd6aXAnXSA9ICRhdHRyaWJfcGFpclsxXTsNCgkJCQlicmVh azsNCgkJCWNhc2UgJ21vemlsbGFIb21lQ291bnRyeU5hbWUnOg0KCQkJCSRwcm9wZXJ0aWVzWydo b21lQWRkcmVzcyddWydjb3VudHJ5J10gPSAkYXR0cmliX3BhaXJbMV07DQoJCQkJYnJlYWs7DQoN CgkJCWNhc2UgJ3RpdGxlJzoNCgkJCQkkcHJvcGVydGllc1sndGl0bGUnXSA9ICRhdHRyaWJfcGFp clsxXTsNCgkJCQlicmVhazsNCgkJCWNhc2UgJ291JzoNCgkJCQkkcHJvcGVydGllc1snZGVwYXJ0 bWVudCddID0gJGF0dHJpYl9wYWlyWzFdOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAnbyc6DQoJCQkJ JHByb3BlcnRpZXNbJ29yZ2FuaXphdGlvbiddID0gJGF0dHJpYl9wYWlyWzFdOw0KCQkJCWJyZWFr Ow0KDQoJCQljYXNlICd0ZWxlcGhvbmVOdW1iZXInOg0KCQkJCSRwcm9wZXJ0aWVzWydwaG9uZU51 bWJlcnMnXVtdID0gYXJyYXkoJGF0dHJpYl9wYWlyWzFdLCAnV09SSycpOw0KCQkJCWJyZWFrOw0K CQkJY2FzZSAnaG9tZVBob25lJzoNCgkJCQkkcHJvcGVydGllc1sncGhvbmVOdW1iZXJzJ11bXSA9 IGFycmF5KCRhdHRyaWJfcGFpclsxXSwgJ0hPTUUnKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgJ2Zh Y3NpbWlsZVRlbGVwaG9uZU51bWJlcic6DQoJCQkJJHByb3BlcnRpZXNbJ3Bob25lTnVtYmVycydd W10gPSBhcnJheSgkYXR0cmliX3BhaXJbMV0sICdGQVgnKTsNCgkJCQlicmVhazsNCgkJCWNhc2Ug J3BhZ2VyJzoNCgkJCQkkcHJvcGVydGllc1sncGhvbmVOdW1iZXJzJ11bXSA9IGFycmF5KCRhdHRy aWJfcGFpclsxXSwgJ1BBR0VSJyk7DQoJCQkJYnJlYWs7DQoJCQljYXNlICdtb2JpbGUnOg0KCQkJ CSRwcm9wZXJ0aWVzWydwaG9uZU51bWJlcnMnXVtdID0gYXJyYXkoJGF0dHJpYl9wYWlyWzFdLCAn Q0VMTCcpOw0KCQkJCWJyZWFrOw0KDQoJCQljYXNlICdtb3ppbGxhX0FpbVNjcmVlbk5hbWUnOg0K CQkJCSRwcm9wZXJ0aWVzWydhaW1TY3JlZW5OYW1lJ10gPSAkYXR0cmliX3BhaXJbMV07DQoJCQkJ YnJlYWs7DQoNCgkJCWNhc2UgJ3dvcmt1cmwnOg0KCQkJCSRwcm9wZXJ0aWVzWyd1cmxzJ11bXSA9 IGFycmF5KCRhdHRyaWJfcGFpclsxXSwgJ1dPUksnKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgJ2hv bWV1cmwnOg0KCQkJCSRwcm9wZXJ0aWVzWyd1cmxzJ11bXSA9IGFycmF5KCRhdHRyaWJfcGFpclsx XSwgJ0hPTUUnKTsNCgkJCQlicmVhazsNCgkJfQ0KCX0NCglpZighaXNzZXQoJHByb3BlcnRpZXNb J2Z1bGxOYW1lJ10pICYmICFpc3NldCgkcHJvcGVydGllc1sncHJpbWFyeUVtYWlsJ10pKQ0KCQly ZXR1cm4gJyc7DQoJDQoJJHZjYXJkb3V0ID0gIkJFR0lOOlZDQVJEXHJcblZFUlNJT046Mi4xXHJc blgtR1dUWVBFOlVTRVJcclxuIjsNCgkNCglpZihpc3NldCgkcHJvcGVydGllc1sncHJpbWFyeUVt YWlsJ10pKQ0KCXsNCgkJJHZjYXJkb3V0IC49ICJFTUFJTDtXT1JLO1BSRUY6eyRwcm9wZXJ0aWVz WydwcmltYXJ5RW1haWwnXX1cclxuIjsNCgkJJGVtYWlsYXJyYXkgPSBleHBsb2RlKCJAIiwgJHBy b3BlcnRpZXNbJ3ByaW1hcnlFbWFpbCddLCAyKTsNCgkJaWYoY291bnQoJGVtYWlsYXJyYXkpID4g MSkNCgkJew0KCQkJJHZjYXJkb3V0IC49ICJYLUdXVVNFUklEOnskZW1haWxhcnJheVswXX1cclxu WC1HV0FERFJGTVQ6MFxyXG5YLUdXSURPTUFJTjp7JGVtYWlsYXJyYXlbMV19XHJcbiI7DQoJCX0N Cgl9DQoJDQoJaWYoaXNzZXQoJHByb3BlcnRpZXNbJ3NlY29uZEVtYWlsJ10pKQ0KCQkkdmNhcmRv dXQgLj0gIkVNQUlMOnskcHJvcGVydGllc1snc2Vjb25kRW1haWwnXX1cclxuIjsNCgkJDQoJaWYo aXNzZXQoJHByb3BlcnRpZXNbJ3Bob25lTnVtYmVycyddKSkNCgl7DQoJCWZvcmVhY2goJHByb3Bl cnRpZXNbJ3Bob25lTnVtYmVycyddIGFzICRwaG9uZW51bWJlcikNCgkJew0KCQkJJHZjYXJkb3V0 IC49ICJURUw7eyRwaG9uZW51bWJlclsxXX06eyRwaG9uZW51bWJlclswXX1cclxuIjsNCgkJfQ0K CX0NCglpZihpc3NldCgkcHJvcGVydGllc1snZnVsbE5hbWUnXSkpDQoJew0KCQlmb3IoJGkgPSAw OyAkaSA8IDI7ICRpKyspDQoJCXsNCgkJCWlmKCFpc3NldCgkcHJvcGVydGllc1snZnVsbE5hbWUn XVskaV0pKQ0KCQkJCSRwcm9wZXJ0aWVzWydmdWxsTmFtZSddWyRpXSA9ICcnOw0KCQl9DQoJCSR2 Y2FyZG91dCAuPSAiTjp7JHByb3BlcnRpZXNbJ2Z1bGxOYW1lJ11bMV19O3skcHJvcGVydGllc1sn ZnVsbE5hbWUnXVswXX07OztcclxuIjsNCgl9DQoJDQoJaWYoaXNzZXQoJHByb3BlcnRpZXNbJ2Zv cm1hdHRlZE5hbWUnXSkpDQoJCSR2Y2FyZG91dCAuPSAiRk46eyRwcm9wZXJ0aWVzWydmb3JtYXR0 ZWROYW1lJ119XHJcbiI7DQoJZWxzZQ0KCXsNCgkJJGZ1bGxuYW1lID0gJHByb3BlcnRpZXNbJ2Z1 bGxOYW1lJ11bMF0gLiAiICIgLiAkcHJvcGVydGllc1snZnVsbE5hbWUnXVsxXTsNCgkJJHZjYXJk b3V0IC49ICJGTjokZnVsbG5hbWVcclxuIjsNCgl9DQoJDQoJaWYoaXNzZXQoJHByb3BlcnRpZXNb J3dvcmtBZGRyZXNzJ10pKQ0KCXsNCgkJJGFkZHJlc3MgPSAkcHJvcGVydGllc1snd29ya0FkZHJl c3MnXTsNCgkJJGFkZHJlc3MgPSBmb29sX3Byb29mX2FkZHJlc3MoJGFkZHJlc3MpOw0KCQkkdmNh cmRvdXQgLj0gIkFEUjtJTlRMO1dPUks7UEFSQ0VMO1BPU1RBTDo7OyI7DQoJCSR2Y2FyZG91dCAu PSBlbmNvZGUoJGFkZHJlc3NbJ2FkZHJlc3MxJ10pIC4gIlxcbiIgLiBlbmNvZGUoJGFkZHJlc3Nb J2FkZHJlc3MyJ10pLiI7Ii4NCgkJCWVuY29kZSgkYWRkcmVzc1snY2l0eSddKS4iOyIuIGVuY29k ZSgkYWRkcmVzc1snc3RhdGUnXSkgLiAiOyIgLmVuY29kZSgkYWRkcmVzc1snemlwJ10pLiI7Ii4N CgkJCWVuY29kZSgkYWRkcmVzc1snY291bnRyeSddKTsNCgkJJHZjYXJkb3V0IC49ICJcclxuIjsN CgkNCgkJJGxhYmVsID0gIkxBQkVMO0lOVEw7V09SSztQQVJDRUw7UE9TVEFMO0VOQ09ESU5HPVFV T1RFRC1QUklOVEFCTEU6IjsNCgkJJGxhYmVsX2NvbnRlbnQgPSAnJzsNCgkJZm9yZWFjaCgkYWRk cmVzcyBhcyAkbGFkKQ0KCQl7DQoJCQkkbGFiZWxfY29udGVudCAuPSAkbGFkIC4gIlxyXG4iOw0K CQl9DQoJCSR2Y2FyZG91dCAuPSAkbGFiZWwgLiBxdW90ZWRfcHJpbnRhYmxlX2VuY29kZSgkbGFi ZWxfY29udGVudCkgLiAiXHJcbiI7DQoJCXVuc2V0KCRsYWJlbCk7DQoJfQ0KCQ0KCWlmKGlzc2V0 KCRwcm9wZXJ0aWVzWydob21lQWRkcmVzcyddKSkNCgl7DQoJCSRhZGRyZXNzID0gJHByb3BlcnRp ZXNbJ2hvbWVBZGRyZXNzJ107DQoJCSRhZGRyZXNzID0gZm9vbF9wcm9vZl9hZGRyZXNzKCRhZGRy ZXNzKTsNCgkJJHZjYXJkb3V0IC49ICJBRFI7SU5UTDtIT01FO1BBUkNFTDtQT1NUQUw6OzsiOw0K CQkkdmNhcmRvdXQgLj0gZW5jb2RlKCRhZGRyZXNzWydhZGRyZXNzMSddKSAuICJcXG4iIC4gZW5j b2RlKCRhZGRyZXNzWydhZGRyZXNzMiddKS4iOyIuDQoJCQllbmNvZGUoJGFkZHJlc3NbJ2NpdHkn XSkuIjsiLiBlbmNvZGUoJGFkZHJlc3NbJ3N0YXRlJ10pIC4gIjsiIC5lbmNvZGUoJGFkZHJlc3Nb J3ppcCddKS4iOyIuDQoJCQllbmNvZGUoJGFkZHJlc3NbJ2NvdW50cnknXSk7DQoJCSR2Y2FyZG91 dCAuPSAiXHJcbiI7DQoJDQoJCSRsYWJlbCA9ICJMQUJFTDtJTlRMO0hPTUU7UEFSQ0VMO1BPU1RB TDtFTkNPRElORz1RVU9URUQtUFJJTlRBQkxFOiI7DQoJCSRsYWJlbF9jb250ZW50ID0gJyc7DQoJ CWZvcmVhY2goJGFkZHJlc3MgYXMgJGxhZCkNCgkJew0KCQkJJGxhYmVsX2NvbnRlbnQgLj0gJGxh ZCAuICJcclxuIjsNCgkJfQ0KCQkkdmNhcmRvdXQgLj0gJGxhYmVsIC4gcXVvdGVkX3ByaW50YWJs ZV9lbmNvZGUoJGxhYmVsX2NvbnRlbnQpIC4gIlxyXG4iOw0KCQl1bnNldCgkbGFiZWwpOwkJDQoJ fQ0KCQ0KCWlmKGlzc2V0KCRwcm9wZXJ0aWVzWydhaW1TY3JlZW5OYW1lJ10pKQ0KCQkkdmNhcmRv dXQgLj0gIkFPTDphaW06eyRwcm9wZXJ0aWVzWydhaW1TY3JlZW5OYW1lJ119XHJcbiI7DQoJDQoJ aWYoaXNzZXQoJHByb3BlcnRpZXNbJ3RpdGxlJ10pKQ0KCQkkdmNhcmRvdXQgLj0gIlRJVExFOnsk cHJvcGVydGllc1sndGl0bGUnXX1cclxuIjsNCgkJDQoJaWYoaXNzZXQoJHByb3BlcnRpZXNbJ29y Z2FuaXphdGlvbiddKSkNCgl7DQoJCSR2Y2FyZG91dCAuPSAiT1JHOnskcHJvcGVydGllc1snb3Jn YW5pemF0aW9uJ119OyI7DQoJCWlmKGlzc2V0KCRwcm9wZXJ0aWVzWydkZXBhcnRtZW50J10pKQ0K CQkJJHZjYXJkb3V0IC49ICRwcm9wZXJ0aWVzWydkZXBhcnRtZW50J107DQoJCSR2Y2FyZG91dCAu PSAiXHJcbiI7DQoJfQ0KDQoJJHZjYXJkb3V0IC49ICJFTkQ6VkNBUkRcclxuXHJcbiI7DQoJcmV0 dXJuICR2Y2FyZG91dDsNCn0NCg0KZnVuY3Rpb24gYnVpbGRfZGlzdF9saXN0KCRlbnRyeSkNCnsN Cglmb3JlYWNoKCRlbnRyeSBhcyAkYXR0cmliX3BhaXIpDQoJew0KCQlpZigkYXR0cmliX3BhaXJb MF0gPT0gJ21lbWJlcicgJiYgJGF0dHJpYl9wYWlyWzFdICE9ICcnKQ0KCQl7DQoJCQlpZihzdWJz dHIoJGF0dHJpYl9wYWlyWzFdLCAwLCAzKSA9PSAiY249IiB8fCBzdWJzdHIoJGF0dHJpYl9wYWly WzFdLCAwLCA1KSA9PSAibWFpbD0iKQ0KCQkJew0KCQkJCSRkbnMgPSBleHBsb2RlKCIsIiwgJGF0 dHJpYl9wYWlyWzFdKTsNCgkJCQlmb3JlYWNoKCRkbnMgYXMgJGRuX2F0dHJpYikNCgkJCQl7DQoJ CQkJCSRkbl9wYWlyID0gZXhwbG9kZSgiPSIsICRkbl9hdHRyaWIsIDIpOw0KCQkJCQlpZigkZG5f cGFpclswXSA9PSAnY24nKQ0KCQkJCQl7DQoJCQkJCQkkbWVtYmVyWzBdID0gJGRuX3BhaXJbMV07 DQoJCQkJCX0NCgkJCQkJaWYoJGRuX3BhaXJbMF0gPT0gJ21haWwnKQ0KCQkJCQl7DQoJCQkJCQkk bWVtYmVyWzFdID0gJGRuX3BhaXJbMV07DQoJCQkJCX0NCgkJCQl9DQoJCQkJaWYoIWlzc2V0KCRt ZW1iZXJbMF0pICYmIGlzc2V0KCRtZW1iZXJbMV0pKQ0KCQkJCSRtZW1iZXJbMF0gPSAkbWVtYmVy WzFdOw0KCQkJCWlmKGlzc2V0KCRtZW1iZXJbMV0pKQ0KCQkJCSRtZW1iZXJzW10gPSAkbWVtYmVy Ow0KCQkJCWVsc2UNCgkJCQl7DQoJCQkJCSRtZW1iZXIgPSBhcnJheSgkYXR0cmliX3BhaXJbMV0s ICRhdHRyaWJfcGFpclsxXSk7DQoJCQkJCSRtZW1iZXJzW10gPSAkbWVtYmVyOw0KCQkJCX0NCgkJ CQl1bnNldCgkbWVtYmVyKTsNCgkJCX0NCgkJCWVsc2UgDQoJCQl7DQoJCQkJJG1lbWJlcltdID0g YXJyYXkoJGF0dHJpYl9wYWlyWzFdLCAkYXR0cmliX3BhaXJbMV0pOw0KCQkJfQ0KCQl9DQoJCWVs c2UgDQoJCXsNCgkJCWlmKCRhdHRyaWJfcGFpclswXSA9PSAnZG4nKQ0KCQkJew0KCQkJCSRkbnMg PSBleHBsb2RlKCIsIiwgJGF0dHJpYl9wYWlyWzFdKTsNCgkJCQlmb3JlYWNoKCRkbnMgYXMgJGRu X2F0dHJpYikNCgkJCQl7DQoJCQkJCSRkbl9wYWlyID0gZXhwbG9kZSgiPSIsICRkbl9hdHRyaWIs IDIpOw0KCQkJCQlpZigkZG5fcGFpclswXSA9PSAnY24nKQ0KCQkJCQl7DQoJCQkJCQkkbGlzdG5h bWUgPSAkZG5fcGFpclsxXTsNCgkJCQkJfQ0KCQkJCX0NCgkJCX0NCgkJCWlmKCRhdHRyaWJfcGFp clswXSA9PSAnY24nKQ0KCQkJCSRsaXN0bmFtZSA9ICRhdHRyaWJfcGFpclsxXTsNCgkJfQ0KCX0N Cg0KCWlmKGlzc2V0KCRtZW1iZXJzKSAmJiBpc3NldCgkbGlzdG5hbWUpKQ0KCXsNCgkJJG1lbWJl cmNvdW50ID0gY291bnQoJG1lbWJlcnMpOw0KCQkkdmNhcmRzdHJlYW0gPSAiQkVHSU46VkNBUkRc clxuVkVSU0lPTjoyLjFcclxuWC1HV1RZUEU6R1JPVVBcclxuRk46eyRsaXN0bmFtZX1cclxuTjp7 JGxpc3RuYW1lfVxyXG4iIC4NCgkJCSJYLURMOnskbGlzdG5hbWV9KHskbWVtYmVyY291bnR9IGl0 ZW1zKVxyXG5FTkQ6VkNBUkRcclxuXHJcbiI7DQoJCQkNCgkJZm9yZWFjaCgkbWVtYmVycyBhcyAk bWVtYmVyKQ0KCQl7DQoJCQkkZXhwbG9kZWQgPSBleHBsb2RlKCJAIiwgJG1lbWJlclsxXSwgMik7 DQoJCQlpZihjb3VudCgkZXhwbG9kZWQpID4gMSkNCgkJCXsNCgkJCQkkdmNhcmRzdHJlYW0gLj0g IkJFR0lOOlZDQVJEXHJcblZFUlNJT046Mi4xXHJcblgtR1dUWVBFOlVTRVJcclxuRk46eyRtZW1i ZXJbMF19XHJcbiIgLg0KCQkJCQkiRU1BSUw7V09SSztQUkVGOnskbWVtYmVyWzFdfVxyXG5YLUdX VVNFUklEOnskZXhwbG9kZWRbMF19XHJcblgtR1dBRERSRk1UOjBcclxuIiAuDQoJCQkJCSJYLUdX SURPTUFJTjp7JGV4cGxvZGVkWzFdfVxyXG5OOnskbWVtYmVyWzBdfVxyXG5YLUdXVEFSR0VUOlRP XHJcbkVORDpWQ0FSRFxyXG5cclxuIjsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkdmNhcmRz dHJlYW0gLj0gIkJFR0lOOlZDQVJEXHJcblZFUlNJT046Mi4xXHJcblgtR1dUWVBFOlVTRVJcclxu Rk46eyRtZW1iZXJbMF19XHJcbiIgLg0KCQkJCQkiRU1BSUw7V09SSztQUkVGOnskbWVtYmVyWzFd fVxyXG5YLUdXQUREUkZNVDowXHJcbk46eyRtZW1iZXJbMF19XHJcbiIgLg0KCQkJCQkiWC1HV1RB UkdFVDpUT1xyXG5FTkQ6VkNBUkRcclxuXHJcbiI7DQoJCQl9DQoJCX0NCgkJDQoJCSR2Y2FyZHN0 cmVhbSAuPSAiQkVHSU46VkNBUkRcclxuVkVSU0lPTjoyLjFcclxuRk46eyRsaXN0bmFtZX1cclxu WC1HV1RZUEU6R1JPVVBFTkRcclxuRU5EOlZDQVJEXHJcblxyXG4iOw0KCQlyZXR1cm4gJHZjYXJk c3RyZWFtOw0KCX0NCgllbHNlIA0KCQlyZXR1cm4gJyc7DQp9DQoNCmZ1bmN0aW9uIGNvbnZlcnRf bGRpZl90b192Y2FyZCgkZmlsZWluLCAkZmlsZW91dCkNCnsNCgkkb0hhbmRsZSA9IGZvcGVuKCRm aWxlb3V0LCAidyIpOw0KCSRjYXJkc3Byb2Nlc3NlZCA9IDA7DQoJJGxkaWZzX3JhdyA9IGZpbGUo JGZpbGVpbik7DQoJJGxkaWZzID0gaW1wbG9kZSgnJywgJGxkaWZzX3Jhdyk7DQoJDQoJJGxkaWZf YXJyYXkgPSBleHBsb2RlKCJcblxuIiwgJGxkaWZzKTsNCglmb3JlYWNoKCRsZGlmX2FycmF5IGFz ICRsZGlmX2VudHJ5KQ0KCXsNCgkJJGxpbmVzID0gZXhwbG9kZSgiXG4iLCAkbGRpZl9lbnRyeSk7 DQoJCSRwYWlycyA9IGFycmF5KCk7DQoJCWZvcmVhY2goJGxpbmVzIGFzICRsaW5lKQ0KCQl7DQoJ CQkkYXR0cmliX3BhaXIgPSBleHBsb2RlKCI6ICIsICRsaW5lLCAyKTsNCgkJCWlmKGlzc2V0KCRh dHRyaWJfcGFpclsxXSkpDQoJCQl7DQoJCQkJJGF0dHJpYl9wYWlyWzFdID0gZXJlZ19yZXBsYWNl KCJbXHgwMS1ceDFGJ1wiYF0iLCAiIiwgJGF0dHJpYl9wYWlyWzFdKTsNCgkJCQkkcGFpcnNbXSA9 ICRhdHRyaWJfcGFpcjsNCgkJCX0NCgkJfQ0KCQkkbGRpZl9lbnRyaWVzW10gPSAkcGFpcnM7DQoJ fQ0KCQ0KCWZvcmVhY2goJGxkaWZfZW50cmllcyBhcyAkZW50cnkpDQoJew0KCQkkdmNhcmRzdHJl YW0gPSAnJzsNCgkJJGlzcGVyc29uID0gZmFsc2U7DQoJCWZvcmVhY2goJGVudHJ5IGFzICRlbnRy eV9wYWlyKQ0KCQl7CQ0KCQkJaWYoJGVudHJ5X3BhaXJbMF0gPT0gJ29iamVjdGNsYXNzJyAmJiAk ZW50cnlfcGFpclsxXSA9PSAicGVyc29uIikNCgkJCQkkaXNwZXJzb24gPSB0cnVlOw0KCQl9CQ0K CQlpZigkaXNwZXJzb24gPT0gdHJ1ZSkgLy8gSGFuZGxlIHRoZSBwZXJzb24gbGRpZiBlbnRyaWVz Lg0KCQl7DQoJCQkkdmNhcmRzdHJlYW0gLj0gcGFyc2VfcGVyc29uX2xkaWYoJGVudHJ5KTsNCgkJ CSRjYXJkc3Byb2Nlc3NlZCsrOw0KCQl9DQoJCWVsc2UgLy8gSGFuZGxlIHRoZSBkaXN0LiBsaXN0 IGxkaWYgZW50cmllcy4NCgkJew0KCQkJJHZjYXJkc3RyZWFtIC49IGJ1aWxkX2Rpc3RfbGlzdCgk ZW50cnkpOw0KCQkJJGNhcmRzcHJvY2Vzc2VkKys7DQoJCX0NCgkJZndyaXRlKCRvSGFuZGxlLCAk dmNhcmRzdHJlYW0pOw0KCX0NCglmY2xvc2UoJG9IYW5kbGUpOw0KCXJldHVybiAkY2FyZHNwcm9j ZXNzZWQ7DQp9DQoNCmZ1bmN0aW9uIHN0cmluZ19jb252ZXJ0X2xkaWZfdG9fdmNhcmQoJHN0cmlu Z2luLCAmICRzdHJpbmdvdXQpDQp7DQoJJGNhcmRzcHJvY2Vzc2VkID0gMDsJDQoJJGxkaWZfYXJy YXkgPSBleHBsb2RlKCJcclxuXHJcbiIsICRzdHJpbmdpbik7DQoJZm9yZWFjaCgkbGRpZl9hcnJh eSBhcyAkbGRpZl9lbnRyeSkNCgl7DQoJCSRsaW5lcyA9IGV4cGxvZGUoIlxuIiwgJGxkaWZfZW50 cnkpOw0KCQkkcGFpcnMgPSBhcnJheSgpOw0KCQlmb3JlYWNoKCRsaW5lcyBhcyAkbGluZSkNCgkJ ew0KCQkJJGF0dHJpYl9wYWlyID0gZXhwbG9kZSgiOiAiLCAkbGluZSwgMik7DQoJCQlpZihpc3Nl dCgkYXR0cmliX3BhaXJbMV0pKQ0KCQkJew0KCQkJCSRhdHRyaWJfcGFpclsxXSA9IGVyZWdfcmVw bGFjZSgiW1x4MDEtXHgxRidcImBdIiwgIiIsICRhdHRyaWJfcGFpclsxXSk7DQoJCQkJJHBhaXJz W10gPSAkYXR0cmliX3BhaXI7DQoJCQl9DQoJCX0NCgkJJGxkaWZfZW50cmllc1tdID0gJHBhaXJz Ow0KCX0NCgkNCglmb3JlYWNoKCRsZGlmX2VudHJpZXMgYXMgJGVudHJ5KQ0KCXsNCgkJJHZjYXJk c3RyZWFtID0gJyc7DQoJCSRpc3BlcnNvbiA9IGZhbHNlOw0KCQlmb3JlYWNoKCRlbnRyeSBhcyAk ZW50cnlfcGFpcikNCgkJewkNCgkJCWlmKCRlbnRyeV9wYWlyWzBdID09ICdvYmplY3RjbGFzcycg JiYgJGVudHJ5X3BhaXJbMV0gPT0gInBlcnNvbiIpDQoJCQkJJGlzcGVyc29uID0gdHJ1ZTsNCgkJ fQkNCgkJaWYoJGlzcGVyc29uID09IHRydWUpIC8vIEhhbmRsZSB0aGUgcGVyc29uIGxkaWYgZW50 cmllcy4NCgkJew0KCQkJJHZjYXJkc3RyZWFtIC49IHBhcnNlX3BlcnNvbl9sZGlmKCRlbnRyeSk7 DQoJCQkkY2FyZHNwcm9jZXNzZWQrKzsNCgkJfQ0KCQllbHNlIC8vIEhhbmRsZSB0aGUgZGlzdC4g bGlzdCBsZGlmIGVudHJpZXMuDQoJCXsNCgkJCSR2Y2FyZHN0cmVhbSAuPSBidWlsZF9kaXN0X2xp c3QoJGVudHJ5KTsNCgkJCSRjYXJkc3Byb2Nlc3NlZCsrOw0KCQl9DQoJCSRzdHJpbmdvdXQgLj0g JHZjYXJkc3RyZWFtOw0KCX0NCglyZXR1cm4gJGNhcmRzcHJvY2Vzc2VkOw0KfQ0KDQppZihpc3Nl dCgkYXJndlsxXSkgJiYgaXNzZXQoJGFyZ3ZbMl0pKQ0Kew0KCWVjaG8gIkxESUYgdG8gdkNhcmQg Q29udmVyc2lvbiBTY3JpcHRcclxuIjsNCgllY2hvICJDb3B5cmlnaHQgKGMpIDIwMDYgYnkgSm9u YXRoYW4gUmVhbXNcclxuIjsNCgkkY2FyZHNwcm9jZXNzZWQgPSBjb252ZXJ0X2xkaWZfdG9fdmNh cmQoJGFyZ3ZbMV0sICRhcmd2WzJdKTsNCgllY2hvICJDb252ZXJ0ZWQgeyRhcmd2WzFdfSB0byB7 JGFyZ3ZbMl19ICgkY2FyZHNwcm9jZXNzZWQpIGNhcmRzIGNvbnZlcnRlZC5cclxuIjsNCn0NCmVs c2UgDQp7DQoJZWNobyAiTERJRiB0byB2Q2FyZCBDb252ZXJzaW9uIFNjcmlwdFxyXG4iOw0KCWVj aG8gIkNvcHlyaWdodCAoYykgMjAwNiBieSBKb25hdGhhbiBSZWFtc1xyXG4iOw0KCWVjaG8gIlxy XG5waHAgeyRhcmd2WzBdfSBpbnB1dGZpbGUgb3V0cHV0ZmlsZVxyXG4iOw0KCWVjaG8gImlucHV0 ZmlsZSAtIExESUYgZmlsZSB5b3Ugd2lzaCB0byBjb252ZXJ0LlxyXG4iOw0KCWVjaG8gIm91dHB1 dGZpbGUgLSB2Q2FyZCBmaWxlIHRoZSBzY3JpcHQgc2hvdWxkIG91dHB1dCB0by5cclxuIjsNCn0N Cg0KPz4= --===============0461046611652206061==-- From alec@alec.pl Tue Jan 8 13:50:57 2013 From: "A.L.E.C" To: dev@lists.roundcube.net Subject: Re: [RCD] Import address book in LDIF format - solved Date: Tue, 08 Jan 2013 13:50:39 +0100 Message-ID: <50EC161F.1060808@alec.pl> In-Reply-To: <50EC1408.5050900@avertis.pl> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2270142194278967115==" --===============2270142194278967115== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit On 01/08/2013 01:41 PM, AVERTIS - Jan Michlik wrote: > Please find attachment and diffs with the possibility of importing an > address book in ldif format. You can import books directly from > Thunderbird! The file ldiftovcard.php is litte improved. It may be > useful to someone. ALEC may be able to throw it into the main branch of > the program. We already support import from Thunderbird in csv format (localization files need to be updated). So, LDIF support is not so important now. We could however add it, but this code should be cleaned up a little. Open a ticket and attach these files if you want. -- Aleksander 'A.L.E.C' Machniak LAN Management System Developer [http://lms.org.pl] Roundcube Webmail Developer [http://roundcube.net] --------------------------------------------------- PGP: 19359DC1 @@ GG: 2275252 @@ WWW: http://alec.pl --===============2270142194278967115==--