Index: contrib/z-push/backend/BackendCalendarExpresso.php
===================================================================
--- contrib/z-push/backend/BackendCalendarExpresso.php	(revision 4219)
+++ contrib/z-push/backend/BackendCalendarExpresso.php	(revision 4898)
@@ -7,5 +7,5 @@
  * Created   :   06.12.2010 - emerson-faria.nobre@serpro.gov.br
  *
- * ï¿œ Zarafa Deutschland GmbH, www.zarafaserver.de
+ * Ã¯Â¿Âœ Zarafa Deutschland GmbH, www.zarafaserver.de
  * This file is distributed under GPL v2.
  * Consult LICENSE file for details
@@ -65,12 +65,12 @@
 			if ($result == FALSE) throw new Exception(pg_last_error($this->db));
 			while ($row = pg_fetch_row($result)) {
-				if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageList-> Lê item do BD (cal_id: '.$row[0].', title: '.$row[4].', last_update: '.date("d/m/Y G:i:s",substr($row[1], 0, strlen($row[1])-3)).', last_update_timestamp: '.$row[1].', datetime: '.date("d/m/Y G:i:s",$row[2]).', datetime_timestamp: '.$row[2].', cal_type: '.$row[3].')');
+				if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageList-> LÃª item do BD (cal_id: '.$row[0].', title: '.$row[4].', last_update: '.date("d/m/Y G:i:s",substr($row[1], 0, strlen($row[1])-3)).', last_update_timestamp: '.$row[1].', datetime: '.date("d/m/Y G:i:s",$row[2]).', datetime_timestamp: '.$row[2].', cal_type: '.$row[3].')');
 				$result_recur = pg_query($this->db,"select recur_enddate from phpgw_cal_repeats where cal_id = " . $row[0] . ";");
 				if ($result_recur == FALSE) throw new Exception(pg_last_error($this->db));
 				if ($row[3] == 'M') {
 					if ($recur_enddate = pg_fetch_result($result_recur, 0, 0)) {
-						if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageList-> Evento '.$row[0].' é recorrente: recur_enddate : '.date("d/m/Y G:i:s",$recur_enddate).', recur_enddate_timestamp: '.$recur_enddate);
+						if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageList-> Evento '.$row[0].' Ã© recorrente: recur_enddate : '.date("d/m/Y G:i:s",$recur_enddate).', recur_enddate_timestamp: '.$recur_enddate);
 						if ($recur_enddate < $row[2]) {
-							if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageList-> ERRO: Esse evento não será adicionado na lista porque o campo phpgw_cal_repeats.recur_enddate é menor que o campo phpgw_cal.datetime. Corrija o valor de um dos campos');
+							if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageList-> ERRO: Esse evento nÃ£o serÃ¡ adicionado na lista porque o campo phpgw_cal_repeats.recur_enddate Ã© menor que o campo phpgw_cal.datetime. Corrija o valor de um dos campos');
 							continue; // Nao sincroniza este evento, porque a data final da recorrencia eh menor que a data inicial do evento. Eh o BD do Expresso que esta inconsistente.
 						}
@@ -91,5 +91,5 @@
 			if ($result_invalid_ref == FALSE) throw new Exception(pg_last_error($this->db));
 			while ($row_invalid_ref = pg_fetch_row($result_invalid_ref)) {
-				if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageList-> ERRO: Evento com campo reference inválido (cal_id: '.$row_invalid_ref[0].', title: '.$row_invalid_ref[4].', reference: '.$row_invalid_ref[5].', last_update: '.date("d/m/Y G:i:s",substr($row_invalid_ref[1], 0, strlen($row[1])-3)).', last_update_timestamp: '.$row_invalid_ref[1].', datetime: '.date("d/m/Y G:i:s",$row_invalid_ref[2]).', datetime_timestamp: '.$row_invalid_ref[2].', cal_type: '.$row_invalid_ref[3].')');
+				if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageList-> ERRO: Evento com campo reference invÃ¡lido (cal_id: '.$row_invalid_ref[0].', title: '.$row_invalid_ref[4].', reference: '.$row_invalid_ref[5].', last_update: '.date("d/m/Y G:i:s",substr($row_invalid_ref[1], 0, strlen($row[1])-3)).', last_update_timestamp: '.$row_invalid_ref[1].', datetime: '.date("d/m/Y G:i:s",$row_invalid_ref[2]).', datetime_timestamp: '.$row_invalid_ref[2].', cal_type: '.$row_invalid_ref[3].')');
 			}
 			// Evento fora da faixa filtrada
@@ -107,5 +107,5 @@
 			debugLog("exception -> " . $e->getMessage() . " - ARQUIVO: " . $e->getFile() . " - LINHA: " . $e->getLine());
 		}
-		if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageList-> Fim normal da função');
+		if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageList-> Fim normal da funÃ§Ã£o');
 		return $messages;
 	}
@@ -147,25 +147,25 @@
 		if($folderid != "calendar") return false;
 		try {
-		 $result = pg_query($this->db,"BEGIN;");
-		 if ($result == FALSE) throw new Exception(pg_last_error($this->db));
-		 $result_calendar = pg_query($this->db, "select last_update from phpgw_cal where cal_id = " . $id . ";");
-		 if ($result_calendar == FALSE) throw new Exception(pg_last_error($this->db));
-		 while ($row_calendar = pg_fetch_row($result_calendar)) {
-		 	if(isset($row_calendar[0])) {
-		 		$message = array();
-		 		$message["mod"] = substr($row_calendar[0], 0, strlen($row_calendar[0])-3);
-		 		$message["id"] = $id;
-		 		$message["flags"] = 1;
-		 		if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::StatMessage-> mod: '.$message["mod"].', id: '.$message["id"]);
-		 		return $message;
-		 	}
-		 }
-		 $result = pg_query($this->db,"COMMIT;");
-		 if ($result == FALSE) throw new Exception(pg_last_error($this->db));
+			$result = pg_query($this->db,"BEGIN;");
+			if ($result == FALSE) throw new Exception(pg_last_error($this->db));
+			$result_calendar = pg_query($this->db, "select last_update from phpgw_cal where cal_id = " . $id . ";");
+			if ($result_calendar == FALSE) throw new Exception(pg_last_error($this->db));
+		while ($row_calendar = pg_fetch_row($result_calendar)) {
+			if(isset($row_calendar[0])) {
+				$message = array();
+				$message["mod"] = substr($row_calendar[0], 0, strlen($row_calendar[0])-3);
+				$message["id"] = $id;
+				$message["flags"] = 1;
+				if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::StatMessage-> mod: '.$message["mod"].', id: '.$message["id"]);
+				return $message;
+			}
+		}
+		$result = pg_query($this->db,"COMMIT;");
+		if ($result == FALSE) throw new Exception(pg_last_error($this->db));
 		} catch (Exception $e) {
 			pg_query($this->db,"ROLLBACK;");
 			debugLog("exception -> " . $e->getMessage() . " - ARQUIVO: " . $e->getFile() . " - LINHA: " . $e->getLine());
 		}
-		if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::StatMessage: ERRO: Não encontrou valor para o campo last_update para esse evento.');
+		if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::StatMessage: ERRO: NÃ£o encontrou valor para o campo last_update para esse evento.');
 		return false;
 	}
@@ -186,5 +186,5 @@
 			if ($result == FALSE) throw new Exception(pg_last_error($this->db));
 			if ($row = pg_fetch_row($result)) {
-				if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageDAO-> Lê evento do DB para enviar para o celular (cal_id: '.$row[0].', title:'.$row[1].', location: '.$row[2].', mdatetime: '.$row[3].', datetime: '.$row[4].', edatetime: '.$row[5].', reference: '.$row[7].', isPublic: '.$row[8].')');
+				if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageDAO-> LÃª evento do DB para enviar para o celular (cal_id: '.$row[0].', title:'.$row[1].', location: '.$row[2].', mdatetime: '.$row[3].', datetime: '.$row[4].', edatetime: '.$row[5].', reference: '.$row[7].', isPublic: '.$row[8].')');
 				if ($row[7] != 0) $has_parent_event = true;
 				else $has_parent_event = false;
@@ -236,10 +236,10 @@
 					}
 				}
-				$message->alldayevent = 0; // (0 - Não(default), 1- Sim)
+				$message->alldayevent = 0; // (0 - NÃ£o(default), 1- Sim)
 				$message->busystatus = 2; // 2 - Ocupado
 				//TODO: Tratar $message - timezone
-				//$tz = $this->_getGMTTZ();
+				// $tz = $this->_getGMTTZ();
 				$tz = array("bias" => 180, "stdbias" => 0, "dstbias" => -60, "dstendyear" => 0, "dstendmonth" => 2, "dstendday" => 0, "dstendweek" => 2, "dstendhour" => 2, "dstendminute" => 0, "dstendsecond" => 0, "dstendmillis" => 0,
-		                                      "dststartyear" => 0, "dststartmonth" =>10, "dststartday" =>0, "dststartweek" => 3, "dststarthour" => 2, "dststartminute" => 0, "dststartsecond" => 0, "dststartmillis" => 0);
+						                                      "dststartyear" => 0, "dststartmonth" =>10, "dststartday" =>0, "dststartweek" => 3, "dststarthour" => 2, "dststartminute" => 0, "dststartsecond" => 0, "dststartmillis" => 0);
 				$message->timezone = base64_encode($this->_getSyncBlobFromTZ($tz));
 				//TODO: Se necessario, tratar $message - meetingstatus
@@ -265,5 +265,5 @@
 				if ($result == FALSE) throw new Exception(pg_last_error($this->db));
 				if ($row = pg_fetch_row($result)){
-					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageDAO-> Lê recorrência do evento (recur_type: '.$row[0].', recur_use_end: '.$row[1].', recur_enddate: '.$row[2].', recur_interval: '.$row[3].', recur_data: '.$row[4].', recur_exception: '.$row[5].')');
+					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageDAO-> LÃª recorrÃªncia do evento (recur_type: '.$row[0].', recur_use_end: '.$row[1].', recur_enddate: '.$row[2].', recur_interval: '.$row[3].', recur_data: '.$row[4].', recur_exception: '.$row[5].')');
 					$recur = new SyncRecurrence();
 					// Converte os tipos do Expresso para os tipos do Protocolo ActiveSync
@@ -311,5 +311,5 @@
 					}
 					$message->recurrence = $recur;
-					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageDAO-> Fim do Bloco - Lê recorrência do evento.');
+					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageDAO-> Fim do Bloco - LÃª recorrÃªncia do evento.');
 				}
 
@@ -318,5 +318,5 @@
 				if ($result == FALSE) throw new Exception(pg_last_error($this->db));
 				while ($row_recur_exception = pg_fetch_row($result)) {
-					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageDAO: Lê evento único da recorrência com id: '.$row_recur_exception[0]);
+					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageDAO: LÃª evento Ãºnico da recorrÃªncia com id: '.$row_recur_exception[0]);
 					$recur_exception = $this->GetMessageDAO($row_recur_exception[0]);
 					if ($recur_exception instanceof SyncAppointment) {
@@ -324,5 +324,5 @@
 						array_push($message->exceptions, $recur_exception);
 					}
-					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageDAO-> Fim do Bloco - Lê evento único da recorrência com id: '.$row_recur_exception[0]);
+					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageDAO-> Fim do Bloco - LÃª evento Ãºnico da recorrÃªncia com id: '.$row_recur_exception[0]);
 				}
 
@@ -331,5 +331,5 @@
 					$array_timestamps_recur_deleted = explode(",",$row[5]);
 					foreach ($array_timestamps_recur_deleted as $timestamp_recur_deleted) {
-						if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageDAO: Timestamps dos eventos únicos da recorrência do tipo deletados: '.$timestamp_recur_deleted);
+						if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageDAO: Timestamps dos eventos Ãºnicos da recorrÃªncia do tipo deletados: '.$timestamp_recur_deleted);
 						$recur_deleted = new SyncAppointment();
 						$recur_deleted->deleted = '1';
@@ -340,5 +340,4 @@
 				}
 				//TODO: Tratar Participantes do Evento
-
 			}
 			$result = pg_query($this->db,"COMMIT;");
@@ -349,5 +348,5 @@
 			return;
 		}
-		if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageDAO-> Fim do Bloco - Lê evento do DB para enviar para o celular: '.$id);
+		if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::GetMessageDAO-> Fim do Bloco - LÃª evento do DB para enviar para o celular: '.$id);
 		return $message;
 	}
@@ -389,5 +388,5 @@
 			return false;
 		}
-		if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog("CalendarExpresso::DeleteMessage-> Fim normal da Função.");
+		if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog("CalendarExpresso::DeleteMessage-> Fim normal da FunÃ§Ã£o.");
 		return true;
 	}
@@ -399,5 +398,5 @@
 	function ChangeMessageDAO($id, $message) {
 		debugLog('CalendarExpresso::ChangeMessageDAO('.$id.', ..)');
-		if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> O evento do celular será inserido/atualizado no BD com o ID: '.$id);
+		if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> O evento do celular serÃ¡ inserido/atualizado no BD com o ID: '.$id);
 		try {
 			$result = pg_query($this->db,"BEGIN;");
@@ -543,5 +542,5 @@
 			//TODO: Implementar para os tipos 3 e 6. O Expresso ainda nao suporta esses tipos :-(
 			if (isset($message->recurrence) and ($message->recurrence->type == 0 or $message->recurrence->type == 1 or $message->recurrence->type == 2 or $message->recurrence->type == 5)) {
-				if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> O Evento é Recorrente.');
+				if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> O Evento Ã© Recorrente.');
 				switch ($message->recurrence->type) {
 					case 0: //repeticao diaria
@@ -562,13 +561,13 @@
 						break;
 				}
-				if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Recorrência-> recur_type: '.$arrayRecur["recur_type"]);
+				if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> RecorrÃªncia-> recur_type: '.$arrayRecur["recur_type"]);
 				if (isset($message->recurrence->interval)) {
 					$arrayRecur["recur_interval"] = $message->recurrence->interval;
-					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Recorrência-> recur_interval: '.$arrayRecur["recur_interval"]);
+					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> RecorrÃªncia-> recur_interval: '.$arrayRecur["recur_interval"]);
 				}
 				if ($message->recurrence->type == 1 or $message->recurrence->type == 3 or $message->recurrence->type == 6) {
 					if (isset($message->recurrence->dayofweek)) {
 						$arrayRecur["recur_data"] = $message->recurrence->dayofweek;
-						if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Recorrência-> recur_data: '.$arrayRecur["recur_data"]);
+						if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> RecorrÃªncia-> recur_data: '.$arrayRecur["recur_data"]);
 						/*$day = $message->recurrence->dayofweek;
 						 $day_of_week_counter = 0;
@@ -615,5 +614,5 @@
 					$arrayRecur["recur_enddate"] = 1893283200; // Se nao tem data de termino seta para 30/12/2029
 				}
-				if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Recorrência-> recur_enddate: '.$arrayRecur["recur_enddate"]);
+				if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> RecorrÃªncia-> recur_enddate: '.$arrayRecur["recur_enddate"]);
 
 				// Trata excecoes da recorrencia
@@ -621,5 +620,5 @@
 					// Tem Excecoes de recorrencia do tipo Edicao
 					// Verifica se ja existe o registro do evento de excecao de recorrencia na tabela phpgw_cal
-					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Evento tem exceção de recorrência');
+					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Evento tem exceÃ§Ã£o de recorrÃªncia');
 					$recur_exception_changed_ids = "";
 					$recur_exception_deleted_starttimes = "";
@@ -643,5 +642,5 @@
 									$except_description_from_DB = $row[2];
 									$found_except_cal_id = true;
-									if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Achou o evento na tabela phpgw_cal, vai ATUALIZAR a exceção da recorrência nessa tabela');
+									if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Achou o evento na tabela phpgw_cal, vai ATUALIZAR a exceÃ§Ã£o da recorrÃªncia nessa tabela');
 								}
 							}
@@ -653,5 +652,5 @@
 									if(isset($row[0])) {
 										$found_except_cal_user = true;
-										if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Achou o evento na tabela phpgw_cal_user, vai ATUALIZAR a exceção da recorrência nessa tabela');
+										if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Achou o evento na tabela phpgw_cal_user, vai ATUALIZAR a exceÃ§Ã£o da recorrÃªncia nessa tabela');
 									}
 								}
@@ -661,5 +660,5 @@
 							if(isset($message->uid)) {
 								$arrayExceptCal["uid"] = $this->truncateString(utf8_decode($message->uid),255);
-								if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Exceção De Recorrência-> uid: '.$arrayExceptCal["uid"]);
+								if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> ExceÃ§Ã£o De RecorrÃªncia-> uid: '.$arrayExceptCal["uid"]);
 							}
 							if(isset($recur_exception->subject)) {
@@ -668,5 +667,5 @@
 								$arrayExceptCal["title"] = $this->truncateString(utf8_decode($message->subject),299);
 							}
-							if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Exceção De Recorrência-> title: '.$arrayExceptCal["title"]);
+							if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> ExceÃ§Ã£o De RecorrÃªncia-> title: '.$arrayExceptCal["title"]);
 							if(isset($recur_exception->location)) {
 								$arrayExceptCal["location"] = $this->truncateString(utf8_decode($recur_exception->location),255);
@@ -674,5 +673,5 @@
 								$arrayExceptCal["location"] = $this->truncateString(utf8_decode($message->location),255);
 							}
-							if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Exceção De Recorrência-> location: '.$arrayExceptCal["location"]);
+							if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> ExceÃ§Ã£o De RecorrÃªncia-> location: '.$arrayExceptCal["location"]);
 							if(isset($recur_exception->dtstamp)) {
 								$arrayExceptCal["mdatetime"] = $recur_exception->dtstamp;
@@ -680,5 +679,5 @@
 								$arrayExceptCal["mdatetime"] = $message->dtstamp;
 							}
-							if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Exceção De Recorrência-> mdatetime: '.$arrayExceptCal["mdatetime"]);
+							if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> ExceÃ§Ã£o De RecorrÃªncia-> mdatetime: '.$arrayExceptCal["mdatetime"]);
 							if(isset($recur_exception->starttime)) {
 								$arrayExceptCal["datetime"] = $recur_exception->starttime;
@@ -686,5 +685,5 @@
 								$arrayExceptCal["datetime"] = $message->starttime;
 							}
-							if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Exceção De Recorrência-> datetime: '.$arrayExceptCal["datetime"]);
+							if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> ExceÃ§Ã£o De RecorrÃªncia-> datetime: '.$arrayExceptCal["datetime"]);
 							if(isset($recur_exception->endtime)) {
 								$arrayExceptCal["edatetime"] = $recur_exception->endtime;
@@ -692,5 +691,5 @@
 								$arrayExceptCal["edatetime"] = $message->endtime;
 							}
-							if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Exceção De Recorrência-> edatetime: '.$arrayExceptCal["edatetime"]);
+							if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> ExceÃ§Ã£o De RecorrÃªncia-> edatetime: '.$arrayExceptCal["edatetime"]);
 							if(isset($recur_exception->sensitivity) and $recur_exception->sensitivity == 0) {
 								$arrayExceptCal["is_public"] = 1; // 1 - Normal
@@ -700,5 +699,5 @@
 								$arrayExceptCal["is_public"] = 1; // 1 - Normal
 							}else $arrayExceptCal["is_public"] = 0; // 0 - Privado
-							if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Exceção De Recorrência-> is_public: '.$arrayExceptCal["is_public"]);
+							if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> ExceÃ§Ã£o De RecorrÃªncia-> is_public: '.$arrayExceptCal["is_public"]);
 							if (isset($recur_exception->body)) {
 								$arrayExceptCal["description"] = utf8_decode($recur_exception->body);
@@ -738,5 +737,5 @@
 								}
 							}
-							if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Exceção De Recorrência-> category: '.$arrayExceptCal["category"]);
+							if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> ExceÃ§Ã£o De RecorrÃªncia-> category: '.$arrayExceptCal["category"]);
 							//TODO: Converter eventos que sao alldayevent para iniciar as 0:00hs e terminar as 23:59hs. Isso porque o Expresso nao suporta alldayevents
 							//		 if(isset($message->alldayevent)) {
@@ -752,9 +751,9 @@
 								$result = pg_insert($this->db, 'phpgw_cal', $arrayExceptCal);
 								if ($result == FALSE) throw new Exception(pg_last_error($this->db));
-								if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Evento de Exceção da Recorrência INSERIDO na tabela phpgw_cal com cal_id: '.$arrayExceptCal["cal_id"]);
+								if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Evento de ExceÃ§Ã£o da RecorrÃªncia INSERIDO na tabela phpgw_cal com cal_id: '.$arrayExceptCal["cal_id"]);
 							} else {
 								$result = pg_update($this->db, 'phpgw_cal', $arrayExceptCal, array('cal_id' => $except_cal_id));
 								if ($result == FALSE) throw new Exception(pg_last_error($this->db));
-								if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Evento de Exceção da Recorrência ATUALIZADO na tabela phpgw_cal');
+								if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Evento de ExceÃ§Ã£o da RecorrÃªncia ATUALIZADO na tabela phpgw_cal');
 							}
 
@@ -768,9 +767,9 @@
 								$result = pg_insert($this->db, 'phpgw_cal_user', $arrayExceptCalUser);
 								if ($result == FALSE) throw new Exception(pg_last_error($this->db));
-								if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Evento de Exceção da Recorrência INSERIDO na tabela phpgw_cal_user com cal_id: '.$arrayExceptCalUser["cal_id"]);
+								if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Evento de ExceÃ§Ã£o da RecorrÃªncia INSERIDO na tabela phpgw_cal_user com cal_id: '.$arrayExceptCalUser["cal_id"]);
 							} else {
 								$result = pg_update($this->db, 'phpgw_cal_user', $arrayExceptCalUser, array('cal_id' => $except_cal_id, 'cal_login' => $this->_uidnumber));
 								if ($result == FALSE) throw new Exception(pg_last_error($this->db));
-								if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Evento de Exceção da Recorrência ATUALIZADO na tabela phpgw_cal_user');
+								if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Evento de ExceÃ§Ã£o da RecorrÃªncia ATUALIZADO na tabela phpgw_cal_user');
 							}
 							if ($recur_exception_changed_ids == "") {
@@ -790,8 +789,8 @@
 						//Tem Excecoes de recorrencia do tipo Exclusao
 						$arrayRecur["recur_exception"] = $recur_exception_deleted_starttimes;
-						if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Evento tem exceção de recorrência do tipo exclusão com os seguintes starttimes: '.$recur_exception_deleted_starttimes);
+						if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Evento tem exceÃ§Ã£o de recorrÃªncia do tipo exclusÃ£o com os seguintes starttimes: '.$recur_exception_deleted_starttimes);
 					} else {
 						$arrayRecur["recur_exception"] = "";
-						if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Não tem exceção de recorrência do tipo exclusão para esse evento');
+						if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> NÃ£o tem exceÃ§Ã£o de recorrÃªncia do tipo exclusÃ£o para esse evento');
 					}
 					if ($recur_exception_changed_ids == "") {
@@ -801,5 +800,5 @@
 						$result = pg_query($this->db, "delete from phpgw_cal where reference = " . $cal_id . ";");
 						if ($result == FALSE) throw new Exception(pg_last_error($this->db));
-						if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Não tem exceção de recorrência, então deleta possíveis eventos de exceção de recorrência criados anteriormente para esse evento.');
+						if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> NÃ£o tem exceÃ§Ã£o de recorrÃªncia, entÃ£o deleta possÃ­veis eventos de exceÃ§Ã£o de recorrÃªncia criados anteriormente para esse evento.');
 					} else {
 						//Deleta as excecoes da recorrencia, exceto as inseridas/atualizadas acima
@@ -808,5 +807,5 @@
 						$result = pg_query($this->db, "delete from phpgw_cal where reference = " . $cal_id . " and cal_id not in (" . $recur_exception_changed_ids . ");");
 						if ($result == FALSE) throw new Exception(pg_last_error($this->db));
-						if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Deleta as exçeções da recorrência, exceto as inseridas/atualizadas pelo celular com os seguintes cal_id:'.$recur_exception_changed_ids);
+						if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Deleta as exÃ§eÃ§Ãµes da recorrÃªncia, exceto as inseridas/atualizadas pelo celular com os seguintes cal_id:'.$recur_exception_changed_ids);
 					}
 				} else {
@@ -817,5 +816,5 @@
 					$result = pg_query($this->db, "delete from phpgw_cal where reference = " . $cal_id . ";");
 					if ($result == FALSE) throw new Exception(pg_last_error($this->db));
-					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Não tem exceção de recorrência, então deleta possíveis eventos de exceção de recorrência criados anteriormente para esse evento..');
+					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> NÃ£o tem exceÃ§Ã£o de recorrÃªncia, entÃ£o deleta possÃ­veis eventos de exceÃ§Ã£o de recorrÃªncia criados anteriormente para esse evento..');
 				}
 				if (!$found_cal_repeats){
@@ -823,9 +822,9 @@
 					$result = pg_insert($this->db, 'phpgw_cal_repeats', $arrayRecur);
 					if ($result == FALSE) throw new Exception(pg_last_error($this->db));
-					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Recorrência INSERIDA na tabela phpgw_cal_repeats com cal_id: '.$arrayRecur["cal_id"]);
+					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> RecorrÃªncia INSERIDA na tabela phpgw_cal_repeats com cal_id: '.$arrayRecur["cal_id"]);
 				} else {
 					$result = pg_update($this->db, 'phpgw_cal_repeats', $arrayRecur, array('cal_id' => $cal_id));
 					if ($result == FALSE) throw new Exception(pg_last_error($this->db));
-					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Recorrência ATUALIZADA na tabela phpgw_cal_repeats');
+					if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> RecorrÃªncia ATUALIZADA na tabela phpgw_cal_repeats');
 				}
 			} elseif ($found_cal_id) {
@@ -837,5 +836,5 @@
 				$result = pg_query($this->db, "delete from phpgw_cal_repeats where cal_id = " . $cal_id . ";");
 				if ($result == FALSE) throw new Exception(pg_last_error($this->db));
-				if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Não tem recorrência, então deleta possíveis eventos de recorrência criados anteriormente para esse evento');
+				if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> NÃ£o tem recorrÃªncia, entÃ£o deleta possÃ­veis eventos de recorrÃªncia criados anteriormente para esse evento');
 			}
 			$result = pg_query($this->db,"COMMIT;");
@@ -847,5 +846,5 @@
 			return false;
 		}
-		if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Fim normal da Função');
+		if (TRACE_UID !== false and (TRACE_TYPE == 'CALENDAR' or TRACE_TYPE == 'ALL')) traceLog('CalendarExpresso::ChangeMessageDAO-> Fim normal da FunÃ§Ã£o');
 		return $id;
 	}
@@ -917,5 +916,6 @@
 
 	function  removeAccents($data){
-		$data = strtr($data,"ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÜÚÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùüúþÿ","aaaaaaaceeeeiiii noooooxouuutbaaaaaaaceeeeiiii nooooo/ouuuty");
+		$data = strtr($data,"ÃÃÃÃÃÃ
+ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃ Ã¡Ã¢Ã£Ã€Ã¥ÃŠÃ§ÃšÃ©ÃªÃ«Ã¬Ã­Ã®Ã¯Ã°Ã±Ã²Ã³ÃŽÃµÃ¶Ã·ÃžÃ¹ÃŒÃºÃŸÃ¿","aaaaaaaceeeeiiii noooooxouuutbaaaaaaaceeeeiiii nooooo/ouuuty");
 		return $data;
 	}
@@ -944,7 +944,7 @@
 	function _getGMTTZ() {
 		//$tz = array("bias" => 0, "stdbias" => 0, "dstbias" => 0, "dstendyear" => 0, "dstendmonth" => 2, "dstendday" => 0, "dstendweek" => 2, "dstendhour" => 2, "dstendminute" => 0, "dstendsecond" => 0, "dstendmillis" => 0,
-		//                              "dststartyear" => 0, "dststartmonth" =>10, "dststartday" =>0, "dststartweek" => 3, "dststarthour" => 2, "dststartminute" => 0, "dststartsecond" => 0, "dststartmillis" => 0);
-		$tz = array("bias" => 120, "stdbias" => 0, "dstbias" => -60, "dstendyear" => 0, "dstendmonth" => 2, "dstendday" => 0, "dstendweek" => 2, "dstendhour" => 2, "dstendminute" => 0, "dstendsecond" => 0, "dstendmillis" => 0,
-		                                      "dststartyear" => 0, "dststartmonth" =>10, "dststartday" =>0, "dststartweek" => 3, "dststarthour" => 2, "dststartminute" => 0, "dststartsecond" => 0, "dststartmillis" => 0);
+		//"dststartyear" => 0, "dststartmonth" =>10, "dststartday" =>0, "dststartweek" => 3, "dststarthour" => 2, "dststartminute" => 0, "dststartsecond" => 0, "dststartmillis" => 0);
+		$tz = array("bias" => 120, "stdbias" => 0, "dstbias" => -60, "dstendyear" => 0, "dstendmonth" => 2, "dstendday" => 0, "dstendweek" => 2, "dstendhour" => 2, "dstendminute" => 0, "dstendsecond" => 0, "dstendmillis" => 0, "dststartyear" => 0, "dststartmonth" =>10, "dststartday" =>0, "dststartweek" => 3, "dststarthour" => 2, "dststartminute" => 0, "dststartsecond" => 0, "dststartmillis" => 0);
+		
 		return $tz;
 	}
