Пользовательская визитная карточка Roundcube-SQL-Global-Address-Books

я нашел это глобальная адресная книга плагин для RoundCube с iRedMail. я использую hMailServer как мой почтовый сервер, хотя, так как я работаю с Windows. Я все еще пробовал этот плагин и отлично работает с полями по умолчанию (название, Эл. адрес а также домен). я добавил Управление дисками поле в таблице, хотя вы не можете найти его в документации. Я также подправил sql_global_backend.php и добавить несколько кодов, исходящих из rcube_contacts.php:

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;
}

Этот код позволяет представлению (шаблону roundcube) прочитать Управление дисками поле. Но это не может прочитать все.

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

ОБНОВЛЕНО

Мой стол global_addressbook выглядеть так:

_______________________________________________________________________________________________________________
|    |          |              |           |         |         |                                               |
| 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                                    |

И это выглядит так в RoundCube Посмотреть:

введите описание изображения здесь

4

Решение

Попробуйте этот способ, извлекая vcard в виде строки с использованием экспорт метод.

private function convert_db_data($sql_arr) {
if ($sql_arr['vcard']) {
unset($sql_arr['email']);
$vcard = new rcube_vcard($sql_arr['vcard'], RCUBE_CHARSET, false, $this->vcard_fieldmap);
$sql_arr['vcard'] = $vcard->export();
} else {
unset($sql_arr['vcard']);
}

return $sql_arr;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]