/** * 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); }