예제 #1
0
 /**
  * Método que retorna um professor válido
  * @param int $pkUsuario Define o código do professor a ser buscado.
  * É ignorado caso o usuário logado seja do tipo professro
  * @param string $objetoHerdado Define uma especialização, um objeto herdeiro de Professor
  * @return Kernel_Models_Professor retorna um objeto do tipo professor de
  * acordo com o que foi informado ou usuário logado
  * @throws Exception
  */
 public function getProfessor($pkUsuario = 0, $objetoHerdado = FALSE)
 {
     //Validação inicial
     $tipoLogado = $this->usuarioLogado->get_tipoUsuarioAtivo()->get_idTipoUsuario();
     //Impedindo que um professor use dados de outro
     if ($tipoLogado == Kernel_Models_TiposUsuario::TIPO_PROFESSOR) {
         $pkUsuario = (int) $this->usuarioLogado->get_idUsuario();
     }
     if (!(int) $pkUsuario) {
         //Verificando se o código do professor é válido
         throw new Exception("O professor informado é inválido");
     }
     //Criando instancia da classe
     if (is_string($objetoHerdado)) {
         //Este trecho é executado quando um objeto especifico é informado(especialização)
         //Verificando se a classe informada existe
         if (!class_exists($objetoHerdado)) {
             throw new Exception("Ocorreu um erro interno. Entre em contato com o administrador do sistema");
         }
         //Verifica se a classe informada é herdeira da classe do professor
         if (!in_array("Kernel_Models_Professor", array_keys(class_parents($objetoHerdado)))) {
             throw new Exception("Ocorreu um erro interno. Entre em contato com o administrador do sistema");
         }
         //Inicializa a especialização
         $professorObj = new $objetoHerdado();
     } else {
         //Inicializa o objeto padrão
         $professorObj = new Kernel_Models_Professor();
     }
     $professor = $professorObj->get((int) $pkUsuario);
     if (!$professor) {
         //Verificando se o professor existe no banco de dados
         throw new Exception("O professor informado é inválido");
     }
     return $professor;
 }