Z-Push Zimbra Backend (Push Email, Contacts, Appointments & Tasks)

Take your Zimbra with you!
megaman5
Posts: 2
Joined: Sat Sep 13, 2014 1:04 am

Z-Push Zimbra Backend (Push Email, Contacts, Appointments & Tasks)

Post by megaman5 »

The latest version Revision 22 works good now!
carlsan
Posts: 20
Joined: Sat Sep 13, 2014 1:04 am

Z-Push Zimbra Backend (Push Email, Contacts, Appointments & Tasks)

Post by carlsan »

[quote user="megaman5"]The latest version Revision 22 works good now![/QUOTE]
I agree, v22 works very well.

Only the äöüß problem is still there but maybe it has nothing to do with zimbrabackend.
//carlsan
electron
Posts: 3
Joined: Sat Sep 13, 2014 1:05 am

Z-Push Zimbra Backend (Push Email, Contacts, Appointments & Tasks)

Post by electron »

[quote user="gnosbush"]I started a project on SourceForge to create a complete backend for Zimbra on Z-Push. So far I have a pretty decent start on it but could use help if anyone has PHP experience and is somewhat familar with the Zimbra SOAP calls (although you can really pick up on these pretty quickly). I will also need testers. Send me a message if interested.
The project on SF is located at Z-Push Zimbra Backend[/QUOTE]

Hi, we are a little group of freelancer we have a good experience in php ? What is the actual stade of the project and what do you need excatly ?
One of our customer have accepted to test Z-PUSH+OSE+BSEX could you provide us and/or recommand with an efficient howto ?
Klug
Ambassador
Ambassador
Posts: 2767
Joined: Mon Dec 16, 2013 11:35 am
Location: France - Drôme
ZCS/ZD Version: All of them
Contact:

Z-Push Zimbra Backend (Push Email, Contacts, Appointments & Tasks)

Post by Klug »

Here's a patch against version 23 that allows "accented" characters (éàäöüß etc) to work in Mails, Contacts and Calendar.
This was tested against ZCS OSE 6.0.4, iPhone 3GS 3.1.2 (french) and WM 6.1 (french, running on a Samsung i780).
Quick how to for the diff :

. go to z-push/backend directory

. cut/past below code to diff.txt

. copy zimbra.php to zimbra.php.old (to have a backup)

. patch zimbra.php
--- zimbra.php.old 2010-03-11 19:00:18.000000000 +0100

+++ zimbra.php 2010-03-11 19:50:27.000000000 +0100

@@ -936,7 +936,7 @@

//$body = $this->GetBody($message);



// decode body to truncate it

- $body = utf8_to_windows1252($this->getBody($message, $this->_useHTML));

+ $body = u2w($this->getBody($message, $this->_useHTML));

if(strlen($body) > $truncsize && $truncsize <> 0) {

$body = substr($body, 0, $truncsize);

$output->bodytruncated = 1;

@@ -944,7 +944,7 @@

$body = $body;

$output->bodytruncated = 0;

}

- $body = str_replace("
","
", windows1252_to_utf8(str_replace("
","",$body)));

+ $body = str_replace("
","
", w2u(str_replace("
","",$body)));

$output->bodysize = strlen($body);

$output->body = $body;



@@ -1017,7 +1017,7 @@

$image = $this->url2base64($this->_rest_url . '/?id='.$item['id'].'&part='.$item['a_attribute_part'][0]);

$output->$k = $image;

} else {

- $output->$k = w2u($item['a'][$param[$v]]);

+ $output->$k = $item['a'][$param[$v]];

}



} else {

@@ -1063,11 +1063,11 @@



// title

if(isset($item['inv'][$i]['comp'][0]['name'])) {

- $subApp->subject = w2u($item['inv'][$i]['comp'][0]['name']);

+ $subApp->subject = $item['inv'][$i]['comp'][0]['name'];

}



if(isset($item['inv'][$i]['comp'][0]['loc'])) {

- $subApp->location = w2u($item['inv'][$i]['comp'][0]['loc']);

+ $subApp->location = $item['inv'][$i]['comp'][0]['loc'];

}



// allday

@@ -1120,7 +1120,7 @@

$subApp->sensitivity = 0;

}



- $subApp->body = w2u($item['inv'][$i]['comp'][0]['desc'][0]);

+ $subApp->body = $item['inv'][$i]['comp'][0]['desc'][0];

$subApp->bodytruncated = 0;



// Reminder

@@ -1129,8 +1129,8 @@

}



// Organizer Name & Email

- $subApp->organizername = w2u($item['inv'][$i]['comp'][0]['or_attribute_d'][0]);

- $subApp->organizeremail = w2u($item['inv'][$i]['comp'][0]['or_attribute_a'][0]);

+ $subApp->organizername = $item['inv'][$i]['comp'][0]['or_attribute_d'][0];

+ $subApp->organizeremail = $item['inv'][$i]['comp'][0]['or_attribute_a'][0];



// Attendees

$cAttendees = count($item['inv'][$i]['comp'][0]['at_attribute_a']);

@@ -1141,9 +1141,9 @@

$attendee = new SyncAttendee();



if(isset($item['inv'][$i]['comp'][0]['at_attribute_d'][$i])) {

- $attendee->name = w2u($item['inv'][$i]['comp'][0]['at_attribute_d'][$i]);

+ $attendee->name = $item['inv'][$i]['comp'][0]['at_attribute_d'][$i];

} else {

- $attendee->name = w2u($item['inv'][$i]['comp'][0]['at_attribute_a'][$i]);

+ $attendee->name = $item['inv'][$i]['comp'][0]['at_attribute_a'][$i];

}



$attendee->email = $item['inv'][$i]['comp'][0]['at_attribute_a'][$i];

@@ -1627,12 +1627,12 @@



// subject

if(isset($input->subject)) {

- $soap .= 'name="'.w2u($input->subject).'" ';

+ $soap .= 'name="'.$input->subject.'" ';

}



// location

if(isset($input->location)) {

- $soap .= 'loc="'.w2u($input->location).'" ';

+ $soap .= 'loc="'.$input->location.'" ';

}



// close

@@ -1772,7 +1772,7 @@

$soap .= '';



//subject

- $soap .= ''.w2u($input->subject).'';

+ $soap .= ''.$input->subject.'';



//currently not used|/

$soap .= '
powrrrplay
Advanced member
Advanced member
Posts: 120
Joined: Fri Sep 12, 2014 11:55 pm

Z-Push Zimbra Backend (Push Email, Contacts, Appointments & Tasks)

Post by powrrrplay »

I Can't figure out why

1. Can not send email

2. After initial contact sync, no more contact syncing

3. After intial calendar sync, no more calendar syncing
I am using a palm pre w/ EAS / webos 1.4
here is a copy of my debug log when I force a sync on my phone.


03/11/10 16:30:21 [15898] --------

03/11/10 16:30:23 [15892] Start

03/11/10 16:30:23 [15892] Z-Push version: SVN 1.3 RC2 276

03/11/10 16:30:23 [15892] Client IP: 206.47.xxx.xxx

03/11/10 16:30:23 [15892] Client supports version 2.5

03/11/10 16:30:23 [15892] START Logon { username = xxxxxxxx@xxxx.com; domain = ; password = }

03/11/10 16:30:23 [15892] SOAP message:

03/11/10 16:30:23 [15892] SOAP response:



03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:2533 Undefined index: soap:Envelope (8)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:2533 Undefined index: soap:Header (8)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:2533 Undefined index: context (8)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:2481 Undefined index: value (8)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:2533 Undefined index: change (8)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:2533 Undefined index: change_attribute_token (8)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:2533 Undefined index: soap:Body (8)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:2533 Undefined index: AuthResponse (8)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:2533 Undefined index: authToken (8)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:2533 Undefined index: lifetime (8)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:2533 Undefined index: skin (8)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:146 Undefined index: refresh (8)

03/11/10 16:30:23 [15892] END Logon { connected = true }

03/11/10 16:30:23 [15892] START Setup { user = xxxxxxxx@xxxx.com; devid = PALM40e1a867733015c6fdca990d179c; protocolversion = 2.5 }

03/11/10 16:30:23 [15892] SOAP message:

03/11/10 16:30:23 [15892] SOAP response:



03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:2500 Undefined index: attributes (8)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:2500 Undefined index: attributes (8)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:2500 Undefined index: attributes (8)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:202 Undefined index: view (8)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:278 Undefined index: 11 (8)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:208 Undefined index: 11 (8)

03/11/10 16:30:23 [15892] [0] 1; name=USER_ROOT; view=message; include=0; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:202 Undefined index: view (8)

03/11/10 16:30:23 [15892] [1] 2360; name=XXXX dot COM; view=message; include=1; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:202 Undefined index: view (8)

03/11/10 16:30:23 [15892] [2] 5216; name=Accounts @ XXXX; view=message; include=1; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:202 Undefined index: view (8)

03/11/10 16:30:23 [15892] [3] 3380; name=Admin @ XXXX; view=message; include=1; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:202 Undefined index: view (8)

03/11/10 16:30:23 [15892] [4] 2385; name=AFI; view=message; include=1; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] [5] 16; name=Briefcase; view=document; include=0; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] [6] 2288; name=Public; view=document; include=0; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] [7] 10; name=Calendar; view=appointment; include=1; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] [8] 14; name=Chats; view=message; include=1; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] [9] 7; name=Contacts; view=contact; include=1; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] [10] 6; name=Drafts; view=message; include=1; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] [11] 13; name=Emailed Contacts; view=contact; include=0; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] [12] 257; name=Hurricanes; view=message; include=1; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] [13] 2; name=Inbox; view=message; include=1; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] [14] 4; name=Junk; view=message; include=1; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] [15] 258; name=Junk E-mail; view=message; include=1; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] [16] 12; name=Notebook; view=wiki; include=0; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] [17] 5; name=Sent; view=message; include=1; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] [18] 15; name=Tasks; view=task; include=0; virtual=0

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:199 Creating default object from empty value (2048)

03/11/10 16:30:23 [15892] /var/www/z-push/backend/zimbra.php:202 Undefined index: view (8)

03/11/10 16:30:23 [15892] [19] 3; name=Trash; view=message; include=1; virtual=0

03/11/10 16:30:23 [15892] END Setup { 20 Folders Loaded }

03/11/10 16:30:23 [15892] POST cmd: GetAttachment

03/11/10 16:30:23 [15892] START GetAttachmentData { attname = '2:5587:4' }

03/11/10 16:30:25 [15892] END GetAttachmentData { true }

03/11/10 16:30:26 [15892] START Logoff

03/11/10 16:30:26 [15892] SOAP message:

03/11/10 16:30:26 [15892] SOAP response:



03/11/10 16:30:26 [15892] END Logoff

03/11/10 16:30:26 [15892] end

I am at z-push revision 23
carlsan
Posts: 20
Joined: Sat Sep 13, 2014 1:04 am

Z-Push Zimbra Backend (Push Email, Contacts, Appointments & Tasks)

Post by carlsan »

[quote user="8141Klug"]Here's a patch against version 23 that allows "accented" characters (éàäöüß etc) to work in Mails, Contacts and Calendar.

[/QUOTE]
Shure you used v23? For me that diff.txt did not work.

BUT: I did the changes manually (to v23) and it works great! Is there any disadvantage if the changes come in the standard?
Greetings,

carlsan
gnosbush
Posts: 36
Joined: Sat Sep 13, 2014 12:31 am

Z-Push Zimbra Backend (Push Email, Contacts, Appointments & Tasks)

Post by gnosbush »

[quote user="powrrrplay"]here is a copy of my debug log when I force a sync on my phone.

[/QUOTE]
Is this your entire debug log? From what you posted, it just looks like the phone requested to get an attachment, not a full sync.
gnosbush
Posts: 36
Joined: Sat Sep 13, 2014 12:31 am

Z-Push Zimbra Backend (Push Email, Contacts, Appointments & Tasks)

Post by gnosbush »

[quote user="carlsan"]Is there any disadvantage if the changes come in the standard?[/QUOTE]
Nope, the plan is to add them to the standard code. Klug has graciously agreed to do that for me.
Thank you Klug for researching and coming up with a solution to this problem.
powrrrplay
Advanced member
Advanced member
Posts: 120
Joined: Fri Sep 12, 2014 11:55 pm

Z-Push Zimbra Backend (Push Email, Contacts, Appointments & Tasks)

Post by powrrrplay »

[quote user="gnosbush"]Is this your entire debug log? From what you posted, it just looks like the phone requested to get an attachment, not a full sync.[/QUOTE]
There is thousands of more lines to the debug log... shall i post all of it?
electron
Posts: 3
Joined: Sat Sep 13, 2014 1:05 am

Z-Push Zimbra Backend (Push Email, Contacts, Appointments & Tasks)

Post by electron »

[quote user="8141Klug"]Here's a patch against version 23 that allows "accented" characters (éàäöüß etc) to work in Mails, Contacts and Calendar.
This was tested against ZCS OSE 6.0.4, iPhone 3GS 3.1.2 (french) and WM 6.1 (french, running on a Samsung i780).
Quick how to for the diff :

. go to z-push/backend directory

. cut/past below code to diff.txt

. copy zimbra.php to zimbra.php.old (to have a backup)

. patch zimbra.php
--- zimbra.php.old 2010-03-11 19:00:18.000000000 +0100

+++ zimbra.php 2010-03-11 19:50:27.000000000 +0100

@@ -936,7 +936,7 @@

//$body = $this->GetBody($message);



// decode body to truncate it

- $body = utf8_to_windows1252($this->getBody($message, $this->_useHTML));

+ $body = u2w($this->getBody($message, $this->_useHTML));

if(strlen($body) > $truncsize && $truncsize <> 0) {

$body = substr($body, 0, $truncsize);

$output->bodytruncated = 1;

@@ -944,7 +944,7 @@

$body = $body;

$output->bodytruncated = 0;

}

- $body = str_replace("
","
", windows1252_to_utf8(str_replace("
","",$body)));

+ $body = str_replace("
","
", w2u(str_replace("
","",$body)));

$output->bodysize = strlen($body);

$output->body = $body;



@@ -1017,7 +1017,7 @@

$image = $this->url2base64($this->_rest_url . '/?id='.$item['id'].'&part='.$item['a_attribute_part'][0]);

$output->$k = $image;

} else {

- $output->$k = w2u($item['a'][$param[$v]]);

+ $output->$k = $item['a'][$param[$v]];

}



} else {

@@ -1063,11 +1063,11 @@



// title

if(isset($item['inv'][$i]['comp'][0]['name'])) {

- $subApp->subject = w2u($item['inv'][$i]['comp'][0]['name']);

+ $subApp->subject = $item['inv'][$i]['comp'][0]['name'];

}



if(isset($item['inv'][$i]['comp'][0]['loc'])) {

- $subApp->location = w2u($item['inv'][$i]['comp'][0]['loc']);

+ $subApp->location = $item['inv'][$i]['comp'][0]['loc'];

}



// allday

@@ -1120,7 +1120,7 @@

$subApp->sensitivity = 0;

}



- $subApp->body = w2u($item['inv'][$i]['comp'][0]['desc'][0]);

+ $subApp->body = $item['inv'][$i]['comp'][0]['desc'][0];

$subApp->bodytruncated = 0;



// Reminder

@@ -1129,8 +1129,8 @@

}



// Organizer Name & Email

- $subApp->organizername = w2u($item['inv'][$i]['comp'][0]['or_attribute_d'][0]);

- $subApp->organizeremail = w2u($item['inv'][$i]['comp'][0]['or_attribute_a'][0]);

+ $subApp->organizername = $item['inv'][$i]['comp'][0]['or_attribute_d'][0];

+ $subApp->organizeremail = $item['inv'][$i]['comp'][0]['or_attribute_a'][0];



// Attendees

$cAttendees = count($item['inv'][$i]['comp'][0]['at_attribute_a']);

@@ -1141,9 +1141,9 @@

$attendee = new SyncAttendee();



if(isset($item['inv'][$i]['comp'][0]['at_attribute_d'][$i])) {

- $attendee->name = w2u($item['inv'][$i]['comp'][0]['at_attribute_d'][$i]);

+ $attendee->name = $item['inv'][$i]['comp'][0]['at_attribute_d'][$i];

} else {

- $attendee->name = w2u($item['inv'][$i]['comp'][0]['at_attribute_a'][$i]);

+ $attendee->name = $item['inv'][$i]['comp'][0]['at_attribute_a'][$i];

}



$attendee->email = $item['inv'][$i]['comp'][0]['at_attribute_a'][$i];

@@ -1627,12 +1627,12 @@



// subject

if(isset($input->subject)) {

- $soap .= 'name="'.w2u($input->subject).'" ';

+ $soap .= 'name="'.$input->subject.'" ';

}



// location

if(isset($input->location)) {

- $soap .= 'loc="'.w2u($input->location).'" ';

+ $soap .= 'loc="'.$input->location.'" ';

}



// close

@@ -1772,7 +1772,7 @@

$soap .= '';



//subject

- $soap .= ''.w2u($input->subject).'';

+ $soap .= ''.$input->subject.'';



//currently not used|/

$soap .= '[/QUOTE]
Hi Kulg, thank you very much for this patch.

What I would like to know is : Is there anyone who have tested ZIMBRA OSE+Z-PUSH+Black Berry ? If yes how ?
Post Reply