예제 #1
0
 /**
  * Método que faz o envio dos conteúdos pré e pós no dia da aula
  */
 public function enviar()
 {
     //Bloqueando a execução fora do horário correto
     $horaAgora = new DateTime("now");
     //Data e hora atual
     $horaInicio = new DateTime(date("Y-m-d") . " 07:00:00");
     //Hora de inicio do envio
     $horaFim = new DateTime(date("Y-m-d") . " 23:00:00");
     //Hora de termino do envio
     $intervaloInicio = $horaAgora->diff($horaInicio);
     $intervaloFim = $horaAgora->diff($horaFim);
     if ($intervaloInicio->h <= 0 && $intervaloFim->h <= 0) {
         //Envio fora do horário
         echo "Fora do horário de execução\n";
         exit(0);
     }
     //Inicializando as variaveis básicas da página e fazendo as consultas iniciais
     $sqlTurmaPrePos = new SqlTurmasPrePos();
     $sqlTurmaEnvio = new SqlTurmasEnvio();
     $sqlAlunos = new SqlAluno();
     $sqlAnexos = new SqlAnexoCron();
     $turma = $sqlTurmaEnvio->turmaParaEnvio();
     //Verificando se foi encontrada alguma turma
     if (!$turma) {
         //Não existem turmas para o envio ainda
         echo "Sem turmas para envio" . PHP_EOL;
         exit(0);
     }
     //Listando os anexos de conteúdos ministrados hoje
     $anexosPos = $sqlAnexos->anexosPosHoje($turma->getTurma());
     //Montando a mensagem com conteúdo pós
     $msgString = "<div>";
     $classeRight = 0;
     $cabecalhoQt = 1;
     $mensagem = file_get_contents(dirname(__FILE__) . "/../view/envioPrePos/enviar.html");
     $snippetAnexo = file_get_contents(dirname(__FILE__) . '/../view/envioPrePos/snippet/anexo.html');
     if ($anexosPos->rowCount()) {
         //O conteúdo pós foi encontrado, adiciona o cabeçalho
         $mensagem = str_replace("{{cabecalho{$cabecalhoQt}}}", "Conteúdos sugeridos (Pós-aula)", $mensagem);
         $cabecalhoQt++;
     }
     //Adicionando o conteúdo pós a mensagem
     while ($anexos = $anexosPos->fetch()) {
         $msgString .= str_replace(array("{{url}}", "{{descricao}}", "{{miniatura}}", "{{materia}}", "{{float}}"), array($anexos->urlPaginaAnexo(), $anexos->getObs(), $anexos->getMiniatura(), "Matéria - <small>{$anexos->getDescricao()}</small>", $classeRight++ % 2 ? "float: right;" : ""), $snippetAnexo);
     }
     $msgString .= "</div>";
     $conteudoPos = $msgString;
     //Verificando se a turma tem aula amanhã, caso não tenha, agenda para o dia da próxima aula
     $materiasAmanha = $sqlTurmaEnvio->turmaAulasAmanha($turma->getTurma());
     if ($materiasAmanha->rowCount()) {
         $conteudosDia = array();
         //Lendo os anexos para o dia seguinte
         while ($materia = $materiasAmanha->fetch()) {
             foreach (range(0, 7) as $qt) {
                 $dia = date("N", strtotime("-{$qt} days"));
                 //Verificando se houve aula da máteria no dia informado
                 if ($sqlTurmaPrePos->houveAulaMateria($turma->getTurma(), $materia, $dia)) {
                     //Lendo o conteúdo ministrado no dia
                     $conts = $sqlAnexos->conteudosDoDia($turma->getTurma(), date("Y-m-d", strtotime("-{$qt} days")), $materia);
                     if (count($conts)) {
                         $conteudosDia = array_merge($conteudosDia, $conts);
                     }
                     break;
                 }
             }
         }
         //Listando os próximos conteúdos e seus anexos
         $anexosPre = array();
         foreach ($conteudosDia as $conteudo) {
             $anexosPre = array_merge($anexosPre, $sqlAnexos->anexosPre($turma->getTurma(), $conteudo));
         }
     } else {
         //A turma não tem aula amanhã, verifica o dia da próxima aula e agenda
         $anexosPre = array();
         $dias = array();
         $turmasDias = $sqlTurmaPrePos->turmasAulas($turma->getTurma());
         if ($turmasDias->rowCount()) {
             while ($turmaDia = $turmasDias->fetch()) {
                 $dias[$turmaDia->getDia()] = $turmaDia;
             }
             $qtSoma = (int) date("N");
             $qtSoma++;
             $dia = date("N", strtotime("+{$qtSoma} days"));
             //Verificando o dia da proxima aula
             while (!isset($dias[$dia])) {
                 $qtSoma++;
                 $dia = date("N", strtotime("+{$qtSoma} days"));
             }
             $qtSoma--;
             $dia = date("N", strtotime("+{$qtSoma} days"));
             $turmaDia = $dias[$dia];
             $turmaDia->setHora(new DateTime(date("Y-m-d") . " 12:00:00"));
             //Agendando o envio
             $sqlTurmaPrePos->agendar($turmaDia);
         }
     }
     //Verificando se ha o que enviar para amanhão(Conteúdo pre)
     if (count($anexosPre)) {
         //Adicionando o conteúdo ao template
         $mensagem = str_replace("{{cabecalho{$cabecalhoQt}}}", "Conteúdos sugeridos (Pré-aula)", $mensagem);
         $cabecalhoQt++;
     }
     //Adicionando o conteúdo pós a mensagem
     $classeRight = 0;
     $msgString = "<div>";
     foreach ($anexosPre as $anexos) {
         $msgString .= str_replace(array("{{url}}", "{{descricao}}", "{{miniatura}}", "{{materia}}", "{{classe}}"), array($anexos->getUrlAnexo(), $anexos->getDescricao(), $anexos->getMiniatura(), $anexos->materia_nome, $classeRight++ % 2 ? "right" : "left"), $snippetAnexo);
     }
     $msgString .= "</div>";
     $conteudoPre = $msgString;
     //Template final
     $mensagem = str_replace("{{conteudosPos}}", $conteudoPos, $mensagem);
     $mensagem = str_replace("{{data}}", date("d/m/Y"), $mensagem);
     $mensagem = str_replace("{{conteudosPre}}", $conteudoPre, $mensagem);
     //Limpando o template
     $mensagem = preg_replace("/\\{\\{[a-z-A-Z-0-9]*\\}\\}/i", "", $mensagem);
     //Definindo os alunos da turma
     //        die($mensagem);
     $alunos = $sqlAlunos->deTurma($turma->getTurma());
     if (!count($alunos)) {
         //Não foram encontrados alunos para o envio
         echo "Sem alunos para o envio";
         $sqlTurmaPrePos->removerTurma($turma);
         exit(0);
     }
     //Realizando o envio das mensagens
     if (count($anexosPos->fetchAll()) || count($anexosPre)) {
         echo "Enviando" . PHP_EOL;
         //Somente envia caso haja conteúdo pré ou pós
         $newsLetter = new Kernel_Models_NewsletterContas();
         $assunto = "Conteúdos Pós e Pré aulas";
         foreach ($alunos->fetchAll(new Aluno()) as $aluno) {
             //                $newsLetter->enviar($aluno->getNome(), $aluno->getEmail(), $assunto, $mensagem);
             $newsLetter->enviar($aluno->getNome(), "*****@*****.**", $assunto, $mensagem);
         }
     } else {
         echo "Sem conteúdo para envio" . PHP_EOL;
         exit(0);
     }
     //Removendo a turma da lista de turmas agendadas
     $sqlTurmaPrePos->removerTurma($turma);
     echo "Envio concluído " . PHP_EOL;
     exit(0);
 }