SetTitulo( "{$this->_instituicao} Agenda" ); $this->processoAp = "345"; $this->addEstilo('localizacaoSistema'); } } class indice extends clsCadastro { var $cod_agenda, $link; function indice() { foreach ($_GET as $nm => $var) { $this->$nm = $var; } foreach ($_POST as $nm => $var) { $this->$nm = $var; } } function semDesc($data_atual) { $diasSemana = array( "Domingo", "Segunda Feira", "Terça Feira", "Quarta Feira", "Quinta Feira", "Sexta Feira", "Sabado" ); return $diasSemana[date('w', strtotime( $data_atual ) )]; } function quebraLinha( $texto, $tamaho_max_caracteres ) { if( strlen( $texto ) > $tamaho_max_caracteres ) { $texto_array = explode( " ", $texto ); $texto = ""; $tamanho_linha = 0; foreach ( $texto_array AS $palavra ) { $tamanho_palavra = strlen( $palavra ); // se uma unica palavra for maior do que a linha quebra essa palavra no meio if( $tamanho_palavra > $tamaho_max_caracteres ) { $texto .= substr( $palavra, 0, $tamaho_max_caracteres ) . "\n" . substr( $palavra, $tamaho_max_caracteres ) . " "; } else { // com essa palavra a linha vai passar do limite de caracteres? if( $tamanho_linha + $tamanho_palavra >= $tamaho_max_caracteres ) { $texto .= "\n{$palavra} "; $tamanho_linha = $tamanho_palavra; } else { // apenas adiciona a palavra na linha e continua $texto .= "{$palavra} "; $tamanho_linha += $tamanho_palavra; } } } } return $texto; } function Inicializar() { $retorno = "Novo"; if ( isset( $_GET['cod_agenda'] ) ) { $this->cod_agenda = $_GET['cod_agenda']; } $localizacao = new LocalizacaoSistema(); $localizacao->entradaCaminhos( array( $_SERVER['SERVER_NAME']."/intranet" => "Início", "" => "Imprimir agenda" )); $this->enviaLocalizacao($localizacao->montar()); return $retorno; } function Gerar() { $this->campoData( "data_inicio", "Data Inicial", $this->data_inicio ); $this->campoData( "data_fim", "Data Final", $this->data_fim ); $this->campoRadio( "impressora", "Tipo de Impressora", array( "Laser", "Jato de Tinta" ), $this->impressora ); if($this->link) { $this->campoRotulo("arquivo","Arquivo","Clique aqui para visualizar" ); } $this->url_cancelar = "agenda.php?cod_agenda={$this->cod_agenda}"; $this->nome_url_cancelar = "Cancelar"; } function Novo() { $db = new clsBanco(); $where = ""; // define as datas de limite dos compromissos if ( !empty($this->data_inicio ) ) { $data_inicio = urldecode($this->data_inicio); $data_inicio = explode("/", $data_inicio); $data_inicio = "{$data_inicio[2]}-{$data_inicio[1]}-{$data_inicio[0]}"; $where .= "'{$data_inicio} 00:00:00' <= data_inicio AND " ; } if ( !empty( $this->data_fim ) ) { $data_fim = urldecode($this->data_fim); $data_fim = explode("/", $data_fim); $data_fim = "{$data_fim[2]}-{$data_fim[1]}-{$data_fim[0]}"; $where .= "'{$data_fim} 23:59:59' >= data_fim AND " ; } $compromissos = array(); $msg = ""; //busca nome da agenda para titulo do relatorio $dba = new clsBanco(); $nm_agenda = $dba->CampoUnico(" SELECT nm_agenda FROM agenda WHERE cod_agenda = {$this->cod_agenda} "); //verifica tipo de impressao if ($this->impressora == 1) { //impressao laser $relatorio = new relatoriosPref( false, 80, false, false, "A4", "Agenda: ".$nm_agenda); } else { //impressao jato de tinta $relatorio = new relatorios( "Agenda: ".$nm_agenda, 10 ); } if ( ( $data_inicio > $data_fim) & ( isset( $data_fim ) ) ) { $this->mensagem = "A data inicial não pode ser maior que a data final."; } $db = new clsBanco(); $db->Consulta( "SELECT cod_agenda_compromisso, versao FROM agenda_compromisso WHERE ativo = 1 AND ref_cod_agenda = {$this->cod_agenda} AND $where data_fim IS NOT NULL ORDER BY data_inicio ASC "); while( $db->ProximoRegistro() ) { list ( $cod_comp, $versao ) = $db->Tupla(); $compromissos[] = array( "cod" => $cod_comp, "versao" => $versao ); } $aux = 0; $qtd_pagina = 0; if( count( $compromissos ) ) { $data_ant = ""; foreach ( $compromissos as $compromisso ) { $db->Consulta( "SELECT data_inicio, data_fim, titulo, descricao FROM agenda_compromisso WHERE cod_agenda_compromisso = '{$compromisso["cod"]}' AND ref_cod_agenda = {$this->cod_agenda} AND versao = '{$compromisso["versao"]}' " ); if( $db->ProximoRegistro() ) { // inicializacao de variaveis $qtd_tit_copia_desc = 5; list( $data_inicio, $data_fim, $titulo, $descricao ) = $db->Tupla(); // TITULO if( $titulo ) { $disp_titulo = $titulo; } else { // se nao tiver titulo pega as X primeiras palavras da descricao ( X = $qtd_tit_copia_desc ) $disp_titulo = implode( " ", array_slice( explode( " ", $descricao ), 0, $qtd_tit_copia_desc ) ); } // remove quebra de linha // $disp_titulo = str_replace("\r"," ", $disp_titulo ); // $disp_titulo = str_replace("\n"," ", $disp_titulo ); // $disp_titulo = str_replace("
"," ", $disp_titulo ); // // $titulo = str_replace("\r"," ", $titulo ); // $titulo = str_replace("\n"," ", $titulo ); // $titulo = str_replace("
"," ", $titulo ); // // $descricao = str_replace("\r"," ", $descricao ); // $descricao = str_replace("\n"," ", $descricao ); // $descricao = str_replace("
"," ", $descricao ); // quebra o texto em linhas que caibam // $disp_titulo = $this->quebraLinha( $disp_titulo, 60 ); // $titulo = $this->quebraLinha( $titulo, 60 ); // $descricao = $this->quebraLinha( $descricao, 60 ); $hora_comp = substr($data_inicio,11,5); $hora_fim = substr($data_fim,11,5); //verifica tipo da impressora 1 laser 0 jato de tinta if ($this->impressora == 0) { if( $data_ant != substr( $data_inicio, 0, 10 ) ) { $relatorio->novalinha(array($this->semDesc($data_inicio).": ".date("d/m/Y", strtotime($data_inicio))),0,12,true); $relatorio->novalinha(array("{$hora_comp} as {$hora_fim} {$disp_titulo}"),0, 13 + 10 * ( strlen( $disp_titulo ) / 60 ) ); $linhas = count( explode("\n",$descricao) ); $relatorio->novalinha(array(false, $descricao),62, 13 + 10 * $linhas ); $data_ant = substr( $data_inicio, 0, 10 ); } else { if($hora_comp == "00:00") { $relatorio->novalinha(array( date("d/m/Y", strtotime($data_inicio) )." - $descricao"),0, 13 * ( count( explode( "\n", $descricao ) ) + 1), false, "arial", false, true ); } else { $relatorio->novalinha(array("{$hora_comp} as {$hora_fim} {$disp_titulo}"),0, 13 * ( count( explode( "\n", $disp_titulo ) ) ) ); $linhas = count( explode("\n",$descricao) ); $relatorio->novalinha(array(false, $descricao),62, 13 + 10 * $linhas ); } } } else { // laser if( $data_ant != substr( $data_inicio, 0, 10 ) ) { $relatorio->novalinha(array($this->semDesc($data_inicio).": ".date("d/m/Y", strtotime($data_inicio))),0,13,true,"arial",false,false, 10, 3 ); $data_ant = substr( $data_inicio, 0, 10 ); } if( $hora_comp == "00:00" ) { $relatorio->novalinha(array( date("d/m/Y", strtotime($data_inicio) )." - $descricao"),0, 13 + 10 * ( strlen( $descricao ) / 60 ),false,"arial",false,true ); } else { if( $titulo || $descricao ) { $textoLinha = ""; if( $titulo ) { $textoLinha = $titulo; } if( $descricao ) { if( $textoLinha ) { $textoLinha .= "\n\n"; } $textoLinha .= $descricao; } if( $textoLinha ) { $linhas = ceil( strlen($textoLinha) / 90 ); $linhas += count( explode("\n",$textoLinha) ); $relatorio->novalinha(array("{$hora_comp} as {$hora_fim}", $textoLinha),0, 13 + 10 * $linhas ); } // $relatorio->altura += 30; } } } } } $this->link = $relatorio->fechaPdf(); } return true; } } $pagina = new clsIndex(); $miolo = new indice(); $pagina->addForm( $miolo ); $pagina->MakeAll(); ?>