[Tickets #7407] Re: Photos: storing in LDAP and broken contact sync
bugs at horde.org
bugs at horde.org
Tue Apr 13 09:23:33 UTC 2010
DO NOT REPLY TO THIS MESSAGE. THIS EMAIL ADDRESS IS NOT MONITORED.
Ticket URL: http://bugs.horde.org/ticket/7407
------------------------------------------------------------------------------
Ticket | 7407
Updated By | asd at asdf.com
Summary | Photos: storing in LDAP and broken contact sync
Queue | Turba
Version | 2.3
Type | Bug
State | Resolved
Priority | 2. Medium
Milestone |
Patch | 1
Owners | Jan Schneider
------------------------------------------------------------------------------
asd at asdf.com (2010-04-13 05:23) wrote:
> As follow up to closed #5971
>
>
>
> 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.
More information about the bugs
mailing list