/**
  * @access  protected
  * @param   int   $codTurma
  * @param   int   $dia
  * @param   int   $mes
  * @param   int   $ano
  * @param   array $counter
  * @param   int   $dia_semana
  * @param   bool  $mes_final
  * @return  int
  */
 function _getNumeroDias($codTurma, $dia, $mes, $ano, $counter, $mes_final = FALSE, $dia_semana = NULL)
 {
     static $calendarioTurmaMapper = NULL;
     $year = $ano;
     $month = $mes;
     $date = mktime(1, 1, 1, $month, $dia, $year);
     $first_day_of_month = strtotime('-' . (date('d', $date) - 1) . ' days', $date);
     $last_day_of_month = strtotime('+' . (date('t', $first_day_of_month) - 1) . ' days', $first_day_of_month);
     $last_day_of_month = date('d', $last_day_of_month);
     $obj_calendario = new clsPmieducarCalendarioAnoLetivo();
     $obj_calendario->setCamposLista('cod_calendario_ano_letivo');
     $lista_calendario = $obj_calendario->lista(NULL, $this->ref_cod_escola, NULL, NULL, $this->ano, NULL, NULL, NULL, NULL, 1);
     // Dias não letivos da turma
     $diasNaoLetivosTurma = array();
     if (is_array($lista_calendario)) {
         $lista_calendario = array_shift($lista_calendario);
         $obj_dia = new clsPmieducarCalendarioDia();
         $obj_dia->setCamposLista('dia');
         $dias_nao_letivo = $obj_dia->lista($lista_calendario, $mes, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, "'n'");
         // Instancia o mapper apenas uma vez
         if (is_null($calendarioTurmaMapper)) {
             require_once 'Calendario/Model/TurmaDataMapper.php';
             $calendarioTurmaMapper = new Calendario_Model_TurmaDataMapper();
         }
         // Carrega os dias do mês da turma
         $where = array('calendarioAnoLetivo' => $lista_calendario, 'ano' => $ano, 'mes' => $mes, 'turma' => $codTurma);
         $diasTurma = $calendarioTurmaMapper->findAll(array(), $where);
         // Separa apenas os dias da turma que forem não-letivos
         foreach ($diasTurma as $diaTurma) {
             if (in_array($diaTurma->dia, $dias_nao_letivo)) {
                 $diasNaoLetivosTurma[] = $diaTurma->dia;
             }
         }
     }
     if ($mes_final) {
         $last_day_of_month = $dia;
         $dia = 1;
     }
     // Argumentos para o callback $counter
     $args = array('dia' => $dia, 'mes' => $mes, 'ano' => $ano, 'last_day_of_month' => $last_day_of_month, 'diasNaoLetivosTurma' => $diasNaoLetivosTurma, 'dia_semana' => $dia_semana);
     return call_user_func_array($counter, $args);
 }