Ticket #2467 (closed defeito: fixed)
Erro ao trocar o status de um compromisso em agenda compartilhada
Reported by: | cesar.vianna | Owned by: | rommelcysne |
---|---|---|---|
Priority: | normal | Milestone: | Expresso 2.3.0 |
Component: | Calendar | Version: | |
Severity: | média | Keywords: | TAG2.3.0.7, SS125676 |
Cc: | WorkGroup: | Centro de Testes |
Description (last modified by cesar.vianna) (diff)
Módulo: Agenda Resumo: Ao trocar o status de um compromisso em agenda compartilhada, acusa erro Completa: Ao trocar o status de um compromisso acusa o erro em anexo. Para simular:
- Usuário A compartilha agenda com B
- Usuário A recebe um convite do usuário B e rejeita
- Usuário B vê o staus de rejeitado e tenta trocar status para aceito.
- É exibido o erro de SQL
Change History
comment:3 Changed 13 years ago by cesar.vianna
- Keywords TAG2.3.0.7, SS125676 added; TAG2.3.0.7 removed
comment:4 Changed 13 years ago by rommelcysne
Problema originalmente relatado no Ticket #985.
O erro relatado no ticket em questão pode acontecer em todas as distribuições do Expresso e não depende de compartilhamento de agenda, basta que o módulo ExpressoMail? não seja carregado/aberto. Isto é conseguido definindo o valor da aplicação padrão diferente de ExpressoMail? e do Home do Expresso.
O problema ocorre porque em determinado ponto do código da Agenda, é esperado um valor contido numa variável $_SESSION do ExpressoMail?, só que se o módulo não tiver sido carregado, esse valor não existirá e será passado VAZIO, daí o erro na execução da query sql.
Como bônus, também foi detectado outro problema na alteração do status de agendamento numa agenda compartilhada.
Se o usuário que recebe as permissões em certa agenda tentar mudar o status de algum compromisso nessa agenda, o sistema não apresenta erro e aparentemente deu tudo certo, porém a ação não é efetivada no banco de dados.
Para corrigir os problemas, deve-se alterar as seguintes linhas nos respectivos arquivos. Problema do ticket #2467, arquivo class.uicalendar.inc.php, function set_action(), alterar a linha:
$eventparticipants? = Array($_SESSIONphpgw_info?expressomail?user?account_id? => $eventparticipants?[$_SESSIONphpgw_info?expressomail?user?account_id?]);
para:
$eventparticipants? = Array($GLOBALSphpgw_info?user?account_id? => $eventparticipants?[$GLOBALSphpgw_info?user?account_id?]);
Para o problema bônus, arquivo class.bocalendar.inc.php, function set_status(), alterar a linha:
$account_id = $GLOBALSphpgw_info?user?account_id?;
para:
$account_id = $this->owner;
Arquivos alterados:
- calendar/inc/class.bocalendar.inc.php
- calendar/inc/class.uicalendar.inc.php
Commit da revisão [5472]