Esempio n. 1
0
 public function editarAction()
 {
     $this->autenticacao();
     $this->_helper->viewRenderer->setRender('salvar');
     $this->view->menu->setAtivo('submission');
     $sessao = Zend_Auth::getInstance()->getIdentity();
     $cache = Zend_Registry::get('cache_common');
     $ps = $cache->load('prefsis');
     $id_encontro = (int) $ps->encontro["id_encontro"];
     $admin = $sessao["administrador"];
     // boolean
     $idPessoa = $sessao["idPessoa"];
     $idEvento = $this->_request->getParam('id', 0);
     if (isset($data['cancelar'])) {
         return $this->redirecionar($admin, $idEvento);
     }
     $encontro = new Application_Model_Encontro();
     $rs = $encontro->isPeriodoSubmissao($id_encontro);
     if ($rs['liberar_submissao'] == null and !$admin) {
         $warning = sprintf(_("The submission period goes from %s to %s."), $rs['periodo_submissao_inicio'], $rs['periodo_submissao_fim']);
         $this->_helper->flashMessenger->addMessage(array('warning' => $warning));
         return $this->_helper->redirector->goToRoute(array('controller' => 'evento'), 'default', true);
     }
     $data = $this->getRequest()->getPost();
     $form = new Application_Form_Evento();
     $this->view->form = $form;
     $evento = new Application_Model_Evento();
     $evento_realizacao = new Application_Model_EventoRealizacao();
     $select = $evento->select();
     /* lista de horários */
     $this->view->realizacao = $evento_realizacao->listarHorariosPorEvento($idEvento);
     if ($this->getRequest()->isPost()) {
         if ($form->isValid($data)) {
             $data = $form->getValues();
             $select = $evento->getAdapter()->quoteInto('id_evento = ?', $idEvento);
             try {
                 if ($idPessoa != $data['responsavel'] and !$admin) {
                     $this->_helper->flashMessenger->addMessage(array('danger' => _('Only the author can edit the Event.')));
                     return $this->redirecionar();
                 } else {
                     $data['id_encontro'] = $id_encontro;
                     $data['responsavel'] = $idPessoa;
                     $evento->update($data, $select);
                     $this->_helper->flashMessenger->addMessage(array('success' => _('Event successfully updated.')));
                     return $this->redirecionar($admin, $idEvento);
                 }
             } catch (Zend_Db_Exception $ex) {
                 $this->_helper->flashMessenger->addMessage(array('danger' => _('An unexpected error ocurred.<br/> Details:&nbsp;') . $ex->getMessage()));
             }
         } else {
             $form->populate($data);
         }
     } else {
         $row = $evento->fetchRow($select->where('id_evento = ?', $idEvento));
         if (!is_null($row)) {
             $array = $row->toArray();
             // verificar se ao editar o id_pessoa da sessão é o mesmo do evento
             // e se não é admin, sendo admin é permitido editar
             if ($idPessoa != $array['responsavel'] and !$admin) {
                 $this->_helper->flashMessenger->addMessage(array('danger' => _('Only the author can edit the Event.')));
                 return $this->redirecionar();
             } else {
                 $form->populate($row->toArray());
             }
         } else {
             $this->_helper->flashMessenger->addMessage(array('danger' => _('Event not found.')));
             return $this->redirecionar($admin, $idEvento);
         }
     }
 }