Ich fand diese global address book Plugin für RoundCube mit iRedMail. Ich benutze hMailServer als meinen E-Mail-Server obwohl ich mit Windows arbeite. Ich habe immer noch versucht dieses Plugin und funktioniert gut mit den Standardfeldern (Name, E-Mail und Domäne). Ich fügte vcard Feld in der Tabelle hinzu, obwohl Sie es in der Dokumentation nicht finden können. Ich zwickte auch die sql_global_backend.php
und einige Codes hinzufügen, die ursprünglich aus rcube_contacts.php
kommen:Roundcube-SQL-Global-Adress-Bücher benutzerdefinierte vCard
public function get_record($id, $assoc=false) {
$db = rcube::get_instance()->db;
$db->query('SELECT * FROM global_addressbook WHERE `ID`=?', $id);
if ($sql_arr = $db->fetch_assoc()) {
// $sql_arr['email'] = explode(',', $sql_arr['email']); // edited
$record = $this->convert_db_data($sql_arr); // edited
$this->result = new rcube_result_set(1);
$this->result->add($record); // edited
}
return $assoc && $record ? $record : $this->result;
}
/**
* Convert data stored in the database into output format
* Note: this code is originally from rcube_contacts.php
*/
private function convert_db_data($sql_arr)
{
$record = array();
$record['ID'] = $sql_arr[$this->primary_key];
if ($sql_arr['vcard']) {
unset($sql_arr['email']);
$vcard = new rcube_vcard($sql_arr['vcard'], RCUBE_CHARSET, false, $this->vcard_fieldmap);
$record += $vcard->get_assoc() + $sql_arr;
}
else {
$record += $sql_arr;
$record['email'] = explode(self::SEPARATOR, $record['email']);
$record['email'] = array_map('trim', $record['email']);
}
return $record;
}
Dieser Code ermöglicht die Ansicht (Vorlage von roundcube) die vcard Feld zu lesen. Aber es kann nicht alles lesen.
BEGIN:VCARD
VERSION:3.0
N:John;Doe;;; // can read
FN:John Doe // can read
EMAIL;TYPE=INTERNET;TYPE=WORK:[email protected] // can read
TITLE:Programmer // can't read
ORG:John Doe Org // can't read
X-DEPARTMENT:Management System Department // can't read
TEL:09123456789 // can't read
END:VCARD
AKTUALISIERT
Mein Tisch global_addressbook
sieht wie folgt aus:
_______________________________________________________________________________________________________________
| | | | | | | |
| ID | name | email | firstname | surname | domain | vcard |
|____|__________|______________|___________|_________|_________|_______________________________________________|
| | | | | | | |
| 1 | John Doe | [email protected] | John | doe | doe.com | BEGIN:VCARD |
| | | | | | | VERSION:3.0 |
| N:John;Doe;;; |
| FN:John Doe |
| EMAIL;TYPE=INTERNET;TYPE=WORK:[email protected] |
| TITLE:Programmer |
| ORG:John Doe Org |
| X-DEPARTMENT:Management System Department |
| TEL:09123456789 |
| END:VCARD |
Und es so aussehen in der RoundCube Ansicht:
Können Sie die in der Funktion convert_db_data() verwendete Funktion rcube_vcard() posten? –
@KetanMalhotra. Der Code ist fast Tausende von Zeilen. Ich habe gerade meinen 'RoundCube' letzte Woche heruntergeladen und ich habe ihn nicht neu programmiert. Sie können dasselbe sehen, wenn Sie es herunterladen könnten. –