[Tickets #5971] Re: Add support for contact photos with ability to sync
bugs at horde.org
bugs at horde.org
Mon Sep 29 09:40:06 UTC 2008
DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED.
Ticket URL: http://bugs.horde.org/ticket/5971
------------------------------------------------------------------------------
Ticket | 5971
Updated By | robb at wtg.cw.com
Summary | Add support for contact photos with ability to sync
Queue | Turba
Version | HEAD
Type | Enhancement
State | Resolved
Priority | 1. Low
Milestone |
Patch |
Owners | Jan Schneider
------------------------------------------------------------------------------
Gunnar Wrobel <p at rdus.de> (2008-09-29 00:14) wrote:
> Hi, just upgraded to current turba 2.3
> and run into some problems with PHOTO
>
> 1) storing contact without a photo in LDAP
>
> The attribute array always contains an array for the photo item. If
> there is no photo set, this array is empty, but is not catched by the
> function _emptyAttributeFilter in turba/lib/Driver/ldap.php. This
> results in an error in _add to LDAP. Stripping empty arrays too solves
> at least this problem.
>
> function _emptyAttributeFilter($var)
> {
> if (!is_array($var)) {
> return ($var != '');
> } else {
> if (count($var) == 0) { return false; } <<===
> foreach ($var as $v) {
> ...
>
> Storing in turba DB doesn't show this bug, but photos are stored as 0B
> blobs instead of NULL blobs.
>
>
>
> 2) base64 is terminated by a blank line, so eliminate it before
> matching the following vCalender attributes. Otherwise the name of
> one following PHOTO will start with a \r\n, so it will be
> discarded afterward
>
> in /lib/Horde/iCalendar.php
>
> // Unfold any folded lines.
> - $vCal = preg_replace('/[\r\n]+[ \t]/', '', $vCal);
> + $vCal = preg_replace('/[\r\n]+[ \t]+/', '', $vCal);
> + $vCal = preg_replace('/\r\n\r\n/', "\r\n", $vCal);
>
> (First line only beautifies the base64 code by stripping all
> whitespace. The second line does the necessary work by deleting all
> blank lines.)
>
> and add the blank line in /turba/lib/Driver.php again before
> sending to mobile:
>
> case 'photo':
> case 'logo':
> $params = array('ENCODING' => 'base64');
> if (isset($hash[$key . 'type'])) {
> $params['TYPE'] = $hash[$key . 'type'];
> }
> $vcard->setAttribute(String::upper($key),
> - base64_encode($val),
> + base64_encode($val) . "\r\n",
> $params);
> break;
>
>
>
> 3) Browsing the address book with photo as a visible column results in a
> warning per entry containing a photo:
>
> Warning: htmlspecialchars() expects parameter 1 to be string, array
> given in
> /var/www/org.afaik.duff_ssl/mail-new/turba/templates/browse/row.inc
> on line 90
>
> if ($ob->hasValue($this->columns[$c - 1])) {
> $value = $ob->getValue($this->columns[$c - 1]);
> - $shown_columns[$c] = htmlspecialchars($value)
> + $shown_columns[$c] = is_array($value) ? $value :
> htmlspecialchars($value);
> if ($type == 'email') {
>
> No thinking on my side, just getting rid of this warning, so check
> again.
>
>
>
> 4) In toHash and tovCard, the encoding of a photo is tested against
> and set to 'b'. Is that a valid encoding name at all? Changed
> it to 'base64' and it worked again. In turba/lib/Driver.php
>
> case 'photo':
> case 'logo':
> - $params = array('ENCODING' => 'b');
> + $params = array('ENCODING' => 'base64');
>
>
> if (!isset($item['params']['ENCODING']) ||
> - String::lower($item['params']['ENCODING']) != 'b') {
> + String::lower($item['params']['ENCODING']) != 'base64') {
> // Invalid property.
> break;
>
>
> 5) Finally, how am I supposed to delete a photo from a contact or save
> it to a local file (e.g. for doing some cropping stuff in an external
> tool)? There are no delete and save buttons as for a common file.
>
>
> Having this patched, I can add (ldap), change, view and sync photos
>
> Martin
>
> PS: any thoughts on adding crop support? Photos taken by mobiles have
> a stupid format for contact photos. Otherwise, I could live with as
> save as local file button.
Please open a new ticket rather than responding on a closed one.
More information about the bugs
mailing list